diff options
Diffstat (limited to 'openshift-storage-libs/openshiftstoragelibs/heketi_ops.py')
-rw-r--r-- | openshift-storage-libs/openshiftstoragelibs/heketi_ops.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py b/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py index 6b08b5d5..0ce32632 100644 --- a/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py +++ b/openshift-storage-libs/openshiftstoragelibs/heketi_ops.py @@ -27,6 +27,7 @@ MASTER_NODE = list(g.config["ocp_servers"]["master"].keys())[0] HEKETI_BHV = re.compile(r"Id:(\S+)\s+Cluster:(\S+)\s+Name:(\S+)\s\[block\]") HEKETI_OPERATIONS = re.compile(r"Id:(\S+)\s+Type:(\S+)\s+Status:(\S+)") HEKETI_NODES = re.compile(r"Id:(\S+)\s+Cluster:(\S+)") +HEKETI_VOLUME = r"Id:(\S+)\s+Cluster:(\S+)\s+Name:(%s_\S+)" GET_HEKETI_PODNAME_CMD = ( "oc get pods -l deploymentconfig=%s -o=custom-columns=:.metadata.name " @@ -1884,3 +1885,34 @@ def get_bricks_on_heketi_node( for device in node_info['devices']: bricks += device['bricks'] return bricks + + +def heketi_volume_list_by_name_prefix( + heketi_client_node, heketi_server_url, prefix, **kwargs): + """Get heketi volume id, cluster and name by volume name prefix. + + Args: + heketi_client_node (str): Node on which cmd has to be executed. + heketi_server_url (str): Heketi server url. + prefix (str): Volume name prefix. + + Kwargs: + The keys, values in kwargs are: + - secret : (str)|None + - user : (str)|None + + Returns: + list: Tuple of volume id, cluster id and name + + Raises: + exceptions.AssertionError: If command fails to execute on + heketi server. + """ + # Delete json key from kwargs + kwargs.pop("json", None) + + h_volumes = heketi_volume_list( + heketi_client_node, heketi_server_url, **kwargs) + + vol_regex = re.compile(HEKETI_VOLUME % prefix) + return vol_regex.findall(h_volumes.strip()) |