forked from TrueCloudLab/frostfs-node
[#1889] adm: Add command morph netmap-candidates
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
parent
ee24815748
commit
515c60bdf4
7 changed files with 53 additions and 4 deletions
|
@ -8,6 +8,7 @@ Changelog for FrostFS Node
|
||||||
- Doc for extended headers (#2128)
|
- Doc for extended headers (#2128)
|
||||||
- New `frostfs_node_object_container_size` metric for tracking size of reqular objects in a container (#2116)
|
- New `frostfs_node_object_container_size` metric for tracking size of reqular objects in a container (#2116)
|
||||||
- New `frostfs_node_object_payload_size` metric for tracking size of reqular objects on a single shard (#1794)
|
- New `frostfs_node_object_payload_size` metric for tracking size of reqular objects on a single shard (#1794)
|
||||||
|
- Add command `frostfs-adm morph netmap-candidates` (#1889)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- `common.PrintVerbose` prints via `cobra.Command.Printf` (#1962)
|
- `common.PrintVerbose` prints via `cobra.Command.Printf` (#1962)
|
||||||
|
|
|
@ -4,4 +4,8 @@ const (
|
||||||
ConfigFlag = "config"
|
ConfigFlag = "config"
|
||||||
ConfigFlagShorthand = "c"
|
ConfigFlagShorthand = "c"
|
||||||
ConfigFlagUsage = "Config file"
|
ConfigFlagUsage = "Config file"
|
||||||
|
|
||||||
|
Verbose = "verbose"
|
||||||
|
VerboseShorthand = "v"
|
||||||
|
VerboseUsage = "Verbose output"
|
||||||
)
|
)
|
||||||
|
|
29
cmd/frostfs-adm/internal/modules/morph/netmap_candidates.go
Normal file
29
cmd/frostfs-adm/internal/modules/morph/netmap_candidates.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
package morph
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/TrueCloudLab/frostfs-node/cmd/frostfs-adm/internal/commonflags"
|
||||||
|
commonCmd "github.com/TrueCloudLab/frostfs-node/cmd/internal/common"
|
||||||
|
"github.com/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/rpcclient/invoker"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
)
|
||||||
|
|
||||||
|
func listNetmapCandidatesNodes(cmd *cobra.Command, _ []string) {
|
||||||
|
c, err := getN3Client(viper.GetViper())
|
||||||
|
commonCmd.ExitOnErr(cmd, "can't create N3 client: %w", err)
|
||||||
|
|
||||||
|
inv := invoker.New(c, nil)
|
||||||
|
|
||||||
|
cs, err := c.GetContractStateByID(1)
|
||||||
|
commonCmd.ExitOnErr(cmd, "can't get NNS contract info: %w", err)
|
||||||
|
|
||||||
|
nmHash, err := nnsResolveHash(inv, cs.Hash, netmapContract+".frostfs")
|
||||||
|
commonCmd.ExitOnErr(cmd, "can't get netmap contract hash: %w", err)
|
||||||
|
|
||||||
|
res, err := inv.Call(nmHash, "netmapCandidates")
|
||||||
|
commonCmd.ExitOnErr(cmd, "can't fetch list of network config keys from the netmap contract", err)
|
||||||
|
nm, err := netmap.DecodeNetMap(res.Stack)
|
||||||
|
commonCmd.ExitOnErr(cmd, "unable to decode netmap: %w", err)
|
||||||
|
commonCmd.PrettyPrintNetMap(cmd, *nm, !viper.GetBool(commonflags.Verbose))
|
||||||
|
}
|
|
@ -226,6 +226,16 @@ var (
|
||||||
},
|
},
|
||||||
RunE: depositNotary,
|
RunE: depositNotary,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
netmapCandidatesCmd = &cobra.Command{
|
||||||
|
Use: "netmap-candidates",
|
||||||
|
Short: "List netmap candidates nodes",
|
||||||
|
PreRun: func(cmd *cobra.Command, _ []string) {
|
||||||
|
_ = viper.BindPFlag(endpointFlag, cmd.Flags().Lookup(endpointFlag))
|
||||||
|
_ = viper.BindPFlag(alphabetWalletsFlag, cmd.Flags().Lookup(alphabetWalletsFlag))
|
||||||
|
},
|
||||||
|
Run: listNetmapCandidatesNodes,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -323,4 +333,7 @@ func init() {
|
||||||
depositNotaryCmd.Flags().String(walletAccountFlag, "", "Wallet account address")
|
depositNotaryCmd.Flags().String(walletAccountFlag, "", "Wallet account address")
|
||||||
depositNotaryCmd.Flags().String(refillGasAmountFlag, "", "Amount of GAS to deposit")
|
depositNotaryCmd.Flags().String(refillGasAmountFlag, "", "Amount of GAS to deposit")
|
||||||
depositNotaryCmd.Flags().String(notaryDepositTillFlag, "", "Notary deposit duration in blocks")
|
depositNotaryCmd.Flags().String(notaryDepositTillFlag, "", "Notary deposit duration in blocks")
|
||||||
|
|
||||||
|
RootCmd.AddCommand(netmapCandidatesCmd)
|
||||||
|
netmapCandidatesCmd.Flags().StringP(endpointFlag, "r", "", "N3 RPC node endpoint")
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,8 @@ func init() {
|
||||||
rootCmd.SetOut(os.Stdout)
|
rootCmd.SetOut(os.Stdout)
|
||||||
|
|
||||||
rootCmd.PersistentFlags().StringP(commonflags.ConfigFlag, commonflags.ConfigFlagShorthand, "", commonflags.ConfigFlagUsage)
|
rootCmd.PersistentFlags().StringP(commonflags.ConfigFlag, commonflags.ConfigFlagShorthand, "", commonflags.ConfigFlagUsage)
|
||||||
|
rootCmd.PersistentFlags().BoolP(commonflags.Verbose, commonflags.VerboseShorthand, false, commonflags.VerboseUsage)
|
||||||
|
_ = viper.BindPFlag(commonflags.Verbose, rootCmd.PersistentFlags().Lookup(commonflags.Verbose))
|
||||||
rootCmd.Flags().Bool("version", false, "Application version")
|
rootCmd.Flags().Bool("version", false, "Application version")
|
||||||
|
|
||||||
rootCmd.AddCommand(config.RootCmd)
|
rootCmd.AddCommand(config.RootCmd)
|
||||||
|
|
|
@ -22,7 +22,7 @@ func (c *Client) GetNetMapByEpoch(epoch uint64) (*netmap.NetMap, error) {
|
||||||
epochSnapshotMethod, err)
|
epochSnapshotMethod, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
nm, err := decodeNetMap(res)
|
nm, err := DecodeNetMap(res)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -61,10 +61,10 @@ func (c *Client) NetMap() (*netmap.NetMap, error) {
|
||||||
netMapMethod, err)
|
netMapMethod, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return decodeNetMap(res)
|
return DecodeNetMap(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
func decodeNetMap(resStack []stackitem.Item) (*netmap.NetMap, error) {
|
func DecodeNetMap(resStack []stackitem.Item) (*netmap.NetMap, error) {
|
||||||
var nm netmap.NetMap
|
var nm netmap.NetMap
|
||||||
|
|
||||||
if len(resStack) > 0 {
|
if len(resStack) > 0 {
|
||||||
|
|
|
@ -16,5 +16,5 @@ func (c *Client) GetNetMap(diff uint64) (*netmap.NetMap, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return decodeNetMap(res)
|
return DecodeNetMap(res)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue