summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlban Bedel <albeu@free.fr>2020-11-18 20:51:59 +0100
committerAlban Bedel <albeu@free.fr>2020-11-27 11:38:33 +0100
commit66944baad657aded4aba07fac28ea590e120afac (patch)
tree5d8c0cfee6ff7388c8c057a1c9fd1ca3f49dcdf3 /test
parentb84304da5e720df11ebb2093c68a6f7e8a684b34 (diff)
downloadpodman-66944baad657aded4aba07fac28ea590e120afac.tar.gz
podman-66944baad657aded4aba07fac28ea590e120afac.tar.bz2
podman-66944baad657aded4aba07fac28ea590e120afac.zip
Add support for persistent volume claims in kube files
In k8s a persistent volume claim (PVC) allow pods to define a volume by referencing the name of a PVC. The PVC basically contains criterias that k8s then use to select which storage source it will use for the volume. Podman only provide one abtracted storage, the named volumes, and create them if they don't exists yet. So this patch simply use a volume with the name of the PVC. Signed-off-by: Alban Bedel <albeu@free.fr>
Diffstat (limited to 'test')
-rw-r--r--test/e2e/play_kube_test.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
index eb82b3862..5ecfdd6b5 100644
--- a/test/e2e/play_kube_test.go
+++ b/test/e2e/play_kube_test.go
@@ -169,6 +169,10 @@ spec:
path: {{ .HostPath.Path }}
type: {{ .HostPath.Type }}
{{- end }}
+ {{- if (eq .VolumeType "PersistentVolumeClaim") }}
+ persistentVolumeClaim:
+ claimName: {{ .PersistentVolumeClaim.ClaimName }}
+ {{- end }}
{{ end }}
{{ end }}
status: {}
@@ -699,10 +703,15 @@ type HostPath struct {
Type string
}
+type PersistentVolumeClaim struct {
+ ClaimName string
+}
+
type Volume struct {
VolumeType string
Name string
HostPath
+ PersistentVolumeClaim
}
// getHostPathVolume takes a type and a location for a HostPath
@@ -718,6 +727,18 @@ func getHostPathVolume(vType, vPath string) *Volume {
}
}
+// getHostPathVolume takes a name for a Persistentvolumeclaim
+// volume giving it a default name of volName
+func getPersistentVolumeClaimVolume(vName string) *Volume {
+ return &Volume{
+ VolumeType: "PersistentVolumeClaim",
+ Name: defaultVolName,
+ PersistentVolumeClaim: PersistentVolumeClaim{
+ ClaimName: vName,
+ },
+ }
+}
+
type Env struct {
Name string
Value string
@@ -1389,6 +1410,26 @@ spec:
Expect(inspect.OutputToString()).To(ContainSubstring(correct))
})
+ It("podman play kube test with PersistentVolumeClaim volume", func() {
+ volumeName := "namedVolume"
+
+ ctr := getCtr(withVolumeMount("/test", false), withImage(BB))
+ pod := getPod(withVolume(getPersistentVolumeClaimVolume(volumeName)), withCtr(ctr))
+ err = generateKubeYaml("pod", pod, kubeYaml)
+ Expect(err).To(BeNil())
+
+ kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube.ExitCode()).To(Equal(0))
+
+ inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "{{ (index .Mounts 0).Type }}:{{ (index .Mounts 0).Name }}"})
+ inspect.WaitWithDefaultTimeout()
+ Expect(inspect.ExitCode()).To(Equal(0))
+
+ correct := fmt.Sprintf("volume:%s", volumeName)
+ Expect(inspect.OutputToString()).To(Equal(correct))
+ })
+
It("podman play kube applies labels to pods", func() {
var numReplicas int32 = 5
expectedLabelKey := "key1"