summaryrefslogtreecommitdiffstats
path: root/cns-libs
diff options
context:
space:
mode:
authorValerii Ponomarov <vponomar@redhat.com>2018-11-02 11:07:09 +0000
committerGerrit Code Review <gerrit2@gerrit.host.prod.eng.bos.redhat.com>2018-11-02 11:07:09 +0000
commit384cb369f256162606190e4df4767500668d3a7c (patch)
tree67f163cce5a7f8618283ad31d78ccb75506dfef4 /cns-libs
parent8b5560e755a31c1b8821576ae5815093170440ab (diff)
parent3bf447cc241f31cb0a75fff2b389c3d5cc1b199b (diff)
Merge "[CNS-544][CNS-545] Added test cases for storage class parameters"
Diffstat (limited to 'cns-libs')
-rw-r--r--cns-libs/cnslibs/common/cns_libs.py4
-rw-r--r--cns-libs/cnslibs/common/openshift_ops.py45
2 files changed, 46 insertions, 3 deletions
diff --git a/cns-libs/cnslibs/common/cns_libs.py b/cns-libs/cnslibs/common/cns_libs.py
index 5b9a3027..370e05e3 100644
--- a/cns-libs/cnslibs/common/cns_libs.py
+++ b/cns-libs/cnslibs/common/cns_libs.py
@@ -414,7 +414,7 @@ def validate_multipath_pod(hostname, podname, hacount):
active_node_count = 1
enable_node_count = hacount - 1
cmd = "multipath -ll | grep 'status=active' | wc -l"
- ret, out, err = g.run(hostname, cmd, "root")
+ ret, out, err = g.run(pod_nodename, cmd, "root")
if ret != 0 or out == "":
g.log.error("failed to exectute cmd %s on %s, err %s"
% (cmd, pod_nodename, out))
@@ -425,7 +425,7 @@ def validate_multipath_pod(hostname, podname, hacount):
% (pod_nodename, podname, active_count))
return False
cmd = "multipath -ll | grep 'status=enabled' | wc -l"
- ret, out, err = g.run(hostname, cmd, "root")
+ ret, out, err = g.run(pod_nodename, cmd, "root")
if ret != 0 or out == "":
g.log.error("failed to exectute cmd %s on %s, err %s"
% (cmd, pod_nodename, out))
diff --git a/cns-libs/cnslibs/common/openshift_ops.py b/cns-libs/cnslibs/common/openshift_ops.py
index e86010cb..212e4b30 100644
--- a/cns-libs/cnslibs/common/openshift_ops.py
+++ b/cns-libs/cnslibs/common/openshift_ops.py
@@ -22,7 +22,10 @@ from cnslibs.common import exceptions
from cnslibs.common import podcmd
from cnslibs.common import utils
from cnslibs.common import waiter
-
+from cnslibs.common.heketi_ops import (
+ heketi_blockvolume_info,
+ heketi_volume_info,
+)
PODS_WIDE_RE = re.compile(
'(\S+)\s+(\S+)\s+(\w+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+).*\n')
@@ -744,6 +747,46 @@ def get_gluster_vol_info_by_pvc_name(ocp_node, pvc_name):
return vol_info
+def get_gluster_blockvol_info_by_pvc_name(ocp_node, heketi_server_url,
+ pvc_name):
+ """Get Gluster block volume info based on the PVC name.
+
+ Args:
+ ocp_node (str): Node to execute OCP commands on.
+ heketi_server_url (str): Heketi server url
+ pvc_name (str): Name of a PVC to get bound Gluster block volume info.
+ Returns:
+ dict: Dictionary containting data about a Gluster block volume.
+ """
+
+ # Get block volume Name and ID from PV which is bound to our PVC
+ get_block_vol_data_cmd = (
+ 'oc get pv --no-headers -o custom-columns='
+ ':.metadata.annotations.glusterBlockShare,'
+ ':.metadata.annotations."gluster\.org\/volume\-id",'
+ ':.spec.claimRef.name | grep "%s"' % pvc_name)
+ out = command.cmd_run(get_block_vol_data_cmd, hostname=ocp_node)
+ parsed_out = filter(None, map(str.strip, out.split(" ")))
+ assert len(parsed_out) == 3, "Expected 3 fields in following: %s" % out
+ block_vol_name, block_vol_id = parsed_out[:2]
+
+ # Get block hosting volume ID
+ block_hosting_vol_id = heketi_blockvolume_info(
+ ocp_node, heketi_server_url, block_vol_id, json=True
+ )["blockhostingvolume"]
+
+ # Get block hosting volume name by it's ID
+ block_hosting_vol_name = heketi_volume_info(
+ ocp_node, heketi_server_url, block_hosting_vol_id, json=True)['name']
+
+ # Get Gluster block volume info
+ vol_info_cmd = "oc exec %s -- gluster-block info %s/%s --json" % (
+ get_ocp_gluster_pod_names(ocp_node)[0],
+ block_hosting_vol_name, block_vol_name)
+
+ return json.loads(command.cmd_run(vol_info_cmd, hostname=ocp_node))
+
+
def wait_for_pod_be_ready(hostname, pod_name,
timeout=1200, wait_step=60):
'''