node/cmd: add contract addresses and error count to list-nodes
Change-Id: I5ec7ac13a59a51da1b5a56aef8ce5cca1ca5a5e4
This commit is contained in:
parent
8e0560274e
commit
9a030b310f
|
@ -59,6 +59,14 @@ func runListNodesStream(cmd *cobra.Command, args []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
showDetails bool
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
AdminClientListNodes.Flags().BoolVar(&showDetails, "showDetails", false, "Show error counter and contract addresses")
|
||||||
|
}
|
||||||
|
|
||||||
var AdminClientListNodes = &cobra.Command{
|
var AdminClientListNodes = &cobra.Command{
|
||||||
Use: "list-nodes",
|
Use: "list-nodes",
|
||||||
Short: "Fetches an aggregated list of guardian nodes",
|
Short: "Fetches an aggregated list of guardian nodes",
|
||||||
|
@ -99,7 +107,11 @@ func runListNodes(cmd *cobra.Command, args []string) {
|
||||||
|
|
||||||
w := tabwriter.NewWriter(os.Stdout, 0, 8, 2, ' ', 0)
|
w := tabwriter.NewWriter(os.Stdout, 0, 8, 2, ' ', 0)
|
||||||
|
|
||||||
|
if showDetails {
|
||||||
w.Write([]byte("Node key\tGuardian key\tNode name\tVersion\tLast seen\tUptime\tSolana\tEthereum\tTerra\tBSC\n"))
|
w.Write([]byte("Node key\tGuardian key\tNode name\tVersion\tLast seen\tUptime\tSolana\tEthereum\tTerra\tBSC\n"))
|
||||||
|
} else {
|
||||||
|
w.Write([]byte("Node key\tGuardian key\tNode name\tVersion\tLast seen\tSolana\tEthereum\tTerra\tBSC\n"))
|
||||||
|
}
|
||||||
|
|
||||||
for _, h := range nodes {
|
for _, h := range nodes {
|
||||||
if h.RawHeartbeat == nil {
|
if h.RawHeartbeat == nil {
|
||||||
|
@ -107,26 +119,58 @@ func runListNodes(cmd *cobra.Command, args []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
last := time.Unix(0, h.RawHeartbeat.Timestamp)
|
last := time.Unix(0, h.RawHeartbeat.Timestamp)
|
||||||
|
boot := time.Unix(0, h.RawHeartbeat.BootTimestamp)
|
||||||
|
|
||||||
heights := map[vaa.ChainID]int64{}
|
heights := map[vaa.ChainID]int64{}
|
||||||
|
truncAddrs := make(map[vaa.ChainID]string)
|
||||||
|
errors := map[vaa.ChainID]uint64{}
|
||||||
for _, n := range h.RawHeartbeat.Networks {
|
for _, n := range h.RawHeartbeat.Networks {
|
||||||
heights[vaa.ChainID(n.Id)] = n.Height
|
heights[vaa.ChainID(n.Id)] = n.Height
|
||||||
|
errors[vaa.ChainID(n.Id)] = n.ErrorCount
|
||||||
|
if len(n.BridgeAddress) >= 16 {
|
||||||
|
truncAddrs[vaa.ChainID(n.Id)] = n.BridgeAddress[:16]
|
||||||
|
} else {
|
||||||
|
truncAddrs[vaa.ChainID(n.Id)] = "INVALID"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if showDetails {
|
||||||
fmt.Fprintf(w,
|
fmt.Fprintf(w,
|
||||||
"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",
|
"%s\t%s\t%s\t%s\t%s\t%s\t%s %d (%d)\t%s %d (%d)\t%s %d (%d)\t%s %d (%d)\n",
|
||||||
|
h.P2PNodeAddr,
|
||||||
|
h.RawHeartbeat.GuardianAddr,
|
||||||
|
h.RawHeartbeat.NodeName,
|
||||||
|
h.RawHeartbeat.Version,
|
||||||
|
time.Since(last),
|
||||||
|
time.Since(boot),
|
||||||
|
truncAddrs[vaa.ChainIDSolana],
|
||||||
|
heights[vaa.ChainIDSolana],
|
||||||
|
errors[vaa.ChainIDSolana],
|
||||||
|
truncAddrs[vaa.ChainIDEthereum],
|
||||||
|
heights[vaa.ChainIDEthereum],
|
||||||
|
errors[vaa.ChainIDEthereum],
|
||||||
|
truncAddrs[vaa.ChainIDTerra],
|
||||||
|
heights[vaa.ChainIDTerra],
|
||||||
|
errors[vaa.ChainIDTerra],
|
||||||
|
truncAddrs[vaa.ChainIDBSC],
|
||||||
|
heights[vaa.ChainIDBSC],
|
||||||
|
errors[vaa.ChainIDBSC],
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(w,
|
||||||
|
"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d\t%d\n",
|
||||||
h.P2PNodeAddr,
|
h.P2PNodeAddr,
|
||||||
h.RawHeartbeat.GuardianAddr,
|
h.RawHeartbeat.GuardianAddr,
|
||||||
h.RawHeartbeat.NodeName,
|
h.RawHeartbeat.NodeName,
|
||||||
h.RawHeartbeat.Version,
|
h.RawHeartbeat.Version,
|
||||||
time.Since(last),
|
time.Since(last),
|
||||||
h.RawHeartbeat.Counter,
|
|
||||||
heights[vaa.ChainIDSolana],
|
heights[vaa.ChainIDSolana],
|
||||||
heights[vaa.ChainIDEthereum],
|
heights[vaa.ChainIDEthereum],
|
||||||
heights[vaa.ChainIDTerra],
|
heights[vaa.ChainIDTerra],
|
||||||
heights[vaa.ChainIDBSC],
|
heights[vaa.ChainIDBSC],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
w.Flush()
|
w.Flush()
|
||||||
fmt.Print("\n")
|
fmt.Print("\n")
|
||||||
|
|
Loading…
Reference in New Issue