NSX|V3+P: Respect default keyword for physical_net

When user (or heat stack) specifies 'default' in physical_net for vlan
provider network, default vlan tz should be used.

Change-Id: I7b9ef1b71bc98c341e7fa94469def1e0a83528a8
This commit is contained in:
Anna Khmelnitsky 2019-02-27 11:31:21 -08:00 committed by Adit Sarfaty
parent 2b8418926f
commit 699c8b4e6b
2 changed files with 22 additions and 2 deletions

View File

@ -763,6 +763,9 @@ class NsxPluginV3Base(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
net_data[pnet.SEGMENTATION_ID] = free_ids[0]
return net_data[pnet.SEGMENTATION_ID]
def _default_physical_net(self, physical_net):
return physical_net is None or physical_net == 'default'
def _validate_provider_create(self, context, network_data,
default_vlan_tz_uuid,
default_overlay_tz_uuid,
@ -811,11 +814,11 @@ class NsxPluginV3Base(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
if not transparent_vlan:
# Set VLAN id to 0 for flat networks
vlan_id = '0'
if physical_net is None:
if self._default_physical_net(physical_net):
physical_net = default_vlan_tz_uuid
elif net_type == utils.NsxV3NetworkTypes.VLAN:
# Use default VLAN transport zone if physical network not given
if physical_net is None:
if self._default_physical_net(physical_net):
physical_net = default_vlan_tz_uuid
if not transparent_vlan:

View File

@ -25,6 +25,7 @@ from vmware_nsx.tests.unit.nsx_mh import test_plugin as test_nsx_plugin
class TestProvidernet(test_nsx_plugin.NsxPluginV2TestCase):
def test_create_delete_provider_network_default_physical_net(self):
'''Leaves physical_net unspecified'''
data = {'network': {'name': 'net1',
'admin_state_up': True,
'tenant_id': 'admin',
@ -38,6 +39,22 @@ class TestProvidernet(test_nsx_plugin.NsxPluginV2TestCase):
res = req.get_response(self.api)
self.assertEqual(res.status_int, webob.exc.HTTPNoContent.code)
def test_create_delete_provider_network_default_physical_net_2(self):
'''Uses the 'default' keyword as physical_net'''
data = {'network': {'name': 'net1',
'admin_state_up': True,
'tenant_id': 'admin',
pnet.NETWORK_TYPE: 'vlan',
pnet.SEGMENTATION_ID: 411,
pnet.PHYSICAL_NETWORK: 'default'}}
network_req = self.new_create_request('networks', data, self.fmt)
net = self.deserialize(self.fmt, network_req.get_response(self.api))
self.assertEqual(net['network'][pnet.NETWORK_TYPE], 'vlan')
self.assertEqual(net['network'][pnet.SEGMENTATION_ID], 411)
req = self.new_delete_request('networks', net['network']['id'])
res = req.get_response(self.api)
self.assertEqual(res.status_int, webob.exc.HTTPNoContent.code)
def test_create_provider_network(self):
data = {'network': {'name': 'net1',
'admin_state_up': True,