1 package create
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 create",
20 ShortHelp: "Create 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.TerminalID,
37 Value: &rags.String{},
38 Usage: "ID of Terminal",
39 Required: true,
40 },
41 &rags.Rag{
42 Name: flagutil.DiskDevicePath,
43 Value: &rags.String{},
44 Usage: "Path of the Terminal disk",
45 Required: true,
46 },
47 &rags.Rag{
48 Name: flagutil.DiskInclude,
49 Value: &rags.Bool{},
50 Usage: "Include disk",
51 Required: true,
52 },
53 &rags.Rag{
54 Name: flagutil.DiskExpectEmpty,
55 Value: &rags.Bool{},
56 Usage: "Expect Terminal disk to be empty",
57 Required: true,
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 terminalID := flagutil.GetStringFlag(cmd.Rags, flagutil.TerminalID)
77
78 reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout)
79 defer cancelReq()
80
81 diskInput := model.TerminalDiskCreateInput{
82 ExpectEmpty: flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskExpectEmpty),
83 IncludeDisk: flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskInclude),
84 DevicePath: flagutil.GetStringFlag(cmd.Rags, flagutil.DiskDevicePath),
85 UsePart: flagutil.GetBoolFlag(cmd.Rags, flagutil.UsePart),
86 }
87
88 err = registrar.CreateTerminalDisk(reqCtx, terminalID, diskInput)
89 if err != nil {
90 return err
91 }
92
93 return nil
94 },
95 }
96 return cmd
97 }
98
View as plain text