From 1f136920008b17f91ef710ef86340584bfaf7ce2 Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Thu, 16 Apr 2020 13:04:44 +0530 Subject: [PATCH] ci: skip snapshot E2E if kube<1.17+ snapshot beta CRD wont work if the kubernetes version is less than 1.17.0 as the snapshot CRD wont be installed we cannot test the snapshot,so disabling it if the kube version is less than 1.17 Signed-off-by: Madhu Rajanna --- e2e/rbd.go | 85 +++++++++++++++++++++----------------- scripts/travis-functest.sh | 26 +++++++++--- scripts/travis-helmtest.sh | 25 ++++++++--- 3 files changed, 87 insertions(+), 49 deletions(-) diff --git a/e2e/rbd.go b/e2e/rbd.go index a71ff553a..d6724416a 100644 --- a/e2e/rbd.go +++ b/e2e/rbd.go @@ -234,52 +234,59 @@ var _ = Describe("RBD", func() { createRBDStorageClass(f.ClientSet, f, nil, nil) }) - // skipping snapshot testing By("create a PVC clone and Bind it to an app", func() { - createRBDSnapshotClass(f) - pvc, err := loadPVC(pvcPath) + v, err := f.ClientSet.Discovery().ServerVersion() if err != nil { + e2elog.Logf("failed to get server version with error %v", err) Fail(err.Error()) } + // snapshot beta is only supported from v1.17+ + if v.Major > "1" || (v.Major == "1" && v.Minor >= "17") { + createRBDSnapshotClass(f) + pvc, err := loadPVC(pvcPath) + if err != nil { + Fail(err.Error()) + } - pvc.Namespace = f.UniqueName - e2elog.Logf("The PVC template %+v", pvc) - err = createPVCAndvalidatePV(f.ClientSet, pvc, deployTimeout) - if err != nil { - Fail(err.Error()) - } - // validate created backend rbd images - images := listRBDImages(f) - if len(images) != 1 { - e2elog.Logf("backend image count %d expected image count %d", len(images), 1) - Fail("validate backend image failed") - } - snap := getSnapshot(snapshotPath) - snap.Namespace = f.UniqueName - snap.Spec.Source.PersistentVolumeClaimName = &pvc.Name - err = createSnapshot(&snap, deployTimeout) - if err != nil { - Fail(err.Error()) - } - pool := "replicapool" - snapList, err := listSnapshots(f, pool, images[0]) - if err != nil { - Fail(err.Error()) - } - if len(snapList) != 1 { - e2elog.Logf("backend snapshot not matching kube snap count,snap count = % kube snap count %d", len(snapList), 1) - Fail("validate backend snapshot failed") - } + pvc.Namespace = f.UniqueName + e2elog.Logf("The PVC template %+v", pvc) + err = createPVCAndvalidatePV(f.ClientSet, pvc, deployTimeout) + if err != nil { + Fail(err.Error()) + } + // validate created backend rbd images + images := listRBDImages(f) + if len(images) != 1 { + e2elog.Logf("backend image count %d expected image count %d", len(images), 1) + Fail("validate backend image failed") + } + snap := getSnapshot(snapshotPath) + snap.Namespace = f.UniqueName + snap.Spec.Source.PersistentVolumeClaimName = &pvc.Name + err = createSnapshot(&snap, deployTimeout) + if err != nil { + Fail(err.Error()) + } + pool := "replicapool" + snapList, err := listSnapshots(f, pool, images[0]) + if err != nil { + Fail(err.Error()) + } + if len(snapList) != 1 { + e2elog.Logf("backend snapshot not matching kube snap count,snap count = % kube snap count %d", len(snapList), 1) + Fail("validate backend snapshot failed") + } - validatePVCAndAppBinding(pvcClonePath, appClonePath, f) + validatePVCAndAppBinding(pvcClonePath, appClonePath, f) - err = deleteSnapshot(&snap, deployTimeout) - if err != nil { - Fail(err.Error()) - } - err = deletePVCAndValidatePV(f.ClientSet, pvc, deployTimeout) - if err != nil { - Fail(err.Error()) + err = deleteSnapshot(&snap, deployTimeout) + if err != nil { + Fail(err.Error()) + } + err = deletePVCAndValidatePV(f.ClientSet, pvc, deployTimeout) + if err != nil { + Fail(err.Error()) + } } }) diff --git a/scripts/travis-functest.sh b/scripts/travis-functest.sh index 6ef7fcd3d..569dcdaf1 100755 --- a/scripts/travis-functest.sh +++ b/scripts/travis-functest.sh @@ -4,19 +4,35 @@ set -e # This script will be used by travis to run functional test # against different kuberentes version export KUBE_VERSION=$1 + +# parse the kubernetes version, return the digit passed as argument +# v1.17.0 -> kube_version 1 -> 1 +# v1.17.0 -> kube_version 2 -> 17 +kube_version() { + echo "${KUBE_VERSION}" | sed 's/^v//' | cut -d'.' -f"${1}" +} sudo scripts/minikube.sh up sudo scripts/minikube.sh deploy-rook sudo scripts/minikube.sh create-block-pool # pull docker images to speed up e2e sudo scripts/minikube.sh cephcsi sudo scripts/minikube.sh k8s-sidecar -# delete snapshot CRD created by ceph-csi in rook -scripts/install-snapshot.sh delete-crd -# install snapshot controller -scripts/install-snapshot.sh install sudo chown -R travis: "$HOME"/.minikube /usr/local/bin/kubectl +KUBE_MAJOR=$(kube_version 1) +KUBE_MINOR=$(kube_version 2) +# skip snapshot operation if kube version is less than 1.17.0 +if [[ "${KUBE_MAJOR}" -ge 1 ]] && [[ "${KUBE_MINOR}" -ge 17 ]]; then + # delete snapshot CRD created by ceph-csi in rook + scripts/install-snapshot.sh delete-crd + # install snapshot controller + scripts/install-snapshot.sh install +fi + # functional tests go test github.com/ceph/ceph-csi/e2e --deploy-timeout=10 -timeout=30m --cephcsi-namespace=cephcsi-e2e-$RANDOM -v -mod=vendor -scripts/install-snapshot.sh cleanup +if [[ "${KUBE_MAJOR}" -ge 1 ]] && [[ "${KUBE_MINOR}" -ge 17 ]]; then + # delete snapshot CRD + scripts/install-snapshot.sh cleanup +fi sudo scripts/minikube.sh clean diff --git a/scripts/travis-helmtest.sh b/scripts/travis-helmtest.sh index fb04453d9..67166c18e 100755 --- a/scripts/travis-helmtest.sh +++ b/scripts/travis-helmtest.sh @@ -4,6 +4,12 @@ set -e # This script will be used by travis to run functional test # against different kuberentes version export KUBE_VERSION=$1 +# parse the kubernetes version, return the digit passed as argument +# v1.17.0 -> kube_version 1 -> 1 +# v1.17.0 -> kube_version 2 -> 17 +kube_version() { + echo "${KUBE_VERSION}" | sed 's/^v//' | cut -d'.' -f"${1}" +} sudo scripts/minikube.sh up sudo scripts/minikube.sh deploy-rook sudo scripts/minikube.sh create-block-pool @@ -15,10 +21,15 @@ sudo chown -R travis: "$HOME"/.minikube /usr/local/bin/kubectl NAMESPACE=cephcsi-e2e-$RANDOM # create ns for e2e kubectl create ns ${NAMESPACE} -# delete snapshot CRD created by ceph-csi in rook -scripts/install-snapshot.sh delete-crd -# install snapshot controller -scripts/install-snapshot.sh install +KUBE_MAJOR=$(kube_version 1) +KUBE_MINOR=$(kube_version 2) +# skip snapshot operation if kube version is less than 1.17.0 +if [[ "${KUBE_MAJOR}" -ge 1 ]] && [[ "${KUBE_MINOR}" -ge 17 ]]; then + # delete snapshot CRD created by ceph-csi in rook + scripts/install-snapshot.sh delete-crd + # install snapshot controller + scripts/install-snapshot.sh install +fi # set up helm scripts/install-helm.sh up # install cephcsi helm charts @@ -27,7 +38,11 @@ scripts/install-helm.sh install-cephcsi ${NAMESPACE} go test github.com/ceph/ceph-csi/e2e -mod=vendor --deploy-timeout=10 -timeout=30m --cephcsi-namespace=${NAMESPACE} --deploy-cephfs=false --deploy-rbd=false -v #cleanup -scripts/install-snapshot.sh cleanup +# skip snapshot operation if kube version is less than 1.17.0 +if [[ "${KUBE_MAJOR}" -ge 1 ]] && [[ "${KUBE_MINOR}" -ge 17 ]]; then + # delete snapshot CRD + scripts/install-snapshot.sh cleanup +fi scripts/install-helm.sh cleanup-cephcsi ${NAMESPACE} scripts/install-helm.sh clean kubectl delete ns ${NAMESPACE}