summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvamahaja <vamahaja@redhat.com>2019-09-06 17:08:46 +0530
committervponomar <vponomar@redhat.com>2019-09-11 11:26:18 +0000
commit8c2db5c9894c4f7b90704143cdc97c919c4fe961 (patch)
tree8aa42a5123ff15c3039db1d1147676ca715c9ec0
parentb8164531b9e1ab559db362b6305b953ec79940d3 (diff)
Add test cases to perform heketi cluster operations
Change-Id: I5886680a0d5666c68c677893e0fb327be0e80760 Signed-off-by: vamahaja <vamahaja@redhat.com>
-rw-r--r--openshift-storage-libs/openshiftstoragelibs/heketi_ops.py44
-rw-r--r--tests/functional/heketi/test_heketi_cluster_operations.py96
2 files changed, 140 insertions, 0 deletions
diff --git a/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py b/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py
index 9bb3a855..f98a8d72 100644
--- a/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py
+++ b/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py
@@ -435,6 +435,50 @@ def hello_heketi(heketi_client_node, heketi_server_url, **kwargs):
return True
+def heketi_cluster_create(heketi_client_node, heketi_server_url, **kwargs):
+ """Executes heketi cluster create command with provided options.
+
+ Args:
+ heketi_client_node (str): Node on which cmd has to be executed.
+ heketi_server_url (str): Heketi server url
+
+ Kwargs:
+ The keys, values in kwargs are:
+ - json : (bool)
+ - secret : (str)|None
+ - user : (str)|None
+ - block : (bool)|None
+ - file : (bool)|None
+
+ Returns:
+ str: cluster delete command output on success
+
+ Raises:
+ exceptions.ExecutionError: if command fails.
+
+ Example:
+ heketi_cluster_create(
+ heketi_client_node, heketi_server_url, block=True)
+ """
+
+ heketi_server_url, json_arg, admin_key, user = _set_heketi_global_flags(
+ heketi_server_url, **kwargs)
+
+ cmd = "heketi-cli -s %s cluster create %s %s %s" % (
+ heketi_server_url, json_arg, admin_key, user)
+
+ if not kwargs.get("block", True):
+ cmd += " --block=false"
+ if not kwargs.get("file", True):
+ cmd += " --file=false"
+
+ cmd = TIMEOUT_PREFIX + cmd
+ out = heketi_cmd_run(heketi_client_node, cmd)
+ if kwargs.get("json", False):
+ return json.loads(out)
+ return out
+
+
def heketi_cluster_delete(heketi_client_node, heketi_server_url, cluster_id,
**kwargs):
"""Executes heketi cluster delete command.
diff --git a/tests/functional/heketi/test_heketi_cluster_operations.py b/tests/functional/heketi/test_heketi_cluster_operations.py
new file mode 100644
index 00000000..b8ce8822
--- /dev/null
+++ b/tests/functional/heketi/test_heketi_cluster_operations.py
@@ -0,0 +1,96 @@
+import ddt
+
+from openshiftstoragelibs import baseclass
+from openshiftstoragelibs import heketi_ops
+
+
+@ddt.ddt
+class TestClusterOperationsTestCases(baseclass.BaseClass):
+ """Class for heketi cluster creation related test cases"""
+
+ @ddt.data("", "block", "file")
+ def test_heketi_cluster_create(self, disable_volume_type):
+ """Test heketi cluster creation"""
+ kwargs = {"json": True}
+ if disable_volume_type:
+ kwargs.update({disable_volume_type: False})
+
+ # Create heketi cluster
+ cluster_info = heketi_ops.heketi_cluster_create(
+ self.heketi_client_node, self.heketi_server_url, **kwargs)
+ self.addCleanup(
+ heketi_ops.heketi_cluster_delete, self.heketi_client_node,
+ self.heketi_server_url, cluster_info["id"])
+
+ # Validate block and file options
+ err_msg = "Cluster with %s option, unexpectedly set to %s"
+ if disable_volume_type:
+ self.assertFalse(
+ cluster_info[disable_volume_type],
+ err_msg % (disable_volume_type, "True"))
+ else:
+ self.assertTrue(
+ cluster_info["block"], err_msg % ("block", "False"))
+ self.assertTrue(cluster_info["file"], err_msg % ("file", "False"))
+
+ def test_heketi_cluster_list(self):
+ """Test and validateheketi cluster list operation"""
+ # Create heketi cluster
+ cluster_info = heketi_ops.heketi_cluster_create(
+ self.heketi_client_node, self.heketi_server_url, json=True)
+ self.addCleanup(
+ heketi_ops.heketi_cluster_delete, self.heketi_client_node,
+ self.heketi_server_url, cluster_info["id"])
+
+ # Get heketi cluster list and validate presence of newly
+ # created cluster
+ cluster_list = heketi_ops.heketi_cluster_list(
+ self.heketi_client_node, self.heketi_server_url, json=True)
+ err_msg = (
+ "Cluster id %s not found in cluster list %s"
+ % (cluster_info["id"], cluster_list["clusters"]))
+ self.assertIn(cluster_info["id"], cluster_list["clusters"], err_msg)
+
+ def test_heketi_cluster_info(self):
+ """Test and validateheketi cluster info operation"""
+ # Create heketi cluster
+ cluster_info = heketi_ops.heketi_cluster_create(
+ self.heketi_client_node, self.heketi_server_url, json=True)
+ self.addCleanup(
+ heketi_ops.heketi_cluster_delete, self.heketi_client_node,
+ self.heketi_server_url, cluster_info["id"])
+
+ # Get newly created heketi cluster info
+ get_cluster_info = heketi_ops.heketi_cluster_info(
+ self.heketi_client_node, self.heketi_server_url,
+ cluster_info["id"], json=True)
+
+ # Validate newly created heketi cluster info
+ params = (
+ ("id", cluster_info["id"]),
+ ("block", True),
+ ("file", True),
+ ("blockvolumes", []),
+ ("volumes", []),
+ ("nodes", []))
+ for param, value in params:
+ self.assertEqual(get_cluster_info[param], value)
+
+ def test_heketi_cluster_delete(self):
+ """Test and validateheketi cluster delete operation"""
+ # Create heketi cluster
+ cluster_info = heketi_ops.heketi_cluster_create(
+ self.heketi_client_node, self.heketi_server_url, json=True)
+
+ # Delete newly created cluster
+ heketi_ops.heketi_cluster_delete(
+ self.heketi_client_node, self.heketi_server_url,
+ cluster_info["id"])
+
+ # Get heketi cluster list and check for absence of deleted cluster
+ cluster_list = heketi_ops.heketi_cluster_list(
+ self.heketi_client_node, self.heketi_server_url, json=True)
+ err_msg = (
+ "Cluster id %s was not expected in cluster list %s"
+ % (cluster_info["id"], cluster_list["clusters"]))
+ self.assertNotIn(cluster_info["id"], cluster_list["clusters"], err_msg)