*: abstract out netns for multiple platforms

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
Vincent Batts 2018-01-23 10:43:29 -05:00
parent ebdec2ea5b
commit fb87c2f68b
7 changed files with 218 additions and 128 deletions

View file

@ -9,7 +9,6 @@ import (
"sync"
"time"
"github.com/containernetworking/plugins/pkg/ns"
"github.com/docker/docker/pkg/signal"
specs "github.com/opencontainers/runtime-spec/specs-go"
"k8s.io/apimachinery/pkg/fields"
@ -30,7 +29,7 @@ type Container struct {
crioAnnotations fields.Set
image string
sandbox string
netns ns.NetNS
netns string
terminal bool
stdin bool
stdinOnce bool
@ -71,7 +70,7 @@ type ContainerState struct {
}
// NewContainer creates a container object.
func NewContainer(id string, name string, bundlePath string, logPath string, netns ns.NetNS, labels map[string]string, crioAnnotations map[string]string, annotations map[string]string, image string, imageName string, imageRef string, metadata *pb.ContainerMetadata, sandbox string, terminal bool, stdin bool, stdinOnce bool, privileged bool, trusted bool, dir string, created time.Time, stopSignal string) (*Container, error) {
func NewContainer(id string, name string, bundlePath string, logPath string, netns string, labels map[string]string, crioAnnotations map[string]string, annotations map[string]string, image string, imageName string, imageRef string, metadata *pb.ContainerMetadata, sandbox string, terminal bool, stdin bool, stdinOnce bool, privileged bool, trusted bool, dir string, created time.Time, stopSignal string) (*Container, error) {
state := &ContainerState{}
state.Created = created
c := &Container{
@ -223,11 +222,11 @@ func (c *Container) NetNsPath() (string, error) {
return "", fmt.Errorf("container state is not populated")
}
if c.netns == nil {
if c.netns == "" {
return fmt.Sprintf("/proc/%d/ns/net", c.state.Pid), nil
}
return c.netns.Path(), nil
return c.netns, nil
}
// Metadata returns the metadata of the container.