Skip to content

Commit db874f2

Browse files
committed
linstorapi: add single resource connection query method
1 parent da3c8a3 commit db874f2

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

linstor/linstorapi.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from .responses import ApiCallResponse, ErrorReport, StoragePoolListResponse, StoragePoolDriver
1818
from .responses import NodeListResponse, KeyValueStoresResponse, KeyValueStore, ResourceDefinitionResponse
1919
from .responses import ResourceResponse, VolumeDefinitionResponse, VolumeResponse, ResourceConnectionsResponse
20-
from .responses import RESTMessageResponse, SnapshotResponse, ControllerProperties
20+
from .responses import RESTMessageResponse, SnapshotResponse, ControllerProperties, ResourceConnection
2121
from .responses import StoragePoolDefinitionResponse, MaxVolumeSizeResponse, ControllerVersion
2222
from .responses import ResourceGroupResponse, VolumeGroupResponse, PhysicalStorageList
2323
from . import VERSION
@@ -104,6 +104,8 @@ class Linstor(object):
104104
apiconsts.VAL_NODE_TYPE_STLT
105105
]
106106

107+
API_SINGLE_NODE_REQ = "API_SINGLE_NODE_REQ"
108+
107109
APICALL2RESPONSE = {
108110
apiconsts.API_LST_NODE: NodeListResponse,
109111
apiconsts.API_LST_STOR_POOL: StoragePoolListResponse,
@@ -121,7 +123,8 @@ class Linstor(object):
121123
apiconsts.API_QRY_MAX_VLM_SIZE: MaxVolumeSizeResponse,
122124
apiconsts.API_LST_KVS: KeyValueStoresResponse,
123125
apiconsts.API_VERSION: ControllerVersion,
124-
apiconsts.API_LST_PHYS_STOR: PhysicalStorageList
126+
apiconsts.API_LST_PHYS_STOR: PhysicalStorageList,
127+
API_SINGLE_NODE_REQ: ResourceConnection
125128
}
126129

127130
REST_PORT = 3370
@@ -2221,6 +2224,27 @@ def resource_conn_list_raise(self, rsc_name):
22212224
raise LinstorApiCallError(list_res[0])
22222225
raise LinstorError("No list response received.")
22232226

2227+
def resource_conn_node_list_raise(self, rsc_name, node_a, node_b):
2228+
"""
2229+
Request a list of all resource connection to the given resource name.
2230+
2231+
:param str rsc_name: Name of the resource to get the connections.
2232+
:param str node_a: Name of the first node
2233+
:param str node_b: Name of the second node
2234+
:return: List of ResourceConnectionsResponse or ApiCallRcResponse
2235+
:rtype: list[ResourceConnection]
2236+
"""
2237+
list_res = self._rest_request(
2238+
Linstor.API_SINGLE_NODE_REQ,
2239+
"GET",
2240+
"/v1/resource-definitions/" + rsc_name + "/resource-connections/" + node_a + "/" + node_b
2241+
)
2242+
if list_res:
2243+
if isinstance(list_res[0], ResourceConnection):
2244+
return list_res[0]
2245+
raise LinstorApiCallError(list_res[0])
2246+
raise LinstorError("No list response received.")
2247+
22242248
def drbd_proxy_enable(self, rsc_name, node_a, node_b, port=None):
22252249
"""
22262250
Enables DRBD Proxy on a resource connection.

0 commit comments

Comments
 (0)