From 287e0af0024912ae1df932683f71e31f856b2c71 Mon Sep 17 00:00:00 2001 From: Laitron Date: Tue, 17 Jan 2023 20:28:49 +0800 Subject: [PATCH] [Refactor] Move getContainerNetNSPath from cmd to pkg/containerutil Signed-off-by: Laitron --- cmd/nerdctl/run_network.go | 19 ++----------------- cmd/nerdctl/start.go | 3 ++- pkg/containerutil/containerutil.go | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/cmd/nerdctl/run_network.go b/cmd/nerdctl/run_network.go index d1dfaf32a63..f03407d1f77 100644 --- a/cmd/nerdctl/run_network.go +++ b/cmd/nerdctl/run_network.go @@ -26,12 +26,12 @@ import ( "runtime" "strings" - "github.com/containerd/containerd" "github.com/containerd/containerd/containers" "github.com/containerd/containerd/oci" gocni "github.com/containerd/go-cni" "github.com/containerd/nerdctl/pkg/api/types" "github.com/containerd/nerdctl/pkg/clientutil" + "github.com/containerd/nerdctl/pkg/containerutil" "github.com/containerd/nerdctl/pkg/dnsutil" "github.com/containerd/nerdctl/pkg/dnsutil/hostsstore" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" @@ -219,7 +219,7 @@ func generateNetOpts(cmd *cobra.Command, globalOptions types.GlobalCommandOption hostnamePath := filepath.Join(conStateDir, "hostname") resolvConfPath := filepath.Join(conStateDir, "resolv.conf") etcHostsPath := hostsstore.HostsPath(dataStore, ns, containerID) - netNSPath, err := getContainerNetNSPath(ctx, found.Container) + netNSPath, err := containerutil.ContainerNetNSPath(ctx, found.Container) if err != nil { return err } @@ -251,21 +251,6 @@ func generateNetOpts(cmd *cobra.Command, globalOptions types.GlobalCommandOption return opts, netSlice, ipAddress, ports, macAddress, nil } -func getContainerNetNSPath(ctx context.Context, c containerd.Container) (string, error) { - task, err := c.Task(ctx, nil) - if err != nil { - return "", err - } - status, err := task.Status(ctx) - if err != nil { - return "", err - } - if status.Status != containerd.Running { - return "", fmt.Errorf("invalid target container: %s, should be running", c.ID()) - } - return fmt.Sprintf("/proc/%d/ns/net", task.Pid()), nil -} - func verifyCNINetwork(cmd *cobra.Command, netSlice []string, macAddress string, globalOptions types.GlobalCommandOptions) error { e, err := netutil.NewCNIEnv(globalOptions.CNIPath, globalOptions.CNINetConfPath, netutil.WithDefaultNetwork()) if err != nil { diff --git a/cmd/nerdctl/start.go b/cmd/nerdctl/start.go index 456d9993bf2..57248f15fd5 100644 --- a/cmd/nerdctl/start.go +++ b/cmd/nerdctl/start.go @@ -30,6 +30,7 @@ import ( "github.com/containerd/containerd/cmd/ctr/commands/tasks" "github.com/containerd/containerd/oci" "github.com/containerd/nerdctl/pkg/clientutil" + "github.com/containerd/nerdctl/pkg/containerutil" "github.com/containerd/nerdctl/pkg/errutil" "github.com/containerd/nerdctl/pkg/formatter" "github.com/containerd/nerdctl/pkg/idutil/containerwalker" @@ -212,7 +213,7 @@ func reconfigNetContainer(ctx context.Context, c containerd.Container, client *c if err != nil { return err } - netNSPath, err := getContainerNetNSPath(ctx, targetCon) + netNSPath, err := containerutil.ContainerNetNSPath(ctx, targetCon) if err != nil { return err } diff --git a/pkg/containerutil/containerutil.go b/pkg/containerutil/containerutil.go index c61e0853587..ce04c63cc07 100644 --- a/pkg/containerutil/containerutil.go +++ b/pkg/containerutil/containerutil.go @@ -68,3 +68,19 @@ func ContainerStatus(ctx context.Context, c containerd.Container) (containerd.St return task.Status(ctx) } + +// ContainerNetNSPath returns the netns path of a container. +func ContainerNetNSPath(ctx context.Context, c containerd.Container) (string, error) { + task, err := c.Task(ctx, nil) + if err != nil { + return "", err + } + status, err := task.Status(ctx) + if err != nil { + return "", err + } + if status.Status != containerd.Running { + return "", fmt.Errorf("invalid target container: %s, should be running", c.ID()) + } + return fmt.Sprintf("/proc/%d/ns/net", task.Pid()), nil +}