mirror of
https://github.com/containers/podman.git
synced 2025-12-05 04:40:47 +08:00
quadlet: Add a network requirement on .image units
If a container unit starts on boot with a dependency on `default.target` the image unit may start too soon, before network is ready. This cause the unit to fail to pull the image. - Add a dependency on `network-online.target` to make sure image pulls don't fail. See https://github.com/containers/podman/issues/21873 - Document the hardcoded dependency on `network-online.target` for images unit and explain how it can be overriden if necessary. - tests/e2e/quadlet: Add `assert-last-key-regex` Required to test the `After=` override in [Unit] section See https://github.com/containers/podman/pull/22057#issuecomment-2008959993 - quadlet/unitfile: add a prepenUnitLine method Requirements on networks should be inserted at the top of the section so the user can override them. Signed-off-by: jbtrystram <jbtrystram@redhat.com>
This commit is contained in:
@@ -172,6 +172,24 @@ func (t *quadletTestcase) assertKeyIsRegex(args []string, unit *parser.UnitFile)
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *quadletTestcase) assertLastKeyIsRegex(args []string, unit *parser.UnitFile) bool {
|
||||
Expect(len(args)).To(BeNumerically(">=", 3))
|
||||
group := args[0]
|
||||
key := args[1]
|
||||
regex := args[2]
|
||||
|
||||
value, ok := unit.LookupLast(group, key)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
|
||||
matched, err := regexp.MatchString(regex, value)
|
||||
if err != nil || !matched {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *quadletTestcase) assertKeyContains(args []string, unit *parser.UnitFile) bool {
|
||||
Expect(args).To(HaveLen(3))
|
||||
group := args[0]
|
||||
@@ -469,6 +487,8 @@ func (t *quadletTestcase) doAssert(check []string, unit *parser.UnitFile, sessio
|
||||
ok = t.assertKeyIsRegex(args, unit)
|
||||
case "assert-key-contains":
|
||||
ok = t.assertKeyContains(args, unit)
|
||||
case "assert-last-key-is-regex":
|
||||
ok = t.assertLastKeyIsRegex(args, unit)
|
||||
case "assert-podman-args":
|
||||
ok = t.assertStartPodmanArgs(args, unit)
|
||||
case "assert-podman-args-regex":
|
||||
@@ -847,6 +867,7 @@ BOGUS=foo
|
||||
Entry("merged-override.container", "merged-override.container", 0, ""),
|
||||
Entry("template@.container", "template@.container", 0, ""),
|
||||
Entry("template@instance.container", "template@instance.container", 0, ""),
|
||||
Entry("Unit After Override", "unit-after-override.container", 0, ""),
|
||||
|
||||
Entry("basic.volume", "basic.volume", 0, ""),
|
||||
Entry("device-copy.volume", "device-copy.volume", 0, ""),
|
||||
@@ -921,6 +942,7 @@ BOGUS=foo
|
||||
Entry("Image - Arch and OS", "arch-os.image", 0, ""),
|
||||
Entry("Image - global args", "globalargs.image", 0, ""),
|
||||
Entry("Image - Containers Conf Modules", "containersconfmodule.image", 0, ""),
|
||||
Entry("Image - Unit After Override", "unit-after-override.image", 0, ""),
|
||||
|
||||
Entry("basic.pod", "basic.pod", 0, ""),
|
||||
Entry("name.pod", "name.pod", 0, ""),
|
||||
|
||||
Reference in New Issue
Block a user