Airat Arifullin
4ab4ed6f96
* Use `cmd/internal/common/ape` parser commands within `generate-ape-override` subcommand * Use flag names from `cmd/internal/common/ape` Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
76 lines
2.2 KiB
Go
76 lines
2.2 KiB
Go
package bearer
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-cli/internal/commonflags"
|
|
commonCmd "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/internal/common"
|
|
apeCmd "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/internal/common/ape"
|
|
apeSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/ape"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/bearer"
|
|
cidSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
const (
|
|
outputFlag = "output"
|
|
)
|
|
|
|
var generateAPEOverrideCmd = &cobra.Command{
|
|
Use: "generate-ape-override",
|
|
Short: "Generate APE override.",
|
|
Long: `Generate APE override by target and APE chains. Util command.
|
|
|
|
Generated APE override can be dumped to a file in JSON format that is passed to
|
|
"create" command.
|
|
`,
|
|
Run: genereateAPEOverride,
|
|
}
|
|
|
|
func genereateAPEOverride(cmd *cobra.Command, _ []string) {
|
|
c := apeCmd.ParseChain(cmd)
|
|
|
|
targetCID, _ := cmd.Flags().GetString(commonflags.CIDFlag)
|
|
var cid cidSDK.ID
|
|
commonCmd.ExitOnErr(cmd, "invalid cid format: %w", cid.DecodeString(targetCID))
|
|
|
|
override := &bearer.APEOverride{
|
|
Target: apeSDK.ChainTarget{
|
|
TargetType: apeSDK.TargetTypeContainer,
|
|
Name: targetCID,
|
|
},
|
|
Chains: []apeSDK.Chain{
|
|
{
|
|
Raw: c.Bytes(),
|
|
},
|
|
},
|
|
}
|
|
|
|
overrideMarshalled, err := override.MarshalJSON()
|
|
commonCmd.ExitOnErr(cmd, "failed to marshal APE override: %w", err)
|
|
|
|
outputPath, _ := cmd.Flags().GetString(outputFlag)
|
|
if outputPath != "" {
|
|
err := os.WriteFile(outputPath, []byte(overrideMarshalled), 0o644)
|
|
commonCmd.ExitOnErr(cmd, "dump error: %w", err)
|
|
} else {
|
|
fmt.Print("\n")
|
|
fmt.Println(string(overrideMarshalled))
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
ff := generateAPEOverrideCmd.Flags()
|
|
|
|
ff.StringP(commonflags.CIDFlag, "", "", "Target container ID.")
|
|
_ = cobra.MarkFlagRequired(createCmd.Flags(), commonflags.CIDFlag)
|
|
|
|
ff.StringArray(apeCmd.RuleFlag, []string{}, "Rule statement")
|
|
ff.String(apeCmd.PathFlag, "", "Path to encoded chain in JSON or binary format")
|
|
ff.String(apeCmd.ChainIDFlag, "", "Assign ID to the parsed chain")
|
|
ff.Bool(apeCmd.ChainIDHexFlag, false, "Flag to parse chain ID as hex")
|
|
|
|
ff.String(outputFlag, "", "Output path to dump result JSON-encoded APE override")
|
|
_ = cobra.MarkFlagFilename(createCmd.Flags(), outputFlag)
|
|
}
|