ML2 plugin cannot raise NoResultFound exception
The ML2 plugin cannot raise NoResultFound exception because it does not use the correct sqlalchemy library: 'from sqlalchemy import exc as ...' instead of 'from sqlalchemy.orm import exc as ...' Closes-Bug: #1277914 Change-Id: If3819adc62b9254f0c08eea6dcfcf5f06288e20e
This commit is contained in:
parent
0bd980638e
commit
46c01487e8
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
from sqlalchemy import exc as sql_exc
|
from sqlalchemy import exc as sql_exc
|
||||||
|
from sqlalchemy.orm import exc as sa_exc
|
||||||
|
|
||||||
from neutron.agent import securitygroups_rpc as sg_rpc
|
from neutron.agent import securitygroups_rpc as sg_rpc
|
||||||
from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
|
from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
|
||||||
@ -595,7 +596,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
|
|||||||
port_db = (session.query(models_v2.Port).
|
port_db = (session.query(models_v2.Port).
|
||||||
enable_eagerloads(False).
|
enable_eagerloads(False).
|
||||||
filter_by(id=id).with_lockmode('update').one())
|
filter_by(id=id).with_lockmode('update').one())
|
||||||
except sql_exc.NoResultFound:
|
except sa_exc.NoResultFound:
|
||||||
raise exc.PortNotFound(port_id=id)
|
raise exc.PortNotFound(port_id=id)
|
||||||
original_port = self._make_port_dict(port_db)
|
original_port = self._make_port_dict(port_db)
|
||||||
updated_port = super(Ml2Plugin, self).update_port(context, id,
|
updated_port = super(Ml2Plugin, self).update_port(context, id,
|
||||||
@ -653,7 +654,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
|
|||||||
port_db = (session.query(models_v2.Port).
|
port_db = (session.query(models_v2.Port).
|
||||||
enable_eagerloads(False).
|
enable_eagerloads(False).
|
||||||
filter_by(id=id).with_lockmode('update').one())
|
filter_by(id=id).with_lockmode('update').one())
|
||||||
except sql_exc.NoResultFound:
|
except sa_exc.NoResultFound:
|
||||||
# the port existed when l3plugin.prevent_l3_port_deletion
|
# the port existed when l3plugin.prevent_l3_port_deletion
|
||||||
# was called but now is already gone
|
# was called but now is already gone
|
||||||
LOG.debug(_("The port '%s' was deleted"), id)
|
LOG.debug(_("The port '%s' was deleted"), id)
|
||||||
|
@ -13,10 +13,16 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import mock
|
||||||
|
|
||||||
|
from neutron.common import exceptions as exc
|
||||||
|
from neutron import context
|
||||||
from neutron.extensions import multiprovidernet as mpnet
|
from neutron.extensions import multiprovidernet as mpnet
|
||||||
from neutron.extensions import portbindings
|
from neutron.extensions import portbindings
|
||||||
from neutron.extensions import providernet as pnet
|
from neutron.extensions import providernet as pnet
|
||||||
|
from neutron import manager
|
||||||
from neutron.plugins.ml2 import config
|
from neutron.plugins.ml2 import config
|
||||||
|
from neutron.plugins.ml2 import plugin as ml2_plugin
|
||||||
from neutron.tests.unit import _test_extension_portbindings as test_bindings
|
from neutron.tests.unit import _test_extension_portbindings as test_bindings
|
||||||
from neutron.tests.unit import test_db_plugin as test_plugin
|
from neutron.tests.unit import test_db_plugin as test_plugin
|
||||||
from neutron.tests.unit import test_extension_extradhcpopts as test_dhcpopts
|
from neutron.tests.unit import test_extension_extradhcpopts as test_dhcpopts
|
||||||
@ -90,6 +96,23 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
|
|||||||
self.assertEqual(port['port']['status'], 'DOWN')
|
self.assertEqual(port['port']['status'], 'DOWN')
|
||||||
self.assertEqual(self.port_create_status, 'DOWN')
|
self.assertEqual(self.port_create_status, 'DOWN')
|
||||||
|
|
||||||
|
def test_update_non_existent_port(self):
|
||||||
|
ctx = context.get_admin_context()
|
||||||
|
plugin = manager.NeutronManager.get_plugin()
|
||||||
|
data = {'port': {'admin_state_up': False}}
|
||||||
|
self.assertRaises(exc.PortNotFound, plugin.update_port, ctx,
|
||||||
|
'invalid-uuid', data)
|
||||||
|
|
||||||
|
def test_delete_non_existent_port(self):
|
||||||
|
ctx = context.get_admin_context()
|
||||||
|
plugin = manager.NeutronManager.get_plugin()
|
||||||
|
with mock.patch.object(ml2_plugin.LOG, 'debug') as log_debug:
|
||||||
|
plugin.delete_port(ctx, 'invalid-uuid', l3_port_check=False)
|
||||||
|
log_debug.assert_has_calls([
|
||||||
|
mock.call(_("Deleting port %s"), 'invalid-uuid'),
|
||||||
|
mock.call(_("The port '%s' was deleted"), 'invalid-uuid')
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
class TestMl2PortBinding(Ml2PluginV2TestCase,
|
class TestMl2PortBinding(Ml2PluginV2TestCase,
|
||||||
test_bindings.PortBindingsTestCase):
|
test_bindings.PortBindingsTestCase):
|
||||||
|
Loading…
Reference in New Issue
Block a user