forked from TrueCloudLab/frostfs-node
[#1030] adm: Add command morph ape list-targets
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
parent
bd216b79cb
commit
7278201753
3 changed files with 55 additions and 11 deletions
|
@ -82,6 +82,15 @@ var (
|
|||
},
|
||||
Run: getAdmin,
|
||||
}
|
||||
|
||||
listTargetsCmd = &cobra.Command{
|
||||
Use: "list-targets",
|
||||
Short: "List targets",
|
||||
PreRun: func(cmd *cobra.Command, _ []string) {
|
||||
_ = viper.BindPFlag(commonflags.EndpointFlag, cmd.Flags().Lookup(commonflags.EndpointFlag))
|
||||
},
|
||||
Run: listTargets,
|
||||
}
|
||||
)
|
||||
|
||||
func initAddRuleChainCmd() {
|
||||
|
@ -146,6 +155,14 @@ func initGetAdminCmd() {
|
|||
getAdminCmd.Flags().StringP(commonflags.EndpointFlag, commonflags.EndpointFlagShort, "", commonflags.EndpointFlagDesc)
|
||||
}
|
||||
|
||||
func initListTargetsCmd() {
|
||||
Cmd.AddCommand(listTargetsCmd)
|
||||
|
||||
listTargetsCmd.Flags().StringP(commonflags.EndpointFlag, commonflags.EndpointFlagShort, "", commonflags.EndpointFlagDesc)
|
||||
listTargetsCmd.Flags().StringP(targetTypeFlag, "t", "", targetTypeDesc)
|
||||
_ = listTargetsCmd.MarkFlagRequired(targetTypeFlag)
|
||||
}
|
||||
|
||||
func addRuleChain(cmd *cobra.Command, _ []string) {
|
||||
chain := parseChain(cmd)
|
||||
target := parseTarget(cmd)
|
||||
|
@ -215,6 +232,29 @@ func getAdmin(cmd *cobra.Command, _ []string) {
|
|||
cmd.Println(addr.StringLE())
|
||||
}
|
||||
|
||||
func listTargets(cmd *cobra.Command, _ []string) {
|
||||
typ, err := parseTargetType(cmd)
|
||||
commonCmd.ExitOnErr(cmd, "parse target type error: %w", err)
|
||||
pci, inv := newPolicyContractReaderInterface(cmd)
|
||||
|
||||
sid, it, err := pci.ListTargetsIterator(typ)
|
||||
commonCmd.ExitOnErr(cmd, "list targets error: %w", err)
|
||||
items, err := inv.TraverseIterator(sid, &it, 0)
|
||||
for err == nil && len(items) != 0 {
|
||||
for _, item := range items {
|
||||
bts, err := item.TryBytes()
|
||||
commonCmd.ExitOnErr(cmd, "list targets error: %w", err)
|
||||
if len(bts) == 0 {
|
||||
cmd.Println("(no name)")
|
||||
} else {
|
||||
cmd.Println(string(bts))
|
||||
}
|
||||
}
|
||||
items, err = inv.TraverseIterator(sid, &it, 0)
|
||||
commonCmd.ExitOnErr(cmd, "unable to list targets: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
func prettyJSONFormat(cmd *cobra.Command, chains []*apechain.Chain) {
|
||||
wr := bytes.NewBufferString("")
|
||||
data, err := json.Marshal(chains)
|
||||
|
|
|
@ -36,24 +36,27 @@ var (
|
|||
)
|
||||
|
||||
func parseTarget(cmd *cobra.Command) policyengine.Target {
|
||||
var targetType policyengine.TargetType
|
||||
typ, _ := cmd.Flags().GetString(targetTypeFlag)
|
||||
switch typ {
|
||||
case namespaceTarget:
|
||||
targetType = policyengine.Namespace
|
||||
case containerTarget:
|
||||
targetType = policyengine.Container
|
||||
default:
|
||||
commonCmd.ExitOnErr(cmd, "read target type error: %w", errUnknownTargetType)
|
||||
}
|
||||
name, _ := cmd.Flags().GetString(targetNameFlag)
|
||||
typ, err := parseTargetType(cmd)
|
||||
commonCmd.ExitOnErr(cmd, "read target type error: %w", err)
|
||||
|
||||
return policyengine.Target{
|
||||
Name: name,
|
||||
Type: targetType,
|
||||
Type: typ,
|
||||
}
|
||||
}
|
||||
|
||||
func parseTargetType(cmd *cobra.Command) (policyengine.TargetType, error) {
|
||||
typ, _ := cmd.Flags().GetString(targetTypeFlag)
|
||||
switch typ {
|
||||
case namespaceTarget:
|
||||
return policyengine.Namespace, nil
|
||||
case containerTarget:
|
||||
return policyengine.Container, nil
|
||||
}
|
||||
return -1, errUnknownTargetType
|
||||
}
|
||||
|
||||
func parseChainID(cmd *cobra.Command) apechain.ID {
|
||||
chainID, _ := cmd.Flags().GetString(chainIDFlag)
|
||||
if chainID == "" {
|
||||
|
|
|
@ -13,4 +13,5 @@ func init() {
|
|||
initListRuleChainsCmd()
|
||||
initSetAdminCmd()
|
||||
initGetAdminCmd()
|
||||
initListTargetsCmd()
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue