From 0409fca095ad262f83a6c6231c43c487d526f270 Mon Sep 17 00:00:00 2001 From: Pawan Date: Thu, 10 Dec 2020 15:36:08 +0530 Subject: [PATCH] fix(sanity): fixing flaky sanity test case Also moving to bionic docker image for github action also. Signed-off-by: Pawan --- buildscripts/zfs-driver/zfs-driver.Dockerfile | 2 +- ci/sanity.sh | 2 +- pkg/driver/controller.go | 38 ++++++++++++++++--- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/buildscripts/zfs-driver/zfs-driver.Dockerfile b/buildscripts/zfs-driver/zfs-driver.Dockerfile index 186c750..3ede4ad 100644 --- a/buildscripts/zfs-driver/zfs-driver.Dockerfile +++ b/buildscripts/zfs-driver/zfs-driver.Dockerfile @@ -41,7 +41,7 @@ COPY . . RUN make buildx.csi-driver -FROM ubuntu:19.10 +FROM ubuntu:18.04 RUN apt-get clean && rm -rf /var/lib/apt/lists/* RUN apt-get update; exit 0 diff --git a/ci/sanity.sh b/ci/sanity.sh index 1a4978c..8aad620 100755 --- a/ci/sanity.sh +++ b/ci/sanity.sh @@ -76,7 +76,7 @@ EOT function startTestSuite() { echo "================== Start csi-sanity test suite =================" - ./csi-sanity --ginkgo.v --csi.controllerendpoint=///tmp/csi.sock --csi.endpoint=/var/lib/kubelet/plugins/zfs-localpv/csi.sock --csi.testvolumeparameters=/tmp/parameters.json + ./csi-sanity --ginkgo.v --csi.controllerendpoint=///tmp/csi.sock --csi.endpoint=/var/lib/kubelet/plugins/zfs-localpv/csi.sock --csi.testvolumeparameters=/tmp/parameters.json --csi.testsnapshotparameters=/tmp/parameters.json if [ $? -ne 0 ]; then dumpAllLogs diff --git a/pkg/driver/controller.go b/pkg/driver/controller.go index 8400a82..992e0a4 100644 --- a/pkg/driver/controller.go +++ b/pkg/driver/controller.go @@ -133,6 +133,23 @@ func waitForVolDestroy(volname string) error { return nil } +func waitForReadySnapshot(snapname string) error { + for true { + snap, err := zfs.GetZFSSnapshot(snapname) + if err != nil { + return status.Errorf(codes.Internal, + "zfs: wait failed, not able to get the snapshot %s %s", snapname, err.Error()) + } + + switch snap.Status.State { + case zfs.ZFSStatusReady: + return nil + } + time.Sleep(time.Second) + } + return nil +} + // CreateZFSVolume create new zfs volume from csi volume request func CreateZFSVolume(req *csi.CreateVolumeRequest) (string, error) { volName := strings.ToLower(req.GetName()) @@ -224,12 +241,6 @@ func CreateZFSVolume(req *csi.CreateVolumeRequest) (string, error) { "not able to provision the volume %s", err.Error()) } - if _, ok := parameters["wait"]; ok { - if err := waitForReadyVolume(volName); err != nil { - return "", err - } - } - return selected, nil } @@ -370,6 +381,12 @@ func (cs *controller) CreateVolume( return nil, err } + if _, ok := parameters["wait"]; ok { + if err := waitForReadyVolume(volName); err != nil { + return nil, err + } + } + sendEventOrIgnore(pvcName, volName, strconv.FormatInt(int64(size), 10), "zfs-localpv", analytics.VolumeProvision) topology := map[string]string{zfs.ZFSTopologyKey: selected} @@ -661,6 +678,15 @@ func (cs *controller) CreateSnapshot( ) } + originalParams := req.GetParameters() + parameters := helpers.GetCaseInsensitiveMap(&originalParams) + + if _, ok := parameters["wait"]; ok { + if err := waitForReadySnapshot(snapName); err != nil { + return nil, err + } + } + state, _ = zfs.GetZFSSnapshotStatus(snapName) return csipayload.NewCreateSnapshotResponseBuilder().