mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-22 14:20:19 +00:00
e2e: add test case for app deletion with unmounted cephFS volume
Checks app deletion when cephFS volume is already unmounted. Creates app, pvc and binds them. Unmounts the volume through umount cmd in cephFS plugin and checks app deletion. Signed-off-by: Rakshith R <rar@redhat.com>
This commit is contained in:
parent
e2dc8439e4
commit
9e957520ae
@ -24,6 +24,7 @@ var (
|
|||||||
cephfsNodePluginPSP = "csi-nodeplugin-psp.yaml"
|
cephfsNodePluginPSP = "csi-nodeplugin-psp.yaml"
|
||||||
cephfsDeploymentName = "csi-cephfsplugin-provisioner"
|
cephfsDeploymentName = "csi-cephfsplugin-provisioner"
|
||||||
cephfsDeamonSetName = "csi-cephfsplugin"
|
cephfsDeamonSetName = "csi-cephfsplugin"
|
||||||
|
cephfsContainerName = "csi-cephfsplugin"
|
||||||
cephfsDirPath = "../deploy/cephfs/kubernetes/"
|
cephfsDirPath = "../deploy/cephfs/kubernetes/"
|
||||||
cephfsExamplePath = "../examples/cephfs/"
|
cephfsExamplePath = "../examples/cephfs/"
|
||||||
subvolumegroup = "e2e"
|
subvolumegroup = "e2e"
|
||||||
@ -427,6 +428,23 @@ var _ = Describe("cephfs", func() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
By("Create PVC, bind it to an app, unmount volume and check app deletion", func() {
|
||||||
|
pvc, app, err := createPVCAndAppBinding(pvcPath, appPath, f, deployTimeout)
|
||||||
|
if err != nil {
|
||||||
|
e2elog.Failf("failed to create PVC or application with error %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = unmountCephFSVolume(f, app.Name, pvc.Name)
|
||||||
|
if err != nil {
|
||||||
|
e2elog.Failf("failed to unmount volume with error %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = deletePVCAndApp("", f, pvc, app)
|
||||||
|
if err != nil {
|
||||||
|
e2elog.Failf("failed to delete PVC or application with error %v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
By("create PVC, delete backing subvolume and check pv deletion", func() {
|
By("create PVC, delete backing subvolume and check pv deletion", func() {
|
||||||
pvc, err := loadPVC(pvcPath)
|
pvc, err := loadPVC(pvcPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -101,6 +101,26 @@ func createCephfsSecret(f *framework.Framework, secretName, userName, userKey st
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unmountCephFSVolume unmounts a cephFS volume mounted on a pod.
|
||||||
|
func unmountCephFSVolume(f *framework.Framework, appName, pvcName string) error {
|
||||||
|
pod, err := f.ClientSet.CoreV1().Pods(f.UniqueName).Get(context.TODO(), appName, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
e2elog.Logf("Error occurred getting pod %s in namespace %s", appName, f.UniqueName)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
pvc, err := f.ClientSet.CoreV1().PersistentVolumeClaims(f.UniqueName).Get(context.TODO(), pvcName, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
e2elog.Logf("Error occurred getting PVC %s in namespace %s", pvcName, f.UniqueName)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
cmd := fmt.Sprintf("umount /var/lib/kubelet/pods/%s/volumes/kubernetes.io~csi/%s/mount", pod.UID, pvc.Spec.VolumeName)
|
||||||
|
_, stdErr, err := execCommandInDaemonsetPod(f, cmd, cephfsDeamonSetName, pod.Spec.NodeName, cephfsContainerName, cephCSINamespace)
|
||||||
|
if stdErr != "" {
|
||||||
|
e2elog.Logf("StdErr occurred: %s", stdErr)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func deleteBackingCephFSVolume(f *framework.Framework, pvc *v1.PersistentVolumeClaim) error {
|
func deleteBackingCephFSVolume(f *framework.Framework, pvc *v1.PersistentVolumeClaim) error {
|
||||||
imageData, err := getImageInfoFromPVC(pvc.Namespace, pvc.Name, f)
|
imageData, err := getImageInfoFromPVC(pvc.Namespace, pvc.Name, f)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user