def create_network(self, context, network): net = super(LinuxBridgePluginV2, self).create_network(context, network) try: vlan_id = network["network"].get("provider:vlan_id") if vlan_id not in (None, attributes.ATTR_NOT_SPECIFIED): self._enforce_provider_set_auth(context, net) cdb.reserve_specific_vlanid(int(vlan_id)) else: vlan_id = cdb.reserve_vlanid() cdb.add_vlan_binding(vlan_id, net["id"]) self._extend_network_dict(context, net) except: super(LinuxBridgePluginV2, self).delete_network(context, net["id"]) raise return net
def test_specific_vlanid_inside(self): l2network_db.create_vlanids() orig_count = len(l2network_db.get_all_vlanids()) self.assertGreater(orig_count, 0) vlan_id = 1007 # inside range dynamically allocated self.assertFalse(l2network_db.is_vlanid_used(vlan_id)) l2network_db.reserve_specific_vlanid(vlan_id, "net-id") self.assertTrue(l2network_db.is_vlanid_used(vlan_id)) count = len(l2network_db.get_all_vlanids()) self.assertEqual(count, orig_count) used = l2network_db.release_vlanid(vlan_id) self.assertFalse(used) self.assertFalse(l2network_db.is_vlanid_used(vlan_id)) count = len(l2network_db.get_all_vlanids()) self.assertEqual(count, orig_count) self.teardown_vlanbinding() self.teardown_network()
def test_specific_vlanid_outside(self): l2network_db.create_vlanids() orig_count = len(l2network_db.get_all_vlanids()) self.assertGreater(orig_count, 0) vlan_id = 7 # outside range dynamically allocated with self.assertRaises(c_exc.VlanIDNotFound): l2network_db.is_vlanid_used(vlan_id) l2network_db.reserve_specific_vlanid(vlan_id, "net-id") self.assertTrue(l2network_db.is_vlanid_used(vlan_id)) count = len(l2network_db.get_all_vlanids()) self.assertEqual(count, orig_count + 1) used = l2network_db.release_vlanid(vlan_id) self.assertFalse(used) with self.assertRaises(c_exc.VlanIDNotFound): l2network_db.is_vlanid_used(vlan_id) count = len(l2network_db.get_all_vlanids()) self.assertEqual(count, orig_count) self.teardown_vlanbinding() self.teardown_network()