summaryrefslogtreecommitdiffstats
path: root/cns-libs
diff options
context:
space:
mode:
authornigoyal <nigoyal@redhat.com>2019-01-18 12:12:45 +0530
committervponomar <vponomar@redhat.com>2019-02-01 10:49:04 +0000
commitc1d44b0bed7fd54d056df1724009bd035fabe6d1 (patch)
tree81672c79b4530d2cd7c912a43082004d7bc81b8d /cns-libs
parente36014cbb44a05639bc43cce124f38c71db49e91 (diff)
adding library and test case for examine gluster
This library is helpfull for diagnosing output of gluster and heketi and it compare both the outputs and the test case verify this feature is working properly. Change-Id: Ice607003f32db2bce2f540a7651024b66b071634
Diffstat (limited to 'cns-libs')
-rw-r--r--cns-libs/cnslibs/common/heketi_ops.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/cns-libs/cnslibs/common/heketi_ops.py b/cns-libs/cnslibs/common/heketi_ops.py
index 2d1b7385..a1248687 100644
--- a/cns-libs/cnslibs/common/heketi_ops.py
+++ b/cns-libs/cnslibs/common/heketi_ops.py
@@ -3,6 +3,7 @@ import json
from glusto.core import Glusto as g
from cnslibs.common import exceptions
+from cnslibs.common import heketi_version
from cnslibs.common.utils import parse_prometheus_data
@@ -1455,3 +1456,40 @@ def get_heketi_metrics(heketi_client_node, heketi_server_url,
if prometheus_format:
return out.strip()
return parse_prometheus_data(out)
+
+
+def heketi_examine_gluster(heketi_client_node, heketi_server_url):
+ """Execute heketi command to examine output from gluster servers.
+
+ Args:
+ - heketi_client_node (str): Node where we want to run our commands.
+ - heketi_server_url (str): This is a heketi server url.
+
+ Raises:
+ NotImplementedError: if heketi version is not expected
+ exceptions.ExecutionError: if command fails.
+
+ Returns:
+ dictionary: if successful
+ """
+
+ version = heketi_version.get_heketi_version(heketi_client_node)
+ if version < '8.0.0-7':
+ msg = ("heketi-client package %s does not support server state examine"
+ " gluster" % version.v_str)
+ g.log.error(msg)
+ raise NotImplementedError(msg)
+
+ heketi_server_url, json_arg, secret, user = _set_heketi_global_flags(
+ heketi_server_url)
+ # output is always json-like and we do not need to provide "--json" CLI arg
+ cmd = ("heketi-cli server state examine gluster -s %s %s %s"
+ % (heketi_server_url, user, secret))
+ ret, out, err = g.run(heketi_client_node, cmd)
+
+ if ret != 0:
+ msg = "failed to examine gluster with following error: %s" % err
+ g.log.error(msg)
+ raise exceptions.ExecutionError(msg)
+
+ return json.loads(out)