...

Source file src/edge-infra.dev/pkg/edge/edgecli/commands/networkservice/remove/remove.go

Documentation: edge-infra.dev/pkg/edge/edgecli/commands/networkservice/remove

     1  package remove
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"time"
     7  
     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  	var storeName, bannerName, networkServiceID string
    19  
    20  	cmd = &command.Command{
    21  		ShortUsage: "edge networkservice remove",
    22  		ShortHelp:  "Remove a Network Service belonging to a Cluster",
    23  		Flags: append(
    24  			flagsets,
    25  			&rags.Rag{
    26  				Name:     flagutil.StoreFlag,
    27  				Usage:    "Name of the Store",
    28  				Value:    &rags.String{Var: &storeName},
    29  				Required: true,
    30  			},
    31  			&rags.Rag{
    32  				Name:     flagutil.BannerFlag,
    33  				Usage:    "Banner name",
    34  				Value:    &rags.String{Var: &bannerName},
    35  				Required: true,
    36  			},
    37  			&rags.Rag{
    38  				Name:     flagutil.NetworkServiceIDFlag,
    39  				Value:    &rags.String{Var: &networkServiceID},
    40  				Usage:    "ID of network service",
    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  			networkServiceID := flagutil.GetStringFlag(cmd.Rags, flagutil.NetworkServiceIDFlag)
    55  			if !flagutil.IsValidUUID(networkServiceID) {
    56  				return fmt.Errorf("invalid uuid type %s", networkServiceID)
    57  			}
    58  			storeName := flagutil.GetStringFlag(cmd.Rags, flagutil.StoreFlag)
    59  			bannerName := flagutil.GetStringFlag(cmd.Rags, flagutil.BannerFlag)
    60  
    61  			fmt.Println("flags validated")
    62  
    63  			reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
    64  			defer cancelReq()
    65  
    66  			cluster, err := registrar.GetCluster(reqCtx, storeName, bannerName)
    67  			if err != nil {
    68  				fmt.Println("an error occurred whilst removing the cluster network service")
    69  				return err
    70  			}
    71  
    72  			reqCtx, cancelReq = context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
    73  			defer cancelReq()
    74  
    75  			fmt.Println("deleting network service...")
    76  
    77  			_, err = registrar.DeleteNetworkServices(reqCtx, cluster.ClusterEdgeID, networkServiceID)
    78  			if err != nil {
    79  				fmt.Println("an error occurred whilst removing the cluster network service")
    80  				return err
    81  			}
    82  
    83  			fmt.Println("network service removed successfully!")
    84  			return nil
    85  		},
    86  	}
    87  	return cmd
    88  }
    89  

View as plain text