From 7f9910d04edc5a3a816aa962a93648e2bbad59b8 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Mon, 26 Jun 2017 13:38:08 -0700 Subject: [PATCH] Fix ctr delete to remove snapshot Fix the behavior of removing snapshot on container delete. Adds a flag to keep the snapshot if desired. Signed-off-by: Derek McGowan --- cmd/ctr/delete.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/cmd/ctr/delete.go b/cmd/ctr/delete.go index 7acdc40e5..1dbf2a202 100644 --- a/cmd/ctr/delete.go +++ b/cmd/ctr/delete.go @@ -11,6 +11,12 @@ var deleteCommand = cli.Command{ Name: "delete", Usage: "delete an existing container", ArgsUsage: "CONTAINER", + Flags: []cli.Flag{ + cli.BoolFlag{ + Name: "keep-snapshot", + Usage: "do not clean up snapshot with container", + }, + }, Action: func(context *cli.Context) error { ctx, cancel := appContext(context) defer cancel() @@ -18,13 +24,17 @@ var deleteCommand = cli.Command{ if err != nil { return err } + deleteOpts := []containerd.DeleteOpts{} + if !context.Bool("keep-snapshot") { + deleteOpts = append(deleteOpts, containerd.WithRootFSDeletion) + } container, err := client.LoadContainer(ctx, context.Args().First()) if err != nil { return err } task, err := container.Task(ctx, nil) if err != nil { - return container.Delete(ctx) + return container.Delete(ctx, deleteOpts...) } status, err := task.Status(ctx) if err != nil { @@ -34,7 +44,7 @@ var deleteCommand = cli.Command{ if _, err := task.Delete(ctx); err != nil { return err } - return container.Delete(ctx) + return container.Delete(ctx, deleteOpts...) } return fmt.Errorf("cannot delete a container with an existing task") },