diff options
author | Apeksha D Khakharia <akhakhar@redhat.com> | 2018-03-05 18:03:10 +0530 |
---|---|---|
committer | Apeksha D Khakharia <akhakhar@redhat.com> | 2018-05-08 15:14:32 +0530 |
commit | a0926b0e17f21547910f6db8ecd086a81565d935 (patch) | |
tree | 8915554e3c70acc4a989d2f60c12efca4b6cb1ac | |
parent | 55e396a9ed1ae935bf7ca77bf1e230b5e7c4dea5 (diff) |
CNS: adding testcase and library for volnameprefix
Change-Id: I84968bcfe19aa8af73f185be178079a8373915b3
Signed-off-by: Apeksha D Khakharia <akhakhar@redhat.com>
-rw-r--r-- | cns-libs/cnslibs/common/dynamic_provisioning.py | 3 | ||||
-rw-r--r-- | cns-libs/cnslibs/common/heketi_ops.py | 49 | ||||
-rw-r--r-- | tests/cns_tests_sample_config.yml | 1 | ||||
-rw-r--r-- | tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py | 42 |
4 files changed, 82 insertions, 13 deletions
diff --git a/cns-libs/cnslibs/common/dynamic_provisioning.py b/cns-libs/cnslibs/common/dynamic_provisioning.py index fea44b4b..7c1d0168 100644 --- a/cns-libs/cnslibs/common/dynamic_provisioning.py +++ b/cns-libs/cnslibs/common/dynamic_provisioning.py @@ -159,6 +159,7 @@ def create_storage_class_file(hostname, sc_name, resturl, restsecretnamespace:str ex: restsecretnamespace:"storage-project" restsecretname:str ex: restsecretname:"heketi-secret" + volumenameprefix:str ex: "dept_qe" Returns: bool: True if successful, otherwise False @@ -173,7 +174,7 @@ def create_storage_class_file(hostname, sc_name, resturl, for key in ('secretnamespace', 'restuser', 'secretname', 'restauthenabled', 'restsecretnamespace', 'restsecretname', 'hacount', 'clusterids', - 'chapauthenabled'): + 'chapauthenabled', 'volumenameprefix'): if kwargs.get(key): data['parameters'][key] = kwargs.get(key) diff --git a/cns-libs/cnslibs/common/heketi_ops.py b/cns-libs/cnslibs/common/heketi_ops.py index f2473d66..8e36d331 100644 --- a/cns-libs/cnslibs/common/heketi_ops.py +++ b/cns-libs/cnslibs/common/heketi_ops.py @@ -2154,3 +2154,52 @@ def heketi_blockvolume_list(heketi_client_node, heketi_server_url, mode='cli', except: g.log.error("Failed to do blockvolume list using heketi") return False + + +def verify_volume_name_prefix(hostname, prefix, namespace, pvc_name, + heketi_server_url, **kwargs): + ''' + This function checks if heketi voluem is present with + volname prefix + Args: + hostname (str): hostname on which we want + to check the heketi vol + prefix (str): volnameprefix given in storageclass + namespace (str): namespace + pvc_name (str): name of the pvc + heketi_server_url (str): Heketi server url + + Kwargs: + mode (str): Mode in which heketi command will be executed. + It can be cli|url. Defaults to cli. + **kwargs + The keys, values in kwargs are: + - json : (bool) + - secret : (str)|None + - user : (str)|None + + Returns: + bool: True if volume found, + Fasle otherwise. + ''' + (heketi_server_url, + json_arg, admin_key, user) = _set_heketi_global_flags(heketi_server_url, + **kwargs) + + heketi_vol_name_prefix = "%s_%s_%s_" % (prefix, namespace, + pvc_name) + cmd = ("heketi-cli -s %s volume list %s %s %s | grep %s" % ( + heketi_server_url, json_arg, admin_key, user, + heketi_vol_name_prefix)) + ret, out, err = g.run(hostname, cmd, "root") + if ret != 0: + if not out: + g.log.error("no heketi volume with volnameprefix - %s" % ( + heketi_vol_name_prefix)) + else: + g.log.error("failed to execute cmd %s" % cmd) + return False + output = out.strip() + g.log.info("heketi volume with volnameprefix present %s" % ( + output)) + return True diff --git a/tests/cns_tests_sample_config.yml b/tests/cns_tests_sample_config.yml index 0f031df6..ba06bd75 100644 --- a/tests/cns_tests_sample_config.yml +++ b/tests/cns_tests_sample_config.yml @@ -99,6 +99,7 @@ cns: restuser: secretnamespace: secretname: + volumenameprefix: "cns-vol" storage_class2: name: storage_class2 provisioner: diff --git a/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py b/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py index 734cc8a5..894ba33d 100644 --- a/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py +++ b/tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py @@ -10,6 +10,8 @@ from cnslibs.cns.cns_baseclass import ( from cnslibs.common.exceptions import ( ConfigError, ExecutionError) +from cnslibs.common.heketi_ops import ( + verify_volume_name_prefix) from cnslibs.common.openshift_ops import ( get_ocp_gluster_pod_names, oc_create, @@ -25,12 +27,10 @@ class TestDynamicProvisioningP0(CnsBaseClass): Class that contain P0 dynamic provisioning test cases for glusterfile volume ''' - def test_dynamic_provisioning_glusterfile(self): - g.log.info("test_dynamic_provisioning_glusterfile") + def dynamic_provisioning_glusterfile(self, pvc_name, volname_prefix=False): storage_class = self.cns_storage_class['storage_class1'] secret = self.cns_secret['secret1'] sc_name = storage_class['name'] - pvc_name1 = "mongodb1" cmd = ("oc get svc %s " "-o=custom-columns=:.spec.clusterIP" % self.heketi_service_name) ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") @@ -45,7 +45,9 @@ class TestDynamicProvisioningP0(CnsBaseClass): storage_class['provisioner'], restuser=storage_class['restuser'], secretnamespace=storage_class['secretnamespace'], - secretname=secret['secret_name']) + secretname=secret['secret_name'], + **({"volumenameprefix": storage_class['volumenameprefix']} + if volname_prefix else {})) self.assertTrue(ret, "creation of storage-class file failed") provisioner_name = storage_class['provisioner'].split("/") file_path = "/%s-%s-storage-class.yaml" % ( @@ -64,19 +66,25 @@ class TestDynamicProvisioningP0(CnsBaseClass): self.addCleanup(oc_delete, self.ocp_master_node[0], 'secret', secret['secret_name']) ret = create_mongodb_pod(self.ocp_master_node[0], - pvc_name1, 10, sc_name) + pvc_name, 10, sc_name) self.assertTrue(ret, "creation of mongodb pod failed") self.addCleanup(oc_delete, self.ocp_master_node[0], 'service', - pvc_name1) + pvc_name) self.addCleanup(oc_delete, self.ocp_master_node[0], 'pvc', - pvc_name1) + pvc_name) self.addCleanup(oc_delete, self.ocp_master_node[0], 'dc', - pvc_name1) + pvc_name) ret = verify_pod_status_running(self.ocp_master_node[0], - pvc_name1) + pvc_name) self.assertTrue(ret, "verify mongodb pod status as running failed") + if volname_prefix: + ret = verify_volume_name_prefix(self.ocp_master_node[0], + storage_class['volumenameprefix'], + storage_class['secretnamespace'], + pvc_name, resturl) + self.assertTrue(ret, "verify volnameprefix failed") cmd = ("oc get pods | grep %s | grep -v deploy " - "| awk {'print $1'}") % pvc_name1 + "| awk {'print $1'}") % pvc_name ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( cmd, self.ocp_master_node[0])) @@ -88,10 +96,10 @@ class TestDynamicProvisioningP0(CnsBaseClass): cmd, self.ocp_master_node[0])) oc_delete(self.ocp_master_node[0], 'pod', pod_name) ret = verify_pod_status_running(self.ocp_master_node[0], - pvc_name1) + pvc_name) self.assertTrue(ret, "verify mongodb pod status as running failed") cmd = ("oc get pods | grep %s | grep -v deploy " - "| awk {'print $1'}") % pvc_name1 + "| awk {'print $1'}") % pvc_name ret, out, err = g.run(self.ocp_master_node[0], cmd, "root") self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( cmd, self.ocp_master_node[0])) @@ -105,6 +113,16 @@ class TestDynamicProvisioningP0(CnsBaseClass): self.assertEqual(ret, 0, "failed to execute command %s on %s" % ( cmd, self.ocp_master_node[0])) + def test_dynamic_provisioning_glusterfile(self): + g.log.info("test_dynamic_provisioning_glusterfile") + self.dynamic_provisioning_glusterfile(pvc_name="mongodb1") + + def test_dynamic_provisioning_glusterfile_volname_prefix(self): + g.log.info("test_dynamic_provisioning_glusterfile volname" + " prefix") + self.dynamic_provisioning_glusterfile(pvc_name="mongodb5", + volname_prefix=True) + @unittest.skip("skiping heketi-pod failure testcase") def test_dynamic_provisioning_glusterfile_heketipod_failure(self): g.log.info("test_dynamic_provisioning_glusterfile_Heketipod_Failure") |