def test_specific_vlan_inside_pool(self): vlan_id = VLAN_MIN + 5 self.assertFalse(n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated) n1kv_db_v2.reserve_specific_vlan(self.session, PHYS_NET, vlan_id) self.assertTrue(n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated) self.assertRaises(n_exc.VlanIdInUse, n1kv_db_v2.reserve_specific_vlan, self.session, PHYS_NET, vlan_id) n1kv_db_v2.release_vlan(self.session, PHYS_NET, vlan_id) self.assertFalse(n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated)
def test_specific_vlan_outside_pool(self): vlan_id = VLAN_MAX + 5 self.assertRaises(c_exc.VlanIDNotFound, n1kv_db_v2.get_vlan_allocation, self.session, PHYS_NET, vlan_id) n1kv_db_v2.reserve_specific_vlan(self.session, PHYS_NET, vlan_id) self.assertTrue( n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated) self.assertRaises(q_exc.VlanIdInUse, n1kv_db_v2.reserve_specific_vlan, self.session, PHYS_NET, vlan_id) n1kv_db_v2.release_vlan(self.session, PHYS_NET, vlan_id, VLAN_RANGES) self.assertRaises(c_exc.VlanIDNotFound, n1kv_db_v2.get_vlan_allocation, self.session, PHYS_NET, vlan_id)
def test_specific_vlan_inside_pool(self): vlan_id = VLAN_MIN + 5 self.assertFalse( n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated) n1kv_db_v2.reserve_specific_vlan(self.session, PHYS_NET, vlan_id) self.assertTrue( n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated) self.assertRaises(n_exc.VlanIdInUse, n1kv_db_v2.reserve_specific_vlan, self.session, PHYS_NET, vlan_id) n1kv_db_v2.release_vlan(self.session, PHYS_NET, vlan_id) self.assertFalse( n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated)
def test_specific_vlan_outside_pool(self): vlan_id = VLAN_MAX + 5 self.assertRaises(c_exc.VlanIDNotFound, n1kv_db_v2.get_vlan_allocation, self.session, PHYS_NET, vlan_id) n1kv_db_v2.reserve_specific_vlan(self.session, PHYS_NET, vlan_id) self.assertTrue(n1kv_db_v2.get_vlan_allocation(self.session, PHYS_NET, vlan_id).allocated) self.assertRaises(q_exc.VlanIdInUse, n1kv_db_v2.reserve_specific_vlan, self.session, PHYS_NET, vlan_id) n1kv_db_v2.release_vlan(self.session, PHYS_NET, vlan_id, VLAN_RANGES) self.assertRaises(c_exc.VlanIDNotFound, n1kv_db_v2.get_vlan_allocation, self.session, PHYS_NET, vlan_id)
def create_network(self, context, network): """ Create network based on network profile. :param context: neutron api request context :param network: network dictionary :returns: network object """ (network_type, physical_network, segmentation_id) = self._process_provider_create( context, network['network']) self._add_dummy_profile_only_if_testing(network) profile_id = self._process_network_profile(context, network['network']) LOG.debug(_('create network: profile_id=%s'), profile_id) session = context.session with session.begin(subtransactions=True): if not network_type: # tenant network (physical_network, network_type, segmentation_id, multicast_ip) = n1kv_db_v2.alloc_network(session, profile_id) LOG.debug( _('Physical_network %(phy_net)s, ' 'seg_type %(net_type)s, ' 'seg_id %(seg_id)s, ' 'multicast_ip %(multicast_ip)s'), { 'phy_net': physical_network, 'net_type': network_type, 'seg_id': segmentation_id, 'multicast_ip': multicast_ip }) if not segmentation_id: raise q_exc.TenantNetworksDisabled() else: # provider network if network_type == c_const.NETWORK_TYPE_VLAN: network_profile = self.get_network_profile( context, profile_id) seg_min, seg_max = self._get_segment_range( network_profile['segment_range']) if not seg_min <= segmentation_id <= seg_max: raise cisco_exceptions.VlanIDOutsidePool n1kv_db_v2.reserve_specific_vlan(session, physical_network, segmentation_id) multicast_ip = "0.0.0.0" net = super(N1kvNeutronPluginV2, self).create_network(context, network) n1kv_db_v2.add_network_binding(session, net['id'], network_type, physical_network, segmentation_id, multicast_ip, profile_id) self._process_l3_create(context, net, network['network']) self._extend_network_dict_provider(context, net) self._extend_network_dict_profile(context, net) try: self._send_create_network_request(context, net) except (cisco_exceptions.VSMError, cisco_exceptions.VSMConnectionFailed): super(N1kvNeutronPluginV2, self).delete_network(context, net['id']) else: # note - exception will rollback entire transaction LOG.debug(_("Created network: %s"), net['id']) return net
def create_network(self, context, network): """ Create network based on network profile. :param context: neutron api request context :param network: network dictionary :returns: network object """ (network_type, physical_network, segmentation_id) = self._process_provider_create(context, network['network']) self._add_dummy_profile_only_if_testing(network) profile_id = self._process_network_profile(context, network['network']) LOG.debug(_('create network: profile_id=%s'), profile_id) session = context.session with session.begin(subtransactions=True): if not network_type: # tenant network (physical_network, network_type, segmentation_id, multicast_ip) = n1kv_db_v2.alloc_network(session, profile_id) LOG.debug(_('Physical_network %(phy_net)s, ' 'seg_type %(net_type)s, ' 'seg_id %(seg_id)s, ' 'multicast_ip %(multicast_ip)s'), {'phy_net': physical_network, 'net_type': network_type, 'seg_id': segmentation_id, 'multicast_ip': multicast_ip}) if not segmentation_id: raise q_exc.TenantNetworksDisabled() else: # provider network if network_type == c_const.NETWORK_TYPE_VLAN: network_profile = self.get_network_profile(context, profile_id) seg_min, seg_max = self._get_segment_range( network_profile['segment_range']) if not seg_min <= segmentation_id <= seg_max: raise cisco_exceptions.VlanIDOutsidePool n1kv_db_v2.reserve_specific_vlan(session, physical_network, segmentation_id) multicast_ip = "0.0.0.0" net = super(N1kvNeutronPluginV2, self).create_network(context, network) n1kv_db_v2.add_network_binding(session, net['id'], network_type, physical_network, segmentation_id, multicast_ip, profile_id) self._process_l3_create(context, net, network['network']) self._extend_network_dict_provider(context, net) self._extend_network_dict_profile(context, net) try: self._send_create_network_request(context, net) except(cisco_exceptions.VSMError, cisco_exceptions.VSMConnectionFailed): super(N1kvNeutronPluginV2, self).delete_network(context, net['id']) else: # note - exception will rollback entire transaction LOG.debug(_("Created network: %s"), net['id']) return net