diff options
| author | Krishnaram Karthick Ramdoss <kramdoss@redhat.com> | 2018-07-27 14:20:08 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit2@gerrit.host.prod.eng.bos.redhat.com> | 2018-07-27 14:20:08 +0000 |
| commit | ce5bb6aaab0051d32cbc2b697a288824d0ebde52 (patch) | |
| tree | 8516e5f676834a9d4f3f25f6289aed7e0a39746d /cns-libs | |
| parent | 072e610ce6e667f8b4b32200035bdbce5fea4a53 (diff) | |
| parent | f8508c0cd42d8e1ba18e06d79f9ef515faa36fe2 (diff) | |
Merge "Refactor 'heketi_node_list' function"
Diffstat (limited to 'cns-libs')
| -rw-r--r-- | cns-libs/cnslibs/common/heketi_ops.py | 68 |
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, |
