[#651] cmd/cli: Replace netmap snapshot from netmap section to control

There is a need to have all `Control` service-related commands in `control`
section.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2021-06-28 16:28:12 +03:00 committed by Leonard Lyubich
parent 8eadf18e01
commit 61f48a2736
2 changed files with 48 additions and 50 deletions

View file

@ -60,6 +60,7 @@ func init() {
healthCheckCmd, healthCheckCmd,
setNetmapStatusCmd, setNetmapStatusCmd,
dropObjectsCmd, dropObjectsCmd,
snapshotCmd,
) )
setNetmapStatusCmd.Flags().StringVarP(&netmapStatus, netmapStatusFlag, "", "", setNetmapStatusCmd.Flags().StringVarP(&netmapStatus, netmapStatusFlag, "", "",
@ -77,6 +78,9 @@ func init() {
_ = dropObjectsCmd.MarkFlagRequired(dropObjectsFlag) _ = dropObjectsCmd.MarkFlagRequired(dropObjectsFlag)
healthCheckCmd.Flags().BoolVar(&healthCheckIRVar, healthcheckIRFlag, false, "Communicate with IR node") healthCheckCmd.Flags().BoolVar(&healthCheckIRVar, healthcheckIRFlag, false, "Communicate with IR node")
snapshotCmd.Flags().BoolVar(&netmapSnapshotJSON, "json", false,
"print netmap structure in JSON format")
} }
func healthCheck(cmd *cobra.Command, _ []string) { func healthCheck(cmd *cobra.Command, _ []string) {
@ -279,3 +283,47 @@ var dropObjectsCmd = &cobra.Command{
cmd.Println("Objects were successfully marked to be removed.") cmd.Println("Objects were successfully marked to be removed.")
}, },
} }
var snapshotCmd = &cobra.Command{
Use: "netmap-snapshot",
Short: "Get network map snapshot",
Long: "Get network map snapshot",
Run: func(cmd *cobra.Command, args []string) {
key, err := getKey()
if err != nil {
cmd.PrintErrln(err)
return
}
req := new(control.NetmapSnapshotRequest)
req.SetBody(new(control.NetmapSnapshotRequest_Body))
if err := controlSvc.SignMessage(key, req); err != nil {
cmd.PrintErrln(err)
return
}
cli, err := getSDKClient(key)
if err != nil {
cmd.PrintErrln(err)
return
}
resp, err := control.NetmapSnapshot(cli.Raw(), req)
if err != nil {
cmd.PrintErrln(err)
return
}
sign := resp.GetSignature()
if err := signature.VerifyDataWithSource(resp, func() ([]byte, []byte) {
return sign.GetKey(), sign.GetSign()
}); err != nil {
cmd.PrintErrln(err)
return
}
prettyPrintNetmap(cmd, resp.GetBody().GetNetmap(), netmapSnapshotJSON)
},
}

View file

@ -8,9 +8,7 @@ import (
"github.com/mr-tron/base58" "github.com/mr-tron/base58"
"github.com/nspcc-dev/neo-go/pkg/config/netmode" "github.com/nspcc-dev/neo-go/pkg/config/netmode"
"github.com/nspcc-dev/neofs-api-go/pkg/netmap" "github.com/nspcc-dev/neofs-api-go/pkg/netmap"
"github.com/nspcc-dev/neofs-api-go/util/signature"
"github.com/nspcc-dev/neofs-node/pkg/services/control" "github.com/nspcc-dev/neofs-node/pkg/services/control"
controlSvc "github.com/nspcc-dev/neofs-node/pkg/services/control/server"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -33,14 +31,10 @@ func init() {
netmapCmd.AddCommand( netmapCmd.AddCommand(
getEpochCmd, getEpochCmd,
localNodeInfoCmd, localNodeInfoCmd,
snapshotCmd,
netInfoCmd, netInfoCmd,
) )
localNodeInfoCmd.Flags().BoolVar(&nodeInfoJSON, "json", false, "print node info in JSON format") localNodeInfoCmd.Flags().BoolVar(&nodeInfoJSON, "json", false, "print node info in JSON format")
snapshotCmd.Flags().BoolVar(&netmapSnapshotJSON, "json", false,
"print netmap structure in JSON format")
} }
var getEpochCmd = &cobra.Command{ var getEpochCmd = &cobra.Command{
@ -97,50 +91,6 @@ var localNodeInfoCmd = &cobra.Command{
}, },
} }
var snapshotCmd = &cobra.Command{
Use: "snapshot",
Short: "Get network map snapshot",
Long: "Get network map snapshot",
Run: func(cmd *cobra.Command, args []string) {
key, err := getKey()
if err != nil {
cmd.PrintErrln(err)
return
}
req := new(control.NetmapSnapshotRequest)
req.SetBody(new(control.NetmapSnapshotRequest_Body))
if err := controlSvc.SignMessage(key, req); err != nil {
cmd.PrintErrln(err)
return
}
cli, err := getSDKClient(key)
if err != nil {
cmd.PrintErrln(err)
return
}
resp, err := control.NetmapSnapshot(cli.Raw(), req)
if err != nil {
cmd.PrintErrln(err)
return
}
sign := resp.GetSignature()
if err := signature.VerifyDataWithSource(resp, func() ([]byte, []byte) {
return sign.GetKey(), sign.GetSign()
}); err != nil {
cmd.PrintErrln(err)
return
}
prettyPrintNetmap(cmd, resp.GetBody().GetNetmap(), netmapSnapshotJSON)
},
}
var netInfoCmd = &cobra.Command{ var netInfoCmd = &cobra.Command{
Use: "netinfo", Use: "netinfo",
Short: "Get information about NeoFS network", Short: "Get information about NeoFS network",