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
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
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