diff options
Diffstat (limited to 'pkg/specgen/generate')
-rw-r--r-- | pkg/specgen/generate/container.go | 8 | ||||
-rw-r--r-- | pkg/specgen/generate/container_create.go | 16 | ||||
-rw-r--r-- | pkg/specgen/generate/kube/play_test.go | 10 | ||||
-rw-r--r-- | pkg/specgen/generate/pod_create.go | 2 |
4 files changed, 20 insertions, 16 deletions
diff --git a/pkg/specgen/generate/container.go b/pkg/specgen/generate/container.go index 831c1d7b9..d8008b10b 100644 --- a/pkg/specgen/generate/container.go +++ b/pkg/specgen/generate/container.go @@ -3,6 +3,7 @@ package generate import ( "context" "encoding/json" + "fmt" "os" "strings" "time" @@ -352,7 +353,10 @@ func ConfigToSpec(rt *libpod.Runtime, specg *specgen.SpecGenerator, contaierID s if err != nil { return nil, nil, err } - conf := c.Config() + conf := c.ConfigWithNetworks() + if conf == nil { + return nil, nil, fmt.Errorf("failed to get config for container %s", c.ID()) + } tmpSystemd := conf.Systemd tmpMounts := conf.Mounts @@ -501,6 +505,8 @@ func ConfigToSpec(rt *libpod.Runtime, specg *specgen.SpecGenerator, contaierID s _, mounts := c.SortUserVolumes(c.Spec()) specg.Mounts = mounts specg.HostDeviceList = conf.DeviceHostSrc + specg.Networks = conf.Networks + mapSecurityConfig(conf, specg) if c.IsInfra() { // if we are creating this spec for a pod's infra ctr, map the compatible options diff --git a/pkg/specgen/generate/container_create.go b/pkg/specgen/generate/container_create.go index 88a452cbb..04e24d625 100644 --- a/pkg/specgen/generate/container_create.go +++ b/pkg/specgen/generate/container_create.go @@ -175,13 +175,15 @@ func MakeContainer(ctx context.Context, rt *libpod.Runtime, s *specgen.SpecGener return nil, nil, nil, errors.New("the given container could not be retrieved") } conf := c.Config() - out, err := json.Marshal(conf.Spec.Linux) - if err != nil { - return nil, nil, nil, err - } - err = json.Unmarshal(out, runtimeSpec.Linux) - if err != nil { - return nil, nil, nil, err + if conf != nil && conf.Spec != nil && conf.Spec.Linux != nil { + out, err := json.Marshal(conf.Spec.Linux) + if err != nil { + return nil, nil, nil, err + } + err = json.Unmarshal(out, runtimeSpec.Linux) + if err != nil { + return nil, nil, nil, err + } } if s.ResourceLimits != nil { switch { diff --git a/pkg/specgen/generate/kube/play_test.go b/pkg/specgen/generate/kube/play_test.go index 448522c2a..e01d62b08 100644 --- a/pkg/specgen/generate/kube/play_test.go +++ b/pkg/specgen/generate/kube/play_test.go @@ -3,9 +3,7 @@ package kube import ( "encoding/json" "fmt" - "io/ioutil" "math" - "os" "runtime" "strconv" "testing" @@ -39,9 +37,7 @@ func createSecrets(t *testing.T, d string) *secrets.SecretsManager { } func TestEnvVarsFrom(t *testing.T) { - d, err := ioutil.TempDir("", "secrets") - assert.NoError(t, err) - defer os.RemoveAll(d) + d := t.TempDir() secretsManager := createSecrets(t, d) tests := []struct { @@ -191,9 +187,7 @@ func TestEnvVarsFrom(t *testing.T) { } func TestEnvVarValue(t *testing.T) { - d, err := ioutil.TempDir("", "secrets") - assert.NoError(t, err) - defer os.RemoveAll(d) + d := t.TempDir() secretsManager := createSecrets(t, d) stringNumCPUs := strconv.Itoa(runtime.NumCPU()) diff --git a/pkg/specgen/generate/pod_create.go b/pkg/specgen/generate/pod_create.go index a3408b402..fce32d688 100644 --- a/pkg/specgen/generate/pod_create.go +++ b/pkg/specgen/generate/pod_create.go @@ -197,6 +197,8 @@ func createPodOptions(p *specgen.PodSpecGenerator) ([]libpod.PodCreateOption, er options = append(options, libpod.WithPodHostname(p.Hostname)) } + options = append(options, libpod.WithPodExitPolicy(p.ExitPolicy)) + return options, nil } |