From b97be3406bbfd26a4acadc72d74601fed38acbf8 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Tue, 9 May 2023 13:22:52 +0200 Subject: [PATCH] quadlet: support `HostName` Add a new `HostName` field to Quadlet `.container` files. Fixes: #18486 Signed-off-by: Valentin Rothberg --- docs/source/markdown/podman-systemd.unit.5.md | 6 ++++++ pkg/systemd/quadlet/quadlet.go | 6 ++++++ test/e2e/quadlet/hostname.container | 4 ++++ test/e2e/quadlet_test.go | 1 + 4 files changed, 17 insertions(+) create mode 100644 test/e2e/quadlet/hostname.container diff --git a/docs/source/markdown/podman-systemd.unit.5.md b/docs/source/markdown/podman-systemd.unit.5.md index 22e773835f..34a4a8298c 100644 --- a/docs/source/markdown/podman-systemd.unit.5.md +++ b/docs/source/markdown/podman-systemd.unit.5.md @@ -109,6 +109,7 @@ Valid options for `[Container]` are listed below: | HealthStartupSuccess=2 | --health-startup-success=2 | | HealthStartupTimeout=1m33s | --health-startup-timeout=1m33s | | HealthTimeout=20s | --health-timeout=20s | +| HostName=new-host-name | --hostname="new-host-name" | | Image=ubi8 | Image specification - ubi8 | | IP=192.5.0.1 | --ip 192.5.0.0 | | IP6=fd46:db93:aa76:ac37::10 | --ip6 2001:db8::1 | @@ -276,6 +277,11 @@ Equivalent to the Podman `--health-startup-timeout` option. The maximum time allowed to complete the healthcheck before an interval is considered failed. Equivalent to the Podman `--health-timeout` option. +### `HostName=` + +Sets the host name that is available inside the container. +Equivalent to the Podman `--hostname` option. + ### `Image=` The image to run in the container. This image must be locally installed for the service to work diff --git a/pkg/systemd/quadlet/quadlet.go b/pkg/systemd/quadlet/quadlet.go index c11737c90d..05da4068b3 100644 --- a/pkg/systemd/quadlet/quadlet.go +++ b/pkg/systemd/quadlet/quadlet.go @@ -58,6 +58,7 @@ const ( KeyHealthStartupSuccess = "HealthStartupSuccess" KeyHealthStartupTimeout = "HealthStartupTimeout" KeyHealthTimeout = "HealthTimeout" + KeyHostName = "HostName" KeyImage = "Image" KeyIP = "IP" KeyIP6 = "IP6" @@ -129,6 +130,7 @@ var ( KeyHealthStartupSuccess: true, KeyHealthStartupTimeout: true, KeyHealthTimeout: true, + KeyHostName: true, KeyImage: true, KeyIP: true, KeyIP6: true, @@ -614,6 +616,10 @@ func ConvertContainer(container *parser.UnitFile, isUser bool) (*parser.UnitFile handleHealth(container, ContainerGroup, podman) + if hostname, ok := container.Lookup(ContainerGroup, KeyHostName); ok { + podman.add("--hostname", hostname) + } + podmanArgs := container.LookupAllArgs(ContainerGroup, KeyPodmanArgs) podman.add(podmanArgs...) diff --git a/test/e2e/quadlet/hostname.container b/test/e2e/quadlet/hostname.container new file mode 100644 index 0000000000..c239b8667e --- /dev/null +++ b/test/e2e/quadlet/hostname.container @@ -0,0 +1,4 @@ +[Container] +Image=localhost/imagename +## assert-podman-args "--hostname" "\"quadlet-host\"" +HostName="quadlet-host" diff --git a/test/e2e/quadlet_test.go b/test/e2e/quadlet_test.go index a5c752d330..5b1e0cc5c6 100644 --- a/test/e2e/quadlet_test.go +++ b/test/e2e/quadlet_test.go @@ -575,6 +575,7 @@ var _ = Describe("quadlet system generator", func() { Entry("logdriver.container", "logdriver.container"), Entry("mount.container", "mount.container"), Entry("health.container", "health.container"), + Entry("hostname.container", "hostname.container"), Entry("basic.volume", "basic.volume"), Entry("label.volume", "label.volume"),