mirror of
https://github.com/containers/podman.git
synced 2025-07-01 00:01:02 +08:00
Quadlet - use helper function for handling key=val type keys
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
This commit is contained in:
@ -45,18 +45,6 @@ func (c *PodmanCmdline) addKeys(arg string, keys map[string]string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PodmanCmdline) addEnv(env map[string]string) {
|
|
||||||
c.addKeys("--env", env)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PodmanCmdline) addLabels(labels map[string]string) {
|
|
||||||
c.addKeys("--label", labels)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PodmanCmdline) addAnnotations(annotations map[string]string) {
|
|
||||||
c.addKeys("--annotation", annotations)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *PodmanCmdline) addBool(arg string, val bool) {
|
func (c *PodmanCmdline) addBool(arg string, val bool) {
|
||||||
if val {
|
if val {
|
||||||
c.add(arg)
|
c.add(arg)
|
||||||
|
@ -601,10 +601,6 @@ func ConvertContainer(container *parser.UnitFile, isUser bool, unitsInfoMap map[
|
|||||||
service.Set(ServiceGroup, "KillMode", "mixed")
|
service.Set(ServiceGroup, "KillMode", "mixed")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read env early so we can override it below
|
|
||||||
podmanEnv, warn := container.LookupAllKeyVal(ContainerGroup, KeyEnvironment)
|
|
||||||
warnings = errors.Join(warnings, warn)
|
|
||||||
|
|
||||||
// Need the containers filesystem mounted to start podman
|
// Need the containers filesystem mounted to start podman
|
||||||
service.Add(UnitGroup, "RequiresMountsFor", "%t/containers")
|
service.Add(UnitGroup, "RequiresMountsFor", "%t/containers")
|
||||||
|
|
||||||
@ -814,9 +810,12 @@ func ConvertContainer(container *parser.UnitFile, isUser bool, unitsInfoMap map[
|
|||||||
|
|
||||||
update, ok := container.Lookup(ContainerGroup, KeyAutoUpdate)
|
update, ok := container.Lookup(ContainerGroup, KeyAutoUpdate)
|
||||||
if ok && len(update) > 0 {
|
if ok && len(update) > 0 {
|
||||||
podman.addLabels(map[string]string{
|
podman.addKeys(
|
||||||
autoUpdateLabel: update,
|
"--label",
|
||||||
})
|
map[string]string{
|
||||||
|
autoUpdateLabel: update,
|
||||||
|
},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
exposedPorts := container.LookupAll(ContainerGroup, KeyExposeHostPort)
|
exposedPorts := container.LookupAll(ContainerGroup, KeyExposeHostPort)
|
||||||
@ -832,15 +831,13 @@ func ConvertContainer(container *parser.UnitFile, isUser bool, unitsInfoMap map[
|
|||||||
|
|
||||||
handlePublishPorts(container, ContainerGroup, podman)
|
handlePublishPorts(container, ContainerGroup, podman)
|
||||||
|
|
||||||
podman.addEnv(podmanEnv)
|
keyValKeys := map[string]string{
|
||||||
|
KeyEnvironment: "--env",
|
||||||
labels, warn := container.LookupAllKeyVal(ContainerGroup, KeyLabel)
|
KeyLabel: "--label",
|
||||||
|
KeyAnnotation: "--annotation",
|
||||||
|
}
|
||||||
|
warn = lookupAndAddKeyVals(container, ContainerGroup, keyValKeys, podman)
|
||||||
warnings = errors.Join(warnings, warn)
|
warnings = errors.Join(warnings, warn)
|
||||||
podman.addLabels(labels)
|
|
||||||
|
|
||||||
annotations, warn := container.LookupAllKeyVal(ContainerGroup, KeyAnnotation)
|
|
||||||
warnings = errors.Join(warnings, warn)
|
|
||||||
podman.addAnnotations(annotations)
|
|
||||||
|
|
||||||
masks := container.LookupAllArgs(ContainerGroup, KeyMask)
|
masks := container.LookupAllArgs(ContainerGroup, KeyMask)
|
||||||
for _, mask := range masks {
|
for _, mask := range masks {
|
||||||
@ -1041,17 +1038,12 @@ func ConvertNetwork(network *parser.UnitFile, name string, unitsInfoMap map[stri
|
|||||||
return nil, warnings, fmt.Errorf("cannot set gateway or range without subnet")
|
return nil, warnings, fmt.Errorf("cannot set gateway or range without subnet")
|
||||||
}
|
}
|
||||||
|
|
||||||
networkOptions, warn := network.LookupAllKeyVal(NetworkGroup, KeyOptions)
|
keyValKeys := map[string]string{
|
||||||
warnings = errors.Join(warnings, warn)
|
KeyOptions: "--opt",
|
||||||
if len(networkOptions) > 0 {
|
KeyLabel: "--label",
|
||||||
podman.addKeys("--opt", networkOptions)
|
|
||||||
}
|
}
|
||||||
|
warn = lookupAndAddKeyVals(network, NetworkGroup, keyValKeys, podman)
|
||||||
labels, warn := network.LookupAllKeyVal(NetworkGroup, KeyLabel)
|
|
||||||
warnings = errors.Join(warnings, warn)
|
warnings = errors.Join(warnings, warn)
|
||||||
if len(labels) > 0 {
|
|
||||||
podman.addLabels(labels)
|
|
||||||
}
|
|
||||||
|
|
||||||
handlePodmanArgs(network, NetworkGroup, podman)
|
handlePodmanArgs(network, NetworkGroup, podman)
|
||||||
|
|
||||||
@ -1111,9 +1103,6 @@ func ConvertVolume(volume *parser.UnitFile, name string, unitsInfoMap map[string
|
|||||||
// Need the containers filesystem mounted to start podman
|
// Need the containers filesystem mounted to start podman
|
||||||
service.Add(UnitGroup, "RequiresMountsFor", "%t/containers")
|
service.Add(UnitGroup, "RequiresMountsFor", "%t/containers")
|
||||||
|
|
||||||
labels, warn := volume.LookupAllKeyVal(VolumeGroup, "Label")
|
|
||||||
warnings = errors.Join(warnings, warn)
|
|
||||||
|
|
||||||
podman := createBasePodmanCommand(volume, VolumeGroup)
|
podman := createBasePodmanCommand(volume, VolumeGroup)
|
||||||
|
|
||||||
podman.add("volume", "create", "--ignore")
|
podman.add("volume", "create", "--ignore")
|
||||||
@ -1200,7 +1189,11 @@ func ConvertVolume(volume *parser.UnitFile, name string, unitsInfoMap map[string
|
|||||||
podman.add("--opt", opts.String())
|
podman.add("--opt", opts.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
podman.addLabels(labels)
|
keyValKeys := map[string]string{
|
||||||
|
KeyLabel: "--label",
|
||||||
|
}
|
||||||
|
warn = lookupAndAddKeyVals(volume, VolumeGroup, keyValKeys, podman)
|
||||||
|
warnings = errors.Join(warnings, warn)
|
||||||
|
|
||||||
handlePodmanArgs(volume, VolumeGroup, podman)
|
handlePodmanArgs(volume, VolumeGroup, podman)
|
||||||
|
|
||||||
@ -1516,19 +1509,14 @@ func ConvertBuild(build *parser.UnitFile, unitsInfoMap map[string]*UnitInfo, isU
|
|||||||
}
|
}
|
||||||
lookupAndAddAllStrings(build, BuildGroup, allStringKeys, podman)
|
lookupAndAddAllStrings(build, BuildGroup, allStringKeys, podman)
|
||||||
|
|
||||||
annotations, warn := build.LookupAllKeyVal(BuildGroup, KeyAnnotation)
|
keyValKeys := map[string]string{
|
||||||
|
KeyEnvironment: "--env",
|
||||||
|
KeyLabel: "--label",
|
||||||
|
KeyAnnotation: "--annotation",
|
||||||
|
}
|
||||||
|
warn = lookupAndAddKeyVals(build, BuildGroup, keyValKeys, podman)
|
||||||
warnings = errors.Join(warnings, warn)
|
warnings = errors.Join(warnings, warn)
|
||||||
|
|
||||||
podman.addAnnotations(annotations)
|
|
||||||
|
|
||||||
podmanEnv, warn := build.LookupAllKeyVal(BuildGroup, KeyEnvironment)
|
|
||||||
warnings = errors.Join(warnings, warn)
|
|
||||||
podman.addEnv(podmanEnv)
|
|
||||||
|
|
||||||
labels, warn := build.LookupAllKeyVal(BuildGroup, KeyLabel)
|
|
||||||
warnings = errors.Join(warnings, warn)
|
|
||||||
podman.addLabels(labels)
|
|
||||||
|
|
||||||
if err := addNetworks(build, BuildGroup, service, unitsInfoMap, podman); err != nil {
|
if err := addNetworks(build, BuildGroup, service, unitsInfoMap, podman); err != nil {
|
||||||
return nil, warnings, err
|
return nil, warnings, err
|
||||||
}
|
}
|
||||||
@ -1709,9 +1697,11 @@ func ConvertPod(podUnit *parser.UnitFile, name string, unitsInfoMap map[string]*
|
|||||||
|
|
||||||
handlePublishPorts(podUnit, PodGroup, execStartPre)
|
handlePublishPorts(podUnit, PodGroup, execStartPre)
|
||||||
|
|
||||||
labels, warn := podUnit.LookupAllKeyVal(PodGroup, KeyLabel)
|
keyValKeys := map[string]string{
|
||||||
|
KeyLabel: "--label",
|
||||||
|
}
|
||||||
|
warn = lookupAndAddKeyVals(podUnit, PodGroup, keyValKeys, execStartPre)
|
||||||
warnings = errors.Join(warnings, warn)
|
warnings = errors.Join(warnings, warn)
|
||||||
execStartPre.addLabels(labels)
|
|
||||||
|
|
||||||
if err := addNetworks(podUnit, PodGroup, service, unitsInfoMap, execStartPre); err != nil {
|
if err := addNetworks(podUnit, PodGroup, service, unitsInfoMap, execStartPre); err != nil {
|
||||||
return nil, warnings, err
|
return nil, warnings, err
|
||||||
@ -2368,3 +2358,13 @@ func translateUnitDependencies(serviceUnitFile *parser.UnitFile, unitsInfoMap ma
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func lookupAndAddKeyVals(unit *parser.UnitFile, group string, keys map[string]string, podman *PodmanCmdline) error {
|
||||||
|
var warnings error
|
||||||
|
for key, flag := range keys {
|
||||||
|
keyVals, warn := unit.LookupAllKeyVal(group, key)
|
||||||
|
warnings = errors.Join(warnings, warn)
|
||||||
|
podman.addKeys(flag, keyVals)
|
||||||
|
}
|
||||||
|
return warnings
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user