package tree import ( "crypto/sha256" "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-cli/internal/commonflags" "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-cli/internal/key" commonCmd "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/internal/common" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/tree" cid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id" "github.com/spf13/cobra" ) var listCmd = &cobra.Command{ Use: "list", Short: "Get tree IDs", Run: list, PersistentPreRun: func(cmd *cobra.Command, _ []string) { commonflags.Bind(cmd) }, } func initListCmd() { commonflags.Init(listCmd) ff := listCmd.Flags() ff.String(commonflags.CIDFlag, "", commonflags.CIDFlagUsage) _ = listCmd.MarkFlagRequired(commonflags.CIDFlag) } func list(cmd *cobra.Command, _ []string) { pk := key.GetOrGenerate(cmd) cidString, _ := cmd.Flags().GetString(commonflags.CIDFlag) var cnr cid.ID err := cnr.DecodeString(cidString) commonCmd.ExitOnErr(cmd, "decode container ID string: %w", err) ctx, cancel := contextWithTimeout(cmd) defer cancel() cli, err := _client() commonCmd.ExitOnErr(cmd, "failed to create client: %w", err) rawCID := make([]byte, sha256.Size) cnr.Encode(rawCID) req := &tree.TreeListRequest{ Body: &tree.TreeListRequest_Body{ ContainerId: rawCID, }, } commonCmd.ExitOnErr(cmd, "signing message: %w", tree.SignMessage(req, pk)) resp, err := cli.TreeList(ctx, req) commonCmd.ExitOnErr(cmd, "failed to call treeList %w", err) for _, treeID := range resp.GetBody().GetIds() { cmd.Println(treeID) } }