...

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

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

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

View as plain text