1 package modify
2
3 import (
4 "context"
5
6 "edge-infra.dev/pkg/edge/api/graph/model"
7 "edge-infra.dev/pkg/edge/edgecli"
8 "edge-infra.dev/pkg/edge/edgecli/constructors"
9 "edge-infra.dev/pkg/edge/edgecli/flagutil"
10 "edge-infra.dev/pkg/lib/cli/command"
11 "edge-infra.dev/pkg/lib/cli/rags"
12 )
13
14 func NewCmd(cfg *edgecli.Config) *command.Command {
15 var cmd *command.Command
16 flagsets := flagutil.GetConnectionFlags(cfg)
17
18 cmd = &command.Command{
19 ShortUsage: "edge terminal disk modify",
20 ShortHelp: "Modify a disk for a particular Terminal",
21 Flags: append(
22 flagsets,
23 &rags.Rag{
24 Name: flagutil.StoreFlag,
25 Value: &rags.String{},
26 Usage: "Name of the Store - Must be unique",
27 Required: true,
28 },
29 &rags.Rag{
30 Name: flagutil.BannerFlag,
31 Value: &rags.String{},
32 Usage: "Banner name",
33 Required: true,
34 },
35 &rags.Rag{
36 Name: flagutil.DiskID,
37 Value: &rags.String{},
38 Usage: "ID of a Terminal Disk",
39 Required: true,
40 },
41 &rags.Rag{
42 Name: flagutil.DiskDevicePath,
43 Usage: "Path of the Terminal disk",
44 Value: &rags.String{},
45 Required: false,
46 },
47 &rags.Rag{
48 Name: flagutil.DiskInclude,
49 Usage: "Include disk",
50 Value: &rags.Bool{},
51 Required: false,
52 },
53 &rags.Rag{
54 Name: flagutil.DiskExpectEmpty,
55 Usage: "Expect Terminal disk to be empty",
56 Value: &rags.Bool{},
57 Required: false,
58 },
59 &rags.Rag{
60 Name: flagutil.UsePart,
61 Usage: "Create a new partition on the terminal disk to install to",
62 Value: &rags.Bool{},
63 Required: false,
64 },
65 ),
66 Exec: func(_ context.Context, _ []string) error {
67 if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil {
68 return err
69 }
70
71 registrar, err := constructors.BuildRegistrar(cmd.Rags)
72 if err != nil {
73 return err
74 }
75
76 terminalDiskID := flagutil.GetStringFlag(cmd.Rags, flagutil.DiskID)
77
78 reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout)
79 defer cancelReq()
80
81 var expectEmpty *bool
82 if flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskExpectEmpty) {
83 expectEmpty = func(b bool) *bool { return &b }(flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskExpectEmpty))
84 }
85
86 var includeDisk *bool
87 if flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskInclude) {
88 includeDisk = func(b bool) *bool { return &b }(flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskInclude))
89 }
90
91 var usePart *bool
92 if flagutil.GetBoolFlag(cmd.Rags, flagutil.UsePart) {
93 usePart = func(b bool) *bool { return &b }(flagutil.GetBoolFlag(cmd.Rags, flagutil.UsePart))
94 }
95
96 updateDiskInput := model.TerminalDiskUpdateInput{
97 DevicePath: flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.DiskDevicePath),
98 ExpectEmpty: expectEmpty,
99 IncludeDisk: includeDisk,
100 UsePart: usePart,
101 }
102
103 if _, err = registrar.ModifyTerminalDisk(reqCtx, terminalDiskID, &updateDiskInput); err != nil {
104 return err
105 }
106
107 return nil
108 },
109 }
110 return cmd
111 }
112
View as plain text