summaryrefslogtreecommitdiff
path: root/pkg/spec
diff options
context:
space:
mode:
authorhaircommander <pehunt@redhat.com>2018-08-20 17:56:35 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2018-08-23 18:16:28 +0000
commit0e6266858a913ac36de0726ede10d5d03af533e3 (patch)
tree152c7b8b029d5eb80c6caf466c9d0ab1b0ef3913 /pkg/spec
parent2a7449362f2884d9ae6a783c0ce38979d882e2cf (diff)
downloadpodman-0e6266858a913ac36de0726ede10d5d03af533e3.tar.gz
podman-0e6266858a913ac36de0726ede10d5d03af533e3.tar.bz2
podman-0e6266858a913ac36de0726ede10d5d03af533e3.zip
Fixing network ns segfault
As well as small style corrections, update pod_top_test to use CreatePod, and move handling of adding a container to the pod's namespace from container_internal_linux to libpod/option. Signed-off-by: haircommander <pehunt@redhat.com> Closes: #1187 Approved by: mheon
Diffstat (limited to 'pkg/spec')
-rw-r--r--pkg/spec/createconfig.go11
-rw-r--r--pkg/spec/parse.go6
2 files changed, 11 insertions, 6 deletions
diff --git a/pkg/spec/createconfig.go b/pkg/spec/createconfig.go
index dd1cd5833..6a7ddc1ae 100644
--- a/pkg/spec/createconfig.go
+++ b/pkg/spec/createconfig.go
@@ -309,6 +309,7 @@ func createExitCommand(runtime *libpod.Runtime) []string {
func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]libpod.CtrCreateOption, error) {
var options []libpod.CtrCreateOption
var portBindings []ocicni.PortMapping
+ var pod *libpod.Pod
var err error
// Uncomment after talking to mheon about unimplemented funcs
@@ -323,7 +324,7 @@ func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]lib
}
if c.Pod != "" {
logrus.Debugf("adding container to pod %s", c.Pod)
- pod, err := runtime.LookupPod(c.Pod)
+ pod, err = runtime.LookupPod(c.Pod)
if err != nil {
return nil, errors.Wrapf(err, "unable to add container to pod %s", c.Pod)
}
@@ -385,7 +386,7 @@ func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]lib
}
options = append(options, libpod.WithNetNSFrom(connectedCtr))
} else if IsPod(string(c.NetMode)) {
- options = append(options, libpod.WithNetNSFromPod())
+ options = append(options, libpod.WithNetNSFromPod(pod))
} else if !c.NetMode.IsHost() && !c.NetMode.IsNone() {
isRootless := rootless.IsRootless()
postConfigureNetNS := isRootless || (len(c.IDMappings.UIDMap) > 0 || len(c.IDMappings.GIDMap) > 0) && !c.UsernsMode.IsHost()
@@ -404,7 +405,7 @@ func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]lib
options = append(options, libpod.WithPIDNSFrom(connectedCtr))
}
if IsPod(string(c.PidMode)) {
- options = append(options, libpod.WithPIDNSFromPod())
+ options = append(options, libpod.WithPIDNSFromPod(pod))
}
if c.IpcMode.IsContainer() {
@@ -416,11 +417,11 @@ func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]lib
options = append(options, libpod.WithIPCNSFrom(connectedCtr))
}
if IsPod(string(c.IpcMode)) {
- options = append(options, libpod.WithIPCNSFromPod())
+ options = append(options, libpod.WithIPCNSFromPod(pod))
}
if IsPod(string(c.UtsMode)) {
- options = append(options, libpod.WithUTSNSFromPod())
+ options = append(options, libpod.WithUTSNSFromPod(pod))
}
// TODO: MNT, USER, CGROUP
diff --git a/pkg/spec/parse.go b/pkg/spec/parse.go
index 4cdc62de6..dc4f50a3e 100644
--- a/pkg/spec/parse.go
+++ b/pkg/spec/parse.go
@@ -8,6 +8,10 @@ import (
"github.com/docker/go-units"
)
+// POD signifies a kernel namespace is being shared
+// by a container with the pod it is associated with
+const POD = "pod"
+
// weightDevice is a structure that holds device:weight pair
type weightDevice struct {
path string
@@ -32,7 +36,7 @@ func IsNS(s string) bool {
// IsPod returns if the specified string is pod
func IsPod(s string) bool {
- return s == "pod"
+ return s == POD
}
// Valid checks the validity of a linux namespace