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))
Ejemplo n.º 6
0
 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')}
Ejemplo n.º 8
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")