summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cns-libs/cnslibs/common/dynamic_provisioning.py8
-rw-r--r--cns-libs/cnslibs/common/openshift_ops.py2
-rw-r--r--tests/functional/common/provisioning/test_storage_class_cases.py71
3 files changed, 78 insertions, 3 deletions
diff --git a/cns-libs/cnslibs/common/dynamic_provisioning.py b/cns-libs/cnslibs/common/dynamic_provisioning.py
index 288d6245..70dffa4f 100644
--- a/cns-libs/cnslibs/common/dynamic_provisioning.py
+++ b/cns-libs/cnslibs/common/dynamic_provisioning.py
@@ -412,9 +412,13 @@ def verify_pvc_status_is_bound(hostname, pvc_name, timeout=120, wait_step=3):
msg = "PVC %s has different status - %s" % (pvc_name, output)
g.log.error(msg)
if msg:
- raise exceptions.ExecutionError(msg)
+ raise AssertionError(msg)
if w.expired:
+ # for debug purpose to see why provisioning failed
+ cmd = "oc describe pvc %s | grep ProvisioningFailed" % pvc_name
+ ret, out, err = g.run(hostname, cmd, "root")
+ g.log.info("cmd %s - out- %s err- %s" % (cmd, out, err))
msg = ("Exceeded timeout of '%s' seconds for verifying PVC '%s' "
"to reach the 'Bound' status." % (timeout, pvc_name))
g.log.error(msg)
- raise exceptions.ExecutionError(msg)
+ raise AssertionError(msg)
diff --git a/cns-libs/cnslibs/common/openshift_ops.py b/cns-libs/cnslibs/common/openshift_ops.py
index 50bfc4f4..bbfa4947 100644
--- a/cns-libs/cnslibs/common/openshift_ops.py
+++ b/cns-libs/cnslibs/common/openshift_ops.py
@@ -249,7 +249,7 @@ def oc_create_sc(hostname, sc_name_prefix="autotests-sc",
'resturl', 'secretnamespace', 'restuser', 'secretname',
'restauthenabled', 'restsecretnamespace', 'restsecretname',
'hacount', 'clusterids', 'chapauthenabled', 'volumenameprefix',
- 'volumeoptions',
+ 'volumeoptions', 'volumetype'
)
for parameter in parameters.keys():
if parameter.lower() not in allowed_parameters:
diff --git a/tests/functional/common/provisioning/test_storage_class_cases.py b/tests/functional/common/provisioning/test_storage_class_cases.py
new file mode 100644
index 00000000..283b5440
--- /dev/null
+++ b/tests/functional/common/provisioning/test_storage_class_cases.py
@@ -0,0 +1,71 @@
+import ddt
+from glusto.core import Glusto as g
+
+from cnslibs.cns import cns_baseclass
+from cnslibs.common.dynamic_provisioning import (
+ verify_pvc_status_is_bound,
+)
+from cnslibs.common.openshift_ops import (
+ oc_create_pvc,
+ oc_create_sc,
+ oc_create_secret,
+ oc_delete,
+ wait_for_resource_absence,
+)
+
+
+@ddt.ddt
+class TestStorageClassCases(cns_baseclass.CnsBaseClass):
+
+ @ddt.data(
+ {"volumetype": "dist-rep:3"},
+ {"resturl": "http://10.0.0.1:8080"},
+ {"secretname": "fakesecretname"},
+ {"secretnamespace": "fakenamespace"},
+ {"restuser": "fakeuser"},
+ )
+ def test_sc_glusterfile_incorrect_parameter(
+ self, parameter={}):
+ # Polarion testcase id- CNS-708,709,713,714,715
+
+ sc = self.cns_storage_class['storage_class1']
+ secret = self.cns_secret['secret1']
+ # Create secret file for usage in storage class
+ self.secret_name = oc_create_secret(
+ self.ocp_master_node[0], namespace=secret['namespace'],
+ data_key=self.heketi_cli_key, secret_type=secret['type'])
+ self.addCleanup(
+ oc_delete, self.ocp_master_node[0], 'secret', self.secret_name)
+
+ sc_parameter = {
+ "resturl": sc['resturl'],
+ "secretnamespace": sc['secretnamespace'],
+ "secretname": self.secret_name,
+ "restuser": sc['restuser'],
+ "volumetype": "replicate:3"
+ }
+ sc_parameter.update(parameter)
+
+ # Create storage class
+ self.sc_name = oc_create_sc(
+ self.ocp_master_node[0], **sc_parameter)
+ self.addCleanup(oc_delete, self.ocp_master_node[0], 'sc', self.sc_name)
+
+ # Create PVC
+ self.pvc_name = oc_create_pvc(self.ocp_client[0], self.sc_name)
+ self.addCleanup(
+ wait_for_resource_absence, self.ocp_master_node[0],
+ 'pvc', self.pvc_name)
+ self.addCleanup(oc_delete, self.ocp_master_node[0],
+ 'pvc', self.pvc_name)
+
+ try:
+ verify_pvc_status_is_bound(self.ocp_master_node[0], self.pvc_name)
+ except AssertionError:
+ g.log.info("pvc %s is not in bound state as expected" % (
+ self.pvc_name))
+ else:
+ err_msg = ("pvc %s in bound state, was expected to fail" % (
+ self.pvc_name))
+ g.log.error(err_msg)
+ raise AssertionError(err_msg)