package versions import ( "context" "fmt" "time" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/edgeadmin/registrar" "edge-infra.dev/pkg/edge/edgecli" "edge-infra.dev/pkg/edge/edgecli/constructors" "edge-infra.dev/pkg/edge/edgecli/flagutil" "edge-infra.dev/pkg/lib/cli/command" "edge-infra.dev/pkg/lib/cli/rags" ) // NewCmd command to update cluster secret func NewCmd(cfg *edgecli.Config) *command.Command { flagsets := append(flagutil.GetCommonFlags(), flagutil.GetConnectionFlags(cfg)...) var cmd *command.Command cmd = &command.Command{ ShortUsage: "edge clustersecret versions", ShortHelp: "View the clusters secret versions", Flags: append(flagsets, &rags.Rag{ Name: flagutil.StoreFlag, Value: &rags.String{}, Usage: "Store name", Required: true, }, &rags.Rag{ Name: flagutil.BannerFlag, Value: &rags.String{}, Usage: "Banner name", Required: true, }, &rags.Rag{ Name: flagutil.SecretTypeFlag, Value: &rags.String{}, Usage: "Secret type", Required: true, }, ), Exec: func(_ context.Context, _ []string) error { //validates required field value, value cannot be empty or space if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil { return err } registrar, err := constructors.BuildRegistrar(cmd.Rags) if err != nil { return err } cluster, err := getCluster(cmd, registrar) if err != nil { fmt.Println("an error occurred whilst getting the cluster secret versions") return err } clusterSecretVersions, err := getClusterSecretVersions(cmd, registrar, cluster.ClusterEdgeID) if err != nil { fmt.Println("an error occurred whilst getting the cluster secret versions") return err } if len(clusterSecretVersions) == 0 { fmt.Println("cluster secret versions not found") } else { fmt.Println("cluster secret versions:") for _, v := range clusterSecretVersions { fmt.Printf("Version: %s, Expires at: %s \n", v.Version, v.ExpiresAt) } } return nil }, } return cmd } func getCluster(cmd *command.Command, registrar *registrar.Registrar) (*registrar.Cluster, error) { storeName := flagutil.GetStringFlag(cmd.Rags, flagutil.StoreFlag) bannerName := flagutil.GetStringFlag(cmd.Rags, flagutil.BannerFlag) reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second) defer cancelReq() cluster, err := registrar.GetCluster(reqCtx, storeName, bannerName) if err != nil { return nil, err } return &cluster, nil } func getClusterSecretVersions(cmd *command.Command, registrar *registrar.Registrar, clusterEdgeID string) ([]*model.ClusterSecretVersionInfo, error) { secretType := flagutil.GetStringFlag(cmd.Rags, flagutil.SecretTypeFlag) reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second) defer cancelReq() return registrar.GetClusterSecretVersions(reqCtx, clusterEdgeID, secretType) }