package common import ( "encoding/hex" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/netmap" "github.com/spf13/cobra" ) // PrettyPrintNodeInfo print information about network node with given indent and index. // To avoid printing attribute list use short parameter. func PrettyPrintNodeInfo(cmd *cobra.Command, node netmap.NodeInfo, index int, indent string, short bool, ) { var strState string switch { default: strState = "STATE_UNSUPPORTED" case node.IsOnline(): strState = "ONLINE" case node.IsOffline(): strState = "OFFLINE" case node.IsMaintenance(): strState = "MAINTENANCE" } cmd.Printf("%sNode %d: %s %s ", indent, index+1, hex.EncodeToString(node.PublicKey()), strState) netmap.IterateNetworkEndpoints(node, func(endpoint string) { cmd.Printf("%s ", endpoint) }) cmd.Println() if !short { node.IterateAttributes(func(key, value string) { cmd.Printf("%s\t%s: %s\n", indent, key, value) }) } } // PrettyPrintNetMap print information about network map. func PrettyPrintNetMap(cmd *cobra.Command, nm netmap.NetMap, short bool) { cmd.Println("Epoch:", nm.Epoch()) nodes := nm.Nodes() for i := range nodes { PrettyPrintNodeInfo(cmd, nodes[i], i, "", short) } }