summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorApeksha D Khakharia <akhakhar@redhat.com>2018-03-05 18:03:10 +0530
committerApeksha D Khakharia <akhakhar@redhat.com>2018-05-08 15:14:32 +0530
commita0926b0e17f21547910f6db8ecd086a81565d935 (patch)
tree8915554e3c70acc4a989d2f60c12efca4b6cb1ac
parent55e396a9ed1ae935bf7ca77bf1e230b5e7c4dea5 (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.py3
-rw-r--r--cns-libs/cnslibs/common/heketi_ops.py49
-rw-r--r--tests/cns_tests_sample_config.yml1
-rw-r--r--tests/functional/common/provisioning/test_dynamic_provisioning_p0_cases.py42
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")