Add support to get overaly_tz id from Tier0 router
This patch add functions to retrieve overlay_tz id from debug-info of T0 router. To be noted, a T0 router will and will only has one DR associated with. In the DR configuration, 'transportId' is either an one-element list or a NoneType variable. Change-Id: I1f1f58fbf1a9bd2dcddf75986a8a23621ebd06b1
This commit is contained in:
parent
9bc88978fd
commit
54bb41db95
@ -925,6 +925,46 @@ class LogicalRouterTestCase(BaseTestResource):
|
||||
'advertisement/rules' % router_id),
|
||||
headers=self.default_headers())
|
||||
|
||||
def test_get_debug_info(self):
|
||||
router = self.get_mocked_resource()
|
||||
router_id = test_constants.FAKE_ROUTER_UUID
|
||||
router.get_debug_info(router_id)
|
||||
test_client.assert_json_call(
|
||||
'get', router,
|
||||
('https://1.2.3.4/api/v1/logical-routers/%s/'
|
||||
'debug-info?format=text' % router_id),
|
||||
headers=self.default_headers())
|
||||
|
||||
def test_get_transportzone_id_empty(self):
|
||||
# Tier0 router may fail to provide TZ id if it
|
||||
# is not yet connected with any Tier1 router
|
||||
router = self.get_mocked_resource()
|
||||
router_id = test_constants.FAKE_ROUTER_UUID
|
||||
faked_responds = {
|
||||
'componentInfo': [{
|
||||
'componentType': nsx_constants.ROUTER_TYPE_TIER0_DR,
|
||||
'transportZoneId': None
|
||||
}]
|
||||
}
|
||||
with mock.patch.object(router.client, 'get',
|
||||
return_value=faked_responds):
|
||||
res = router.get_transportzone_id(router_id)
|
||||
self.assertIsNone(res)
|
||||
|
||||
def test_get_transportzone_id(self):
|
||||
router = self.get_mocked_resource()
|
||||
router_id = test_constants.FAKE_ROUTER_UUID
|
||||
faked_responds = {
|
||||
'componentInfo': [{
|
||||
'componentType': nsx_constants.ROUTER_TYPE_TIER0_DR,
|
||||
'transportZoneId': ['faked_id']
|
||||
}]
|
||||
}
|
||||
with mock.patch.object(router.client, 'get',
|
||||
return_value=faked_responds):
|
||||
res = router.get_transportzone_id(router_id)
|
||||
self.assertEqual('faked_id', res)
|
||||
|
||||
|
||||
class LogicalRouterPortTestCase(BaseTestResource):
|
||||
|
||||
|
@ -649,6 +649,20 @@ class NsxLibLogicalRouter(utils.NsxLibApiBase):
|
||||
logical_router_id)
|
||||
return self.client.get(resource)
|
||||
|
||||
def get_debug_info(self, logical_router_id):
|
||||
resource = ('logical-routers/%s/debug-info?format=text' %
|
||||
logical_router_id)
|
||||
return self.client.get(resource)
|
||||
|
||||
def get_transportzone_id(self, logical_router_id):
|
||||
res = self.get_debug_info(logical_router_id)
|
||||
for item in res['componentInfo']:
|
||||
if item['componentType'] == nsx_constants.ROUTER_TYPE_TIER0_DR:
|
||||
if item['transportZoneId']:
|
||||
return item['transportZoneId'][0]
|
||||
LOG.warning('OverlayTransportZone is not yet available on'
|
||||
' %s.' % (logical_router_id))
|
||||
|
||||
def create(self, display_name, tags, edge_cluster_uuid=None, tier_0=False,
|
||||
description=None, transport_zone_id=None, allocation_pool=None):
|
||||
# TODO(salv-orlando): If possible do not manage edge clusters
|
||||
|
@ -39,6 +39,7 @@ BRIDGE_ENDPOINT = "BRIDGEENDPOINT"
|
||||
# Router type
|
||||
ROUTER_TYPE_TIER0 = "TIER0"
|
||||
ROUTER_TYPE_TIER1 = "TIER1"
|
||||
ROUTER_TYPE_TIER0_DR = "DISTRIBUTED_ROUTER_TIER0"
|
||||
|
||||
LROUTERPORT_UPLINK = "LogicalRouterUpLinkPort"
|
||||
LROUTERPORT_DOWNLINK = "LogicalRouterDownLinkPort"
|
||||
|
Loading…
x
Reference in New Issue
Block a user