summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cns-libs/cnslibs/common/heketi_ops.py68
-rw-r--r--tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py6
-rw-r--r--tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py16
-rw-r--r--tests/functional/common/heketi/heketi_tests/test_node_info.py20
-rw-r--r--tests/functional/common/heketi/test_heketi_volume_operations.py12
-rw-r--r--tests/functional/common/heketi/test_volume_deletion.py15
-rw-r--r--tests/functional/common/heketi/test_volume_expansion_and_devices.py39
7 files changed, 48 insertions, 128 deletions
diff --git a/cns-libs/cnslibs/common/heketi_ops.py b/cns-libs/cnslibs/common/heketi_ops.py
index 8e36d331..fd6c4b34 100644
--- a/cns-libs/cnslibs/common/heketi_ops.py
+++ b/cns-libs/cnslibs/common/heketi_ops.py
@@ -13,6 +13,7 @@ try:
except:
g.log.error("Please install python-client for heketi and re-run the test")
+from cnslibs.common import exceptions
HEKETI_SSH_KEY = "/etc/heketi/heketi_key"
HEKETI_CONFIG_FILE = "/etc/heketi/heketi.json"
@@ -1839,54 +1840,37 @@ def heketi_node_remove(heketi_client_node, heketi_server_url, node_id,
return node
-def heketi_node_list(heketi_client_node, heketi_server_url, mode='cli',
- **kwargs):
- """Executes heketi node info command.
+def heketi_node_list(heketi_client_node, heketi_server_url,
+ heketi_user=None, heketi_secret=None):
+ """Execute CLI 'heketi node list' command and parse its output.
Args:
- heketi_client_node (str): Node on which cmd has to be executed.
- heketi_server_url (str): Heketi server url
-
- Kwargs:
- mode (str): Mode to excecute the command.
- It can be cli|url. Defaults to cli.
- **kwargs
- The keys, values in kwargs are:
- - json : (bool)
- - secret : (str)|None
- - user : (str)|None
-
+ heketi_client_node (str): Node on which cmd has to be executed
+ heketi_server_url (str): Heketi server url to perform request to
+ heketi_user (str): Name of the user to perform request with
+ heketi_secret (str): Secret for 'heketi_user'
Returns:
- dict: node list on success, if mode='cli' without json, then it
- returns raw output in string format.
- False: in case of failure
-
- Example:
- heketi_node_list(heketi_client_node, heketi_server_url)
+ list of strings which are node IDs
+ Raises: cnslibs.common.exceptions.ExecutionError in case CLI command failed.
"""
- (heketi_server_url,
- json_arg, admin_key, user) = _set_heketi_global_flags(heketi_server_url,
- **kwargs)
- if mode == 'cli':
- cmd = ("heketi-cli -s %s node list %s %s %s"
- % (heketi_server_url, json_arg, admin_key, user))
- ret, out, _ = g.run(heketi_client_node, cmd)
- if ret != 0:
- g.log.error("Failed to execute heketi-cli node list command")
- return False
+ heketi_server_url, json_arg, admin_key, user = _set_heketi_global_flags(
+ heketi_server_url, user=heketi_user, secret=heketi_secret)
- return out
- else:
- try:
- user = user.split(' ')[-1] if user else 'admin'
- admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
- conn = HeketiClient(heketi_server_url, user, admin_key)
- node_list = conn.node_list()
- except:
- g.log.error("Failed to get node list using heketi")
- return False
- return node_list
+ cmd = ("heketi-cli -s %s node list %s %s %s"
+ % (heketi_server_url, json_arg, admin_key, user))
+ ret, out, _ = g.run(heketi_client_node, cmd)
+ if ret != 0:
+ msg = "Failed to get list of Heketi nodes."
+ g.log.error(msg)
+ raise exceptions.ExecutionError(msg)
+
+ heketi_node_id_list = []
+ for line in out.strip().split("\n"):
+ # Line looks like this: 'Id:nodeIdString\tCluster:clusterIdString'
+ heketi_node_id_list.append(
+ line.strip().split("Cluster")[0].strip().split(":")[1])
+ return heketi_node_id_list
def heketi_blockvolume_info(heketi_client_node, heketi_server_url,
diff --git a/tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py b/tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py
index 62448b92..d871be30 100644
--- a/tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py
+++ b/tests/functional/common/heketi/heketi_tests/test_create_heketi_volume_size_60.py
@@ -25,13 +25,9 @@ class TestHeketiVolume(HeketiClientSetupBaseClass):
Get free space in each devices
"""
free_spaces = []
- heketi_node_id_list = []
device_list = []
- heketi_node_list_string = heketi_node_list(
+ heketi_node_id_list = heketi_node_list(
self.heketi_client_node, self.heketi_server_url)
- for line in heketi_node_list_string.strip().split("\n"):
- heketi_node_id_list.append(line.strip().split(
- "Cluster")[0].strip().split(":")[1])
for node_id in heketi_node_id_list:
node_info_dict = heketi_node_info(self.heketi_client_node,
self.heketi_server_url,
diff --git a/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py b/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py
index 80b6e1b6..38f6c4e9 100644
--- a/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py
+++ b/tests/functional/common/heketi/heketi_tests/test_heketi_create_volume.py
@@ -160,16 +160,12 @@ class TestHeketiVolume(HeketiClientSetupBaseClass):
"""
# List of heketi node
- heketi_node_id_list = []
g.log.info("List heketi nodes")
- node_list = heketi_node_list(self.heketi_client_node,
- self.heketi_server_url,
- json=True)
- self.assertTrue(node_list, ("Failed to list heketi nodes"))
+ heketi_node_id_list = heketi_node_list(
+ self.heketi_client_node, self.heketi_server_url)
+ self.assertTrue(heketi_node_id_list, ("List of node IDs is empty."))
+
g.log.info("Successfully got the list of nodes")
- for line in node_list.strip().split("\n"):
- heketi_node_id_list.append(line.strip().split(
- "Cluster")[0].strip().split(":")[1])
for node_id in heketi_node_id_list:
g.log.info("Retrieve the node info")
node_info_dict = heketi_ops.heketi_node_info(
@@ -194,9 +190,9 @@ class TestHeketiVolume(HeketiClientSetupBaseClass):
"node %s because it contains devices")
# To confrim deletion failed, check node list
+ # TODO: fix following, it doesn't verify absence of the deleted nodes
g.log.info("Listing heketi node list")
node_list = heketi_node_list(self.heketi_client_node,
- self.heketi_server_url,
- json=True)
+ self.heketi_server_url)
self.assertTrue(node_list, ("Failed to list heketi nodes"))
g.log.info("Successfully got the list of nodes")
diff --git a/tests/functional/common/heketi/heketi_tests/test_node_info.py b/tests/functional/common/heketi/heketi_tests/test_node_info.py
index 94ac34b9..81462906 100644
--- a/tests/functional/common/heketi/heketi_tests/test_node_info.py
+++ b/tests/functional/common/heketi/heketi_tests/test_node_info.py
@@ -23,16 +23,12 @@ class TestHeketiVolume(HeketiClientSetupBaseClass):
"""
# List all list
- heketi_node_id_list = []
ip = []
g.log.info("Listing the node id")
- node_list = heketi_node_list(self.heketi_client_node,
- self.heketi_server_url)
- self.assertTrue(node_list, ("Failed to list heketi nodes"))
+ heketi_node_id_list = heketi_node_list(
+ self.heketi_client_node, self.heketi_server_url)
+
g.log.info("Successfully listed the node")
- for line in node_list.strip().split("\n"):
- heketi_node_id_list.append(line.strip().split(
- "Cluster")[0].strip().split(":")[1])
if (len(heketi_node_id_list) == 0):
raise ExecutionError("Node list empty")
@@ -77,15 +73,11 @@ class TestHeketiVolume(HeketiClientSetupBaseClass):
"""
# List all list
- heketi_node_id_list = []
g.log.info("Listing the node id")
- node_list = heketi_node_list(self.heketi_client_node,
- self.heketi_server_url)
- self.assertTrue(node_list, ("Failed to list heketi nodes"))
+ heketi_node_id_list = heketi_node_list(
+ self.heketi_client_node, self.heketi_server_url)
+ self.assertTrue(heketi_node_id_list, ("Node Id list is empty."))
g.log.info("Successfully listed the node")
- for line in node_list.strip().split("\n"):
- heketi_node_id_list.append(line.strip().split(
- "Cluster")[0].strip().split(":")[1])
for node_id in heketi_node_id_list:
g.log.info("Retrieve the node info")
diff --git a/tests/functional/common/heketi/test_heketi_volume_operations.py b/tests/functional/common/heketi/test_heketi_volume_operations.py
index 2b3a0b9b..f9de7f56 100644
--- a/tests/functional/common/heketi/test_heketi_volume_operations.py
+++ b/tests/functional/common/heketi/test_heketi_volume_operations.py
@@ -150,7 +150,6 @@ class TestHeketiVolumeOperations(HeketiClientSetupBaseClass):
and then trying to remove an existing device. We should get an error
saying insufficient space when removing device.
"""
- node_id_list = []
device_id_list = []
vol_info = heketi_volume_create(self.heketi_client_node,
@@ -161,18 +160,9 @@ class TestHeketiVolumeOperations(HeketiClientSetupBaseClass):
self.assertNotEqual(vol_info, False, "Failed to create heketi volume")
self.addCleanup(self.volume_cleanup, vol_info["id"])
- node_list_info = heketi_node_list(
+ node_id_list = heketi_node_list(
self.heketi_client_node, self.heketi_server_url)
- self.assertNotEqual(node_list_info, False,
- "heketi node list command failed")
-
- lines = node_list_info.strip().split("\n")
-
- for line in lines:
- node_id_list.append(line.strip().split("Cluster")
- [0].strip().split(":")[1])
-
for node_id in node_id_list[:2]:
device_present = False
node_info = heketi_node_info(
diff --git a/tests/functional/common/heketi/test_volume_deletion.py b/tests/functional/common/heketi/test_volume_deletion.py
index bf7b6835..be7b2e61 100644
--- a/tests/functional/common/heketi/test_volume_deletion.py
+++ b/tests/functional/common/heketi/test_volume_deletion.py
@@ -19,20 +19,11 @@ class TestVolumeDeleteTestCases(HeketiClientSetupBaseClass):
"""
Calculates free space across all devices
"""
- total_free_space = 0
- heketi_node_id_list = []
-
- heketi_node_list_string = heketi_ops.heketi_node_list(
- self.heketi_client_node,
- self.heketi_server_url, mode="cli", json=True)
- self.assertNotEqual(heketi_node_list_string, False,
- "Heketi node list command failed")
-
- for line in heketi_node_list_string.strip().split("\n"):
- heketi_node_id_list.append(line.strip().split(
- "Cluster")[0].strip().split(":")[1])
+ heketi_node_id_list = heketi_ops.heketi_node_list(
+ self.heketi_client_node, self.heketi_server_url)
+ total_free_space = 0
for node_id in heketi_node_id_list:
node_info_dict = heketi_ops.heketi_node_info(
self.heketi_client_node, self.heketi_server_url,
diff --git a/tests/functional/common/heketi/test_volume_expansion_and_devices.py b/tests/functional/common/heketi/test_volume_expansion_and_devices.py
index 2732d933..07ab13e5 100644
--- a/tests/functional/common/heketi/test_volume_expansion_and_devices.py
+++ b/tests/functional/common/heketi/test_volume_expansion_and_devices.py
@@ -168,20 +168,10 @@ class TestVolumeExpansionAndDevicesTestCases(HeketiClientSetupBaseClass):
returns total free space across all devices
"""
- heketi_node_id_list = []
free_spaces = []
- heketi_node_list_string = heketi_ops.heketi_node_list(
- self.heketi_client_node,
- self.heketi_server_url, mode="cli", json=True)
-
- self.assertNotEqual(
- heketi_node_list_string, False,
- "Heketi node list empty")
-
- for line in heketi_node_list_string.strip().split("\n"):
- heketi_node_id_list.append(line.strip().split(
- "Cluster")[0].strip().split(":")[1])
+ heketi_node_id_list = heketi_ops.heketi_node_list(
+ self.heketi_client_node, self.heketi_server_url)
for node_id in heketi_node_id_list:
node_info_dict = heketi_ops.heketi_node_info(
@@ -225,23 +215,13 @@ class TestVolumeExpansionAndDevicesTestCases(HeketiClientSetupBaseClass):
Method to test heketi device addition with background
gluster validation
"""
- node_id_list = []
device_id_list = []
hosts = []
gluster_servers = []
- node_list_info = heketi_ops.heketi_node_list(
+ node_id_list = heketi_ops.heketi_node_list(
self.heketi_client_node, self.heketi_server_url)
- self.assertNotEqual(node_list_info, False,
- "heketi node list command failed")
-
- lines = node_list_info.strip().split("\n")
-
- for line in lines:
- node_id_list.append(line.strip().split("Cluster")
- [0].strip().split(":")[1])
-
creation_info = heketi_ops.heketi_volume_create(
self.heketi_client_node, self.heketi_server_url, 100, json=True)
@@ -479,18 +459,9 @@ class TestVolumeExpansionAndDevicesTestCases(HeketiClientSetupBaseClass):
space
"""
- heketi_node_id_list = []
additional_devices_attached = {}
- heketi_node_list_string = heketi_ops.heketi_node_list(
- self.heketi_client_node,
- self.heketi_server_url, mode="cli", json=True)
-
- self.assertNotEqual(heketi_node_list_string, False,
- "Heketi node list command failed")
-
- for line in heketi_node_list_string.strip().split("\n"):
- heketi_node_id_list.append(line.strip().split(
- "Cluster")[0].strip().split(":")[1])
+ heketi_node_id_list = heketi_ops.heketi_node_list(
+ self.heketi_client_node, self.heketi_server_url)
for node_id in heketi_node_id_list:
node_info_dict = heketi_ops.heketi_node_info(