...

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

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

     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