[AIM][SFC] Use 1/1 and 0/1 as default subnets
Change-Id: If81daec8d72fb66690087a02911b471d9a24b43f
This commit is contained in:
parent
0dec95dc4e
commit
dd36b62514
|
@ -45,6 +45,7 @@ FLOWC_DST = 'dst'
|
|||
LOG = logging.getLogger(__name__)
|
||||
PHYSDOM_TYPE = 'PhysDom'
|
||||
SUPPORTED_DOM_TYPES = [PHYSDOM_TYPE]
|
||||
DEFAULT_SUBNETS = ['128.0.0.0/1', '0.0.0.0/1', '8000::/1', '::/1']
|
||||
MAX_PPGS_PER_CHAIN = 3
|
||||
|
||||
|
||||
|
@ -597,26 +598,20 @@ class SfcAIMDriver(SfcAIMDriverBase):
|
|||
cidr = netaddr.IPNetwork(cidr)
|
||||
l3out = self.aim_mech._get_svi_net_l3out(net)
|
||||
if l3out:
|
||||
if cidr.prefixlen == 0:
|
||||
# Use default External Network
|
||||
ext_net = self.aim_mech._get_svi_default_external_epg(net)
|
||||
ext_net_db = self.aim.get(aim_ctx, ext_net)
|
||||
if not ext_net_db:
|
||||
raise exceptions.DefaultExternalNetworkNotFound(
|
||||
id=net['id'])
|
||||
else:
|
||||
# Create ExternalNetwork and ExternalSubnet on the proper
|
||||
# L3Out. Return the External network
|
||||
ext_net = aim_resource.ExternalNetwork(
|
||||
tenant_name=l3out.tenant_name, l3out_name=l3out.name,
|
||||
name=flc_aid)
|
||||
# Create ExternalNetwork and ExternalSubnet on the proper
|
||||
# L3Out. Return the External network
|
||||
ext_net = aim_resource.ExternalNetwork(
|
||||
tenant_name=l3out.tenant_name, l3out_name=l3out.name,
|
||||
name=flc_aid)
|
||||
ext_net_db = self.aim.get(aim_ctx, ext_net)
|
||||
if not ext_net_db:
|
||||
ext_net_db = self.aim.create(aim_ctx, ext_net)
|
||||
subnets = [str(cidr)] if cidr.prefixlen != 0 else DEFAULT_SUBNETS
|
||||
for sub in subnets:
|
||||
ext_sub = aim_resource.ExternalSubnet(
|
||||
tenant_name=ext_net.tenant_name,
|
||||
l3out_name=ext_net.l3out_name,
|
||||
external_network_name=ext_net.name, cidr=str(cidr))
|
||||
ext_net_db = self.aim.get(aim_ctx, ext_net)
|
||||
if not ext_net_db:
|
||||
ext_net_db = self.aim.create(aim_ctx, ext_net)
|
||||
external_network_name=ext_net.name, cidr=sub)
|
||||
ext_sub_db = self.aim.get(aim_ctx, ext_sub)
|
||||
if not ext_sub_db:
|
||||
self.aim.create(aim_ctx, ext_sub)
|
||||
|
@ -644,14 +639,10 @@ class SfcAIMDriver(SfcAIMDriverBase):
|
|||
cidr = netaddr.IPNetwork(cidr)
|
||||
ext_net = None
|
||||
if l3out:
|
||||
if cidr.prefixlen != 0:
|
||||
ext_net = aim_resource.ExternalNetwork(
|
||||
tenant_name=l3out.tenant_name, l3out_name=l3out.name,
|
||||
name=flc_aid)
|
||||
epg = self.aim.get(aim_ctx, ext_net)
|
||||
else:
|
||||
epg = self.aim.get(
|
||||
aim_ctx, self.aim_mech._get_svi_default_external_epg(net))
|
||||
ext_net = aim_resource.ExternalNetwork(
|
||||
tenant_name=l3out.tenant_name, l3out_name=l3out.name,
|
||||
name=flc_aid)
|
||||
epg = self.aim.get(aim_ctx, ext_net)
|
||||
else:
|
||||
epg = self.aim.get(aim_ctx, self.aim_mech._get_epg_by_network_id(
|
||||
plugin_context.session, net['id']))
|
||||
|
@ -977,7 +968,11 @@ class SfcAIMDriver(SfcAIMDriverBase):
|
|||
else:
|
||||
cidr = flowc['destination_ip_prefix']
|
||||
net = self._get_flowc_dst_network(plugin_context, flowc)
|
||||
cidr = aim_utils.sanitize_display_name(cidr)
|
||||
cidr = netaddr.IPNetwork(cidr)
|
||||
if cidr.prefixlen == 0:
|
||||
cidr = 'default'
|
||||
else:
|
||||
cidr = aim_utils.sanitize_display_name(str(cidr))
|
||||
name = self.name_mapper.network(plugin_context.session, net['id'],
|
||||
prefix=cidr + '_')
|
||||
return name
|
||||
|
|
|
@ -436,21 +436,26 @@ class TestAIMServiceFunctionChainingBase(test_aim_base.AIMBaseTestCase):
|
|||
# DN extension for external networks.
|
||||
ext = aim_res.ExternalNetwork.from_dn(
|
||||
net['apic:distinguished_names']['ExternalNetwork'])
|
||||
name_prefix = cidr.replace('/', '_')
|
||||
subnets = [cidr]
|
||||
if cidr in ['0.0.0.0/0', '::/0']:
|
||||
# use default external EPG
|
||||
ext_net = self.aim_mgr.get(ctx, ext)
|
||||
else:
|
||||
ext_net = self.aim_mgr.get(
|
||||
ctx, aim_res.ExternalNetwork(
|
||||
tenant_name=ext.tenant_name,
|
||||
l3out_name=ext.l3out_name,
|
||||
name=cidr.replace(
|
||||
'/', '_') + '_' + 'net_' + net['id']))
|
||||
ext_sub = self.aim_mgr.get(ctx, aim_res.ExternalSubnet(
|
||||
tenant_name=ext.tenant_name, l3out_name=ext.l3out_name,
|
||||
external_network_name=ext_net.name, cidr=cidr))
|
||||
name_prefix = 'default'
|
||||
subnets = ['128.0.0.0/1', '0.0.0.0/1', '8000::/1',
|
||||
'::/1']
|
||||
ext_net = self.aim_mgr.get(
|
||||
ctx, aim_res.ExternalNetwork(
|
||||
tenant_name=ext.tenant_name,
|
||||
l3out_name=ext.l3out_name,
|
||||
name=name_prefix + '_' + 'net_' + net['id']))
|
||||
for sub in subnets:
|
||||
ext_sub = self.aim_mgr.get(ctx, aim_res.ExternalSubnet(
|
||||
tenant_name=ext.tenant_name,
|
||||
l3out_name=ext.l3out_name,
|
||||
external_network_name=ext_net.name, cidr=sub))
|
||||
self.assertIsNotNone(ext_sub)
|
||||
|
||||
self.assertIsNotNone(ext_net)
|
||||
self.assertIsNotNone(ext_sub)
|
||||
self.assertTrue(
|
||||
contract.name in (ext_net.consumed_contract_names if
|
||||
pref == 'src_' else
|
||||
|
|
Loading…
Reference in New Issue