diff options
author | vamahaja <vamahaja@redhat.com> | 2019-09-06 17:08:46 +0530 |
---|---|---|
committer | vponomar <vponomar@redhat.com> | 2019-09-11 11:26:18 +0000 |
commit | 8c2db5c9894c4f7b90704143cdc97c919c4fe961 (patch) | |
tree | 8aa42a5123ff15c3039db1d1147676ca715c9ec0 | |
parent | b8164531b9e1ab559db362b6305b953ec79940d3 (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.py | 44 | ||||
-rw-r--r-- | tests/functional/heketi/test_heketi_cluster_operations.py | 96 |
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) |