From c92f7221228660b0d7c8a14e562e30f4e0f0f2e9 Mon Sep 17 00:00:00 2001 From: Hussein Galal Date: Thu, 11 Jan 2024 02:36:12 +0200 Subject: [PATCH] Add delete subcommand (#88) * Add delete subcommand Signed-off-by: galal-hussein * Add delete subcommand Signed-off-by: galal-hussein --------- Signed-off-by: galal-hussein --- cli/cmds/cluster/cluster.go | 10 +++++++- cli/cmds/cluster/create.go | 2 +- cli/cmds/cluster/delete.go | 46 +++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/cli/cmds/cluster/cluster.go b/cli/cmds/cluster/cluster.go index 88e822bf..d870a682 100644 --- a/cli/cmds/cluster/cluster.go +++ b/cli/cmds/cluster/cluster.go @@ -11,9 +11,17 @@ var subcommands = []cli.Command{ Usage: "Create new cluster", SkipFlagParsing: false, SkipArgReorder: true, - Action: createCluster, + Action: create, Flags: append(cmds.CommonFlags, clusterCreateFlags...), }, + { + Name: "delete", + Usage: "Delete an existing cluster", + SkipFlagParsing: false, + SkipArgReorder: true, + Action: delete, + Flags: append(cmds.CommonFlags, clusterDeleteFlags...), + }, } func NewCommand() cli.Command { diff --git a/cli/cmds/cluster/create.go b/cli/cmds/cluster/create.go index 55f1802d..b4f06065 100644 --- a/cli/cmds/cluster/create.go +++ b/cli/cmds/cluster/create.go @@ -118,7 +118,7 @@ var ( } ) -func createCluster(clx *cli.Context) error { +func create(clx *cli.Context) error { ctx := context.Background() if err := validateCreateFlags(clx); err != nil { return err diff --git a/cli/cmds/cluster/delete.go b/cli/cmds/cluster/delete.go index 916b1b53..5e0b8653 100644 --- a/cli/cmds/cluster/delete.go +++ b/cli/cmds/cluster/delete.go @@ -1 +1,47 @@ package cluster + +import ( + "context" + + "github.com/rancher/k3k/cli/cmds" + "github.com/rancher/k3k/pkg/apis/k3k.io/v1alpha1" + "github.com/sirupsen/logrus" + "github.com/urfave/cli" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/tools/clientcmd" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +var ( + clusterDeleteFlags = []cli.Flag{ + cli.StringFlag{ + Name: "name", + Usage: "name of the cluster", + Destination: &name, + }, + } +) + +func delete(clx *cli.Context) error { + ctx := context.Background() + + restConfig, err := clientcmd.BuildConfigFromFlags("", cmds.Kubeconfig) + if err != nil { + return err + } + + ctrlClient, err := client.New(restConfig, client.Options{ + Scheme: Scheme, + }) + if err != nil { + return err + } + + logrus.Infof("deleting [%s] cluster", name) + cluster := v1alpha1.Cluster{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + }, + } + return ctrlClient.Delete(ctx, &cluster) +}