mirror of
https://github.com/containers/podman.git
synced 2025-06-26 04:46:57 +08:00
Merge pull request #12242 from Luap99/port-reload
network reload without ports should not reload ports
This commit is contained in:
@ -678,15 +678,15 @@ func getRootlessPortChildIP(c *Container, netStatus map[string]types.StatusBlock
|
|||||||
// reloadRootlessRLKPortMapping will trigger a reload for the port mappings in the rootlessport process.
|
// reloadRootlessRLKPortMapping will trigger a reload for the port mappings in the rootlessport process.
|
||||||
// This should only be called by network connect/disconnect and only as rootless.
|
// This should only be called by network connect/disconnect and only as rootless.
|
||||||
func (c *Container) reloadRootlessRLKPortMapping() error {
|
func (c *Container) reloadRootlessRLKPortMapping() error {
|
||||||
|
if len(c.config.PortMappings) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
childIP := getRootlessPortChildIP(c, c.state.NetworkStatus)
|
childIP := getRootlessPortChildIP(c, c.state.NetworkStatus)
|
||||||
logrus.Debugf("reloading rootless ports for container %s, childIP is %s", c.config.ID, childIP)
|
logrus.Debugf("reloading rootless ports for container %s, childIP is %s", c.config.ID, childIP)
|
||||||
|
|
||||||
conn, err := openUnixSocket(filepath.Join(c.runtime.config.Engine.TmpDir, "rp", c.config.ID))
|
conn, err := openUnixSocket(filepath.Join(c.runtime.config.Engine.TmpDir, "rp", c.config.ID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// This is not a hard error for backwards compatibility. A container started
|
return errors.Wrap(err, "could not reload rootless port mappings, port forwarding may no longer work correctly")
|
||||||
// with an old version did not created the rootlessport socket.
|
|
||||||
logrus.Warnf("Could not reload rootless port mappings, port forwarding may no longer work correctly: %v", err)
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
enc := json.NewEncoder(conn)
|
enc := json.NewEncoder(conn)
|
||||||
|
@ -87,6 +87,7 @@ var _ = Describe("Podman network connect and disconnect", func() {
|
|||||||
dis := podmanTest.Podman([]string{"network", "disconnect", netName, "test"})
|
dis := podmanTest.Podman([]string{"network", "disconnect", netName, "test"})
|
||||||
dis.WaitWithDefaultTimeout()
|
dis.WaitWithDefaultTimeout()
|
||||||
Expect(dis).Should(Exit(0))
|
Expect(dis).Should(Exit(0))
|
||||||
|
Expect(dis.ErrorToString()).Should(Equal(""))
|
||||||
|
|
||||||
inspect := podmanTest.Podman([]string{"container", "inspect", "test", "--format", "{{len .NetworkSettings.Networks}}"})
|
inspect := podmanTest.Podman([]string{"container", "inspect", "test", "--format", "{{len .NetworkSettings.Networks}}"})
|
||||||
inspect.WaitWithDefaultTimeout()
|
inspect.WaitWithDefaultTimeout()
|
||||||
@ -183,6 +184,7 @@ var _ = Describe("Podman network connect and disconnect", func() {
|
|||||||
connect := podmanTest.Podman([]string{"network", "connect", newNetName, "test"})
|
connect := podmanTest.Podman([]string{"network", "connect", newNetName, "test"})
|
||||||
connect.WaitWithDefaultTimeout()
|
connect.WaitWithDefaultTimeout()
|
||||||
Expect(connect).Should(Exit(0))
|
Expect(connect).Should(Exit(0))
|
||||||
|
Expect(connect.ErrorToString()).Should(Equal(""))
|
||||||
|
|
||||||
inspect := podmanTest.Podman([]string{"container", "inspect", "test", "--format", "{{len .NetworkSettings.Networks}}"})
|
inspect := podmanTest.Podman([]string{"container", "inspect", "test", "--format", "{{len .NetworkSettings.Networks}}"})
|
||||||
inspect.WaitWithDefaultTimeout()
|
inspect.WaitWithDefaultTimeout()
|
||||||
|
@ -430,6 +430,7 @@ load helpers
|
|||||||
is "$output" "[${cid:0:12}]" "short container id in network aliases"
|
is "$output" "[${cid:0:12}]" "short container id in network aliases"
|
||||||
|
|
||||||
run_podman network disconnect $netname $cid
|
run_podman network disconnect $netname $cid
|
||||||
|
is "$output" "" "Output should be empty (no errors)"
|
||||||
|
|
||||||
# check that we cannot curl (timeout after 3 sec)
|
# check that we cannot curl (timeout after 3 sec)
|
||||||
run curl --max-time 3 -s $SERVER/index.txt
|
run curl --max-time 3 -s $SERVER/index.txt
|
||||||
@ -438,6 +439,7 @@ load helpers
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
run_podman network connect $netname $cid
|
run_podman network connect $netname $cid
|
||||||
|
is "$output" "" "Output should be empty (no errors)"
|
||||||
|
|
||||||
# curl should work again
|
# curl should work again
|
||||||
run curl --max-time 3 -s $SERVER/index.txt
|
run curl --max-time 3 -s $SERVER/index.txt
|
||||||
@ -454,6 +456,12 @@ load helpers
|
|||||||
die "MAC address did not change after podman network disconnect/connect"
|
die "MAC address did not change after podman network disconnect/connect"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Disconnect/reconnect of a container *with no ports* should succeed quietly
|
||||||
|
run_podman network disconnect $netname $background_cid
|
||||||
|
is "$output" "" "disconnect of container with no open ports"
|
||||||
|
run_podman network connect $netname $background_cid
|
||||||
|
is "$output" "" "(re)connect of container with no open ports"
|
||||||
|
|
||||||
# FIXME FIXME FIXME: #11825: bodhi tests are failing, remote+rootless only,
|
# FIXME FIXME FIXME: #11825: bodhi tests are failing, remote+rootless only,
|
||||||
# with "dnsmasq: failed to create inotify". This error has never occurred
|
# with "dnsmasq: failed to create inotify". This error has never occurred
|
||||||
# in CI, and Ed has been unable to reproduce it on 1minutetip. This next
|
# in CI, and Ed has been unable to reproduce it on 1minutetip. This next
|
||||||
@ -464,6 +472,7 @@ load helpers
|
|||||||
|
|
||||||
# connect a second network
|
# connect a second network
|
||||||
run_podman network connect $netname2 $cid
|
run_podman network connect $netname2 $cid
|
||||||
|
is "$output" "" "Output should be empty (no errors)"
|
||||||
|
|
||||||
# check network2 alias for container short id
|
# check network2 alias for container short id
|
||||||
run_podman inspect $cid --format "{{(index .NetworkSettings.Networks \"$netname2\").Aliases}}"
|
run_podman inspect $cid --format "{{(index .NetworkSettings.Networks \"$netname2\").Aliases}}"
|
||||||
|
Reference in New Issue
Block a user