From 6159400e1a2a87f983a2999ccedac5e47e9d2558 Mon Sep 17 00:00:00 2001 From: Bob Kukura Date: Thu, 6 Sep 2012 21:42:54 -0400 Subject: [PATCH] Improve error message when flat network already exists Fixes bug 1045601. When attempting to create a flat network on a physical_network on which a flat network is already allocated, the openvswitch and linuxbridge plugins return a FlatNetworkInUse exception rather than a VlanIdInUse exception referencing VLAN -1. Change-Id: Id79e917e1376ebbb199efc3f14d9f378c6a04050 --- quantum/common/exceptions.py | 5 +++++ quantum/plugins/linuxbridge/db/l2network_db_v2.py | 10 +++++++--- quantum/plugins/openvswitch/ovs_db_v2.py | 10 +++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/quantum/common/exceptions.py b/quantum/common/exceptions.py index 054bb433ac..0a117c3a29 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 985332c62e..a481c99658 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 5957e45825..c1c4ebe236 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