From 4743f1fc4ce91043b4c1cf2cccc7485dff295b48 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Wed, 25 Oct 2017 11:10:00 -0400 Subject: [PATCH] Move NewClient and AppContext to commands pkg Signed-off-by: Michael Crosby --- cmd/ctr/apply.go | 3 ++- cmd/ctr/attach.go | 3 ++- cmd/ctr/checkpoint.go | 3 ++- cmd/ctr/commands/client.go | 40 +++++++++++++++++++++++++++++++++++++ cmd/ctr/container_delete.go | 3 ++- cmd/ctr/containers.go | 3 ++- cmd/ctr/content.go | 14 ++++++------- cmd/ctr/events.go | 3 ++- cmd/ctr/exec.go | 3 ++- cmd/ctr/export.go | 3 ++- cmd/ctr/fetch.go | 2 +- cmd/ctr/fetchobject.go | 2 +- cmd/ctr/images.go | 8 ++++---- cmd/ctr/import.go | 2 +- cmd/ctr/info.go | 2 +- cmd/ctr/kill.go | 3 ++- cmd/ctr/labels.go | 2 +- cmd/ctr/namespaces.go | 8 ++++---- cmd/ctr/pause.go | 7 +++++-- cmd/ctr/plugins.go | 3 ++- cmd/ctr/ps.go | 3 ++- cmd/ctr/pull.go | 2 +- cmd/ctr/push.go | 2 +- cmd/ctr/pushobject.go | 2 +- cmd/ctr/resume.go | 7 +++++-- cmd/ctr/rootfs.go | 2 +- cmd/ctr/run.go | 2 +- cmd/ctr/snapshot.go | 20 +++++++++---------- cmd/ctr/start.go | 3 ++- cmd/ctr/task.go | 3 ++- cmd/ctr/task_delete.go | 7 +++++-- cmd/ctr/utils.go | 35 -------------------------------- cmd/ctr/version.go | 3 ++- 33 files changed, 118 insertions(+), 90 deletions(-) create mode 100644 cmd/ctr/commands/client.go diff --git a/cmd/ctr/apply.go b/cmd/ctr/apply.go index bbd702bf5..b43b4484b 100644 --- a/cmd/ctr/apply.go +++ b/cmd/ctr/apply.go @@ -5,6 +5,7 @@ import ( "github.com/containerd/containerd/archive" "github.com/containerd/containerd/archive/compression" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/log" "github.com/urfave/cli" ) @@ -18,7 +19,7 @@ var applyCommand = cli.Command{ var ( dir = context.Args().First() ) - ctx, cancel := appContext(context) + ctx, cancel := commands.AppContext(context) defer cancel() log.G(ctx).Info("applying layer from stdin") diff --git a/cmd/ctr/attach.go b/cmd/ctr/attach.go index 45f028984..9772141b8 100644 --- a/cmd/ctr/attach.go +++ b/cmd/ctr/attach.go @@ -5,6 +5,7 @@ import ( "github.com/containerd/console" "github.com/containerd/containerd" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/sirupsen/logrus" "github.com/urfave/cli" ) @@ -14,7 +15,7 @@ var taskAttachCommand = cli.Command{ Usage: "attach to the IO of a running container", ArgsUsage: "CONTAINER", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/checkpoint.go b/cmd/ctr/checkpoint.go index 58cf949dd..6f4c2fdd9 100644 --- a/cmd/ctr/checkpoint.go +++ b/cmd/ctr/checkpoint.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/containerd/containerd" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/pkg/errors" "github.com/urfave/cli" ) @@ -23,7 +24,7 @@ var taskCheckpointCommand = cli.Command{ if id == "" { return errors.New("container id must be provided") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/commands/client.go b/cmd/ctr/commands/client.go new file mode 100644 index 000000000..675f54e5f --- /dev/null +++ b/cmd/ctr/commands/client.go @@ -0,0 +1,40 @@ +package commands + +import ( + gocontext "context" + + "github.com/containerd/containerd" + "github.com/containerd/containerd/namespaces" + "github.com/urfave/cli" +) + +// AppContext returns the context for a command. Should only be called once per +// command, near the start. +// +// This will ensure the namespace is picked up and set the timeout, if one is +// defined. +func AppContext(context *cli.Context) (gocontext.Context, gocontext.CancelFunc) { + var ( + ctx = gocontext.Background() + timeout = context.GlobalDuration("timeout") + namespace = context.GlobalString("namespace") + cancel gocontext.CancelFunc + ) + ctx = namespaces.WithNamespace(ctx, namespace) + if timeout > 0 { + ctx, cancel = gocontext.WithTimeout(ctx, timeout) + } else { + ctx, cancel = gocontext.WithCancel(ctx) + } + return ctx, cancel +} + +// NewClient returns a new containerd client +func NewClient(context *cli.Context) (*containerd.Client, gocontext.Context, gocontext.CancelFunc, error) { + client, err := containerd.New(context.GlobalString("address")) + if err != nil { + return nil, nil, nil, err + } + ctx, cancel := AppContext(context) + return client, ctx, cancel, nil +} diff --git a/cmd/ctr/container_delete.go b/cmd/ctr/container_delete.go index 1a50555f4..aaba165d3 100644 --- a/cmd/ctr/container_delete.go +++ b/cmd/ctr/container_delete.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/containerd/containerd" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/log" "github.com/urfave/cli" ) @@ -23,7 +24,7 @@ var containersDeleteCommand = cli.Command{ }, Action: func(context *cli.Context) error { var exitErr error - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/containers.go b/cmd/ctr/containers.go index a46092d6b..c91d6d8ac 100644 --- a/cmd/ctr/containers.go +++ b/cmd/ctr/containers.go @@ -5,6 +5,7 @@ import ( "os" "text/tabwriter" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/urfave/cli" ) @@ -29,7 +30,7 @@ var containersCommand = cli.Command{ filters = context.Args() quiet = context.Bool("quiet") ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/content.go b/cmd/ctr/content.go index 689ee4104..63587b1c5 100644 --- a/cmd/ctr/content.go +++ b/cmd/ctr/content.go @@ -46,7 +46,7 @@ var ( if err != nil { return err } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -90,7 +90,7 @@ var ( if ref == "" { return errors.New("must specify a transaction reference") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -124,7 +124,7 @@ var ( }, Action: func(context *cli.Context) error { match := context.Args().First() - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -164,7 +164,7 @@ var ( quiet = context.Bool("quiet") args = []string(context.Args()) ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -214,7 +214,7 @@ var ( Flags: []cli.Flag{}, Action: func(context *cli.Context) error { object, labels := commands.ObjectWithLabelArgs(context) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -289,7 +289,7 @@ var ( if err != nil { return err } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -338,7 +338,7 @@ var ( args = []string(context.Args()) exitError error ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/events.go b/cmd/ctr/events.go index 7c0628852..ec8ffd065 100644 --- a/cmd/ctr/events.go +++ b/cmd/ctr/events.go @@ -5,6 +5,7 @@ import ( "fmt" eventsapi "github.com/containerd/containerd/api/services/events/v1" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/typeurl" "github.com/urfave/cli" ) @@ -13,7 +14,7 @@ var eventsCommand = cli.Command{ Name: "events", Usage: "display containerd events", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/exec.go b/cmd/ctr/exec.go index 35bcc7c55..ecfddf27d 100644 --- a/cmd/ctr/exec.go +++ b/cmd/ctr/exec.go @@ -5,6 +5,7 @@ import ( "github.com/containerd/console" "github.com/containerd/containerd" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/sirupsen/logrus" "github.com/urfave/cli" ) @@ -36,7 +37,7 @@ var taskExecCommand = cli.Command{ if id == "" { return errors.New("container id must be provided") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/export.go b/cmd/ctr/export.go index 18285e55b..f2b4ea77a 100644 --- a/cmd/ctr/export.go +++ b/cmd/ctr/export.go @@ -4,6 +4,7 @@ import ( "io" "os" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/reference" digest "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" @@ -38,7 +39,7 @@ var imagesExportCommand = cli.Command{ local = context.Args().Get(1) desc ocispec.Descriptor ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/fetch.go b/cmd/ctr/fetch.go index e67ac846d..a06afa271 100644 --- a/cmd/ctr/fetch.go +++ b/cmd/ctr/fetch.go @@ -51,7 +51,7 @@ Most of this is experimental and there are few leaps to make this work.`, } func fetch(ref string, cliContext *cli.Context) (containerd.Image, error) { - client, ctx, cancel, err := newClient(cliContext) + client, ctx, cancel, err := commands.NewClient(cliContext) if err != nil { return nil, err } diff --git a/cmd/ctr/fetchobject.go b/cmd/ctr/fetchobject.go index d801e723c..15cf346d9 100644 --- a/cmd/ctr/fetchobject.go +++ b/cmd/ctr/fetchobject.go @@ -23,7 +23,7 @@ var fetchObjectCommand = cli.Command{ var ( ref = context.Args().First() ) - ctx, cancel := appContext(context) + ctx, cancel := commands.AppContext(context) defer cancel() resolver, err := getResolver(ctx, context) diff --git a/cmd/ctr/images.go b/cmd/ctr/images.go index cf9b97f75..2c99bd4f9 100644 --- a/cmd/ctr/images.go +++ b/cmd/ctr/images.go @@ -47,7 +47,7 @@ var imagesListCommand = cli.Command{ filters = context.Args() quiet = context.Bool("quiet") ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -130,7 +130,7 @@ var imagesSetLabelsCommand = cli.Command{ replaceAll = context.Bool("replace-all") name, labels = commands.ObjectWithLabelArgs(context) ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -183,7 +183,7 @@ var imagesCheckCommand = cli.Command{ var ( exitErr error ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -263,7 +263,7 @@ var imageRemoveCommand = cli.Command{ Description: `Remove one or more images by reference.`, Flags: []cli.Flag{}, Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/import.go b/cmd/ctr/import.go index 7c55ab21b..1a59feec5 100644 --- a/cmd/ctr/import.go +++ b/cmd/ctr/import.go @@ -31,7 +31,7 @@ var imagesImportCommand = cli.Command{ refObject = context.String("ref-object") labels = commands.LabelArgs(context.StringSlice("label")) ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/info.go b/cmd/ctr/info.go index fc5b0efce..e2eb63fbb 100644 --- a/cmd/ctr/info.go +++ b/cmd/ctr/info.go @@ -15,7 +15,7 @@ var containerInfoCommand = cli.Command{ if id == "" { return errors.New("container id must be provided") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/kill.go b/cmd/ctr/kill.go index 39cac7aea..3d479ef3c 100644 --- a/cmd/ctr/kill.go +++ b/cmd/ctr/kill.go @@ -1,6 +1,7 @@ package main import ( + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/pkg/errors" "github.com/urfave/cli" ) @@ -41,7 +42,7 @@ var taskKillCommand = cli.Command{ if pid > 0 && all { return errors.New("enter a pid or all; not both") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/labels.go b/cmd/ctr/labels.go index 019a446aa..62be97ac1 100644 --- a/cmd/ctr/labels.go +++ b/cmd/ctr/labels.go @@ -20,7 +20,7 @@ var containersSetLabelsCommand = cli.Command{ if containerID == "" { return errors.New("please specify a container") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/namespaces.go b/cmd/ctr/namespaces.go index 8f8db9cde..a1d93c26b 100644 --- a/cmd/ctr/namespaces.go +++ b/cmd/ctr/namespaces.go @@ -35,7 +35,7 @@ var namespacesCreateCommand = cli.Command{ if namespace == "" { return errors.New("please specify a namespace") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -56,7 +56,7 @@ var namespacesSetLabelsCommand = cli.Command{ if namespace == "" { return errors.New("please specify a namespace") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -85,7 +85,7 @@ var namespacesListCommand = cli.Command{ }, Action: func(context *cli.Context) error { quiet := context.Bool("quiet") - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -131,7 +131,7 @@ var namespacesRemoveCommand = cli.Command{ Description: "Remove one or more namespaces. For now, the namespace must be empty.", Action: func(context *cli.Context) error { var exitErr error - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/pause.go b/cmd/ctr/pause.go index 03956d567..92944f67e 100644 --- a/cmd/ctr/pause.go +++ b/cmd/ctr/pause.go @@ -1,13 +1,16 @@ package main -import "github.com/urfave/cli" +import ( + "github.com/containerd/containerd/cmd/ctr/commands" + "github.com/urfave/cli" +) var taskPauseCommand = cli.Command{ Name: "pause", Usage: "pause an existing container", ArgsUsage: "CONTAINER", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/plugins.go b/cmd/ctr/plugins.go index 75e5ce523..9c987f799 100644 --- a/cmd/ctr/plugins.go +++ b/cmd/ctr/plugins.go @@ -9,6 +9,7 @@ import ( introspection "github.com/containerd/containerd/api/services/introspection/v1" "github.com/containerd/containerd/api/types" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/urfave/cli" @@ -33,7 +34,7 @@ var pluginsCommand = cli.Command{ quiet = context.Bool("quiet") detailed = context.Bool("detailed") ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/ps.go b/cmd/ctr/ps.go index ae52f2e46..058dec473 100644 --- a/cmd/ctr/ps.go +++ b/cmd/ctr/ps.go @@ -5,6 +5,7 @@ import ( "os" "text/tabwriter" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/windows/hcsshimtypes" "github.com/pkg/errors" "github.com/urfave/cli" @@ -19,7 +20,7 @@ var taskPsCommand = cli.Command{ if id == "" { return errors.New("container id must be provided") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/pull.go b/cmd/ctr/pull.go index 4b3dacdd9..d238b941e 100644 --- a/cmd/ctr/pull.go +++ b/cmd/ctr/pull.go @@ -27,7 +27,7 @@ command. As part of this process, we do the following: ref = context.Args().First() ) - ctx, cancel := appContext(context) + ctx, cancel := commands.AppContext(context) defer cancel() img, err := fetch(ref, context) diff --git a/cmd/ctr/push.go b/cmd/ctr/push.go index 4bd8e5193..c0c8e4420 100644 --- a/cmd/ctr/push.go +++ b/cmd/ctr/push.go @@ -52,7 +52,7 @@ var pushCommand = cli.Command{ local = context.Args().Get(1) desc ocispec.Descriptor ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/pushobject.go b/cmd/ctr/pushobject.go index ce8f71b81..57e804825 100644 --- a/cmd/ctr/pushobject.go +++ b/cmd/ctr/pushobject.go @@ -27,7 +27,7 @@ var pushObjectCommand = cli.Command{ if err != nil { return err } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/resume.go b/cmd/ctr/resume.go index 4f8158fe5..92d860711 100644 --- a/cmd/ctr/resume.go +++ b/cmd/ctr/resume.go @@ -1,13 +1,16 @@ package main -import "github.com/urfave/cli" +import ( + "github.com/containerd/containerd/cmd/ctr/commands" + "github.com/urfave/cli" +) var taskResumeCommand = cli.Command{ Name: "resume", Usage: "resume a paused container", ArgsUsage: "CONTAINER", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/rootfs.go b/cmd/ctr/rootfs.go index 56332af00..ac411e047 100644 --- a/cmd/ctr/rootfs.go +++ b/cmd/ctr/rootfs.go @@ -28,7 +28,7 @@ var rootfsUnpackCommand = cli.Command{ if err != nil { return err } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/run.go b/cmd/ctr/run.go index 80b71af78..e0f0a82b9 100644 --- a/cmd/ctr/run.go +++ b/cmd/ctr/run.go @@ -118,7 +118,7 @@ var runCommand = cli.Command{ if id == "" { return errors.New("container id must be provided") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/snapshot.go b/cmd/ctr/snapshot.go index 6d714bf0b..5c5b5718e 100644 --- a/cmd/ctr/snapshot.go +++ b/cmd/ctr/snapshot.go @@ -38,7 +38,7 @@ var listSnapshotCommand = cli.Command{ Aliases: []string{"ls"}, Usage: "list snapshots", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -83,7 +83,7 @@ var usageSnapshotCommand = cli.Command{ return progress.Bytes(s).String() } } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -124,7 +124,7 @@ var removeSnapshotCommand = cli.Command{ ArgsUsage: " [, ...]", Usage: "remove snapshots", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -160,7 +160,7 @@ var prepareSnapshotCommand = cli.Command{ key = context.Args().Get(0) parent = context.Args().Get(1) ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -199,7 +199,7 @@ var viewSnapshotCommand = cli.Command{ key = context.Args().Get(0) parent = context.Args().Get(1) ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -232,7 +232,7 @@ var mountSnapshotCommand = cli.Command{ target = context.Args().Get(0) key = context.Args().Get(1) ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -261,7 +261,7 @@ var commitSnapshotCommand = cli.Command{ key = context.Args().Get(0) active = context.Args().Get(1) ) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -275,7 +275,7 @@ var treeSnapshotCommand = cli.Command{ Name: "tree", Usage: "display tree view of snapshot branches", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -315,7 +315,7 @@ var infoSnapshotCommand = cli.Command{ } key := context.Args().Get(0) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } @@ -340,7 +340,7 @@ var labelSnapshotCommand = cli.Command{ Flags: []cli.Flag{}, Action: func(context *cli.Context) error { key, labels := commands.ObjectWithLabelArgs(context) - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/start.go b/cmd/ctr/start.go index 93ced427d..87b72ebf1 100644 --- a/cmd/ctr/start.go +++ b/cmd/ctr/start.go @@ -2,6 +2,7 @@ package main import ( "github.com/containerd/console" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/urfave/cli" @@ -25,7 +26,7 @@ var taskStartCommand = cli.Command{ if id == "" { return errors.New("container id must be provided") } - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/task.go b/cmd/ctr/task.go index 6dbc5ba4c..c103b7271 100644 --- a/cmd/ctr/task.go +++ b/cmd/ctr/task.go @@ -6,6 +6,7 @@ import ( "text/tabwriter" tasks "github.com/containerd/containerd/api/services/tasks/v1" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/urfave/cli" ) @@ -32,7 +33,7 @@ var tasksCommand = cli.Command{ }, Action: func(context *cli.Context) error { quiet := context.Bool("quiet") - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/task_delete.go b/cmd/ctr/task_delete.go index aa5cbe7fc..dbae378c1 100644 --- a/cmd/ctr/task_delete.go +++ b/cmd/ctr/task_delete.go @@ -1,13 +1,16 @@ package main -import "github.com/urfave/cli" +import ( + "github.com/containerd/containerd/cmd/ctr/commands" + "github.com/urfave/cli" +) var taskDeleteCommand = cli.Command{ Name: "delete", Usage: "delete a task", ArgsUsage: "CONTAINER", Action: func(context *cli.Context) error { - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err } diff --git a/cmd/ctr/utils.go b/cmd/ctr/utils.go index bd6fa8da3..c6fadc41a 100644 --- a/cmd/ctr/utils.go +++ b/cmd/ctr/utils.go @@ -16,8 +16,6 @@ import ( "time" "github.com/containerd/console" - "github.com/containerd/containerd" - "github.com/containerd/containerd/namespaces" "github.com/containerd/containerd/remotes" "github.com/containerd/containerd/remotes/docker" specs "github.com/opencontainers/runtime-spec/specs-go" @@ -26,39 +24,6 @@ import ( "github.com/urfave/cli" ) -// appContext returns the context for a command. Should only be called once per -// command, near the start. -// -// This will ensure the namespace is picked up and set the timeout, if one is -// defined. -func appContext(clicontext *cli.Context) (gocontext.Context, gocontext.CancelFunc) { - var ( - ctx = gocontext.Background() - timeout = clicontext.GlobalDuration("timeout") - namespace = clicontext.GlobalString("namespace") - cancel gocontext.CancelFunc - ) - - ctx = namespaces.WithNamespace(ctx, namespace) - - if timeout > 0 { - ctx, cancel = gocontext.WithTimeout(ctx, timeout) - } else { - ctx, cancel = gocontext.WithCancel(ctx) - } - - return ctx, cancel -} - -func newClient(context *cli.Context) (*containerd.Client, gocontext.Context, gocontext.CancelFunc, error) { - client, err := containerd.New(context.GlobalString("address")) - if err != nil { - return nil, nil, nil, err - } - ctx, cancel := appContext(context) - return client, ctx, cancel, nil -} - func passwordPrompt() (string, error) { c := console.Current() defer c.Reset() diff --git a/cmd/ctr/version.go b/cmd/ctr/version.go index ec2d0ecf9..a937eb65a 100644 --- a/cmd/ctr/version.go +++ b/cmd/ctr/version.go @@ -4,6 +4,7 @@ import ( "fmt" "os" + "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/version" "github.com/urfave/cli" ) @@ -19,7 +20,7 @@ var versionCommand = cli.Command{ fmt.Printf(" Version: %s\n", version.Version) fmt.Printf(" Revision: %s\n", version.Revision) fmt.Println("") - client, ctx, cancel, err := newClient(context) + client, ctx, cancel, err := commands.NewClient(context) if err != nil { return err }