def get_subnet(self, ctx, l3outside, gw_ip_mask): l3outside = self.mgr.get(ctx, l3outside) if l3outside: nat_bd = self._get_nat_bd(ctx, l3outside) sub = resource.Subnet(tenant_name=nat_bd.tenant_name, bd_name=nat_bd.name, gw_ip_mask=gw_ip_mask) return self.mgr.get(ctx, sub)
def create_subnet(self, ctx, l3outside, gw_ip_mask): l3outside = self.mgr.get(ctx, l3outside) if l3outside: nat_bd = self._get_nat_bd(ctx, l3outside) sub = resource.Subnet(tenant_name=nat_bd.tenant_name, bd_name=nat_bd.name, gw_ip_mask=gw_ip_mask) if not self.mgr.get(ctx, sub): self.mgr.create(ctx, sub)
def test_subnet(self): l3out = a_res.L3Outside(tenant_name='t1', name='o1', display_name='OUT') self.ns.create_l3outside(self.ctx, l3out) self.ns.create_subnet(self.ctx, l3out, '200.10.20.1/28') sub = a_res.Subnet(tenant_name='t1', bd_name='EXT-o1', gw_ip_mask='200.10.20.1/28') self._verify(present=[sub]) self._assert_res_eq(sub, self.ns.get_subnet(self.ctx, l3out, '200.10.20.1/28')) self.ns.delete_subnet(self.ctx, l3out, '200.10.20.1/28') self._verify(absent=[sub]) self.assertIsNone(self.ns.get_subnet(self.ctx, l3out, '200.10.20.1/28'))
def _check_delete_l3outside_with_vrf(self, stage): objs = [a_res.L3Outside(tenant_name='t1', name='o1', display_name='OUT', vrf_name='EXT-o1'), a_res.Subnet(tenant_name='t1', bd_name='EXT-o1', gw_ip_mask='200.10.20.1/28'), a_res.ExternalNetwork( tenant_name='t1', l3out_name='o1', name='inet1', display_name='INET1', provided_contract_names=['EXT-o1'], consumed_contract_names=['EXT-o1']), a_res.ExternalNetwork( tenant_name='t1', l3out_name='o1', name='inet1_1', display_name='INET1_1', provided_contract_names=['EXT-o1'], consumed_contract_names=['EXT-o1'])] objs += self._get_vrf_1_ext_net_1_objects() objs += self._get_l3out_objects() if stage == 'stage1': self._verify(present=objs) elif stage == 'stage2': self._verify(absent=objs) else: self.assertFalse(True, 'Unknown test stage %s' % stage)
def test_update(self): htree = tree.StructuredHashTree() exp_tree = tree.StructuredHashTree() bd = self._get_example_aim_bd(tenant_name='t1', name='bd1') subnet = resource.Subnet(tenant_name='t1', bd_name='bd1', gw_ip_mask='10.0.0.1/24') fvBD_attr = { 'arpFlood': 'no', 'epMoveDetectMode': '', 'limitIpLearnToSubnets': 'no', 'ipLearning': 'yes', 'unicastRoute': 'yes', 'unkMacUcastAct': 'proxy', 'nameAlias': '' } fvRsCtx_attr = {'tnFvCtxName': 'default'} fvSubnet_attr = {'scope': 'public', 'nameAlias': ''} self.maker.update(htree, [bd, subnet]) bd_key = ('fvTenant|t1', 'fvBD|bd1') rsctx_key = ('fvTenant|t1', 'fvBD|bd1', 'fvRsCtx|rsctx') subnet_key = ('fvTenant|t1', 'fvBD|bd1', 'fvSubnet|10.0.0.1/24') exp_tree.add(bd_key, **fvBD_attr) exp_tree.add(rsctx_key, **fvRsCtx_attr) exp_tree.add(subnet_key, **fvSubnet_attr) self.assertEqual(exp_tree, htree) self.assertEqual({ "attributes": mock.ANY, "monitored": False }, htree.find(bd_key).metadata.to_dict()) self.assertEqual( { 'related': True, "attributes": mock.ANY, "monitored": False }, htree.find(rsctx_key).metadata.to_dict()) self.assertEqual({ "attributes": mock.ANY, "monitored": False }, htree.find(subnet_key).metadata.to_dict()) bd.name = 'bd2' subnet.bd_name = 'bd2' self.maker.update(htree, [bd, subnet]) bd_key = ('fvTenant|t1', 'fvBD|bd2') rsctx_key = ('fvTenant|t1', 'fvBD|bd2', 'fvRsCtx|rsctx') subnet_key = ('fvTenant|t1', 'fvBD|bd2', 'fvSubnet|10.0.0.1/24') exp_tree.add(bd_key, **fvBD_attr) exp_tree.add(rsctx_key, **fvRsCtx_attr) exp_tree.add(subnet_key, **fvSubnet_attr) self.assertEqual(exp_tree, htree) fvBD_attr['unkMacUcastAct'] = 'flood' fvRsCtx_attr = {'tnFvCtxName': 'shared'} bd.l2_unknown_unicast_mode = 'flood' bd.vrf_name = 'shared' self.maker.update(htree, [bd]) exp_tree = exp_tree.add(('fvTenant|t1', 'fvBD|bd2'), **fvBD_attr) exp_tree.add(('fvTenant|t1', 'fvBD|bd2', 'fvRsCtx|rsctx'), **fvRsCtx_attr) self.assertEqual(exp_tree, htree) self.assertEqual(exp_tree, htree) self.assertEqual({ "attributes": mock.ANY, "monitored": False }, htree.find(bd_key).metadata.to_dict()) self.assertEqual( { "attributes": mock.ANY, "monitored": False, 'related': True }, htree.find(rsctx_key).metadata.to_dict()) self.assertEqual({ "attributes": mock.ANY, "monitored": False }, htree.find(subnet_key).metadata.to_dict())
def _get_example_aim_subnet(cls, **kwargs): example = resource.Subnet( tenant_name='t1', bd_name='test', gw_ip_mask='10.10.10.0/28') example.__dict__.update(kwargs) return example