def create_network(self, context, network): (network_type, physical_network, vlan_id) = self._process_provider_create(context, network['network']) session = context.session with session.begin(subtransactions=True): if not network_type: # tenant network network_type = self.tenant_network_type if network_type == constants.TYPE_NONE: raise q_exc.TenantNetworksDisabled() elif network_type in [constants.TYPE_VLAN, constants.TYPE_IB]: physical_network, vlan_id = db.reserve_network(session) else: # TYPE_LOCAL vlan_id = constants.LOCAL_VLAN_ID else: # provider network if network_type in [ constants.TYPE_VLAN, constants.TYPE_IB, constants.TYPE_FLAT ]: db.reserve_specific_network(session, physical_network, vlan_id) net = super(MellanoxEswitchPlugin, self).create_network(context, network) db.add_network_binding(session, net['id'], network_type, physical_network, vlan_id) self._process_l3_create(context, net, network['network']) self._extend_network_dict_provider(context, net) # note - exception will rollback entire transaction LOG.debug(_("Created network: %s"), net['id']) return net
def create_network(self, context, network): (network_type, physical_network, vlan_id) = self._process_provider_create(context, network['network']) session = context.session with session.begin(subtransactions=True): if not network_type: # tenant network network_type = self.tenant_network_type if network_type == constants.TYPE_NONE: raise q_exc.TenantNetworksDisabled() elif network_type in [constants.TYPE_VLAN, constants.TYPE_IB]: physical_network, vlan_id = db.reserve_network(session) else: # TYPE_LOCAL vlan_id = constants.LOCAL_VLAN_ID else: # provider network if network_type in [constants.TYPE_VLAN, constants.TYPE_IB, constants.TYPE_FLAT]: db.reserve_specific_network(session, physical_network, vlan_id) net = super(MellanoxEswitchPlugin, self).create_network(context, network) db.add_network_binding(session, net['id'], network_type, physical_network, vlan_id) self._process_l3_create(context, net, network['network']) self._extend_network_dict_provider(context, net) # note - exception will rollback entire transaction LOG.debug(_("Created network: %s"), net['id']) return net
def test_specific_segmentationId_inside_pool(self): vlan_id = VLAN_MIN + 5 self.assertFalse(mlnx_db.get_network_state(PHYS_NET, vlan_id).allocated) mlnx_db.reserve_specific_network(self.session, PHYS_NET, vlan_id) self.assertTrue(mlnx_db.get_network_state(PHYS_NET, vlan_id).allocated) self.assertRaises(n_exc.VlanIdInUse, mlnx_db.reserve_specific_network, self.session, PHYS_NET, vlan_id) mlnx_db.release_network(self.session, PHYS_NET, vlan_id, VLAN_RANGES) self.assertFalse(mlnx_db.get_network_state(PHYS_NET, vlan_id).allocated)
def test_specific_segmentationId_outside_pool(self): vlan_id = VLAN_MAX + 5 self.assertIsNone(mlnx_db.get_network_state(PHYS_NET, vlan_id)) mlnx_db.reserve_specific_network(self.session, PHYS_NET, vlan_id) self.assertTrue(mlnx_db.get_network_state(PHYS_NET, vlan_id).allocated) self.assertRaises(n_exc.VlanIdInUse, mlnx_db.reserve_specific_network, self.session, PHYS_NET, vlan_id) mlnx_db.release_network(self.session, PHYS_NET, vlan_id, VLAN_RANGES) self.assertIsNone(mlnx_db.get_network_state(PHYS_NET, vlan_id))