From f471a206c566a1de1894f6327c34543ea6c38027 Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Wed, 30 Jun 2021 13:20:45 +0530 Subject: [PATCH] e2e: update e2e to validate thick metadata updated e2e tests to validate the thick metadata set on the rbd image for thick PVC. Signed-off-by: Madhu Rajanna --- e2e/rbd_helper.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/e2e/rbd_helper.go b/e2e/rbd_helper.go index e68826cc9..ac43e9ea6 100644 --- a/e2e/rbd_helper.go +++ b/e2e/rbd_helper.go @@ -21,6 +21,11 @@ import ( e2elog "k8s.io/kubernetes/test/e2e/framework/log" ) +const ( + // image metadata key for thick-provisioning. + thickProvisionMetaKey = "rbd.csi.ceph.com/thick-provisioned" +) + func imageSpec(pool, image string) string { if radosNamespace != "" { return pool + "/" + radosNamespace + "/" + image @@ -452,6 +457,27 @@ func isThickPVC(f *framework.Framework, pvc *v1.PersistentVolumeClaim, app *v1.P } else if du.UsedSize == 0 || du.UsedSize != du.ProvisionedSize { return fmt.Errorf("backing RBD image is not thick-provisioned (%d/%d)", du.UsedSize, du.ProvisionedSize) } + err = validateThickImageMetadata(f, pvc, thickProvisionMetaKey) + if err != nil { + return fmt.Errorf("failed to validate thick image: %w", err) + } + return nil +} + +// validateThickImage check thick metadata is set on the the image. +func validateThickImageMetadata(f *framework.Framework, pvc *v1.PersistentVolumeClaim, key string) error { + imageData, err := getImageInfoFromPVC(pvc.Namespace, pvc.Name, f) + if err != nil { + return err + } + rbdImageSpec := imageSpec(defaultRBDPool, imageData.imageName) + thickState, err := getImageMeta(rbdImageSpec, key, f) + if err != nil { + return err + } + if thickState == "" { + return fmt.Errorf("image metadata is set for %s", rbdImageSpec) + } return nil } @@ -781,6 +807,10 @@ func validateThickPVC(f *framework.Framework, pvc *v1.PersistentVolumeClaim, siz } validateRBDImageCount(f, 1, defaultRBDPool) + err = validateThickImageMetadata(f, pvc, thickProvisionMetaKey) + if err != nil { + return fmt.Errorf("failed to validate thick image: %w", err) + } // nothing has been written, but the image should be allocated du, err := getRbdDu(f, pvc) if err != nil {