From e30364cb4d2cf97871b2d7c780aea0da39120c64 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Fri, 8 Apr 2022 13:08:32 +0200 Subject: [PATCH] e2e: introduce getClusterID() helper There are many locations where the cluster-id (`ceph fsid`) is obtained from the Rook Toolbox. Instead of duplicating the code everywhere, use a new helper function getClusterID(). Signed-off-by: Niels de Vos --- e2e/cephfs_helper.go | 12 +++++------- e2e/configmap.go | 11 +++-------- e2e/rbd_helper.go | 9 ++------- e2e/snapshot.go | 18 +++++------------- e2e/staticpvc.go | 23 +++++++---------------- e2e/utils.go | 12 ++++++++++++ 6 files changed, 34 insertions(+), 51 deletions(-) diff --git a/e2e/cephfs_helper.go b/e2e/cephfs_helper.go index adf4895ce..e8bc84c72 100644 --- a/e2e/cephfs_helper.go +++ b/e2e/cephfs_helper.go @@ -92,14 +92,12 @@ func createCephfsStorageClass( // fetch and set fsID from the cluster if not set in params if _, found := params["clusterID"]; !found { - fsID, stdErr, failErr := execCommandInToolBoxPod(f, "ceph fsid", rookNamespace) - if failErr != nil { - return failErr + var fsID string + fsID, err = getClusterID(f) + if err != nil { + return fmt.Errorf("failed to get clusterID: %w", err) } - if stdErr != "" { - return fmt.Errorf("error getting fsid %v", stdErr) - } - sc.Parameters["clusterID"] = strings.Trim(fsID, "\n") + sc.Parameters["clusterID"] = fsID } sc.Namespace = cephCSINamespace diff --git a/e2e/configmap.go b/e2e/configmap.go index 8f60c5bcf..676968a3a 100644 --- a/e2e/configmap.go +++ b/e2e/configmap.go @@ -20,7 +20,6 @@ import ( "context" "encoding/json" "fmt" - "strings" "github.com/ceph/ceph-csi/internal/util" @@ -45,15 +44,11 @@ func createConfigMap(pluginPath string, c kubernetes.Interface, f *framework.Fra return err } - fsID, stdErr, err := execCommandInToolBoxPod(f, "ceph fsid", rookNamespace) + fsID, err := getClusterID(f) if err != nil { - return fmt.Errorf("failed to exec command in toolbox: %w", err) + return fmt.Errorf("failed to get clusterID: %w", err) } - if stdErr != "" { - return fmt.Errorf("error getting fsid %v", stdErr) - } - // remove new line present in fsID - fsID = strings.Trim(fsID, "\n") + // get mon list mons, err := getMons(rookNamespace, c) if err != nil { diff --git a/e2e/rbd_helper.go b/e2e/rbd_helper.go index 2fd762e0f..04b8427a5 100644 --- a/e2e/rbd_helper.go +++ b/e2e/rbd_helper.go @@ -136,15 +136,10 @@ func createRBDStorageClass( sc.Parameters["csi.storage.k8s.io/node-stage-secret-namespace"] = cephCSINamespace sc.Parameters["csi.storage.k8s.io/node-stage-secret-name"] = rbdNodePluginSecretName - fsID, stdErr, err := execCommandInToolBoxPod(f, "ceph fsid", rookNamespace) + fsID, err := getClusterID(f) if err != nil { - return err + return fmt.Errorf("failed to get clusterID: %w", err) } - if stdErr != "" { - return fmt.Errorf("error getting fsid %v", stdErr) - } - // remove new line present in fsID - fsID = strings.Trim(fsID, "\n") sc.Parameters["clusterID"] = fsID for k, v := range parameters { diff --git a/e2e/snapshot.go b/e2e/snapshot.go index 6f2f98d3c..f0e2cdb3e 100644 --- a/e2e/snapshot.go +++ b/e2e/snapshot.go @@ -19,7 +19,6 @@ package e2e import ( "context" "fmt" - "strings" "time" snapapi "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" @@ -158,14 +157,10 @@ func createRBDSnapshotClass(f *framework.Framework) error { sc.Parameters["csi.storage.k8s.io/snapshotter-secret-namespace"] = cephCSINamespace sc.Parameters["csi.storage.k8s.io/snapshotter-secret-name"] = rbdProvisionerSecretName - fsID, stdErr, err := execCommandInToolBoxPod(f, "ceph fsid", rookNamespace) + fsID, err := getClusterID(f) if err != nil { - return err + return fmt.Errorf("failed to get clusterID: %w", err) } - if stdErr != "" { - return fmt.Errorf("failed to get fsid from ceph cluster %s", stdErr) - } - fsID = strings.Trim(fsID, "\n") sc.Parameters["clusterID"] = fsID sclient, err := newSnapshotClient() if err != nil { @@ -193,14 +188,11 @@ func createCephFSSnapshotClass(f *framework.Framework) error { sc := getSnapshotClass(scPath) sc.Parameters["csi.storage.k8s.io/snapshotter-secret-namespace"] = cephCSINamespace sc.Parameters["csi.storage.k8s.io/snapshotter-secret-name"] = cephFSProvisionerSecretName - fsID, stdErr, err := execCommandInToolBoxPod(f, "ceph fsid", rookNamespace) + + fsID, err := getClusterID(f) if err != nil { - return err + return fmt.Errorf("failed to get clusterID: %w", err) } - if stdErr != "" { - return fmt.Errorf("failed to get fsid from ceph cluster %s", stdErr) - } - fsID = strings.Trim(fsID, "\n") sc.Parameters["clusterID"] = fsID sclient, err := newSnapshotClient() if err != nil { diff --git a/e2e/staticpvc.go b/e2e/staticpvc.go index c3ad075bd..391b44fa3 100644 --- a/e2e/staticpvc.go +++ b/e2e/staticpvc.go @@ -127,15 +127,11 @@ func validateRBDStaticPV(f *framework.Framework, appPath string, isBlock, checkI c := f.ClientSet - fsID, e, err := execCommandInToolBoxPod(f, "ceph fsid", rookNamespace) + fsID, err := getClusterID(f) if err != nil { - return err + return fmt.Errorf("failed to get clusterID: %w", err) } - if e != "" { - return fmt.Errorf("failed to get fsid from ceph cluster %s", e) - } - // remove new line present in fsID - fsID = strings.Trim(fsID, "\n") + size := staticPVSize // create rbd image cmd := fmt.Sprintf( @@ -144,7 +140,7 @@ func validateRBDStaticPV(f *framework.Framework, appPath string, isBlock, checkI staticPVSize, rbdOptions(defaultRBDPool)) - _, e, err = execCommandInToolBoxPod(f, cmd, rookNamespace) + _, e, err := execCommandInToolBoxPod(f, cmd, rookNamespace) if err != nil { return err } @@ -346,15 +342,10 @@ func validateCephFsStaticPV(f *framework.Framework, appPath, scPath string) erro LabelSelector: "app=rook-ceph-tools", } - fsID, e, err := execCommandInPod(f, "ceph fsid", rookNamespace, &listOpt) + fsID, err := getClusterID(f) if err != nil { - return err + return fmt.Errorf("failed to get clusterID: %w", err) } - if e != "" { - return fmt.Errorf("failed to get fsid from ceph cluster %s", e) - } - // remove new line present in fsID - fsID = strings.Trim(fsID, "\n") // 4GiB in bytes size := "4294967296" @@ -362,7 +353,7 @@ func validateCephFsStaticPV(f *framework.Framework, appPath, scPath string) erro // create subvolumegroup, command will work even if group is already present. cmd := fmt.Sprintf("ceph fs subvolumegroup create %s %s", fileSystemName, groupName) - _, e, err = execCommandInPod(f, cmd, rookNamespace, &listOpt) + _, e, err := execCommandInPod(f, cmd, rookNamespace, &listOpt) if err != nil { return err } diff --git a/e2e/utils.go b/e2e/utils.go index 2edcb0747..c7eb0a9b4 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -121,6 +121,18 @@ func getMonsHash(mons string) string { return fmt.Sprintf("%x", md5.Sum([]byte(mons))) //nolint:gosec // hash generation } +func getClusterID(f *framework.Framework) (string, error) { + fsID, stdErr, err := execCommandInToolBoxPod(f, "ceph fsid", rookNamespace) + if err != nil { + return "", fmt.Errorf("failed getting clusterID through toolbox: %w", err) + } + if stdErr != "" { + return "", fmt.Errorf("error getting fsid: %s", stdErr) + } + // remove new line present in fsID + return strings.Trim(fsID, "\n"), nil +} + func getStorageClass(path string) (scv1.StorageClass, error) { sc := scv1.StorageClass{} err := unmarshal(path, &sc)