...
1 package list
2
3 import (
4 "context"
5 "encoding/json"
6 "fmt"
7
8 "edge-infra.dev/pkg/edge/api/graph/model"
9 "edge-infra.dev/pkg/edge/edgecli"
10 "edge-infra.dev/pkg/edge/edgecli/constructors"
11 "edge-infra.dev/pkg/edge/edgecli/flagutil"
12 "edge-infra.dev/pkg/lib/cli/command"
13 "edge-infra.dev/pkg/lib/cli/rags"
14 )
15
16 func NewCmd(cfg *edgecli.Config) *command.Command {
17 var cmd *command.Command
18 flagsets := flagutil.GetConnectionFlags(cfg)
19
20 cmd = &command.Command{
21 ShortUsage: "edge terminal disk list",
22 ShortHelp: "List all of the disks for a Terminal",
23 Flags: append(
24 flagsets,
25 &rags.Rag{
26 Name: flagutil.StoreFlag,
27 Value: &rags.String{},
28 Usage: "Name of the Store - Must be unique",
29 Required: true,
30 },
31 &rags.Rag{
32 Name: flagutil.BannerFlag,
33 Value: &rags.String{},
34 Usage: "Banner name",
35 Required: true,
36 },
37 &rags.Rag{
38 Name: flagutil.TerminalID,
39 Value: &rags.String{},
40 Usage: "ID of Terminal",
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 terminalID := flagutil.GetStringFlag(cmd.Rags, flagutil.TerminalID)
55
56 reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout)
57 defer cancelReq()
58
59 terminal, err := registrar.GetTerminal(reqCtx, terminalID)
60 if err != nil {
61 fmt.Println("an error occurred whilst getting the terminal")
62 return err
63 }
64
65 type DiskListOutput struct {
66 Hostname string `json:"hostname"`
67 Disks []*model.TerminalDisk `json:"disks"`
68 DiscoverDisks string `json:"discoverDisks"`
69 }
70
71 output := DiskListOutput{
72 Hostname: terminal.Hostname,
73 Disks: terminal.Disks,
74 DiscoverDisks: terminal.DiscoverDisks.String(),
75 }
76
77 marshaledOutput, err := json.MarshalIndent(output, "", " ")
78 if err != nil {
79 fmt.Printf("marshaling list output error: %s\n", err)
80 }
81 fmt.Println(string(marshaledOutput))
82
83 return nil
84 },
85 }
86 return cmd
87 }
88
View as plain text