package modify import ( "context" "fmt" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/edgecli" "edge-infra.dev/pkg/edge/edgecli/constructors" "edge-infra.dev/pkg/edge/edgecli/flagutil" "edge-infra.dev/pkg/lib/cli/command" "edge-infra.dev/pkg/lib/cli/rags" ) func NewCmd(cfg *edgecli.Config) *command.Command { var cmd *command.Command flagsets := flagutil.GetConnectionFlags(cfg) cmd = &command.Command{ ShortUsage: "edge terminal address modify", ShortHelp: "Modify an address for a particular terminal interface", Flags: append( flagsets, &rags.Rag{ Name: flagutil.StoreFlag, Value: &rags.String{}, Usage: "Name of the Store - Must be unique", Required: true, }, &rags.Rag{ Name: flagutil.BannerFlag, Value: &rags.String{}, Usage: "Banner name", Required: true, }, &rags.Rag{ Name: flagutil.TerminalAddressID, Value: &rags.String{}, Usage: "Unique terminal address ID", Required: true, }, &rags.Rag{ Name: flagutil.IPFlag, Value: &rags.String{}, Usage: "IP address of an interface", Required: false, }, &rags.Rag{ Name: flagutil.PrefixLen, Usage: "IP network prefix length", Value: &rags.Int{}, Required: false, }, &rags.Rag{ Name: flagutil.TerminalFamily, Usage: "family of addresses: \"inet\" or \"inet6\"", Value: &rags.String{}, Required: false, }, ), Exec: func(_ context.Context, _ []string) error { if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil { return err } registrar, err := constructors.BuildRegistrar(cmd.Rags) if err != nil { return err } terminalAddressID := flagutil.GetStringFlag(cmd.Rags, flagutil.TerminalAddressID) reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout) defer cancelReq() terminalFamily := flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.TerminalFamily) updatedAddr := model.TerminalAddressUpdateInput{ IP: flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.IPFlag), PrefixLen: flagutil.GetOptionalFlagValue[int](cmd.Rags, flagutil.PrefixLen), Family: (*model.InetType)(terminalFamily), } if _, err = registrar.ModifyTerminalAddress(reqCtx, terminalAddressID, &updatedAddr); err != nil { fmt.Println("unable to modify terminal interface") return err } fmt.Println("successfully modified the terminal interface") return nil }, } return cmd }