def create_network(self, context, network): (network_type, physical_network, segmentation_id) = self._process_provider_create(context, network['network']) session = context.session with session.begin(subtransactions=True): if not network_type: try: (physical_network, segmentation_id) = ovs_db_v2.reserve_vlan(session) network_type = constants.TYPE_VLAN except q_exc.NoNetworkAvailable: segmentation_id = ovs_db_v2.reserve_tunnel(session) network_type = constants.TYPE_GRE else: ovs_db_v2.reserve_specific_vlan(session, physical_network, segmentation_id) net = super(OVSQuantumPluginV2, self).create_network(context, network) ovs_db_v2.add_network_binding(session, net['id'], network_type, physical_network, segmentation_id) self._process_l3_create(context, network['network'], net['id']) self._extend_network_dict_provider(context, net) self._extend_network_dict_l3(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, segmentation_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 == constants.TYPE_VLAN: (physical_network, segmentation_id) = ovs_db_v2.reserve_vlan(session) elif network_type == constants.TYPE_GRE: segmentation_id = ovs_db_v2.reserve_tunnel(session) # no reservation needed for TYPE_LOCAL else: # provider network if network_type in [constants.TYPE_VLAN, constants.TYPE_FLAT]: ovs_db_v2.reserve_specific_vlan(session, physical_network, segmentation_id) elif network_type == constants.TYPE_GRE: ovs_db_v2.reserve_specific_tunnel(session, segmentation_id) # no reservation needed for TYPE_LOCAL net = super(OVSQuantumPluginV2, self).create_network(context, network) ovs_db_v2.add_network_binding(session, net["id"], network_type, physical_network, segmentation_id) self._process_l3_create(context, network["network"], net["id"]) self._extend_network_dict_provider(context, net) self._extend_network_dict_l3(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, segmentation_id) = self._process_provider_create( context, network['network']) session = context.session with session.begin(subtransactions=True): if not network_type: try: (physical_network, segmentation_id) = ovs_db_v2.reserve_vlan(session) network_type = constants.TYPE_VLAN except q_exc.NoNetworkAvailable: segmentation_id = ovs_db_v2.reserve_tunnel(session) network_type = constants.TYPE_GRE else: ovs_db_v2.reserve_specific_vlan(session, physical_network, segmentation_id) net = super(OVSQuantumPluginV2, self).create_network(context, network) ovs_db_v2.add_network_binding(session, net['id'], network_type, physical_network, segmentation_id) self._process_l3_create(context, network['network'], net['id']) self._extend_network_dict_provider(context, net) self._extend_network_dict_l3(context, net) # note - exception will rollback entire transaction LOG.debug("Created network: %s" % net['id']) return net
def test_add_network_binding(self): self.assertIsNone(ovs_db_v2.get_network_binding(self.session, TEST_NETWORK_ID)) ovs_db_v2.add_network_binding(self.session, TEST_NETWORK_ID, 'vlan', PHYS_NET, 1234) binding = ovs_db_v2.get_network_binding(self.session, TEST_NETWORK_ID) self.assertIsNotNone(binding) self.assertEqual(binding.network_id, TEST_NETWORK_ID) self.assertEqual(binding.network_type, 'vlan') self.assertEqual(binding.physical_network, PHYS_NET) self.assertEqual(binding.segmentation_id, 1234)
def test_add_network_binding(self): self.assertIsNone(ovs_db_v2.get_network_binding(self.session, TEST_NETWORK_ID)) ovs_db_v2.add_network_binding(self.session, TEST_NETWORK_ID, 'vlan', PHYS_NET, 1234) binding = ovs_db_v2.get_network_binding(self.session, TEST_NETWORK_ID) self.assertIsNotNone(binding) self.assertEqual(binding.network_id, TEST_NETWORK_ID) self.assertEqual(binding.network_type, 'vlan') self.assertEqual(binding.physical_network, PHYS_NET) self.assertEqual(binding.segmentation_id, 1234)
def create_network(self, context, network): (network_type, physical_network, segmentation_id) = self._process_provider_create(context, network['network']) session = context.session #set up default security groups tenant_id = self._get_tenant_id_for_create( context, network['network']) self._ensure_default_security_group(context, tenant_id) 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 == constants.TYPE_VLAN: (physical_network, segmentation_id) = ovs_db_v2.reserve_vlan(session) elif network_type == constants.TYPE_GRE: segmentation_id = ovs_db_v2.reserve_tunnel(session) # no reservation needed for TYPE_LOCAL else: # provider network if network_type in [constants.TYPE_VLAN, constants.TYPE_FLAT]: ovs_db_v2.reserve_specific_vlan(session, physical_network, segmentation_id) elif network_type == constants.TYPE_GRE: ovs_db_v2.reserve_specific_tunnel(session, segmentation_id) # no reservation needed for TYPE_LOCAL net = super(OVSQuantumPluginV2, self).create_network(context, network) ovs_db_v2.add_network_binding(session, net['id'], network_type, physical_network, segmentation_id) self._process_l3_create(context, network['network'], net['id']) self._extend_network_dict_provider(context, net) self._extend_network_dict_l3(context, net) # note - exception will rollback entire transaction LOG.debug(_("Created network: %s"), net['id']) return net