diff --git a/cmd/nerdctl/build.go b/cmd/nerdctl/build.go index a40c6db2751..eb8b25723e7 100644 --- a/cmd/nerdctl/build.go +++ b/cmd/nerdctl/build.go @@ -31,6 +31,7 @@ import ( "github.com/containerd/containerd/errdefs" dockerreference "github.com/containerd/containerd/reference/docker" "github.com/containerd/nerdctl/pkg/buildkitutil" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/defaults" "github.com/containerd/nerdctl/pkg/platformutil" "github.com/containerd/nerdctl/pkg/strutil" @@ -194,10 +195,17 @@ func buildAction(cmd *cobra.Command, args []string) error { return err } } - + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if len(tags) > 1 { logrus.Debug("Found more than 1 tag") - client, ctx, cancel, err := newClient(cmd) if err != nil { return fmt.Errorf("unable to tag images: %s", err) } @@ -241,8 +249,16 @@ func generateBuildctlArgs(cmd *cobra.Command, buildkitHost string, platform, arg if err != nil { return "", nil, false, "", nil, nil, err } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return "", nil, false, "", nil, nil, err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return "", nil, false, "", nil, nil, err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if output == "" { - client, ctx, cancel, err := newClient(cmd) if err != nil { return "", nil, false, "", nil, nil, err } diff --git a/cmd/nerdctl/commit.go b/cmd/nerdctl/commit.go index 7db1853edb2..2e84958c3f6 100644 --- a/cmd/nerdctl/commit.go +++ b/cmd/nerdctl/commit.go @@ -22,6 +22,7 @@ import ( "fmt" "strings" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/imgutil/commit" "github.com/containerd/nerdctl/pkg/referenceutil" @@ -51,8 +52,19 @@ func commitAction(cmd *cobra.Command, args []string) error { if err != nil { return err } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) - client, ctx, cancel, err := newClient(cmd) + if err != nil { + return err + } if err != nil { return err } diff --git a/cmd/nerdctl/completion.go b/cmd/nerdctl/completion.go index d86ce014696..099d7c55476 100644 --- a/cmd/nerdctl/completion.go +++ b/cmd/nerdctl/completion.go @@ -21,13 +21,22 @@ import ( "time" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/labels" "github.com/containerd/nerdctl/pkg/netutil" "github.com/spf13/cobra" ) func shellCompleteImageNames(cmd *cobra.Command) ([]string, cobra.ShellCompDirective) { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return nil, cobra.ShellCompDirectiveError + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, cobra.ShellCompDirectiveError + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return nil, cobra.ShellCompDirectiveError } @@ -46,7 +55,15 @@ func shellCompleteImageNames(cmd *cobra.Command) ([]string, cobra.ShellCompDirec } func shellCompleteContainerNames(cmd *cobra.Command, filterFunc func(containerd.ProcessStatus) bool) ([]string, cobra.ShellCompDirective) { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return nil, cobra.ShellCompDirectiveError + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, cobra.ShellCompDirectiveError + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return nil, cobra.ShellCompDirectiveError } diff --git a/cmd/nerdctl/compose_build.go b/cmd/nerdctl/compose_build.go index 2024fde2f07..e02d39b2573 100644 --- a/cmd/nerdctl/compose_build.go +++ b/cmd/nerdctl/compose_build.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -49,8 +50,16 @@ func composeBuildAction(cmd *cobra.Command, args []string) error { if err != nil { return err } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } - client, ctx, cancel, err := newClient(cmd) + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_config.go b/cmd/nerdctl/compose_config.go index 17fa15746e6..b98567020f8 100644 --- a/cmd/nerdctl/compose_config.go +++ b/cmd/nerdctl/compose_config.go @@ -19,6 +19,7 @@ package main import ( "fmt" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -62,8 +63,16 @@ func composeConfigAction(cmd *cobra.Command, args []string) error { if err != nil { return err } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } - client, ctx, cancel, err := newClient(cmd) + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_create.go b/cmd/nerdctl/compose_create.go index 66993a7ced5..c371beb26c4 100644 --- a/cmd/nerdctl/compose_create.go +++ b/cmd/nerdctl/compose_create.go @@ -19,6 +19,7 @@ package main import ( "errors" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -63,7 +64,15 @@ func composeCreateAction(cmd *cobra.Command, args []string) error { return errors.New("flag --force-recreate and --no-recreate cannot be specified together") } - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_down.go b/cmd/nerdctl/compose_down.go index 8585176aa37..8bbd0f06009 100644 --- a/cmd/nerdctl/compose_down.go +++ b/cmd/nerdctl/compose_down.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -40,12 +41,20 @@ func composeDownAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - removeOrphans, err := cmd.Flags().GetBool("remove-orphans") + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") if err != nil { return err } - client, ctx, cancel, err := newClient(cmd) + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) + if err != nil { + return err + } + + removeOrphans, err := cmd.Flags().GetBool("remove-orphans") if err != nil { return err } diff --git a/cmd/nerdctl/compose_exec.go b/cmd/nerdctl/compose_exec.go index 0dbcd0ebaf3..afe73db4739 100644 --- a/cmd/nerdctl/compose_exec.go +++ b/cmd/nerdctl/compose_exec.go @@ -19,6 +19,7 @@ package main import ( "errors" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -94,7 +95,15 @@ func composeExecAction(cmd *cobra.Command, args []string) error { return errors.New("currently flag -t and -d cannot be specified together (FIXME)") } - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_images.go b/cmd/nerdctl/compose_images.go index e5b52cda1a1..24fe5e99d34 100644 --- a/cmd/nerdctl/compose_images.go +++ b/cmd/nerdctl/compose_images.go @@ -25,6 +25,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/pkg/progress" "github.com/containerd/containerd/snapshots" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/imgutil" "github.com/containerd/nerdctl/pkg/labels" "github.com/containerd/nerdctl/pkg/strutil" @@ -50,8 +51,15 @@ func composeImagesAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_kill.go b/cmd/nerdctl/compose_kill.go index 6ab4d152d87..27ed42a2fb7 100644 --- a/cmd/nerdctl/compose_kill.go +++ b/cmd/nerdctl/compose_kill.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -38,7 +39,15 @@ func composeKillAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_logs.go b/cmd/nerdctl/compose_logs.go index 204138dcb39..26672de6b66 100644 --- a/cmd/nerdctl/compose_logs.go +++ b/cmd/nerdctl/compose_logs.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -58,8 +59,16 @@ func composeLogsAction(cmd *cobra.Command, args []string) error { if err != nil { return err } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } - client, ctx, cancel, err := newClient(cmd) + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_pause.go b/cmd/nerdctl/compose_pause.go index 031746252cc..3b3f4826fc8 100644 --- a/cmd/nerdctl/compose_pause.go +++ b/cmd/nerdctl/compose_pause.go @@ -21,6 +21,7 @@ import ( "sync" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/labels" "github.com/spf13/cobra" "golang.org/x/sync/errgroup" @@ -39,7 +40,15 @@ func newComposePauseCommand() *cobra.Command { } func composePauseAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } @@ -97,7 +106,15 @@ func newComposeUnpauseCommand() *cobra.Command { } func composeUnpauseAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_port.go b/cmd/nerdctl/compose_port.go index e651eeaf6f5..a48d6c340ff 100644 --- a/cmd/nerdctl/compose_port.go +++ b/cmd/nerdctl/compose_port.go @@ -20,6 +20,7 @@ import ( "fmt" "strconv" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -65,8 +66,15 @@ func composePortAction(cmd *cobra.Command, args []string) error { if port <= 0 { return fmt.Errorf("unexpected port: %d", port) } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_ps.go b/cmd/nerdctl/compose_ps.go index 88fc786b84d..467a31a0a4b 100644 --- a/cmd/nerdctl/compose_ps.go +++ b/cmd/nerdctl/compose_ps.go @@ -23,6 +23,7 @@ import ( "github.com/containerd/containerd" gocni "github.com/containerd/go-cni" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/containerutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/labels" @@ -67,8 +68,15 @@ func composePsAction(cmd *cobra.Command, args []string) error { if format != "json" && format != "" { return fmt.Errorf("unsupported format %s, supported formats are: [json]", format) } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_pull.go b/cmd/nerdctl/compose_pull.go index 8976477370f..a2214357a94 100644 --- a/cmd/nerdctl/compose_pull.go +++ b/cmd/nerdctl/compose_pull.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -34,7 +35,15 @@ func newComposePullCommand() *cobra.Command { } func composePullAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_push.go b/cmd/nerdctl/compose_push.go index 36a2f4f2aae..3337bd7013c 100644 --- a/cmd/nerdctl/compose_push.go +++ b/cmd/nerdctl/compose_push.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -33,7 +34,15 @@ func newComposePushCommand() *cobra.Command { } func composePushAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_restart.go b/cmd/nerdctl/compose_restart.go index 7f1e3e633e1..a8a5e061ec0 100644 --- a/cmd/nerdctl/compose_restart.go +++ b/cmd/nerdctl/compose_restart.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -43,8 +44,16 @@ func composeRestartAction(cmd *cobra.Command, args []string) error { } opt.Timeout = &timeValue } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } - client, ctx, cancel, err := newClient(cmd) + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_rm.go b/cmd/nerdctl/compose_rm.go index 1f718b29079..dc555b2c351 100644 --- a/cmd/nerdctl/compose_rm.go +++ b/cmd/nerdctl/compose_rm.go @@ -20,6 +20,7 @@ import ( "fmt" "strings" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -67,8 +68,15 @@ func composeRemoveAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_run.go b/cmd/nerdctl/compose_run.go index 559b6bebf57..0f0b64acf49 100644 --- a/cmd/nerdctl/compose_run.go +++ b/cmd/nerdctl/compose_run.go @@ -20,6 +20,7 @@ import ( "errors" "fmt" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -162,8 +163,15 @@ func composeRunAction(cmd *cobra.Command, args []string) error { if tty && detach { return errors.New("currently flag -t and -d cannot be specified together (FIXME)") } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_start.go b/cmd/nerdctl/compose_start.go index 3360fa1a6fe..8faaecf17af 100644 --- a/cmd/nerdctl/compose_start.go +++ b/cmd/nerdctl/compose_start.go @@ -23,6 +23,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/errdefs" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/containerutil" "github.com/containerd/nerdctl/pkg/labels" "github.com/spf13/cobra" @@ -42,7 +43,15 @@ func newComposeStartCommand() *cobra.Command { } func composeStartAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_stop.go b/cmd/nerdctl/compose_stop.go index 09d2a1943c8..a437fa394f4 100644 --- a/cmd/nerdctl/compose_stop.go +++ b/cmd/nerdctl/compose_stop.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -43,8 +44,15 @@ func composeStopAction(cmd *cobra.Command, args []string) error { } opt.Timeout = &timeValue } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_top.go b/cmd/nerdctl/compose_top.go index a31d83b9bf2..fcf40dec886 100644 --- a/cmd/nerdctl/compose_top.go +++ b/cmd/nerdctl/compose_top.go @@ -20,6 +20,7 @@ import ( "fmt" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/containerutil" "github.com/containerd/nerdctl/pkg/labels" "github.com/spf13/cobra" @@ -38,7 +39,15 @@ func newComposeTopCommand() *cobra.Command { } func composeTopAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/compose_up.go b/cmd/nerdctl/compose_up.go index 8863711e2a7..bc415e5f24e 100644 --- a/cmd/nerdctl/compose_up.go +++ b/cmd/nerdctl/compose_up.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/composer" "github.com/spf13/cobra" ) @@ -98,8 +99,16 @@ func composeUpAction(cmd *cobra.Command, services []string) error { } scale[parts[0]] = uint64(replicas) } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } - client, ctx, cancel, err := newClient(cmd) + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/container_inspect.go b/cmd/nerdctl/container_inspect.go index 81b1a784174..1798089e10f 100644 --- a/cmd/nerdctl/container_inspect.go +++ b/cmd/nerdctl/container_inspect.go @@ -21,6 +21,7 @@ import ( "fmt" "time" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/containerinspector" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" @@ -52,7 +53,15 @@ func newContainerInspectCommand() *cobra.Command { } func containerInspectAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/container_prune.go b/cmd/nerdctl/container_prune.go index ab38ad8d1f2..c8155fb7e8c 100644 --- a/cmd/nerdctl/container_prune.go +++ b/cmd/nerdctl/container_prune.go @@ -23,6 +23,7 @@ import ( "strings" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -57,8 +58,16 @@ func containerPruneAction(cmd *cobra.Command, _ []string) error { return nil } } + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } - client, ctx, cancel, err := newClient(cmd) + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/create.go b/cmd/nerdctl/create.go index 7a5c9f063c0..f93de4d0391 100644 --- a/cmd/nerdctl/create.go +++ b/cmd/nerdctl/create.go @@ -20,6 +20,7 @@ import ( "fmt" "runtime" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/spf13/cobra" ) @@ -63,8 +64,15 @@ func createAction(cmd *cobra.Command, args []string) error { if (platform == "windows" || platform == "freebsd") && !experimental { return fmt.Errorf("%s requires experimental mode to be enabled", platform) } - - client, ctx, cancel, err := newClientWithPlatform(cmd, platform) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClientWithPlatform(cmd.Context(), namespace, address, platform) if err != nil { return err } diff --git a/cmd/nerdctl/events.go b/cmd/nerdctl/events.go index d3faeb8ae18..e91c5584755 100644 --- a/cmd/nerdctl/events.go +++ b/cmd/nerdctl/events.go @@ -26,6 +26,7 @@ import ( "github.com/containerd/containerd/events" "github.com/containerd/containerd/log" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/typeurl" @@ -63,7 +64,15 @@ type Out struct { // eventsActions is from https://github.com/containerd/containerd/blob/v1.4.3/cmd/ctr/commands/events/events.go func eventsAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/exec.go b/cmd/nerdctl/exec.go index 5920e4a69b7..7700998522c 100644 --- a/cmd/nerdctl/exec.go +++ b/cmd/nerdctl/exec.go @@ -28,6 +28,7 @@ import ( "github.com/containerd/containerd/cio" "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/cmd/ctr/commands/tasks" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/flagutil" "github.com/containerd/nerdctl/pkg/idgen" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" @@ -71,8 +72,15 @@ func execAction(cmd *cobra.Command, args []string) error { newArg = append(newArg, args[2:]...) args = newArg } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/history.go b/cmd/nerdctl/history.go index c1e9ae79ecb..ffaadb3d903 100644 --- a/cmd/nerdctl/history.go +++ b/cmd/nerdctl/history.go @@ -29,6 +29,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/pkg/progress" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/idutil/imagewalker" "github.com/containerd/nerdctl/pkg/imgutil" @@ -69,7 +70,15 @@ type historyPrintable struct { } func historyAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/image_convert.go b/cmd/nerdctl/image_convert.go index 33a37bcb2fe..6579fc43ed0 100644 --- a/cmd/nerdctl/image_convert.go +++ b/cmd/nerdctl/image_convert.go @@ -30,6 +30,7 @@ import ( "github.com/containerd/containerd/images" "github.com/containerd/containerd/images/converter" "github.com/containerd/containerd/images/converter/uncompress" + "github.com/containerd/nerdctl/pkg/clientutil" converterutil "github.com/containerd/nerdctl/pkg/imgutil/converter" "github.com/containerd/nerdctl/pkg/platformutil" "github.com/containerd/nerdctl/pkg/referenceutil" @@ -177,8 +178,15 @@ func imageConvertAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } @@ -457,8 +465,16 @@ func getNydusConvertOpts(cmd *cobra.Command) (*nydusconvert.PackOption, error) { if err != nil { return nil, err } + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return nil, err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, err + } if workDir == "" { - workDir, err = getDataStore(cmd) + workDir, err = clientutil.DataStore(dataRoot, address) if err != nil { return nil, err } diff --git a/cmd/nerdctl/image_cryptutil.go b/cmd/nerdctl/image_cryptutil.go index 18d232ebb82..3b406bf7eae 100644 --- a/cmd/nerdctl/image_cryptutil.go +++ b/cmd/nerdctl/image_cryptutil.go @@ -25,6 +25,7 @@ import ( "github.com/containerd/containerd/images/converter" "github.com/containerd/imgcrypt/images/encryption" "github.com/containerd/imgcrypt/images/encryption/parsehelpers" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/platformutil" "github.com/containerd/nerdctl/pkg/referenceutil" ocispec "github.com/opencontainers/image-spec/specs-go/v1" @@ -135,8 +136,15 @@ func getImgcryptAction(encrypt bool) func(cmd *cobra.Command, args []string) err if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/image_inspect.go b/cmd/nerdctl/image_inspect.go index 1bc7af68d52..a3c9fa5c540 100644 --- a/cmd/nerdctl/image_inspect.go +++ b/cmd/nerdctl/image_inspect.go @@ -23,6 +23,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/platforms" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/idutil/imagewalker" "github.com/containerd/nerdctl/pkg/imageinspector" @@ -77,7 +78,15 @@ func imageInspectActionWithPlatform(cmd *cobra.Command, args []string, platform platformM := platforms.Only(platformParsed) clientOpts = append(clientOpts, containerd.WithDefaultPlatform(platformM)) } - client, ctx, cancel, err := newClient(cmd, clientOpts...) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address, clientOpts...) if err != nil { return err } diff --git a/cmd/nerdctl/image_prune.go b/cmd/nerdctl/image_prune.go index ee869a183e0..2715c13b015 100644 --- a/cmd/nerdctl/image_prune.go +++ b/cmd/nerdctl/image_prune.go @@ -24,6 +24,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/images" "github.com/containerd/containerd/platforms" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/opencontainers/go-digest" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -73,8 +74,15 @@ func imagePruneAction(cmd *cobra.Command, _ []string) error { return nil } } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/images.go b/cmd/nerdctl/images.go index 867af498685..39e2a96ef6a 100644 --- a/cmd/nerdctl/images.go +++ b/cmd/nerdctl/images.go @@ -37,6 +37,7 @@ import ( "github.com/containerd/containerd/platforms" dockerreference "github.com/containerd/containerd/reference/docker" "github.com/containerd/containerd/snapshots" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/imgutil" "github.com/containerd/nerdctl/pkg/referenceutil" @@ -98,7 +99,15 @@ func imagesAction(cmd *cobra.Command, args []string) error { filters = append(filters, fmt.Sprintf("name==%s", canonicalRef.String())) filters = append(filters, fmt.Sprintf("name==%s", args[0])) } - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/info.go b/cmd/nerdctl/info.go index 27c0bd17384..99488a0fc96 100644 --- a/cmd/nerdctl/info.go +++ b/cmd/nerdctl/info.go @@ -27,6 +27,7 @@ import ( "golang.org/x/text/language" "github.com/containerd/containerd/api/services/introspection/v1" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/infoutil" "github.com/containerd/nerdctl/pkg/inspecttypes/dockercompat" @@ -73,8 +74,15 @@ func infoAction(cmd *cobra.Command, args []string) error { return err } } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/inspect.go b/cmd/nerdctl/inspect.go index 0bb29b7939e..9482362ed38 100644 --- a/cmd/nerdctl/inspect.go +++ b/cmd/nerdctl/inspect.go @@ -20,6 +20,7 @@ import ( "context" "fmt" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/idutil/imagewalker" @@ -71,8 +72,15 @@ func inspectAction(cmd *cobra.Command, args []string) error { if len(inspectType) > 0 && !validInspectType[inspectType] { return fmt.Errorf("%q is not a valid value for --type", inspectType) } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/internal_oci_hook.go b/cmd/nerdctl/internal_oci_hook.go index 486c11664c7..be4a45a9fe6 100644 --- a/cmd/nerdctl/internal_oci_hook.go +++ b/cmd/nerdctl/internal_oci_hook.go @@ -20,6 +20,7 @@ import ( "errors" "os" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/ocihook" "github.com/spf13/cobra" @@ -41,10 +42,18 @@ func internalOCIHookAction(cmd *cobra.Command, args []string) error { if len(args) > 0 { event = args[0] } + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } if event == "" { return errors.New("event type needs to be passed") } - dataStore, err := getDataStore(cmd) + dataStore, err := clientutil.DataStore(dataRoot, address) if err != nil { return err } diff --git a/cmd/nerdctl/kill.go b/cmd/nerdctl/kill.go index a354f00e9a6..8cc7fbd25f4 100644 --- a/cmd/nerdctl/kill.go +++ b/cmd/nerdctl/kill.go @@ -26,6 +26,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/cio" "github.com/containerd/containerd/errdefs" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/moby/sys/signal" @@ -60,8 +61,15 @@ func killAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/load.go b/cmd/nerdctl/load.go index 02e43d559c3..1bd57799cb2 100644 --- a/cmd/nerdctl/load.go +++ b/cmd/nerdctl/load.go @@ -27,6 +27,7 @@ import ( "github.com/containerd/containerd/images" "github.com/containerd/containerd/images/archive" "github.com/containerd/containerd/platforms" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/platformutil" "github.com/spf13/cobra" ) @@ -99,9 +100,17 @@ func loadAction(cmd *cobra.Command, _ []string) error { } func loadImage(in io.Reader, cmd *cobra.Command, platMC platforms.MatchComparer, quiet bool) error { - // In addition to passing WithImagePlatform() to client.Import(), we also need to pass WithDefaultPlatform() to newClient(). + // In addition to passing WithImagePlatform() to client.Import(), we also need to pass WithDefaultPlatform() to NewClient(). // Otherwise unpacking may fail. - client, ctx, cancel, err := newClient(cmd, containerd.WithDefaultPlatform(platMC)) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address, containerd.WithDefaultPlatform(platMC)) if err != nil { return err } diff --git a/cmd/nerdctl/logs.go b/cmd/nerdctl/logs.go index b4c5ff8b593..a3345800e0c 100644 --- a/cmd/nerdctl/logs.go +++ b/cmd/nerdctl/logs.go @@ -25,6 +25,7 @@ import ( "syscall" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/labels" "github.com/containerd/nerdctl/pkg/logging" @@ -51,7 +52,15 @@ func newLogsCommand() *cobra.Command { } func logsAction(cmd *cobra.Command, args []string) error { - dataStore, err := getDataStore(cmd) + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + dataStore, err := clientutil.DataStore(dataRoot, address) if err != nil { return err } @@ -64,8 +73,11 @@ func logsAction(cmd *cobra.Command, args []string) error { case "moby", "k8s.io": logrus.Warn("Currently, `nerdctl logs` only supports containers created with `nerdctl run -d`") } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/main_unix.go b/cmd/nerdctl/main_unix.go index 3fe1f41105a..6bbdcd14ccb 100644 --- a/cmd/nerdctl/main_unix.go +++ b/cmd/nerdctl/main_unix.go @@ -19,6 +19,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/infoutil" "github.com/containerd/nerdctl/pkg/rootlessutil" "github.com/sirupsen/logrus" @@ -30,8 +31,15 @@ func shellCompleteNamespaceNames(cmd *cobra.Command, args []string, toComplete s _ = rootlessutil.ParentMain() return nil, cobra.ShellCompDirectiveNoFileComp } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return nil, cobra.ShellCompDirectiveNoFileComp + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, cobra.ShellCompDirectiveNoFileComp + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return nil, cobra.ShellCompDirectiveError } @@ -52,7 +60,15 @@ func shellCompleteSnapshotterNames(cmd *cobra.Command, args []string, toComplete _ = rootlessutil.ParentMain() return nil, cobra.ShellCompDirectiveNoFileComp } - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return nil, cobra.ShellCompDirectiveNoFileComp + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, cobra.ShellCompDirectiveNoFileComp + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return nil, cobra.ShellCompDirectiveError } diff --git a/cmd/nerdctl/namespace.go b/cmd/nerdctl/namespace.go index 0d05926c69e..d167a92fd8a 100644 --- a/cmd/nerdctl/namespace.go +++ b/cmd/nerdctl/namespace.go @@ -24,6 +24,7 @@ import ( "text/tabwriter" "github.com/containerd/containerd/namespaces" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/mountutil/volumestore" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -62,7 +63,15 @@ func newNamespaceLsCommand() *cobra.Command { } func namespaceLsAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } @@ -83,8 +92,11 @@ func namespaceLsAction(cmd *cobra.Command, args []string) error { } return nil } - - dataStore, err := getDataStore(cmd) + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return err + } + dataStore, err := clientutil.DataStore(dataRoot, address) if err != nil { return err } diff --git a/cmd/nerdctl/namespace_create.go b/cmd/nerdctl/namespace_create.go index 481f41e6c69..5d592ae5952 100644 --- a/cmd/nerdctl/namespace_create.go +++ b/cmd/nerdctl/namespace_create.go @@ -18,6 +18,7 @@ package main import ( "github.com/containerd/containerd/cmd/ctr/commands" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/spf13/cobra" ) @@ -40,8 +41,15 @@ func namespaceCreateAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/namespace_inspect.go b/cmd/nerdctl/namespace_inspect.go index 382328610f3..330f593b7b5 100644 --- a/cmd/nerdctl/namespace_inspect.go +++ b/cmd/nerdctl/namespace_inspect.go @@ -18,6 +18,7 @@ package main import ( "github.com/containerd/containerd/namespaces" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/inspecttypes/native" "github.com/spf13/cobra" @@ -40,7 +41,15 @@ func newNamespaceInspectCommand() *cobra.Command { } func labelInspectAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/namespace_rm.go b/cmd/nerdctl/namespace_rm.go index 68bfeaa913b..db81d470759 100644 --- a/cmd/nerdctl/namespace_rm.go +++ b/cmd/nerdctl/namespace_rm.go @@ -21,6 +21,7 @@ import ( "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/log" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/spf13/cobra" ) @@ -40,7 +41,15 @@ func newNamespaceRmCommand() *cobra.Command { func namespaceRmAction(cmd *cobra.Command, args []string) error { var exitErr error - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/namespace_update.go b/cmd/nerdctl/namespace_update.go index b5127e28bfb..c82301994b4 100644 --- a/cmd/nerdctl/namespace_update.go +++ b/cmd/nerdctl/namespace_update.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/spf13/cobra" ) @@ -38,8 +39,15 @@ func labelUpdateAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/network_prune.go b/cmd/nerdctl/network_prune.go index 30426d9f22d..5426b7d3e21 100644 --- a/cmd/nerdctl/network_prune.go +++ b/cmd/nerdctl/network_prune.go @@ -22,6 +22,7 @@ import ( "strings" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/netutil" "github.com/containerd/nerdctl/pkg/strutil" "github.com/sirupsen/logrus" @@ -61,8 +62,15 @@ func networkPruneAction(cmd *cobra.Command, _ []string) error { return nil } } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/network_rm.go b/cmd/nerdctl/network_rm.go index 41beb2d668b..5e85bdf0d7d 100644 --- a/cmd/nerdctl/network_rm.go +++ b/cmd/nerdctl/network_rm.go @@ -20,6 +20,7 @@ import ( "context" "fmt" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/netwalker" "github.com/containerd/nerdctl/pkg/netutil" "github.com/sirupsen/logrus" @@ -43,7 +44,15 @@ func newNetworkRmCommand() *cobra.Command { } func networkRmAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/pause.go b/cmd/nerdctl/pause.go index aaf4d5ae860..effc7bd9a61 100644 --- a/cmd/nerdctl/pause.go +++ b/cmd/nerdctl/pause.go @@ -22,6 +22,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/cio" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/spf13/cobra" @@ -41,7 +42,15 @@ func newPauseCommand() *cobra.Command { } func pauseAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/port.go b/cmd/nerdctl/port.go index ef39fa14f94..b5429df587b 100644 --- a/cmd/nerdctl/port.go +++ b/cmd/nerdctl/port.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/containerutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" @@ -69,8 +70,15 @@ func portAction(cmd *cobra.Command, args []string) error { return fmt.Errorf("failed to parse %q", portProto) } } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/ps.go b/cmd/nerdctl/ps.go index 5fece981d26..8028ff086f0 100644 --- a/cmd/nerdctl/ps.go +++ b/cmd/nerdctl/ps.go @@ -34,6 +34,7 @@ import ( "github.com/containerd/containerd/containers" "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/pkg/progress" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/labels" "github.com/containerd/nerdctl/pkg/labels/k8slabels" @@ -68,7 +69,15 @@ func newPsCommand() *cobra.Command { } func psAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/pull.go b/cmd/nerdctl/pull.go index 7fcf6fcf588..8c52315491e 100644 --- a/cmd/nerdctl/pull.go +++ b/cmd/nerdctl/pull.go @@ -22,6 +22,7 @@ import ( "fmt" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/cosignutil" "github.com/containerd/nerdctl/pkg/imgutil" "github.com/containerd/nerdctl/pkg/ipfs" @@ -70,7 +71,15 @@ func newPullCommand() *cobra.Command { func pullAction(cmd *cobra.Command, args []string) error { rawRef := args[0] - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/push.go b/cmd/nerdctl/push.go index 9fbfdb36673..79b2adf6e22 100644 --- a/cmd/nerdctl/push.go +++ b/cmd/nerdctl/push.go @@ -28,6 +28,7 @@ import ( "github.com/containerd/containerd/images/converter" refdocker "github.com/containerd/containerd/reference/docker" "github.com/containerd/containerd/remotes" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/cosignutil" "github.com/containerd/nerdctl/pkg/errutil" "github.com/containerd/nerdctl/pkg/imgutil/dockerconfigresolver" @@ -38,7 +39,7 @@ import ( "github.com/containerd/stargz-snapshotter/estargz" "github.com/containerd/stargz-snapshotter/estargz/zstdchunked" estargzconvert "github.com/containerd/stargz-snapshotter/nativeconverter/estargz" - digest "github.com/opencontainers/go-digest" + "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -84,8 +85,15 @@ func newPushCommand() *cobra.Command { func pushAction(cmd *cobra.Command, args []string) error { rawRef := args[0] - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/rename.go b/cmd/nerdctl/rename.go index 907af2d55ab..5a71a57041c 100644 --- a/cmd/nerdctl/rename.go +++ b/cmd/nerdctl/rename.go @@ -21,6 +21,7 @@ import ( "fmt" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/dnsutil/hostsstore" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/labels" @@ -42,7 +43,15 @@ func newRenameCommand() *cobra.Command { } func renameAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } @@ -51,8 +60,11 @@ func renameAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - dataStore, err := getDataStore(cmd) + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return err + } + dataStore, err := clientutil.DataStore(dataRoot, address) if err != nil { return err } diff --git a/cmd/nerdctl/restart.go b/cmd/nerdctl/restart.go index b5c4dd3354e..972efb9bd2c 100644 --- a/cmd/nerdctl/restart.go +++ b/cmd/nerdctl/restart.go @@ -21,6 +21,7 @@ import ( "fmt" "time" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/spf13/cobra" ) @@ -50,8 +51,15 @@ func restartAction(cmd *cobra.Command, args []string) error { t := time.Duration(timeValue) * time.Second timeout = &t } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/rm.go b/cmd/nerdctl/rm.go index 46d588a4678..6a2d61952ce 100644 --- a/cmd/nerdctl/rm.go +++ b/cmd/nerdctl/rm.go @@ -27,6 +27,7 @@ import ( "github.com/containerd/containerd/cio" "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/namespaces" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/dnsutil/hostsstore" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/labels" @@ -65,8 +66,15 @@ func rmAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } @@ -114,8 +122,15 @@ func removeContainer(ctx context.Context, cmd *cobra.Command, container containe } stateDir := l[labels.StateDir] name := l[labels.Name] - - dataStore, err := getDataStore(cmd) + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + dataStore, err := clientutil.DataStore(dataRoot, address) if err != nil { return err } diff --git a/cmd/nerdctl/rmi.go b/cmd/nerdctl/rmi.go index 4bbf1e26499..b32604dbcf8 100644 --- a/cmd/nerdctl/rmi.go +++ b/cmd/nerdctl/rmi.go @@ -23,6 +23,7 @@ import ( "github.com/containerd/containerd/images" "github.com/containerd/containerd/platforms" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/idutil/imagewalker" "github.com/sirupsen/logrus" @@ -57,8 +58,15 @@ func rmiAction(cmd *cobra.Command, args []string) error { } else if !async { delOpts = append(delOpts, images.SynchronousDelete()) } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/run.go b/cmd/nerdctl/run.go index 822fd348be8..027947ea9a5 100644 --- a/cmd/nerdctl/run.go +++ b/cmd/nerdctl/run.go @@ -39,6 +39,7 @@ import ( "github.com/containerd/containerd/containers" "github.com/containerd/containerd/oci" gocni "github.com/containerd/go-cni" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/defaults" "github.com/containerd/nerdctl/pkg/idgen" "github.com/containerd/nerdctl/pkg/imgutil" @@ -280,7 +281,15 @@ func runAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - client, ctx, cancel, err := newClientWithPlatform(cmd, platform) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClientWithPlatform(cmd.Context(), namespace, address, platform) if err != nil { return err } @@ -418,8 +427,15 @@ func createContainer(ctx context.Context, cmd *cobra.Command, client *containerd return nil, nil, err } } - - dataStore, err := getDataStore(cmd) + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return nil, nil, err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, nil, err + } + dataStore, err := clientutil.DataStore(dataRoot, address) if err != nil { return nil, nil, err } diff --git a/cmd/nerdctl/run_network.go b/cmd/nerdctl/run_network.go index fe41fa46c3e..c205be5fe03 100644 --- a/cmd/nerdctl/run_network.go +++ b/cmd/nerdctl/run_network.go @@ -30,6 +30,7 @@ import ( "github.com/containerd/containerd/containers" "github.com/containerd/containerd/oci" gocni "github.com/containerd/go-cni" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/dnsutil" "github.com/containerd/nerdctl/pkg/dnsutil/hostsstore" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" @@ -190,7 +191,15 @@ func generateNetOpts(cmd *cobra.Command, dataStore, stateDir, ns, id string) ([] return nil, nil, "", nil, "", fmt.Errorf("invalid network: %s, should be \"container:\"", netSlice[0]) } containerName := network[1] - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return nil, nil, "", nil, "", err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, nil, "", nil, "", err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return nil, nil, "", nil, "", err } diff --git a/cmd/nerdctl/save.go b/cmd/nerdctl/save.go index e7ccbd9b7fd..c09bfd9c220 100644 --- a/cmd/nerdctl/save.go +++ b/cmd/nerdctl/save.go @@ -24,6 +24,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/images/archive" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/imagewalker" "github.com/containerd/nerdctl/pkg/platformutil" "github.com/containerd/nerdctl/pkg/strutil" @@ -78,8 +79,15 @@ func saveAction(cmd *cobra.Command, args []string) error { if err != nil { return err } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/start.go b/cmd/nerdctl/start.go index f2ce82ad035..9a3f59af1ad 100644 --- a/cmd/nerdctl/start.go +++ b/cmd/nerdctl/start.go @@ -27,6 +27,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/oci" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/labels" @@ -56,7 +57,15 @@ func newStartCommand() *cobra.Command { } func startAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/stats.go b/cmd/nerdctl/stats.go index 5f42f8f04aa..6ce81264a7a 100644 --- a/cmd/nerdctl/stats.go +++ b/cmd/nerdctl/stats.go @@ -31,6 +31,7 @@ import ( eventstypes "github.com/containerd/containerd/api/events" "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/events" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/containerinspector" "github.com/containerd/nerdctl/pkg/eventutil" "github.com/containerd/nerdctl/pkg/formatter" @@ -148,8 +149,15 @@ func statsAction(cmd *cobra.Command, args []string) error { // waitFirst is a WaitGroup to wait first stat data's reach for each container waitFirst := &sync.WaitGroup{} cStats := stats{} - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } @@ -389,8 +397,15 @@ func collect(cmd *cobra.Command, s *statsutil.Stats, waitFirst *sync.WaitGroup, waitFirst.Done() } }() - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { s.SetError(err) return diff --git a/cmd/nerdctl/stop.go b/cmd/nerdctl/stop.go index 21227bef1fc..52f8920ee87 100644 --- a/cmd/nerdctl/stop.go +++ b/cmd/nerdctl/stop.go @@ -21,6 +21,7 @@ import ( "fmt" "time" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/spf13/cobra" "github.com/containerd/containerd" @@ -58,8 +59,15 @@ func stopAction(cmd *cobra.Command, args []string) error { t := time.Duration(timeValue) * time.Second timeout = &t } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/system_prune.go b/cmd/nerdctl/system_prune.go index 070d6651685..fd3fe35bd16 100644 --- a/cmd/nerdctl/system_prune.go +++ b/cmd/nerdctl/system_prune.go @@ -21,6 +21,7 @@ import ( "fmt" "strings" + "github.com/containerd/nerdctl/pkg/clientutil" buildkitclient "github.com/moby/buildkit/client" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -84,8 +85,15 @@ func systemPruneAction(cmd *cobra.Command, args []string) error { return nil } } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/tag.go b/cmd/nerdctl/tag.go index d8a8bbd909b..ee6e3c623dc 100644 --- a/cmd/nerdctl/tag.go +++ b/cmd/nerdctl/tag.go @@ -21,6 +21,7 @@ import ( "fmt" "github.com/containerd/containerd/errdefs" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/imagewalker" "github.com/containerd/nerdctl/pkg/referenceutil" @@ -41,7 +42,15 @@ func newTagCommand() *cobra.Command { } func tagAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/top.go b/cmd/nerdctl/top.go index 4f9bf852b9d..c8db571a0ec 100644 --- a/cmd/nerdctl/top.go +++ b/cmd/nerdctl/top.go @@ -37,6 +37,7 @@ import ( "text/tabwriter" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/infoutil" "github.com/containerd/nerdctl/pkg/rootlessutil" @@ -88,8 +89,15 @@ func topAction(cmd *cobra.Command, args []string) error { if cgroupManager == "none" { return errors.New("cgroup manager must not be \"none\"") } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/unpause.go b/cmd/nerdctl/unpause.go index 4af00fd80b1..e6cf6e448c2 100644 --- a/cmd/nerdctl/unpause.go +++ b/cmd/nerdctl/unpause.go @@ -22,6 +22,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/cio" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/spf13/cobra" @@ -41,7 +42,15 @@ func newUnpauseCommand() *cobra.Command { } func unpauseAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/update.go b/cmd/nerdctl/update.go index 9a1bd3654f7..7b69f7e7735 100644 --- a/cmd/nerdctl/update.go +++ b/cmd/nerdctl/update.go @@ -27,6 +27,7 @@ import ( "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/log" "github.com/containerd/containerd/pkg/cri/util" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/containerd/nerdctl/pkg/infoutil" @@ -85,7 +86,15 @@ func setUpdateFlags(cmd *cobra.Command) { } func updateAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/version.go b/cmd/nerdctl/version.go index b2a780f3504..ab9ff73032a 100644 --- a/cmd/nerdctl/version.go +++ b/cmd/nerdctl/version.go @@ -23,6 +23,7 @@ import ( "os" "text/template" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/infoutil" "github.com/containerd/nerdctl/pkg/inspecttypes/dockercompat" @@ -102,7 +103,15 @@ func versionInfo(cmd *cobra.Command) (dockercompat.VersionInfo, error) { v := dockercompat.VersionInfo{ Client: infoutil.ClientVersion(), } - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return v, err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return v, err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return v, err } diff --git a/cmd/nerdctl/volume.go b/cmd/nerdctl/volume.go index 912f50a2e2b..c866b2aedda 100644 --- a/cmd/nerdctl/volume.go +++ b/cmd/nerdctl/volume.go @@ -17,6 +17,7 @@ package main import ( + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/mountutil/volumestore" "github.com/spf13/cobra" ) @@ -47,7 +48,15 @@ func getVolumeStore(cmd *cobra.Command) (volumestore.VolumeStore, error) { if err != nil { return nil, err } - dataStore, err := getDataStore(cmd) + dataRoot, err := cmd.Flags().GetString("data-root") + if err != nil { + return nil, err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return nil, err + } + dataStore, err := clientutil.DataStore(dataRoot, address) if err != nil { return nil, err } diff --git a/cmd/nerdctl/volume_prune.go b/cmd/nerdctl/volume_prune.go index e6da1ceb345..acdae6ef941 100644 --- a/cmd/nerdctl/volume_prune.go +++ b/cmd/nerdctl/volume_prune.go @@ -22,6 +22,7 @@ import ( "strings" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/spf13/cobra" ) @@ -55,8 +56,15 @@ func volumePruneAction(cmd *cobra.Command, _ []string) error { return nil } } - - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/volume_rm.go b/cmd/nerdctl/volume_rm.go index b1215c9f949..87ca2302d9e 100644 --- a/cmd/nerdctl/volume_rm.go +++ b/cmd/nerdctl/volume_rm.go @@ -22,6 +22,7 @@ import ( "fmt" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/inspecttypes/dockercompat" "github.com/containerd/nerdctl/pkg/labels" "github.com/containerd/nerdctl/pkg/mountutil" @@ -45,7 +46,15 @@ func newVolumeRmCommand() *cobra.Command { } func volumeRmAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/wait.go b/cmd/nerdctl/wait.go index 64dc02ff102..bcfe7dcde20 100644 --- a/cmd/nerdctl/wait.go +++ b/cmd/nerdctl/wait.go @@ -22,6 +22,7 @@ import ( "io" "github.com/containerd/containerd" + "github.com/containerd/nerdctl/pkg/clientutil" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" "github.com/hashicorp/go-multierror" "github.com/spf13/cobra" @@ -41,7 +42,15 @@ func newWaitCommand() *cobra.Command { } func containerWaitAction(cmd *cobra.Command, args []string) error { - client, ctx, cancel, err := newClient(cmd) + namespace, err := cmd.Flags().GetString("namespace") + if err != nil { + return err + } + address, err := cmd.Flags().GetString("address") + if err != nil { + return err + } + client, ctx, cancel, err := clientutil.NewClient(cmd.Context(), namespace, address) if err != nil { return err } diff --git a/cmd/nerdctl/client.go b/pkg/clientutil/client.go similarity index 78% rename from cmd/nerdctl/client.go rename to pkg/clientutil/client.go index ea7f90e26ac..45013133ad5 100644 --- a/cmd/nerdctl/client.go +++ b/pkg/clientutil/client.go @@ -14,7 +14,7 @@ limitations under the License. */ -package main +package clientutil import ( "context" @@ -24,28 +24,19 @@ import ( "runtime" "strings" - "github.com/sirupsen/logrus" - "github.com/spf13/cobra" - "github.com/containerd/containerd" "github.com/containerd/containerd/namespaces" "github.com/containerd/containerd/platforms" "github.com/containerd/nerdctl/pkg/platformutil" "github.com/containerd/nerdctl/pkg/systemutil" "github.com/opencontainers/go-digest" + "github.com/sirupsen/logrus" ) -func newClient(cmd *cobra.Command, opts ...containerd.ClientOpt) (*containerd.Client, context.Context, context.CancelFunc, error) { - ctx := cmd.Context() - namespace, err := cmd.Flags().GetString("namespace") - if err != nil { - return nil, nil, nil, err - } +func NewClient(ctx context.Context, namespace, address string, opts ...containerd.ClientOpt) (*containerd.Client, context.Context, context.CancelFunc, error) { + ctx = namespaces.WithNamespace(ctx, namespace) - address, err := cmd.Flags().GetString("address") - if err != nil { - return nil, nil, nil, err - } + address = strings.TrimPrefix(address, "unix://") const dockerContainerdaddress = "/var/run/docker/containerd/containerd.sock" if err := systemutil.IsSocketAccessible(address); err != nil { @@ -65,7 +56,7 @@ func newClient(cmd *cobra.Command, opts ...containerd.ClientOpt) (*containerd.Cl return client, ctx, cancel, nil } -func newClientWithPlatform(cmd *cobra.Command, platform string, clientOpts ...containerd.ClientOpt) (*containerd.Client, context.Context, context.CancelFunc, error) { +func NewClientWithPlatform(ctx context.Context, namespace, address, platform string, clientOpts ...containerd.ClientOpt) (*containerd.Client, context.Context, context.CancelFunc, error) { if platform != "" { if canExec, canExecErr := platformutil.CanExecProbably(platform); !canExec { warn := fmt.Sprintf("Platform %q seems incompatible with the host platform %q. If you see \"exec format error\", see https://github.com/containerd/nerdctl/blob/main/docs/multi-platform.md", @@ -83,24 +74,16 @@ func newClientWithPlatform(cmd *cobra.Command, platform string, clientOpts ...co platformM := platforms.Only(platformParsed) clientOpts = append(clientOpts, containerd.WithDefaultPlatform(platformM)) } - return newClient(cmd, clientOpts...) + return NewClient(ctx, namespace, address, clientOpts...) } -// getDataStore returns a string like "/var/lib/nerdctl/1935db59". +// DataStore returns a string like "/var/lib/nerdctl/1935db59". // "1935db9" is from `$(echo -n "/run/containerd/containerd.sock" | sha256sum | cut -c1-8)` // on Windows it will return "%PROGRAMFILES%/nerdctl/1935db59" -func getDataStore(cmd *cobra.Command) (string, error) { - dataRoot, err := cmd.Flags().GetString("data-root") - if err != nil { - return "", err - } +func DataStore(dataRoot, address string) (string, error) { if err := os.MkdirAll(dataRoot, 0700); err != nil { return "", err } - address, err := cmd.Flags().GetString("address") - if err != nil { - return "", err - } addrHash, err := getAddrHash(address) if err != nil { return "", err