diff options
-rw-r--r-- | pkg/spec/spec.go | 9 | ||||
-rw-r--r-- | test/e2e/run_networking_test.go | 38 |
2 files changed, 44 insertions, 3 deletions
diff --git a/pkg/spec/spec.go b/pkg/spec/spec.go index d9888e999..bceae4677 100644 --- a/pkg/spec/spec.go +++ b/pkg/spec/spec.go @@ -1,6 +1,7 @@ package createconfig import ( + "os" "strings" "github.com/docker/docker/daemon/caps" @@ -73,6 +74,14 @@ func CreateConfigToOCISpec(config *CreateConfig) (*spec.Spec, error) { //nolint g.AddAnnotation(key, val) } g.SetRootReadonly(config.ReadOnlyRootfs) + if config.Hostname == "" { + if config.NetMode.IsHost() { + config.Hostname, err = os.Hostname() + if err != nil { + return nil, errors.Wrap(err, "unable to retrieve hostname") + } + } + } g.SetHostname(config.Hostname) if config.Hostname != "" { g.AddProcessEnv("HOSTNAME", config.Hostname) diff --git a/test/e2e/run_networking_test.go b/test/e2e/run_networking_test.go index f7a7f8d67..a4bdcdf89 100644 --- a/test/e2e/run_networking_test.go +++ b/test/e2e/run_networking_test.go @@ -10,9 +10,10 @@ import ( var _ = Describe("Podman rmi", func() { var ( - tempdir string - err error - podmanTest PodmanTest + tempdir string + err error + podmanTest PodmanTest + hostname, _ = os.Hostname() ) BeforeEach(func() { @@ -98,4 +99,35 @@ var _ = Describe("Podman rmi", func() { Expect(containerConfig[0].NetworkSettings.Ports[0].HostPort).ToNot(Equal("80")) }) + It("podman run hostname test", func() { + session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv", "HOSTNAME"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + match, _ := session.GrepString(hostname) + Expect(match).Should(BeFalse()) + }) + + It("podman run --net host hostname test", func() { + session := podmanTest.Podman([]string{"run", "--rm", "--net", "host", ALPINE, "printenv", "HOSTNAME"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + match, _ := session.GrepString(hostname) + Expect(match).Should(BeTrue()) + }) + + It("podman run --net host --hostname ... hostname test", func() { + session := podmanTest.Podman([]string{"run", "--rm", "--net", "host", "--hostname", "foobar", ALPINE, "printenv", "HOSTNAME"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + match, _ := session.GrepString("foobar") + Expect(match).Should(BeTrue()) + }) + + It("podman run --hostname ... hostname test", func() { + session := podmanTest.Podman([]string{"run", "--rm", "--hostname", "foobar", ALPINE, "printenv", "HOSTNAME"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + match, _ := session.GrepString("foobar") + Expect(match).Should(BeTrue()) + }) }) |