Honor users requests in quadlet files
Fixes: https://github.com/containers/podman/issues/24322 Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
parent
0f25d9ee15
commit
c6be5a6684
|
|
@ -876,6 +876,21 @@ func ConvertContainer(container *parser.UnitFile, isUser bool, unitsInfoMap map[
|
||||||
return service, nil
|
return service, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func defaultOneshotServiceGroup(service *parser.UnitFile, remainAfterExit bool) {
|
||||||
|
// The default syslog identifier is the exec basename (podman) which isn't very useful here
|
||||||
|
if _, ok := service.Lookup(ServiceGroup, "SyslogIdentifier"); !ok {
|
||||||
|
service.Set(ServiceGroup, "SyslogIdentifier", "%N")
|
||||||
|
}
|
||||||
|
if _, ok := service.Lookup(ServiceGroup, "Type"); !ok {
|
||||||
|
service.Set(ServiceGroup, "Type", "oneshot")
|
||||||
|
}
|
||||||
|
if remainAfterExit {
|
||||||
|
if _, ok := service.Lookup(ServiceGroup, "RemainAfterExit"); !ok {
|
||||||
|
service.Set(ServiceGroup, "RemainAfterExit", "yes")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Convert a quadlet network file (unit file with a Network group) to a systemd
|
// Convert a quadlet network file (unit file with a Network group) to a systemd
|
||||||
// service file (unit file with Service group) based on the options in the
|
// service file (unit file with Service group) based on the options in the
|
||||||
// Network group.
|
// Network group.
|
||||||
|
|
@ -976,12 +991,7 @@ func ConvertNetwork(network *parser.UnitFile, name string, unitsInfoMap map[stri
|
||||||
|
|
||||||
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
||||||
|
|
||||||
service.Setv(ServiceGroup,
|
defaultOneshotServiceGroup(service, true)
|
||||||
"Type", "oneshot",
|
|
||||||
"RemainAfterExit", "yes",
|
|
||||||
|
|
||||||
// The default syslog identifier is the exec basename (podman) which isn't very useful here
|
|
||||||
"SyslogIdentifier", "%N")
|
|
||||||
|
|
||||||
// Store the name of the created resource
|
// Store the name of the created resource
|
||||||
unitInfo.ResourceName = networkName
|
unitInfo.ResourceName = networkName
|
||||||
|
|
@ -1124,12 +1134,7 @@ func ConvertVolume(volume *parser.UnitFile, name string, unitsInfoMap map[string
|
||||||
|
|
||||||
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
||||||
|
|
||||||
service.Setv(ServiceGroup,
|
defaultOneshotServiceGroup(service, true)
|
||||||
"Type", "oneshot",
|
|
||||||
"RemainAfterExit", "yes",
|
|
||||||
|
|
||||||
// The default syslog identifier is the exec basename (podman) which isn't very useful here
|
|
||||||
"SyslogIdentifier", "%N")
|
|
||||||
|
|
||||||
// Store the name of the created resource
|
// Store the name of the created resource
|
||||||
unitInfo.ResourceName = volumeName
|
unitInfo.ResourceName = volumeName
|
||||||
|
|
@ -1342,12 +1347,7 @@ func ConvertImage(image *parser.UnitFile, unitsInfoMap map[string]*UnitInfo, isU
|
||||||
|
|
||||||
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
||||||
|
|
||||||
service.Setv(ServiceGroup,
|
defaultOneshotServiceGroup(service, true)
|
||||||
"Type", "oneshot",
|
|
||||||
"RemainAfterExit", "yes",
|
|
||||||
|
|
||||||
// The default syslog identifier is the exec basename (podman) which isn't very useful here
|
|
||||||
"SyslogIdentifier", "%N")
|
|
||||||
|
|
||||||
if name, ok := image.Lookup(ImageGroup, KeyImageTag); ok && len(name) > 0 {
|
if name, ok := image.Lookup(ImageGroup, KeyImageTag); ok && len(name) > 0 {
|
||||||
imageName = name
|
imageName = name
|
||||||
|
|
@ -1475,14 +1475,7 @@ func ConvertBuild(build *parser.UnitFile, unitsInfoMap map[string]*UnitInfo, isU
|
||||||
|
|
||||||
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
service.AddCmdline(ServiceGroup, "ExecStart", podman.Args)
|
||||||
|
|
||||||
service.Setv(ServiceGroup,
|
defaultOneshotServiceGroup(service, false)
|
||||||
"Type", "oneshot",
|
|
||||||
"RemainAfterExit", "yes",
|
|
||||||
|
|
||||||
// The default syslog identifier is the exec basename (podman)
|
|
||||||
// which isn't very useful here
|
|
||||||
"SyslogIdentifier", "%N")
|
|
||||||
|
|
||||||
return service, nil
|
return service, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
## assert-key-is "Unit" "RequiresMountsFor" "%t/containers"
|
## assert-key-is "Unit" "RequiresMountsFor" "%t/containers"
|
||||||
## assert-key-is-regex "Service" "WorkingDirectory" "/.*/podman-e2e-.*/subtest-.*/quadlet"
|
## assert-key-is-regex "Service" "WorkingDirectory" "/.*/podman-e2e-.*/subtest-.*/quadlet"
|
||||||
## assert-key-is "Service" "Type" "oneshot"
|
## assert-key-is "Service" "Type" "oneshot"
|
||||||
## assert-key-is "Service" "RemainAfterExit" "yes"
|
## !assert-key-is "Service" "RemainAfterExit" "yes"
|
||||||
## assert-key-is "Service" "SyslogIdentifier" "%N"
|
## assert-key-is "Service" "SyslogIdentifier" "%N"
|
||||||
|
|
||||||
[Build]
|
[Build]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
## assert-podman-final-args systemd-ipv6
|
## assert-podman-final-args systemd-ipv6
|
||||||
## assert-podman-args "--ipv6"
|
## assert-podman-args "--ipv6"
|
||||||
|
## assert-key-is Service Type exec
|
||||||
|
## assert-key-is Service RemainAfterExit no
|
||||||
|
## assert-key-contains Service SyslogIdentifier "Modify %N"
|
||||||
|
|
||||||
[Network]
|
[Network]
|
||||||
IPv6=yes
|
IPv6=yes
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=exec
|
||||||
|
RemainAfterExit=no
|
||||||
|
SyslogIdentifier="Modify %N"
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,13 @@
|
||||||
## assert-podman-final-args-regex /.*/podman-e2e-.*/subtest-.*/quadlet
|
## assert-podman-final-args-regex /.*/podman-e2e-.*/subtest-.*/quadlet
|
||||||
## assert-podman-args "--tag" "localhost/imagename"
|
## assert-podman-args "--tag" "localhost/imagename"
|
||||||
## assert-podman-args "--network" "host"
|
## assert-podman-args "--network" "host"
|
||||||
|
## assert-key-is "Service" "Type" "oneshot"
|
||||||
|
## assert-key-is "Service" "RemainAfterExit" "no"
|
||||||
|
|
||||||
[Build]
|
[Build]
|
||||||
ImageTag=localhost/imagename
|
ImageTag=localhost/imagename
|
||||||
SetWorkingDirectory=unit
|
SetWorkingDirectory=unit
|
||||||
Network=host
|
Network=host
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
RemainAfterExit=no
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,13 @@
|
||||||
## assert-key-contains Service ExecStart " --opt o=uid=0,gid=11 "
|
## assert-key-contains Service ExecStart " --opt o=uid=0,gid=11 "
|
||||||
|
## assert-key-is Service Type oneshot
|
||||||
|
## assert-key-is Service RemainAfterExit no
|
||||||
|
## assert-key-contains Service SyslogIdentifier "Modify %N"
|
||||||
|
|
||||||
[Volume]
|
[Volume]
|
||||||
# Test usernames too
|
# Test usernames too
|
||||||
User=root
|
User=root
|
||||||
Group=11
|
Group=11
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
RemainAfterExit=no
|
||||||
|
SyslogIdentifier="Modify %N"
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
## assert-podman-args -v named:/container/named
|
## assert-podman-args -v named:/container/named
|
||||||
## assert-podman-args -v systemd-basic:/container/quadlet
|
## assert-podman-args -v systemd-basic:/container/quadlet
|
||||||
## assert-podman-args -v %h/container:/container/volume4
|
## assert-podman-args -v %h/container:/container/volume4
|
||||||
|
## assert-key-is "Service" "Type" "notify"
|
||||||
|
|
||||||
[Build]
|
[Build]
|
||||||
ImageTag=localhost/imagename
|
ImageTag=localhost/imagename
|
||||||
|
|
@ -15,3 +16,6 @@ Volume=/container/empty
|
||||||
Volume=named:/container/named
|
Volume=named:/container/named
|
||||||
Volume=basic.volume:/container/quadlet
|
Volume=basic.volume:/container/quadlet
|
||||||
Volume=%h/container:/container/volume4
|
Volume=%h/container:/container/volume4
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue