From 2101b1362e966a4433adf918b55b1fe7089a94d0 Mon Sep 17 00:00:00 2001 From: Lifubang Date: Tue, 20 Nov 2018 19:53:06 +0800 Subject: [PATCH] add ctr delete --exec-id to debug DeleteProcess Signed-off-by: Lifubang --- cmd/ctr/commands/tasks/delete.go | 36 +++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/cmd/ctr/commands/tasks/delete.go b/cmd/ctr/commands/tasks/delete.go index 735369c15..18a4bcc71 100644 --- a/cmd/ctr/commands/tasks/delete.go +++ b/cmd/ctr/commands/tasks/delete.go @@ -32,8 +32,16 @@ var deleteCommand = cli.Command{ Name: "force, f", Usage: "force delete task process", }, + cli.StringFlag{ + Name: "exec-id", + Usage: "process ID to kill", + }, }, Action: func(context *cli.Context) error { + var ( + execID = context.String("exec-id") + force = context.Bool("force") + ) client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err @@ -48,15 +56,29 @@ var deleteCommand = cli.Command{ return err } var opts []containerd.ProcessDeleteOpts - if context.Bool("force") { + if force { opts = append(opts, containerd.WithProcessKill) } - status, err := task.Delete(ctx, opts...) - if err != nil { - return err - } - if ec := status.ExitCode(); ec != 0 { - return cli.NewExitError("", int(ec)) + if execID != "" { + p, err := task.LoadProcess(ctx, execID, nil) + if err != nil { + return err + } + status, err := p.Delete(ctx, opts...) + if err != nil { + return err + } + if ec := status.ExitCode(); ec != 0 { + return cli.NewExitError("", int(ec)) + } + } else { + status, err := task.Delete(ctx, opts...) + if err != nil { + return err + } + if ec := status.ExitCode(); ec != 0 { + return cli.NewExitError("", int(ec)) + } } return nil },