package list import ( "context" "fmt" "time" "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) var storeName, bannerName string cmd = &command.Command{ ShortUsage: "edge networkservice list", ShortHelp: "List Network Services belonging to a Cluster", Flags: append( flagsets, &rags.Rag{ Name: flagutil.StoreFlag, Usage: "Name of the Store", Value: &rags.String{Var: &storeName}, Required: true, }, &rags.Rag{ Name: flagutil.BannerFlag, Usage: "Banner name", Value: &rags.String{Var: &bannerName}, Required: true, }, ), 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 } storeName := flagutil.GetStringFlag(cmd.Rags, flagutil.StoreFlag) bannerName := flagutil.GetStringFlag(cmd.Rags, flagutil.BannerFlag) fmt.Println("flags validated") reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second) defer cancelReq() cluster, err := registrar.GetCluster(reqCtx, storeName, bannerName) if err != nil { fmt.Println("an error occurred whilst modifying the cluster network service") return err } fmt.Printf("\nCluster Network Services for %s\n", cluster.ClusterEdgeID) for _, service := range cluster.ClusterNetworkServices { fmt.Println("------------------------------------------------------") fmt.Printf("NetworkServiceId: %s\n", service.NetworkServiceID) fmt.Printf("Type: %s\n", service.ServiceType) fmt.Printf("IP/Domain: %s\n", service.IP) fmt.Printf("Family: %s\n", service.Family) if service.Priority != nil { fmt.Printf("Priority: %d\n", *service.Priority) } } fmt.Println("------------------------------------------------------") return nil }, } return cmd }