summaryrefslogtreecommitdiffstats
path: root/cns-libs
diff options
context:
space:
mode:
Diffstat (limited to 'cns-libs')
-rw-r--r--cns-libs/cnslibs/common/heketi_ops.py68
1 files changed, 26 insertions, 42 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,