delete node containerd

pull/227/head
iwilltry42 5 years ago
parent 4a02c25857
commit edc52c6ae6
  1. 8
      cmd/delete/deleteNode.go
  2. 16
      pkg/cluster/node.go
  3. 40
      pkg/runtimes/containerd/container.go
  4. 5
      pkg/runtimes/docker/container.go
  5. 1
      pkg/runtimes/runtime.go

@ -22,8 +22,9 @@ THE SOFTWARE.
package delete
import (
"github.com/rancher/k3d/pkg/cluster"
k3d "github.com/rancher/k3d/pkg/types"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
@ -37,6 +38,11 @@ func NewCmdDeleteNode() *cobra.Command {
Long: `Delete a node.`,
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")
}
cluster.DeleteNode(&k3d.Node{Name: "test-containerd"}, rt)
},
}

@ -45,3 +45,19 @@ func CreateNode(nodeSpec *k3d.Node, runtimeChoice string) error {
log.Debugln("...success")
return nil
}
// DeleteNode deletes an existing node
func DeleteNode(nodeSpec *k3d.Node, runtimeChoice string) error {
var runtime k3drt.Runtime
if runtimeChoice == "docker" {
runtime = k3dDocker.Docker{}
} else {
runtime = k3dContainerd.Containerd{}
}
if err := runtime.DeleteNode(nodeSpec); err != nil {
log.Error(err)
}
log.Debugln("...success")
return nil
}

@ -33,9 +33,12 @@ import (
// CreateNode creates a new k3d node
func (d Containerd) CreateNode(nodeSpec *k3d.Node) error {
log.Debugln("containerd.CreateContainer...")
log.Debugln("containerd.CreateNode...")
ctx := context.Background()
client, err := containerd.New("")
clientOpts := []containerd.ClientOpt{
containerd.WithDefaultNamespace("k3d"),
}
client, err := containerd.New("/run/containerd/containerd.sock", clientOpts...) // TODO: this is the default address on UNIX, different on Windows
if err != nil {
log.Errorln("Failed to create containerd client")
return err
@ -49,6 +52,37 @@ func (d Containerd) CreateNode(nodeSpec *k3d.Node) error {
return nil
},
}
client.NewContainer(ctx, "test-containerd", newContainerOpts...)
resp, err := client.NewContainer(ctx, "test-containerd", newContainerOpts...)
if err != nil {
log.Errorln("Couldn't create container")
return err
}
log.Debugln("Created container with ID", resp.ID)
return nil
}
// DeleteNode deletes an existing k3d node
func (d Containerd) DeleteNode(nodeSpec *k3d.Node) error {
log.Debugln("containerd.DeleteNode...")
ctx := context.Background()
clientOpts := []containerd.ClientOpt{
containerd.WithDefaultNamespace("k3d"),
}
client, err := containerd.New("/run/containerd/containerd.sock", clientOpts...) // TODO: this is the default address on UNIX, different on Windows
if err != nil {
log.Errorln("Failed to create containerd client")
return err
}
container, err := client.LoadContainer(ctx, nodeSpec.Name)
if err != nil {
log.Errorln("Couldn't load container", nodeSpec.Name)
return err
}
if err = container.Delete(ctx, []containerd.DeleteOpts{}...); err != nil {
log.Errorln("Failed to delete container", container.ID)
return err
}
return nil
}

@ -87,3 +87,8 @@ func removeContainer(ID string) error {
return nil
}
// DeleteNode deletes a node
func (d Docker) DeleteNode(nodeSpec *k3d.Node) error {
return nil
}

@ -38,6 +38,7 @@ var Runtimes = map[string]Runtime{
// Runtime defines an interface that can be implemented for various container runtime environments (docker, containerd, etc.)
type Runtime interface {
CreateNode(*k3d.Node) error
DeleteNode(*k3d.Node) error
// StartContainer() error
// ExecContainer() error
// StopContainer() error

Loading…
Cancel
Save