...

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

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

     1  package modify
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"edge-infra.dev/pkg/edge/api/graph/model"
     8  	"edge-infra.dev/pkg/edge/edgecli"
     9  	"edge-infra.dev/pkg/edge/edgecli/constructors"
    10  	"edge-infra.dev/pkg/edge/edgecli/flagutil"
    11  	"edge-infra.dev/pkg/lib/cli/command"
    12  	"edge-infra.dev/pkg/lib/cli/rags"
    13  )
    14  
    15  func NewCmd(cfg *edgecli.Config) *command.Command {
    16  	var cmd *command.Command
    17  	flagsets := flagutil.GetConnectionFlags(cfg)
    18  
    19  	cmd = &command.Command{
    20  		ShortUsage: "edge terminal address modify",
    21  		ShortHelp:  "Modify an address for a particular terminal interface",
    22  		Flags: append(
    23  			flagsets,
    24  			&rags.Rag{
    25  				Name:     flagutil.StoreFlag,
    26  				Value:    &rags.String{},
    27  				Usage:    "Name of the Store - Must be unique",
    28  				Required: true,
    29  			},
    30  			&rags.Rag{
    31  				Name:     flagutil.BannerFlag,
    32  				Value:    &rags.String{},
    33  				Usage:    "Banner name",
    34  				Required: true,
    35  			},
    36  			&rags.Rag{
    37  				Name:     flagutil.TerminalAddressID,
    38  				Value:    &rags.String{},
    39  				Usage:    "Unique terminal address ID",
    40  				Required: true,
    41  			},
    42  			&rags.Rag{
    43  				Name:     flagutil.IPFlag,
    44  				Value:    &rags.String{},
    45  				Usage:    "IP address of an interface",
    46  				Required: false,
    47  			},
    48  			&rags.Rag{
    49  				Name:     flagutil.PrefixLen,
    50  				Usage:    "IP network prefix length",
    51  				Value:    &rags.Int{},
    52  				Required: false,
    53  			},
    54  			&rags.Rag{
    55  				Name:     flagutil.TerminalFamily,
    56  				Usage:    "family of addresses: \"inet\" or \"inet6\"",
    57  				Value:    &rags.String{},
    58  				Required: false,
    59  			},
    60  		),
    61  		Exec: func(_ context.Context, _ []string) error {
    62  			if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil {
    63  				return err
    64  			}
    65  
    66  			registrar, err := constructors.BuildRegistrar(cmd.Rags)
    67  			if err != nil {
    68  				return err
    69  			}
    70  
    71  			terminalAddressID := flagutil.GetStringFlag(cmd.Rags, flagutil.TerminalAddressID)
    72  
    73  			reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout)
    74  			defer cancelReq()
    75  
    76  			terminalFamily := flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.TerminalFamily)
    77  			updatedAddr := model.TerminalAddressUpdateInput{
    78  				IP:        flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.IPFlag),
    79  				PrefixLen: flagutil.GetOptionalFlagValue[int](cmd.Rags, flagutil.PrefixLen),
    80  				Family:    (*model.InetType)(terminalFamily),
    81  			}
    82  
    83  			if _, err = registrar.ModifyTerminalAddress(reqCtx, terminalAddressID, &updatedAddr); err != nil {
    84  				fmt.Println("unable to modify terminal interface")
    85  				return err
    86  			}
    87  
    88  			fmt.Println("successfully modified the terminal interface")
    89  
    90  			return nil
    91  		},
    92  	}
    93  	return cmd
    94  }
    95  

View as plain text