...

Source file src/edge-infra.dev/pkg/edge/edgecli/commands/clustersecret/versions/versions.go

Documentation: edge-infra.dev/pkg/edge/edgecli/commands/clustersecret/versions

     1  package versions
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"time"
     7  
     8  	"edge-infra.dev/pkg/edge/api/graph/model"
     9  	"edge-infra.dev/pkg/edge/edgeadmin/registrar"
    10  	"edge-infra.dev/pkg/edge/edgecli"
    11  	"edge-infra.dev/pkg/edge/edgecli/constructors"
    12  	"edge-infra.dev/pkg/edge/edgecli/flagutil"
    13  	"edge-infra.dev/pkg/lib/cli/command"
    14  	"edge-infra.dev/pkg/lib/cli/rags"
    15  )
    16  
    17  // NewCmd command to update cluster secret
    18  func NewCmd(cfg *edgecli.Config) *command.Command {
    19  	flagsets := append(flagutil.GetCommonFlags(), flagutil.GetConnectionFlags(cfg)...)
    20  	var cmd *command.Command
    21  
    22  	cmd = &command.Command{
    23  		ShortUsage: "edge clustersecret versions",
    24  		ShortHelp:  "View the clusters secret versions",
    25  		Flags: append(flagsets,
    26  			&rags.Rag{
    27  				Name:     flagutil.StoreFlag,
    28  				Value:    &rags.String{},
    29  				Usage:    "Store name",
    30  				Required: true,
    31  			},
    32  			&rags.Rag{
    33  				Name:     flagutil.BannerFlag,
    34  				Value:    &rags.String{},
    35  				Usage:    "Banner name",
    36  				Required: true,
    37  			},
    38  			&rags.Rag{
    39  				Name:     flagutil.SecretTypeFlag,
    40  				Value:    &rags.String{},
    41  				Usage:    "Secret type",
    42  				Required: true,
    43  			},
    44  		),
    45  		Exec: func(_ context.Context, _ []string) error {
    46  			//validates required field value, value cannot be empty or space
    47  			if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil {
    48  				return err
    49  			}
    50  
    51  			registrar, err := constructors.BuildRegistrar(cmd.Rags)
    52  			if err != nil {
    53  				return err
    54  			}
    55  
    56  			cluster, err := getCluster(cmd, registrar)
    57  			if err != nil {
    58  				fmt.Println("an error occurred whilst getting the cluster secret versions")
    59  				return err
    60  			}
    61  
    62  			clusterSecretVersions, err := getClusterSecretVersions(cmd, registrar, cluster.ClusterEdgeID)
    63  			if err != nil {
    64  				fmt.Println("an error occurred whilst getting the cluster secret versions")
    65  				return err
    66  			}
    67  
    68  			if len(clusterSecretVersions) == 0 {
    69  				fmt.Println("cluster secret versions not found")
    70  			} else {
    71  				fmt.Println("cluster secret versions:")
    72  				for _, v := range clusterSecretVersions {
    73  					fmt.Printf("Version: %s, Expires at: %s \n", v.Version, v.ExpiresAt)
    74  				}
    75  			}
    76  
    77  			return nil
    78  		},
    79  	}
    80  	return cmd
    81  }
    82  
    83  func getCluster(cmd *command.Command, registrar *registrar.Registrar) (*registrar.Cluster, error) {
    84  	storeName := flagutil.GetStringFlag(cmd.Rags, flagutil.StoreFlag)
    85  	bannerName := flagutil.GetStringFlag(cmd.Rags, flagutil.BannerFlag)
    86  
    87  	reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
    88  	defer cancelReq()
    89  
    90  	cluster, err := registrar.GetCluster(reqCtx, storeName, bannerName)
    91  	if err != nil {
    92  		return nil, err
    93  	}
    94  
    95  	return &cluster, nil
    96  }
    97  
    98  func getClusterSecretVersions(cmd *command.Command, registrar *registrar.Registrar, clusterEdgeID string) ([]*model.ClusterSecretVersionInfo, error) {
    99  	secretType := flagutil.GetStringFlag(cmd.Rags, flagutil.SecretTypeFlag)
   100  
   101  	reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
   102  	defer cancelReq()
   103  
   104  	return registrar.GetClusterSecretVersions(reqCtx, clusterEdgeID, secretType)
   105  }
   106  

View as plain text