summaryrefslogtreecommitdiffstats
path: root/cns-libs
diff options
context:
space:
mode:
authorKrishnaram Karthick Ramdoss <kramdoss@redhat.com>2018-07-27 14:20:08 +0000
committerGerrit Code Review <gerrit2@gerrit.host.prod.eng.bos.redhat.com>2018-07-27 14:20:08 +0000
commitce5bb6aaab0051d32cbc2b697a288824d0ebde52 (patch)
tree8516e5f676834a9d4f3f25f6289aed7e0a39746d /cns-libs
parent072e610ce6e667f8b4b32200035bdbce5fea4a53 (diff)
parentf8508c0cd42d8e1ba18e06d79f9ef515faa36fe2 (diff)
Merge "Refactor 'heketi_node_list' function"
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,