mirror of https://github.com/containers/podman.git
Infra Inheritance patch
infra was overriding options that it should be appending rather than resetting. fix this by appending the given container's spec to the compatible options before marshaling/unmarshaling resolves #14454 Signed-off-by: cdoern <cdoern@redhat.com>
This commit is contained in:
parent
96f9d0dc0e
commit
ed1e4f94fb
|
@ -542,6 +542,16 @@ func Inherit(infra libpod.Container, s *specgen.SpecGenerator, rt *libpod.Runtim
|
||||||
infraConf := infra.Config()
|
infraConf := infra.Config()
|
||||||
infraSpec := infraConf.Spec
|
infraSpec := infraConf.Spec
|
||||||
|
|
||||||
|
// need to set compatOptions to the currently filled specgenOptions so we do not overwrite
|
||||||
|
compatibleOptions.CapAdd = append(compatibleOptions.CapAdd, s.CapAdd...)
|
||||||
|
compatibleOptions.CapDrop = append(compatibleOptions.CapDrop, s.CapDrop...)
|
||||||
|
compatibleOptions.HostDeviceList = append(compatibleOptions.HostDeviceList, s.HostDeviceList...)
|
||||||
|
compatibleOptions.ImageVolumes = append(compatibleOptions.ImageVolumes, s.ImageVolumes...)
|
||||||
|
compatibleOptions.Mounts = append(compatibleOptions.Mounts, s.Mounts...)
|
||||||
|
compatibleOptions.OverlayVolumes = append(compatibleOptions.OverlayVolumes, s.OverlayVolumes...)
|
||||||
|
compatibleOptions.SelinuxOpts = append(compatibleOptions.SelinuxOpts, s.SelinuxOpts...)
|
||||||
|
compatibleOptions.Volumes = append(compatibleOptions.Volumes, s.Volumes...)
|
||||||
|
|
||||||
compatByte, err := json.Marshal(compatibleOptions)
|
compatByte, err := json.Marshal(compatibleOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
|
|
|
@ -1112,4 +1112,26 @@ ENTRYPOINT ["sleep","99999"]
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("podman pod create infra inheritance test", func() {
|
||||||
|
volName := "testVol1"
|
||||||
|
volCreate := podmanTest.Podman([]string{"volume", "create", volName})
|
||||||
|
volCreate.WaitWithDefaultTimeout()
|
||||||
|
Expect(volCreate).Should(Exit(0))
|
||||||
|
|
||||||
|
session := podmanTest.Podman([]string{"pod", "create", "-v", volName + ":/vol1"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session).Should(Exit(0))
|
||||||
|
|
||||||
|
volName2 := "testVol2"
|
||||||
|
volCreate = podmanTest.Podman([]string{"volume", "create", volName2})
|
||||||
|
volCreate.WaitWithDefaultTimeout()
|
||||||
|
Expect(volCreate).Should(Exit(0))
|
||||||
|
|
||||||
|
session = podmanTest.Podman([]string{"run", "--pod", session.OutputToString(), "-v", volName2 + ":/vol2", ALPINE, "mount"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session).Should(Exit(0))
|
||||||
|
Expect(session.OutputToString()).Should(ContainSubstring("/vol1"))
|
||||||
|
Expect(session.OutputToString()).Should(ContainSubstring("/vol2"))
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue