Merge pull request #16563 from ygalblum/quadlet_k8s

Quadlet: Add support for running podman kube play via .kube files
This commit is contained in:
OpenShift Merge Robot
2022-11-22 14:52:32 -05:00
committed by GitHub
4 changed files with 133 additions and 9 deletions

View File

@@ -0,0 +1,17 @@
## assert-podman-args "kube"
## assert-podman-args "play"
## assert-podman-final-args deployment.yml
## assert-podman-args "--replace"
## assert-podman-args "--service-container=true"
## assert-podman-stop-args "kube"
## assert-podman-stop-args "down"
## assert-podman-stop-final-args deployment.yml
## assert-key-is "Unit" "RequiresMountsFor" "%t/containers"
## assert-key-is "Service" "KillMode" "mixed"
## assert-key-is "Service" "Type" "notify"
## assert-key-is "Service" "NotifyAccess" "all"
## assert-key-is "Service" "Environment" "PODMAN_SYSTEMD_UNIT=%n"
[Kube]
Yaml=deployment.yml

View File

@@ -110,19 +110,35 @@ func (t *quadletTestcase) assertKeyContains(args []string, unit *parser.UnitFile
return ok && strings.Contains(realValue, value)
}
func (t *quadletTestcase) assertPodmanArgs(args []string, unit *parser.UnitFile) bool {
podmanArgs, _ := unit.LookupLastArgs("Service", "ExecStart")
func (t *quadletTestcase) assertPodmanArgs(args []string, unit *parser.UnitFile, key string) bool {
podmanArgs, _ := unit.LookupLastArgs("Service", key)
return findSublist(podmanArgs, args) != -1
}
func (t *quadletTestcase) assertFinalArgs(args []string, unit *parser.UnitFile) bool {
podmanArgs, _ := unit.LookupLastArgs("Service", "ExecStart")
func (t *quadletTestcase) assertPodmanFinalArgs(args []string, unit *parser.UnitFile, key string) bool {
podmanArgs, _ := unit.LookupLastArgs("Service", key)
if len(podmanArgs) < len(args) {
return false
}
return matchSublistAt(podmanArgs, len(podmanArgs)-len(args), args)
}
func (t *quadletTestcase) assertStartPodmanArgs(args []string, unit *parser.UnitFile) bool {
return t.assertPodmanArgs(args, unit, "ExecStart")
}
func (t *quadletTestcase) assertStartPodmanFinalArgs(args []string, unit *parser.UnitFile) bool {
return t.assertPodmanFinalArgs(args, unit, "ExecStart")
}
func (t *quadletTestcase) assertStopPodmanArgs(args []string, unit *parser.UnitFile) bool {
return t.assertPodmanArgs(args, unit, "ExecStop")
}
func (t *quadletTestcase) assertStopPodmanFinalArgs(args []string, unit *parser.UnitFile) bool {
return t.assertPodmanFinalArgs(args, unit, "ExecStop")
}
func (t *quadletTestcase) assertSymlink(args []string, unit *parser.UnitFile) bool {
symlink := args[0]
expectedTarget := args[1]
@@ -161,11 +177,15 @@ func (t *quadletTestcase) doAssert(check []string, unit *parser.UnitFile, sessio
case "assert-key-contains":
ok = t.assertKeyContains(args, unit)
case "assert-podman-args":
ok = t.assertPodmanArgs(args, unit)
ok = t.assertStartPodmanArgs(args, unit)
case "assert-podman-final-args":
ok = t.assertFinalArgs(args, unit)
ok = t.assertStartPodmanFinalArgs(args, unit)
case "assert-symlink":
ok = t.assertSymlink(args, unit)
case "assert-podman-stop-args":
ok = t.assertStopPodmanArgs(args, unit)
case "assert-podman-stop-final-args":
ok = t.assertStopPodmanFinalArgs(args, unit)
default:
return fmt.Errorf("Unsupported assertion %s", op)
}
@@ -300,6 +320,8 @@ var _ = Describe("quadlet system generator", func() {
Entry("basic.volume", "basic.volume"),
Entry("label.volume", "label.volume"),
Entry("uid.volume", "uid.volume"),
Entry("Basic kube", "basic.kube"),
)
})