cephfs: add validation for generic ephemeral volumes

This commit adds the validation of csi cephfs driver to work with
ephemeral volume support. With ephemeral volume support a user can
specify ephemeral volumes in its pod spec and tie the lifecycle
of the PVC with the POD.

An example POD spec also included in this commit.

Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
This commit is contained in:
Humble Chirammal 2021-10-29 14:38:33 +05:30 committed by mergify[bot]
parent df0901ddd8
commit e6949945bb
2 changed files with 55 additions and 0 deletions

View File

@ -279,6 +279,7 @@ var _ = Describe("cephfs", func() {
appClonePath := cephFSExamplePath + "pod-restore.yaml" appClonePath := cephFSExamplePath + "pod-restore.yaml"
appSmartClonePath := cephFSExamplePath + "pod-clone.yaml" appSmartClonePath := cephFSExamplePath + "pod-clone.yaml"
snapshotPath := cephFSExamplePath + "snapshot.yaml" snapshotPath := cephFSExamplePath + "snapshot.yaml"
appEphemeralPath := cephFSExamplePath + "pod-ephemeral.yaml"
By("checking provisioner deployment is running", func() { By("checking provisioner deployment is running", func() {
err := waitForDeploymentComplete(cephFSDeploymentName, cephCSINamespace, f.ClientSet, deployTimeout) err := waitForDeploymentComplete(cephFSDeploymentName, cephCSINamespace, f.ClientSet, deployTimeout)
@ -312,6 +313,37 @@ var _ = Describe("cephfs", func() {
} }
}) })
} }
By("verify generic ephemeral volume support", func() {
// generic ephemeral volume support is beta since v1.21.
if !k8sVersionGreaterEquals(f.ClientSet, 1, 21) {
Skip("generic ephemeral volume only supported from v1.21+")
}
err := createCephfsStorageClass(f.ClientSet, f, true, nil)
if err != nil {
e2elog.Failf("failed to create CephFS storageclass: %v", err)
}
// create application
app, err := loadApp(appEphemeralPath)
if err != nil {
e2elog.Failf("failed to load application: %v", err)
}
app.Namespace = f.UniqueName
err = createApp(f.ClientSet, app, deployTimeout)
if err != nil {
e2elog.Failf("failed to create application: %v", err)
}
validateSubvolumeCount(f, 1, fileSystemName, subvolumegroup)
// delete pod
err = deletePod(app.Name, app.Namespace, f.ClientSet, deployTimeout)
if err != nil {
e2elog.Failf("failed to delete application: %v", err)
}
validateSubvolumeCount(f, 0, fileSystemName, subvolumegroup)
err = deleteResource(cephFSExamplePath + "storageclass.yaml")
if err != nil {
e2elog.Failf("failed to delete CephFS storageclass: %v", err)
}
})
By("check static PVC", func() { By("check static PVC", func() {
scPath := cephFSExamplePath + "secret.yaml" scPath := cephFSExamplePath + "secret.yaml"

View File

@ -0,0 +1,23 @@
---
kind: Pod
apiVersion: v1
metadata:
name: csi-cephfs-demo-ephemeral-pod
spec:
containers:
- name: web-server
image: docker.io/library/nginx:latest
volumeMounts:
- mountPath: /myspace
name: mypvc
volumes:
- name: mypvc
ephemeral:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
storageClassName: csi-cephfs-sc
resources:
requests:
storage: 1Gi