1 package modify
2
3 import (
4 "context"
5 "fmt"
6
7 "edge-infra.dev/pkg/edge/api/graph/model"
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
19 cmd = &command.Command{
20 ShortUsage: "edge terminal address modify",
21 ShortHelp: "Modify an address for a particular terminal interface",
22 Flags: append(
23 flagsets,
24 &rags.Rag{
25 Name: flagutil.StoreFlag,
26 Value: &rags.String{},
27 Usage: "Name of the Store - Must be unique",
28 Required: true,
29 },
30 &rags.Rag{
31 Name: flagutil.BannerFlag,
32 Value: &rags.String{},
33 Usage: "Banner name",
34 Required: true,
35 },
36 &rags.Rag{
37 Name: flagutil.TerminalAddressID,
38 Value: &rags.String{},
39 Usage: "Unique terminal address ID",
40 Required: true,
41 },
42 &rags.Rag{
43 Name: flagutil.IPFlag,
44 Value: &rags.String{},
45 Usage: "IP address of an interface",
46 Required: false,
47 },
48 &rags.Rag{
49 Name: flagutil.PrefixLen,
50 Usage: "IP network prefix length",
51 Value: &rags.Int{},
52 Required: false,
53 },
54 &rags.Rag{
55 Name: flagutil.TerminalFamily,
56 Usage: "family of addresses: \"inet\" or \"inet6\"",
57 Value: &rags.String{},
58 Required: false,
59 },
60 ),
61 Exec: func(_ context.Context, _ []string) error {
62 if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil {
63 return err
64 }
65
66 registrar, err := constructors.BuildRegistrar(cmd.Rags)
67 if err != nil {
68 return err
69 }
70
71 terminalAddressID := flagutil.GetStringFlag(cmd.Rags, flagutil.TerminalAddressID)
72
73 reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout)
74 defer cancelReq()
75
76 terminalFamily := flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.TerminalFamily)
77 updatedAddr := model.TerminalAddressUpdateInput{
78 IP: flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.IPFlag),
79 PrefixLen: flagutil.GetOptionalFlagValue[int](cmd.Rags, flagutil.PrefixLen),
80 Family: (*model.InetType)(terminalFamily),
81 }
82
83 if _, err = registrar.ModifyTerminalAddress(reqCtx, terminalAddressID, &updatedAddr); err != nil {
84 fmt.Println("unable to modify terminal interface")
85 return err
86 }
87
88 fmt.Println("successfully modified the terminal interface")
89
90 return nil
91 },
92 }
93 return cmd
94 }
95
View as plain text