Skip to content

Commit

Permalink
Merge pull request #23083 from Luap99/restore-hosts
Browse files Browse the repository at this point in the history
restore: fix missing network setup
  • Loading branch information
openshift-merge-bot[bot] authored Jun 25, 2024
2 parents ac4143a + def182d commit f62c3ec
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
9 changes: 9 additions & 0 deletions libpod/container_internal_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -1725,6 +1725,15 @@ func (c *Container) restore(ctx context.Context, options ContainerCheckpointOpti
}
}

// setup hosts/resolv.conf files
// Note this should normally be called after the container is created in the runtime but before it is started.
// However restore starts the container right away. This means that if we do the call afterwards there is a
// short interval where the file is still empty. Thus I decided to call it before which makes it not working
// with PostConfigureNetNS (userns) but as this does not work anyway today so I don't see it as problem.
if err := c.completeNetworkSetup(); err != nil {
return nil, 0, fmt.Errorf("complete network setup: %w", err)
}

runtimeRestoreDuration, err = c.ociRuntime.CreateContainer(c, &options)
if err != nil {
return nil, 0, err
Expand Down
7 changes: 7 additions & 0 deletions test/system/520-checkpoint.bats
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,9 @@ function teardown() {
run_podman inspect $cid --format "{{(index .NetworkSettings.Networks \"$netname\").MacAddress}}"
mac1="$output"

run_podman exec $cid cat /etc/hosts /etc/resolv.conf
pre_hosts_resolv_conf_output="$output"

run_podman container checkpoint $cid
is "$output" "$cid"
run_podman container restore $cid
Expand All @@ -258,6 +261,10 @@ function teardown() {
run_podman inspect $cid --format "{{(index .NetworkSettings.Networks \"$netname\").MacAddress}}"
mac2="$output"

# Make sure hosts and resolv.conf are the same after restore (#22901)
run_podman exec $cid cat /etc/hosts /etc/resolv.conf
assert "$output" == "$pre_hosts_resolv_conf_output" "hosts/resolv.conf must be the same after checkpoint"

assert "$ip2" == "$ip1" "ip after restore should match"
assert "$mac2" == "$mac1" "mac after restore should match"

Expand Down

0 comments on commit f62c3ec

Please sign in to comment.