forked from TrueCloudLab/frostfs-node
[#81] cmd/neofs-cli: Implement "nodeinfo" sub-cmd of "netmap" cmd
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
5d94594007
commit
25398262fc
1 changed files with 59 additions and 0 deletions
|
@ -1,12 +1,20 @@
|
||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/mr-tron/base58"
|
||||||
|
"github.com/nspcc-dev/neofs-api-go/pkg/netmap"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
nodeInfoJSON bool
|
||||||
|
)
|
||||||
|
|
||||||
// netmapCmd represents the netmap command
|
// netmapCmd represents the netmap command
|
||||||
var netmapCmd = &cobra.Command{
|
var netmapCmd = &cobra.Command{
|
||||||
Use: "netmap",
|
Use: "netmap",
|
||||||
|
@ -22,7 +30,10 @@ func init() {
|
||||||
|
|
||||||
netmapCmd.AddCommand(
|
netmapCmd.AddCommand(
|
||||||
getEpochCmd,
|
getEpochCmd,
|
||||||
|
localNodeInfoCmd,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
localNodeInfoCmd.Flags().BoolVar(&nodeInfoJSON, "json", false, "print node info in JSON format")
|
||||||
}
|
}
|
||||||
|
|
||||||
var getEpochCmd = &cobra.Command{
|
var getEpochCmd = &cobra.Command{
|
||||||
|
@ -45,3 +56,51 @@ var getEpochCmd = &cobra.Command{
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var localNodeInfoCmd = &cobra.Command{
|
||||||
|
Use: "nodeinfo",
|
||||||
|
Short: "Get local node info",
|
||||||
|
Long: `Get local node info`,
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
cli, err := getSDKClient()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
nodeInfo, err := cli.EndpointInfo(context.Background())
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("rpc error: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
prettyPrintNodeInfo(nodeInfo, nodeInfoJSON)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func prettyPrintNodeInfo(i *netmap.NodeInfo, jsonEncoding bool) {
|
||||||
|
if jsonEncoding {
|
||||||
|
data, err := netmap.NodeInfoToJSON(i)
|
||||||
|
if err != nil {
|
||||||
|
printVerbose("Can't convert container to json: %w", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
if err := json.Indent(buf, data, "", " "); err != nil {
|
||||||
|
printVerbose("Can't pretty print json: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(buf)
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("key:", base58.Encode(i.PublicKey()))
|
||||||
|
fmt.Println("address:", i.Address())
|
||||||
|
fmt.Println("state:", i.State())
|
||||||
|
|
||||||
|
for _, attribute := range i.Attributes() {
|
||||||
|
fmt.Printf("attribute: %s=%s\n", attribute.Key(), attribute.Value())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue