...

Source file src/edge-infra.dev/pkg/edge/edgecli/commands/terminal/disk/list/list.go

Documentation: edge-infra.dev/pkg/edge/edgecli/commands/terminal/disk/list

     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