...

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

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

     1  package modify
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"strconv"
     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 interface modify",
    22  		ShortHelp:  "Modify an interface for a particular 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.TerminalInterfaceID,
    39  				Value:    &rags.String{},
    40  				Usage:    "Unique terminal interface ID",
    41  				Required: true,
    42  			},
    43  			&rags.Rag{
    44  				Name:     flagutil.MacAddressFlag,
    45  				Value:    &rags.String{},
    46  				Usage:    "MAC address of the network interface you want to change",
    47  				Required: false,
    48  			},
    49  			&rags.Rag{
    50  				Name:     flagutil.Gateway4Flag,
    51  				Value:    &rags.String{},
    52  				Usage:    "IPv4 address of interface's gateway",
    53  				Required: false,
    54  			},
    55  			&rags.Rag{
    56  				Name:     flagutil.Gateway6Flag,
    57  				Value:    &rags.String{},
    58  				Usage:    "IPv6 address of interface's gateway",
    59  				Required: false,
    60  			},
    61  			&rags.Rag{
    62  				Name:     flagutil.Dhcp4Flag,
    63  				Value:    &rags.String{},
    64  				Usage:    "Whether to enable DHCP4 for this interface",
    65  				Required: false,
    66  			},
    67  			&rags.Rag{
    68  				Name:     flagutil.Dhcp6Flag,
    69  				Value:    &rags.String{},
    70  				Usage:    "Whether to enable DHCP6 for this interface",
    71  				Required: false,
    72  			},
    73  		),
    74  		Exec: func(_ context.Context, _ []string) error {
    75  			if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil {
    76  				return err
    77  			}
    78  
    79  			registrar, err := constructors.BuildRegistrar(cmd.Rags)
    80  			if err != nil {
    81  				return err
    82  			}
    83  
    84  			terminalInterfaceID := flagutil.GetStringFlag(cmd.Rags, flagutil.TerminalInterfaceID)
    85  
    86  			reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout)
    87  			defer cancelReq()
    88  
    89  			dhcp4Str := flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.Dhcp4Flag)
    90  			var dhcp4Bool bool
    91  			if dhcp4Str != nil {
    92  				dhcp4Bool, err = strconv.ParseBool(*dhcp4Str)
    93  				if err != nil {
    94  					fmt.Println("unable to parse field dhcp4")
    95  					return err
    96  				}
    97  			}
    98  
    99  			dhcp6Str := flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.Dhcp6Flag)
   100  			var dhcp6Bool bool
   101  			if dhcp6Str != nil {
   102  				dhcp6Bool, err = strconv.ParseBool(*dhcp6Str)
   103  				if err != nil {
   104  					fmt.Println("unable to parse field dhcp6")
   105  					return err
   106  				}
   107  			}
   108  
   109  			updatedIface := model.TerminalInterfaceUpdateInput{
   110  				MacAddress: flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.MacAddressFlag),
   111  				Dhcp4:      &dhcp4Bool,
   112  				Dhcp6:      &dhcp6Bool,
   113  				Gateway4:   flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.Gateway4Flag),
   114  				Gateway6:   flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.Gateway6Flag),
   115  			}
   116  
   117  			if _, err = registrar.ModifyTerminalInterface(reqCtx, terminalInterfaceID, &updatedIface); err != nil {
   118  				fmt.Println("unable to modify terminal interface")
   119  				return err
   120  			}
   121  
   122  			fmt.Println("successfully modified the terminal interface")
   123  
   124  			return nil
   125  		},
   126  	}
   127  	return cmd
   128  }
   129  

View as plain text