Merge pull request #24749 from Honny1/fix-#24610
`podman update`: Fix overwriting of `LinuxResources` structure
This commit is contained in:
commit
c707cbe07d
|
|
@ -2674,7 +2674,12 @@ func (c *Container) update(resources *spec.LinuxResources, restartPolicy *string
|
|||
return fmt.Errorf("must provide restart policy if updating restart retries: %w", define.ErrInvalidArg)
|
||||
}
|
||||
|
||||
oldResources := c.config.Spec.Linux.Resources
|
||||
oldResources := new(spec.LinuxResources)
|
||||
if c.config.Spec.Linux.Resources != nil {
|
||||
if err := JSONDeepCopy(c.config.Spec.Linux.Resources, oldResources); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
oldRestart := c.config.RestartPolicy
|
||||
oldRetries := c.config.RestartRetries
|
||||
|
||||
|
|
@ -2701,7 +2706,15 @@ func (c *Container) update(resources *spec.LinuxResources, restartPolicy *string
|
|||
if c.config.Spec.Linux == nil {
|
||||
c.config.Spec.Linux = new(spec.Linux)
|
||||
}
|
||||
c.config.Spec.Linux.Resources = resources
|
||||
|
||||
resourcesToUpdate, err := json.Marshal(resources)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := json.Unmarshal(resourcesToUpdate, c.config.Spec.Linux.Resources); err != nil {
|
||||
return err
|
||||
}
|
||||
resources = c.config.Spec.Linux.Resources
|
||||
}
|
||||
|
||||
if err := c.runtime.state.SafeRewriteContainerConfig(c, "", "", c.config); err != nil {
|
||||
|
|
|
|||
|
|
@ -309,4 +309,21 @@ function nrand() {
|
|||
|
||||
run_podman rm -t 0 -f $ctrname
|
||||
}
|
||||
|
||||
# bats test_tags=ci:parallel
|
||||
@test "podman update - resources on update are not changed unless requested" {
|
||||
local ctrname="c-h-$(safename)"
|
||||
run_podman run -d --name $ctrname \
|
||||
--pids-limit 1024 \
|
||||
$IMAGE /home/podman/pause
|
||||
|
||||
run_podman update $ctrname --memory 100M
|
||||
|
||||
# A Pid check is performed to ensure that other resource settings are not unset. https://github.com/containers/podman/issues/24610
|
||||
run_podman inspect $ctrname --format "{{.HostConfig.Memory}}\n{{.HostConfig.PidsLimit}}"
|
||||
assert ${lines[0]} == "104857600" ".HostConfig.Memory"
|
||||
assert ${lines[1]} == "1024" ".HostConfig.PidsLimit"
|
||||
|
||||
run_podman rm -t 0 -f $ctrname
|
||||
}
|
||||
# vim: filetype=sh
|
||||
|
|
|
|||
Loading…
Reference in New Issue