diff --git a/quantum/common/exceptions.py b/quantum/common/exceptions.py index 054bb433ac3..0a117c3a290 100644 --- a/quantum/common/exceptions.py +++ b/quantum/common/exceptions.py @@ -127,6 +127,11 @@ class VlanIdInUse(InUse): "%(physical_network)s is in use.") +class FlatNetworkInUse(InUse): + message = _("Unable to create the flat network. " + "Physical network %(physical_network)s is in use.") + + class TunnelIdInUse(InUse): message = _("Unable to create the network. " "The tunnel ID %(tunnel_id)s is in use.") diff --git a/quantum/plugins/linuxbridge/db/l2network_db_v2.py b/quantum/plugins/linuxbridge/db/l2network_db_v2.py index 985332c62e2..a481c996586 100644 --- a/quantum/plugins/linuxbridge/db/l2network_db_v2.py +++ b/quantum/plugins/linuxbridge/db/l2network_db_v2.py @@ -17,12 +17,12 @@ import logging from sqlalchemy.orm import exc -from quantum.common import constants from quantum.common import exceptions as q_exc import quantum.db.api as db from quantum.db import models_v2 from quantum.openstack.common import cfg from quantum.plugins.linuxbridge.common import config +from quantum.plugins.linuxbridge.common import constants from quantum.plugins.linuxbridge.db import l2network_models_v2 LOG = logging.getLogger(__name__) @@ -113,8 +113,12 @@ def reserve_specific_network(session, physical_network, vlan_id): vlan_id=vlan_id). one()) if state.allocated: - raise q_exc.VlanIdInUse(vlan_id=vlan_id, - physical_network=physical_network) + if vlan_id == constants.FLAT_VLAN_ID: + raise q_exc.FlatNetworkInUse(physical_network= + physical_network) + else: + raise q_exc.VlanIdInUse(vlan_id=vlan_id, + physical_network=physical_network) LOG.debug("reserving specific vlan %s on physical network %s " "from pool" % (vlan_id, physical_network)) state.allocated = True diff --git a/quantum/plugins/openvswitch/ovs_db_v2.py b/quantum/plugins/openvswitch/ovs_db_v2.py index 5957e45825c..c1c4ebe236e 100644 --- a/quantum/plugins/openvswitch/ovs_db_v2.py +++ b/quantum/plugins/openvswitch/ovs_db_v2.py @@ -20,11 +20,11 @@ import logging from sqlalchemy.orm import exc -from quantum.common import constants from quantum.common import exceptions as q_exc from quantum.db import models_v2 import quantum.db.api as db from quantum.openstack.common import cfg +from quantum.plugins.openvswitch.common import constants from quantum.plugins.openvswitch import ovs_models_v2 LOG = logging.getLogger(__name__) @@ -132,8 +132,12 @@ def reserve_specific_vlan(session, physical_network, vlan_id): vlan_id=vlan_id). one()) if alloc.allocated: - raise q_exc.VlanIdInUse(vlan_id=vlan_id, - physical_network=physical_network) + if vlan_id == constants.FLAT_VLAN_ID: + raise q_exc.FlatNetworkInUse(physical_network= + physical_network) + else: + raise q_exc.VlanIdInUse(vlan_id=vlan_id, + physical_network=physical_network) LOG.debug("reserving specific vlan %s on physical network %s " "from pool" % (vlan_id, physical_network)) alloc.allocated = True