diff --git a/cmd/create/createCluster.go b/cmd/create/createCluster.go index a9b2bf6e..17af8e87 100644 --- a/cmd/create/createCluster.go +++ b/cmd/create/createCluster.go @@ -39,6 +39,7 @@ func NewCmdCreateCluster() *cobra.Command { Use: "cluster", Short: "Create a new k3s cluster in docker", Long: `Create a new k3s cluster with containerized nodes (k3s in docker).`, + Args: cobra.ExactArgs(1), // exactly one cluster name can be set Run: func(cmd *cobra.Command, args []string) { runtime, cluster := parseCmd(cmd, args) if err := k3dCluster.CreateCluster(cluster, runtime); err != nil { @@ -68,7 +69,7 @@ func parseCmd(cmd *cobra.Command, args []string) (runtimes.Runtime, *k3d.Cluster if err != nil { log.Fatalln(err) } - cluster := k3d.Cluster{} + cluster := k3d.Cluster{Name: args[0]} return runtime, &cluster } diff --git a/cmd/create/createNode.go b/cmd/create/createNode.go index c1d3968d..376ad051 100644 --- a/cmd/create/createNode.go +++ b/cmd/create/createNode.go @@ -25,6 +25,7 @@ import ( "github.com/spf13/cobra" "github.com/rancher/k3d/pkg/cluster" + "github.com/rancher/k3d/pkg/runtimes" k3d "github.com/rancher/k3d/pkg/types" log "github.com/sirupsen/logrus" ) @@ -37,18 +38,26 @@ func NewCmdCreateNode() *cobra.Command { Use: "node", Short: "Create a new k3s node in docker", Long: `Create a new containerized k3s node (k3s in docker).`, + Args: cobra.ExactArgs(1), // exactly one name accepted Run: func(cmd *cobra.Command, args []string) { log.Debugln("create node called") rt, err := cmd.Flags().GetString("runtime") if err != nil { log.Debugln("runtime not defined") } - if err := cluster.CreateNode(&k3d.Node{}, rt); err != nil { + runtime, err := runtimes.GetRuntime(rt) + if err != nil { + log.Fatalf("Unsupported runtime '%s'", rt) + } + if err := cluster.CreateNode(&k3d.Node{Name: args[0]}, runtime); err != nil { log.Fatalln(err) } }, } + // add flags + cmd.Flags().Int("replicas", 1, "Number of replicas of this node specification.") + // done return cmd } diff --git a/cmd/delete/deleteCluster.go b/cmd/delete/deleteCluster.go index 0cc13055..ece07945 100644 --- a/cmd/delete/deleteCluster.go +++ b/cmd/delete/deleteCluster.go @@ -22,6 +22,9 @@ THE SOFTWARE. package delete import ( + "github.com/rancher/k3d/pkg/cluster" + "github.com/rancher/k3d/pkg/runtimes" + k3d "github.com/rancher/k3d/pkg/types" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -37,6 +40,19 @@ func NewCmdDeleteCluster() *cobra.Command { Long: `Delete a cluster.`, Run: func(cmd *cobra.Command, args []string) { log.Debugln("delete cluster called") + rt, err := cmd.Flags().GetString("runtime") + if err != nil { + log.Debugln("runtime not defined") + } + runtime, err := runtimes.GetRuntime(rt) + if err != nil { + log.Fatalf("Unsupported runtime '%s'", rt) + } + for _, name := range args { + if err := cluster.DeleteCluster(&k3d.Cluster{Name: name}, runtime); err != nil { + log.Errorln(err) + } + } }, } diff --git a/cmd/delete/deleteNode.go b/cmd/delete/deleteNode.go index a97ba92f..0b537112 100644 --- a/cmd/delete/deleteNode.go +++ b/cmd/delete/deleteNode.go @@ -36,20 +36,25 @@ func NewCmdDeleteNode() *cobra.Command { Use: "node", Short: "Delete a node.", Long: `Delete a node.`, + Args: cobra.MinimumNArgs(1), // at least one node has to be specified Run: func(cmd *cobra.Command, args []string) { log.Debugln("delete node called") rt, err := cmd.Flags().GetString("runtime") if err != nil { log.Debugln("runtime not defined") } - if err := cluster.DeleteNode(&k3d.Node{Name: "test"}, rt); err != nil { - log.Fatalln(err) + for _, name := range args { + if err := cluster.DeleteNode(&k3d.Node{Name: name}, rt); err != nil { + log.Errorln(err) + } } }, } // add subcommands + // add flags + // done return cmd } diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 8eefc06b..b908b403 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -38,3 +38,7 @@ func CreateCluster(cluster *k3d.Cluster, runtime k3drt.Runtime) error { log.Debugln("...success") return nil } + +func DeleteCluster(cluster *k3d.Cluster, runtime k3drt.Runtime) error { + return nil +} diff --git a/pkg/cluster/node.go b/pkg/cluster/node.go index bc36e74b..db362e86 100644 --- a/pkg/cluster/node.go +++ b/pkg/cluster/node.go @@ -31,14 +31,7 @@ import ( ) // CreateNode creates a new containerized k3s node -func CreateNode(nodeSpec *k3d.Node, runtimeChoice string) error { - var runtime k3drt.Runtime - if runtimeChoice == "docker" { - runtime = k3dDocker.Docker{} - } else { - runtime = k3dContainerd.Containerd{} - } - +func CreateNode(nodeSpec *k3d.Node, runtime k3drt.Runtime) error { if err := runtime.CreateNode(nodeSpec); err != nil { log.Error(err) } diff --git a/pkg/runtimes/containerd/container.go b/pkg/runtimes/containerd/container.go index 6f396502..1e366545 100644 --- a/pkg/runtimes/containerd/container.go +++ b/pkg/runtimes/containerd/container.go @@ -57,7 +57,7 @@ func (d Containerd) CreateNode(nodeSpec *k3d.Node) error { log.Errorln("Couldn't create container") return err } - log.Debugln("Created container with ID", resp.ID) + log.Infoln("Created container with ID", resp.ID()) return nil }