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