[APIC-mapping] Copy over provider physical network
For non-opflex network types, the shadow network created for each PTG should use the same provider physical network as the L2Policy network. Closes-Bug: 1637660 Change-Id: Ib17e2f43cc3cdf65e287b59f47826252cdc88081 Signed-off-by: Amit Bose <amitbose@gmail.com>
This commit is contained in:
@@ -3561,7 +3561,9 @@ class ApicMappingDriver(api.ResourceMappingDriver,
|
||||
return networks[0] if networks else None
|
||||
|
||||
def _create_ptg_shadow_network(self, context, ptg):
|
||||
if not self._ptg_needs_shadow_network(context, ptg):
|
||||
l2p_network = self._l2p_id_to_network(context._plugin_context,
|
||||
ptg['l2_policy_id'])
|
||||
if not self._is_supported_non_opflex_network(l2p_network):
|
||||
return
|
||||
shadow_net = self._get_ptg_shadow_network(context, ptg)
|
||||
if not shadow_net:
|
||||
@@ -3569,6 +3571,11 @@ class ApicMappingDriver(api.ResourceMappingDriver,
|
||||
'name': self._get_ptg_shadow_network_name(ptg),
|
||||
'admin_state_up': True,
|
||||
'shared': ptg.get('shared', False)}
|
||||
if l2p_network.get(providernet.PHYSICAL_NETWORK):
|
||||
attrs[providernet.PHYSICAL_NETWORK] = (
|
||||
l2p_network[providernet.PHYSICAL_NETWORK])
|
||||
attrs[providernet.NETWORK_TYPE] = (
|
||||
l2p_network[providernet.NETWORK_TYPE])
|
||||
shadow_net = self._create_network(context._plugin_context, attrs)
|
||||
l2p = self._get_l2_policy(context._plugin_context,
|
||||
ptg['l2_policy_id'])
|
||||
|
||||
@@ -320,7 +320,8 @@ class ApicMappingVlanTestCase(ApicMappingTestCase):
|
||||
|
||||
def setUp(self, **kwargs):
|
||||
config.cfg.CONF.set_override(
|
||||
'network_vlan_ranges', ['physnet1:100:200'], group='ml2_type_vlan')
|
||||
'network_vlan_ranges',
|
||||
['physnet1:100:200', 'physnet2:20:30'], group='ml2_type_vlan')
|
||||
kwargs['ml2_options'] = {
|
||||
'mechanism_drivers': ['apic_gbp', 'openvswitch'],
|
||||
'type_drivers': ['vlan'],
|
||||
@@ -2134,6 +2135,25 @@ class TestPolicyTargetGroupVlanNetwork(ApicMappingVlanTestCase,
|
||||
port = self._get_object('ports', port['port']['id'], self.api)
|
||||
self.assertFalse(port['port']['admin_state_up'])
|
||||
|
||||
def test_explicit_l2p_network_phys_net(self):
|
||||
attr = {'arg_list': ('provider:physical_network',
|
||||
'provider:network_type'),
|
||||
'provider:physical_network': 'physnet2',
|
||||
'provider:network_type': 'vlan'}
|
||||
with self.network(**attr) as net:
|
||||
net = net['network']
|
||||
l2p = self.create_l2_policy(
|
||||
network_id=net['id'])['l2_policy']
|
||||
ptg = self.create_policy_target_group(
|
||||
name='ptg1', l2_policy_id=l2p['id']
|
||||
)['policy_target_group']
|
||||
shadow_net = self._get_ptg_shadow_net(ptg)
|
||||
self.assertIsNone(shadow_net.get('segments'))
|
||||
self.assertEqual('physnet2',
|
||||
shadow_net['provider:physical_network'])
|
||||
self.assertEqual('vlan',
|
||||
shadow_net['provider:network_type'])
|
||||
|
||||
|
||||
class TestL2PolicyBase(ApicMappingTestCase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user