From bf70d7784457442b30669b123eacb7aa5c24de04 Mon Sep 17 00:00:00 2001 From: Anton Nikiforov Date: Thu, 7 Mar 2024 14:33:07 +0300 Subject: [PATCH] [#976] adm: Allow to remove all chains by target Signed-off-by: Anton Nikiforov --- cmd/frostfs-adm/internal/commonflags/flags.go | 1 + .../internal/modules/morph/ape/ape.go | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/cmd/frostfs-adm/internal/commonflags/flags.go b/cmd/frostfs-adm/internal/commonflags/flags.go index 71c36b71a..bf6c17bd1 100644 --- a/cmd/frostfs-adm/internal/commonflags/flags.go +++ b/cmd/frostfs-adm/internal/commonflags/flags.go @@ -36,4 +36,5 @@ const ( HomomorphicHashDisabledInitFlag = "network.homomorphic_hash_disabled" CustomZoneFlag = "domain" AlphabetSizeFlag = "size" + AllFlag = "all" ) diff --git a/cmd/frostfs-adm/internal/modules/morph/ape/ape.go b/cmd/frostfs-adm/internal/modules/morph/ape/ape.go index e3990da07..fc572f5ff 100644 --- a/cmd/frostfs-adm/internal/modules/morph/ape/ape.go +++ b/cmd/frostfs-adm/internal/modules/morph/ape/ape.go @@ -114,8 +114,9 @@ func initRemoveRuleChainCmd() { removeRuleChainCmd.Flags().String(targetNameFlag, "", targetNameDesc) _ = removeRuleChainCmd.MarkFlagRequired(targetNameFlag) removeRuleChainCmd.Flags().String(chainIDFlag, "", chainIDDesc) - _ = removeRuleChainCmd.MarkFlagRequired(chainIDFlag) removeRuleChainCmd.Flags().String(chainNameFlag, ingress, chainNameFlagDesc) + removeRuleChainCmd.Flags().Bool(commonflags.AllFlag, false, "Remove all chains for target") + removeRuleChainCmd.MarkFlagsMutuallyExclusive(commonflags.AllFlag, chainIDFlag) } func initListRuleChainsCmd() { @@ -157,14 +158,23 @@ func addRuleChain(cmd *cobra.Command, _ []string) { } func removeRuleChain(cmd *cobra.Command, _ []string) { - chainID := parseChainID(cmd) target := parseTarget(cmd) pci, ac := newPolicyContractInterface(cmd) - h, vub, err := pci.RemoveMorphRuleChain(parseChainName(cmd), target, chainID) - cmd.Println("Waiting for transaction to persist...") - _, err = ac.Wait(h, vub, err) - commonCmd.ExitOnErr(cmd, "remove rule chain error: %w", err) - cmd.Println("Rule chain removed successfully") + removeAll, _ := cmd.Flags().GetBool(commonflags.AllFlag) + if removeAll { + h, vub, err := pci.RemoveMorphRuleChainsByTarget(parseChainName(cmd), target) + cmd.Println("Waiting for transaction to persist...") + _, err = ac.Wait(h, vub, err) + commonCmd.ExitOnErr(cmd, "remove rule chain error: %w", err) + cmd.Println("All chains for target removed successfully") + } else { + chainID := parseChainID(cmd) + h, vub, err := pci.RemoveMorphRuleChain(parseChainName(cmd), target, chainID) + cmd.Println("Waiting for transaction to persist...") + _, err = ac.Wait(h, vub, err) + commonCmd.ExitOnErr(cmd, "remove rule chain error: %w", err) + cmd.Println("Rule chain removed successfully") + } } func listRuleChains(cmd *cobra.Command, _ []string) {