diff options
author | kasturiNarra <knarra@redhat.com> | 2019-01-25 17:56:40 +0530 |
---|---|---|
committer | vponomar <vponomar@redhat.com> | 2019-07-19 12:34:03 +0000 |
commit | 13ae8998a1338dad74337762af0db069b9ddc3d0 (patch) | |
tree | 7f71af291e59be096301ddc30976e5e11d81654d | |
parent | 2e0e0d67cb285c7e9f8b2113dfa9fd51015d2f12 (diff) |
Add test case where BHV and BV are created and deleted
Change-Id: I7ead23c46a472fee70d684c45f32f5e4efb0674f
Signed-off-by: kasturiNarra <knarra@redhat.com>
-rw-r--r-- | openshift-storage-libs/openshiftstoragelibs/heketi_ops.py | 30 | ||||
-rw-r--r-- | tests/functional/heketi/test_block_volumes_heketi.py | 50 |
2 files changed, 80 insertions, 0 deletions
diff --git a/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py b/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py index 7266445a..0021e79b 100644 --- a/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py +++ b/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py @@ -1416,3 +1416,33 @@ def get_block_hosting_volume_list( BHV[volume[0]] = {'Cluster': volume[1], 'Name': volume[2]} return BHV + + +def get_total_free_space(heketi_client_node, heketi_server_url): + """ + Calculates free space across devices which are online + and skips the ones which are offline. + Args: + - heketi_client_node (str): Node where we want to run our commands. + - heketi_server_url (str): This is a heketi server url. + + Returns: + int: if successful + + """ + device_free_spaces = [] + heketi_node_id_list = heketi_node_list( + heketi_client_node, heketi_server_url) + for node_id in heketi_node_id_list: + total_device_free_space = 0 + node_info_dict = heketi_node_info( + heketi_client_node, heketi_server_url, + node_id, json=True) + if (node_info_dict["state"].strip().lower() != "online"): + continue + for device in node_info_dict["devices"]: + if (device["state"].strip().lower() != "online"): + continue + total_device_free_space += (device["storage"]["free"]) + device_free_spaces.append(total_device_free_space / 1024 ** 2) + return int(sum(device_free_spaces)), len(device_free_spaces) diff --git a/tests/functional/heketi/test_block_volumes_heketi.py b/tests/functional/heketi/test_block_volumes_heketi.py index 62f90500..0356d6a6 100644 --- a/tests/functional/heketi/test_block_volumes_heketi.py +++ b/tests/functional/heketi/test_block_volumes_heketi.py @@ -1,10 +1,16 @@ from openshiftstoragelibs.baseclass import BaseClass from openshiftstoragelibs.heketi_ops import ( + get_total_free_space, heketi_blockvolume_create, heketi_blockvolume_delete, + heketi_blockvolume_info, heketi_blockvolume_list, heketi_volume_create, heketi_volume_delete, + heketi_volume_info, +) +from openshiftstoragelibs.openshift_ops import ( + get_default_block_hosting_volume_size ) @@ -86,3 +92,47 @@ class TestBlockVolumeOps(BaseClass): self.assertIn(vol_id, existing_vol_ids, "Block vol with '%s' ID is absent in the " "list of block volumes." % vol_id) + + def test_block_host_volume_delete_block_volume_delete(self): + """Validate block volume and BHV removal using heketi""" + free_space, nodenum = get_total_free_space( + self.heketi_client_node, + self.heketi_server_url) + if nodenum < 3: + self.skipTest("Skipping the test since number of nodes" + "online are less than 3") + free_space_available = int(free_space / nodenum) + default_bhv_size = get_default_block_hosting_volume_size( + self.heketi_client_node, self.heketi_dc_name) + if free_space_available < default_bhv_size: + self.skipTest("Skipping the test since free_space_available %s" + "is less than the default_bhv_size %s" + % (free_space_available, default_bhv_size)) + block_host_create_info = heketi_volume_create( + self.heketi_client_node, self.heketi_server_url, + default_bhv_size, json=True, block=True) + block_vol_size = block_host_create_info["blockinfo"]["freesize"] + block_hosting_vol_id = block_host_create_info["id"] + self.addCleanup(heketi_volume_delete, + self.heketi_client_node, + self.heketi_server_url, + block_hosting_vol_id, + raise_on_error=True) + block_vol_info = {"blockhostingvolume": "init_value"} + while (block_vol_info['blockhostingvolume'] != block_hosting_vol_id): + block_vol = heketi_blockvolume_create( + self.heketi_client_node, + self.heketi_server_url, block_vol_size, + json=True, ha=3, auth=True) + self.addCleanup(heketi_blockvolume_delete, + self.heketi_client_node, + self.heketi_server_url, + block_vol["id"], raise_on_error=True) + block_vol_info = heketi_blockvolume_info( + self.heketi_client_node, self.heketi_server_url, + block_vol["id"], json=True) + bhv_info = heketi_volume_info( + self.heketi_client_node, self.heketi_server_url, + block_hosting_vol_id, json=True) + self.assertIn( + block_vol_info["id"], bhv_info["blockinfo"]["blockvolume"]) |