...
1 package remove
2
3 import (
4 "context"
5 "fmt"
6 "time"
7
8 "edge-infra.dev/pkg/edge/edgecli"
9 "edge-infra.dev/pkg/edge/edgecli/constructors"
10 "edge-infra.dev/pkg/edge/edgecli/flagutil"
11 "edge-infra.dev/pkg/lib/cli/command"
12 "edge-infra.dev/pkg/lib/cli/rags"
13 )
14
15 func NewCmd(cfg *edgecli.Config) *command.Command {
16 var cmd *command.Command
17 flagsets := flagutil.GetConnectionFlags(cfg)
18 var storeName, bannerName, networkServiceID string
19
20 cmd = &command.Command{
21 ShortUsage: "edge networkservice remove",
22 ShortHelp: "Remove a Network Service belonging to a Cluster",
23 Flags: append(
24 flagsets,
25 &rags.Rag{
26 Name: flagutil.StoreFlag,
27 Usage: "Name of the Store",
28 Value: &rags.String{Var: &storeName},
29 Required: true,
30 },
31 &rags.Rag{
32 Name: flagutil.BannerFlag,
33 Usage: "Banner name",
34 Value: &rags.String{Var: &bannerName},
35 Required: true,
36 },
37 &rags.Rag{
38 Name: flagutil.NetworkServiceIDFlag,
39 Value: &rags.String{Var: &networkServiceID},
40 Usage: "ID of network service",
41 Required: true,
42 },
43 ),
44 Exec: func(_ context.Context, _ []string) error {
45 if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil {
46 return err
47 }
48
49 registrar, err := constructors.BuildRegistrar(cmd.Rags)
50 if err != nil {
51 return err
52 }
53
54 networkServiceID := flagutil.GetStringFlag(cmd.Rags, flagutil.NetworkServiceIDFlag)
55 if !flagutil.IsValidUUID(networkServiceID) {
56 return fmt.Errorf("invalid uuid type %s", networkServiceID)
57 }
58 storeName := flagutil.GetStringFlag(cmd.Rags, flagutil.StoreFlag)
59 bannerName := flagutil.GetStringFlag(cmd.Rags, flagutil.BannerFlag)
60
61 fmt.Println("flags validated")
62
63 reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
64 defer cancelReq()
65
66 cluster, err := registrar.GetCluster(reqCtx, storeName, bannerName)
67 if err != nil {
68 fmt.Println("an error occurred whilst removing the cluster network service")
69 return err
70 }
71
72 reqCtx, cancelReq = context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
73 defer cancelReq()
74
75 fmt.Println("deleting network service...")
76
77 _, err = registrar.DeleteNetworkServices(reqCtx, cluster.ClusterEdgeID, networkServiceID)
78 if err != nil {
79 fmt.Println("an error occurred whilst removing the cluster network service")
80 return err
81 }
82
83 fmt.Println("network service removed successfully!")
84 return nil
85 },
86 }
87 return cmd
88 }
89
View as plain text