Add Transport Nodes api support & router TZ support
1. Add support for the transport nodes resource basic operations 2. Use it for getting the list of TZ of a tier0 router Change-Id: I381c947044454c04efbc1c38ed7691ef8213ffef
This commit is contained in:
parent
de0c8e29a4
commit
af56e15ff0
@ -331,6 +331,15 @@ FAKE_TZ = {
|
||||
"host_switch_mode": "STANDARD"
|
||||
}
|
||||
|
||||
FAKE_TN_UUID = uuidutils.generate_uuid()
|
||||
FAKE_TN = {
|
||||
"resource_type": "TransportNode",
|
||||
"revision": 0,
|
||||
"id": FAKE_TZ_UUID,
|
||||
"display_name": FAKE_NAME,
|
||||
"transport_zone_endpoints": [{"transport_zone_id": FAKE_TZ_UUID}]
|
||||
}
|
||||
|
||||
FAKE_MD_UUID = uuidutils.generate_uuid()
|
||||
FAKE_URL = "http://7.7.7.70:3500/abc"
|
||||
FAKE_MD = {
|
||||
|
@ -1277,6 +1277,19 @@ class TransportZone(BaseTestResource):
|
||||
self.assertEqual(tz.HOST_SWITCH_MODE_STANDARD, tz_mode)
|
||||
|
||||
|
||||
class TransportNode(BaseTestResource):
|
||||
|
||||
def setUp(self):
|
||||
super(TransportNode, self).setUp(core_resources.NsxLibTransportNode)
|
||||
|
||||
def test_get_transport_zones(self):
|
||||
fake_tn = test_constants.FAKE_TN.copy()
|
||||
tn = self.get_mocked_resource()
|
||||
with mock.patch.object(tn.client, 'url_get', return_value=fake_tn):
|
||||
tzs = tn.get_transport_zones(fake_tn['id'])
|
||||
self.assertEqual([test_constants.FAKE_TZ_UUID], tzs)
|
||||
|
||||
|
||||
class MetadataProxy(BaseTestResource):
|
||||
|
||||
def setUp(self):
|
||||
|
@ -244,6 +244,8 @@ class NsxLib(NsxLibBase):
|
||||
self.client, self.nsxlib_config, nsxlib=self)
|
||||
self.transport_zone = core_resources.NsxLibTransportZone(
|
||||
self.client, self.nsxlib_config, nsxlib=self)
|
||||
self.transport_node = core_resources.NsxLibTransportNode(
|
||||
self.client, self.nsxlib_config, nsxlib=self)
|
||||
self.relay_service = core_resources.NsxLibDhcpRelayService(
|
||||
self.client, self.nsxlib_config, nsxlib=self)
|
||||
self.relay_profile = core_resources.NsxLibDhcpRelayProfile(
|
||||
|
@ -682,6 +682,13 @@ class NsxLibEdgeCluster(utils.NsxLibApiBase):
|
||||
def resource_type(self):
|
||||
return 'EdgeCluster'
|
||||
|
||||
def get_transport_nodes(self, uuid):
|
||||
ec = self.get(uuid)
|
||||
members = []
|
||||
for member in ec.get('members', []):
|
||||
members.append(member.get('transport_node_id'))
|
||||
return members
|
||||
|
||||
|
||||
class NsxLibTransportZone(utils.NsxLibApiBase):
|
||||
|
||||
@ -711,6 +718,26 @@ class NsxLibTransportZone(utils.NsxLibApiBase):
|
||||
return tz.get('host_switch_mode', self.HOST_SWITCH_MODE_STANDARD)
|
||||
|
||||
|
||||
class NsxLibTransportNode(utils.NsxLibApiBase):
|
||||
|
||||
@property
|
||||
def uri_segment(self):
|
||||
return 'transport-nodes'
|
||||
|
||||
@property
|
||||
def resource_type(self):
|
||||
return 'TransportNode'
|
||||
|
||||
@property
|
||||
def use_cache_for_get(self):
|
||||
return True
|
||||
|
||||
def get_transport_zones(self, uuid):
|
||||
tz = self.get(uuid)
|
||||
return [ep.get('transport_zone_id') for ep in
|
||||
tz.get('transport_zone_endpoints', [])]
|
||||
|
||||
|
||||
class NsxLibDhcpProfile(utils.NsxLibApiBase):
|
||||
|
||||
@property
|
||||
|
@ -241,3 +241,16 @@ class RouterLib(object):
|
||||
return self.nsxlib.logical_router.delete_static_route_by_values(
|
||||
nsx_router_id, dest_cidr=route['destination'],
|
||||
nexthop=route['nexthop'])
|
||||
|
||||
def get_tier0_router_tz(self, tier0_uuid):
|
||||
lrouter = self._router_client.get(tier0_uuid)
|
||||
edge_cluster_uuid = lrouter.get('edge_cluster_id')
|
||||
if not edge_cluster_uuid:
|
||||
return []
|
||||
tier0_transport_nodes = self.nsxlib.edge_cluster.get_transport_nodes(
|
||||
edge_cluster_uuid)
|
||||
tier0_tzs = []
|
||||
for tn_uuid in tier0_transport_nodes:
|
||||
tier0_tzs.extend(self.nsxlib.transport_node.get_transport_zones(
|
||||
tn_uuid))
|
||||
return tier0_tzs
|
||||
|
Loading…
x
Reference in New Issue
Block a user