Skip to content

Commit 5cc5742

Browse files
Merge pull request #23135 from breca/main
feat(quadlet): log option handling
2 parents 045413b + 22b57d3 commit 5cc5742

File tree

5 files changed

+39
-0
lines changed

5 files changed

+39
-0
lines changed

docs/source/markdown/podman-systemd.unit.5.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@ Valid options for `[Container]` are listed below:
278278
| IP6=2001:db8::1 | --ip6 2001:db8::1 |
279279
| Label="XYZ" | --label "XYZ" |
280280
| LogDriver=journald | --log-driver journald |
281+
| LogOpt=path=/var/log/mykube\.json | --log-opt path=/var/log/mykube\.json |
281282
| Mask=/proc/sys/foo\:/proc/sys/bar | --security-opt mask=/proc/sys/foo:/proc/sys/bar |
282283
| Mount=type=... | --mount type=... |
283284
| Network=host | --net host |
@@ -557,6 +558,12 @@ This key can be listed multiple times.
557558
Set the log-driver used by Podman when running the container.
558559
Equivalent to the Podman `--log-driver` option.
559560

561+
### `LogOpt=`
562+
563+
Set the log-opt (logging options) used by Podman when running the container.
564+
Equivalent to the Podman `--log-opt` option.
565+
This key can be listed multiple times.
566+
560567
### `Mask=`
561568

562569
Specify the paths to mask separated by a colon. `Mask=/path/1:/path/2`. A masked path cannot be accessed inside the container.

pkg/systemd/quadlet/quadlet.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ const (
110110
KeyKubeDownForce = "KubeDownForce"
111111
KeyLabel = "Label"
112112
KeyLogDriver = "LogDriver"
113+
KeyLogOpt = "LogOpt"
113114
KeyMask = "Mask"
114115
KeyMount = "Mount"
115116
KeyNetwork = "Network"
@@ -212,6 +213,7 @@ var (
212213
KeyImage: true,
213214
KeyLabel: true,
214215
KeyLogDriver: true,
216+
KeyLogOpt: true,
215217
KeyMask: true,
216218
KeyMount: true,
217219
KeyNetwork: true,
@@ -299,6 +301,7 @@ var (
299301
KeyGlobalArgs: true,
300302
KeyKubeDownForce: true,
301303
KeyLogDriver: true,
304+
KeyLogOpt: true,
302305
KeyNetwork: true,
303306
KeyPodmanArgs: true,
304307
KeyPublishPort: true,
@@ -544,6 +547,7 @@ func ConvertContainer(container *parser.UnitFile, names map[string]string, isUse
544547
)
545548

546549
handleLogDriver(container, ContainerGroup, podman)
550+
handleLogOpt(container, ContainerGroup, podman)
547551

548552
// We delegate groups to the runtime
549553
service.Add(ServiceGroup, "Delegate", "yes")
@@ -1164,6 +1168,7 @@ func ConvertKube(kube *parser.UnitFile, names map[string]string, isUser bool) (*
11641168
}
11651169

11661170
handleLogDriver(kube, KubeGroup, execStart)
1171+
handleLogOpt(kube, KubeGroup, execStart)
11671172

11681173
if err := handleUserMappings(kube, KubeGroup, execStart, isUser, false); err != nil {
11691174
return nil, err
@@ -1813,6 +1818,13 @@ func handleLogDriver(unitFile *parser.UnitFile, groupName string, podman *Podman
18131818
}
18141819
}
18151820

1821+
func handleLogOpt(unitFile *parser.UnitFile, groupName string, podman *PodmanCmdline) {
1822+
logOpts := unitFile.LookupAllStrv(groupName, KeyLogOpt)
1823+
for _, logOpt := range logOpts {
1824+
podman.add("--log-opt", logOpt)
1825+
}
1826+
}
1827+
18161828
func handleStorageSource(quadletUnitFile, serviceUnitFile *parser.UnitFile, source string, names map[string]string) (string, error) {
18171829
if source[0] == '.' {
18181830
var err error

test/e2e/quadlet/logopt.container

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
## assert-podman-args "--log-opt" "path=/var/log/some-logs.json"
2+
## assert-podman-args "--log-opt" "size=10mb"
3+
## assert-podman-args "--log-opt" "tag="{{.ImageName}}""
4+
5+
[Container]
6+
Image=localhost/imagename
7+
LogOpt=path=/var/log/some-logs.json
8+
LogOpt=size=10mb
9+
LogOpt=tag="{{.ImageName}}"

test/e2e/quadlet/logopt.kube

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
## assert-podman-args "--log-opt" "path=/var/log/some-logs.json"
2+
## assert-podman-args "--log-opt" "size=10mb"
3+
## assert-podman-args "--log-opt" "tag="{{.ImageName}}""
4+
5+
[Kube]
6+
Yaml=deployment.yml
7+
LogOpt=path=/var/log/some-logs.json
8+
LogOpt=size=10mb
9+
LogOpt=tag="{{.ImageName}}"

test/e2e/quadlet_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,7 @@ BOGUS=foo
818818
Entry("label.container", "label.container", 0, ""),
819819
Entry("line-continuation-whitespace.container", "line-continuation-whitespace.container", 0, ""),
820820
Entry("logdriver.container", "logdriver.container", 0, ""),
821+
Entry("logopt.container", "logopt.container", 0, ""),
821822
Entry("mask.container", "mask.container", 0, ""),
822823
Entry("mount.container", "mount.container", 0, ""),
823824
Entry("name.container", "name.container", 0, ""),
@@ -892,6 +893,7 @@ BOGUS=foo
892893
Entry("Kube - ConfigMap", "configmap.kube", 0, ""),
893894
Entry("Kube - Exit Code Propagation", "exit_code_propagation.kube", 0, ""),
894895
Entry("Kube - Logdriver", "logdriver.kube", 0, ""),
896+
Entry("Kube - Logopt", "logopt.kube", 0, ""),
895897
Entry("Kube - Network", "network.kube", 0, ""),
896898
Entry("Kube - PodmanArgs", "podmanargs.kube", 0, ""),
897899
Entry("Kube - Publish IPv4 ports", "ports.kube", 0, ""),

0 commit comments

Comments
 (0)