1717from .responses import ApiCallResponse , ErrorReport , StoragePoolListResponse , StoragePoolDriver
1818from .responses import NodeListResponse , KeyValueStoresResponse , KeyValueStore , ResourceDefinitionResponse
1919from .responses import ResourceResponse , VolumeDefinitionResponse , VolumeResponse , ResourceConnectionsResponse
20- from .responses import RESTMessageResponse , SnapshotResponse , ControllerProperties
20+ from .responses import RESTMessageResponse , SnapshotResponse , ControllerProperties , ResourceConnection
2121from .responses import StoragePoolDefinitionResponse , MaxVolumeSizeResponse , ControllerVersion
2222from .responses import ResourceGroupResponse , VolumeGroupResponse , PhysicalStorageList
2323from . 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