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:
cdoern
2022-06-07 10:43:51 -04:00
parent 96f9d0dc0e
commit ed1e4f94fb
2 changed files with 32 additions and 0 deletions

View File

@ -542,6 +542,16 @@ func Inherit(infra libpod.Container, s *specgen.SpecGenerator, rt *libpod.Runtim
infraConf := infra.Config()
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)
if err != nil {
return nil, nil, nil, err