def _get_vrf_1_ext_net_1_objects(self, connected=True): return { 'l3out': a_res.L3Outside( tenant_name='t1', name='o1', display_name='OUT', vrf_name='vrf1'), 'ext_net': a_res.ExternalNetwork( tenant_name='t1', l3out_name='o1', name='inet1', display_name='INET1', provided_contract_names=( ['EXT-o1', 'p1_vrf1', 'p2_vrf1'] if connected else ['EXT-o1']), consumed_contract_names=( ['EXT-o1', 'c1_vrf1', 'c2_vrf1'] if connected else ['EXT-o1'])), 'nat_bd': a_res.BridgeDomain( tenant_name='t1', name='EXT-o1', display_name='EXT-OUT', vrf_name='EXT-o1', limit_ip_learn_to_subnets=True, l3out_names=['o1']), 'ext_sub_1': a_res.ExternalSubnet( tenant_name='t1', l3out_name='o1', external_network_name='inet1', cidr='20.20.20.0/24'), 'ext_sub_2': a_res.ExternalSubnet( tenant_name='t1', l3out_name='o1', external_network_name='inet1', cidr='50.50.0.0/16')}
def _get_vrf_2_ext_net_1_objects(self): return [ a_res.L3Outside(tenant_name='dept2', name='o1-vrf2', display_name='OUT-VRF2', vrf_name='vrf2'), a_res.ExternalNetwork( tenant_name='dept2', l3out_name='o1-vrf2', name='inet1', display_name='INET1', provided_contract_names=['p1_vrf2', 'p2_vrf2'], consumed_contract_names=['c1_vrf2', 'c2_vrf2'], nat_epg_dn=('uni/tn-t1/ap-myapp/epg-EXT-o1' if self.with_nat_epg else '')), a_res.ExternalSubnet( tenant_name='dept2', l3out_name='o1-vrf2', external_network_name='inet1', cidr='20.20.20.0/24'), a_res.ExternalSubnet( tenant_name='dept2', l3out_name='o1-vrf2', external_network_name='inet1', cidr='50.50.0.0/16')]
def _check_external_subnet_update(self, stage): s1 = a_res.ExternalSubnet( tenant_name='t1', l3out_name='o1', external_network_name='inet1', cidr='20.20.20.0/24') s2 = a_res.ExternalSubnet( tenant_name='t1', l3out_name='o1', external_network_name='inet1', cidr='100.200.0.0/28') s3 = a_res.ExternalSubnet( tenant_name='t1', l3out_name='o1', external_network_name='inet1', cidr='50.50.0.0/16') if stage == 'stage1': self._verify(present=[s1]) elif stage == 'stage2': self._verify(present=[s2, s3], absent=[s1]) elif stage == 'stage3': self._verify(absent=[s2, s3]) else: self.assertFalse(True, 'Unknown test stage %s' % stage)
def _get_vrf_1_ext_net_2_objects(self): return [ a_res.L3Outside(tenant_name='dept1', name='o2-vrf1', display_name='OUT2-VRF1', vrf_name='vrf1'), a_res.ExternalNetwork( tenant_name='dept1', l3out_name='o2-vrf1', name='inet2', display_name='INET2', provided_contract_names=['p3_vrf1', 'p4_vrf1'], consumed_contract_names=['c3_vrf1', 'c4_vrf1'], nat_epg_dn=('uni/tn-t2/ap-myapp/epg-EXT-o2' if self.with_nat_epg else '')), a_res.ExternalSubnet( tenant_name='dept1', l3out_name='o2-vrf1', external_network_name='inet2', cidr='0.0.0.0/0')]
def _manage_external_subnets(self, ctx, ext_net, new_cidrs): new_cidrs = new_cidrs[:] if new_cidrs else [] ext_sub_attr = dict(tenant_name=ext_net.tenant_name, l3out_name=ext_net.l3out_name, external_network_name=ext_net.name) old_ext_subs = self.mgr.find(ctx, resource.ExternalSubnet, **ext_sub_attr) with ctx.store.begin(subtransactions=True): for sub in old_ext_subs: if sub.cidr in new_cidrs: new_cidrs.remove(sub.cidr) else: self.mgr.delete(ctx, sub) for c in new_cidrs: self.mgr.create( ctx, resource.ExternalSubnet(cidr=c, **ext_sub_attr))
def _map_flowc_network_group(self, plugin_context, net, cidr, flowc, prefix): flc_aid = self._get_external_group_aim_name(plugin_context, flowc, prefix) flc_aname = aim_utils.sanitize_display_name(flowc['name']) aim_ctx = aim_context.AimContext(plugin_context.session) 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, display_name=flc_aname) 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) ext_sub_db = self.aim.get(aim_ctx, ext_sub) if not ext_sub_db: self.aim.create(aim_ctx, ext_sub) return ext_net_db else: return self.aim_mech._get_epg_by_network_id( plugin_context.session, net['id'])
def _get_vrf_1_ext_net_2_objects(self, connected=True): return { 'l3out': a_res.L3Outside( tenant_name='t2', name='o2', display_name='OUT2', vrf_name='vrf1'), 'ext_net': a_res.ExternalNetwork( tenant_name='t2', l3out_name='o2', name='inet2', display_name='INET2', provided_contract_names=( ['EXT-o2', 'p3_vrf1', 'p4_vrf1'] if connected else ['EXT-o2']), consumed_contract_names=( ['EXT-o2', 'c3_vrf1', 'c4_vrf1'] if connected else ['EXT-o2'])), 'nat_bd': a_res.BridgeDomain( tenant_name='t2', name='EXT-o2', display_name='EXT-OUT2', vrf_name='EXT-o2', limit_ip_learn_to_subnets=True, l3out_names=['o2']), 'ext_sub_1': a_res.ExternalSubnet( tenant_name='t2', l3out_name='o2', external_network_name='inet2', cidr='0.0.0.0/0')}
def _get_network_l3out_default_ext_subnetv6(self, mapping): return aim_resource.ExternalSubnet( tenant_name=mapping.l3out_tenant_name, l3out_name=mapping.l3out_name, external_network_name=mapping.l3out_ext_net_name, cidr="::/0")