Sync nova with oslo DB exception cleanup.
DB exceptions have moved to openstack/common/db/exception module so that they can be shared with multiple DB implementations. Deadlock checking was also added to oslo to consolidate with DuplicateKey checking. This allows us to clean up our _retry_on_deadlock decorator in sqlalchemy/api.py Fixes unrelated pep8 issue with duplicate test in test_compute also. Change-Id: I7e985b384d1ef345e0d67c919b84b4faff869699
This commit is contained in:
parent
710c0d8969
commit
ea4a4cda45
@ -18,7 +18,7 @@ Bare-metal DB testcase for BareMetalInterface
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova.openstack.common.db.sqlalchemy import session as db_session
|
from nova.openstack.common.db import exception as db_exc
|
||||||
from nova.tests.baremetal.db import base
|
from nova.tests.baremetal.db import base
|
||||||
from nova.virt.baremetal import db
|
from nova.virt.baremetal import db
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ class BareMetalInterfaceTestCase(base.BMDBTestCase):
|
|||||||
def test_unique_address(self):
|
def test_unique_address(self):
|
||||||
pif1_id = db.bm_interface_create(self.context, 1, '11:11:11:11:11:11',
|
pif1_id = db.bm_interface_create(self.context, 1, '11:11:11:11:11:11',
|
||||||
'0x1', 1)
|
'0x1', 1)
|
||||||
self.assertRaises(db_session.DBError,
|
self.assertRaises(db_exc.DBError,
|
||||||
db.bm_interface_create,
|
db.bm_interface_create,
|
||||||
self.context, 2, '11:11:11:11:11:11', '0x2', 2)
|
self.context, 2, '11:11:11:11:11:11', '0x2', 2)
|
||||||
# succeed after delete pif1
|
# succeed after delete pif1
|
||||||
|
@ -18,7 +18,7 @@ Bare-metal DB testcase for BareMetalPxeIp
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova.openstack.common.db.sqlalchemy import session as db_session
|
from nova.openstack.common.db import exception as db_exc
|
||||||
from nova.tests.baremetal.db import base
|
from nova.tests.baremetal.db import base
|
||||||
from nova.tests.baremetal.db import utils
|
from nova.tests.baremetal.db import utils
|
||||||
from nova.virt.baremetal import db
|
from nova.virt.baremetal import db
|
||||||
@ -51,14 +51,14 @@ class BareMetalPxeIpTestCase(base.BMDBTestCase):
|
|||||||
# address duplicates
|
# address duplicates
|
||||||
i = utils.new_bm_pxe_ip(address='10.1.1.1',
|
i = utils.new_bm_pxe_ip(address='10.1.1.1',
|
||||||
server_address='10.1.1.201')
|
server_address='10.1.1.201')
|
||||||
self.assertRaises(db_session.DBError,
|
self.assertRaises(db_exc.DBError,
|
||||||
db.bm_pxe_ip_create_direct,
|
db.bm_pxe_ip_create_direct,
|
||||||
self.context, i)
|
self.context, i)
|
||||||
|
|
||||||
# server_address duplicates
|
# server_address duplicates
|
||||||
i = utils.new_bm_pxe_ip(address='10.1.1.3',
|
i = utils.new_bm_pxe_ip(address='10.1.1.3',
|
||||||
server_address='10.1.1.101')
|
server_address='10.1.1.101')
|
||||||
self.assertRaises(db_session.DBError,
|
self.assertRaises(db_exc.DBError,
|
||||||
db.bm_pxe_ip_create_direct,
|
db.bm_pxe_ip_create_direct,
|
||||||
self.context, i)
|
self.context, i)
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ from oslo.config import cfg
|
|||||||
from testtools import matchers
|
from testtools import matchers
|
||||||
|
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova.openstack.common.db.sqlalchemy import session as db_session
|
from nova.openstack.common.db import exception as db_exc
|
||||||
from nova.tests.baremetal.db import base as bm_db_base
|
from nova.tests.baremetal.db import base as bm_db_base
|
||||||
from nova.tests.baremetal.db import utils as bm_db_utils
|
from nova.tests.baremetal.db import utils as bm_db_utils
|
||||||
from nova.tests.image import fake as fake_image
|
from nova.tests.image import fake as fake_image
|
||||||
@ -529,7 +529,7 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase):
|
|||||||
AndRaise(exception.NovaException)
|
AndRaise(exception.NovaException)
|
||||||
bm_utils.unlink_without_raise(pxe_path)
|
bm_utils.unlink_without_raise(pxe_path)
|
||||||
self.driver._collect_mac_addresses(self.context, self.node).\
|
self.driver._collect_mac_addresses(self.context, self.node).\
|
||||||
AndRaise(db_session.DBError)
|
AndRaise(db_exc.DBError)
|
||||||
bm_utils.rmtree_without_raise(
|
bm_utils.rmtree_without_raise(
|
||||||
os.path.join(CONF.baremetal.tftp_root, 'fake-uuid'))
|
os.path.join(CONF.baremetal.tftp_root, 'fake-uuid'))
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
@ -28,6 +28,7 @@ from sqlalchemy.sql.expression import literal_column
|
|||||||
import nova.context
|
import nova.context
|
||||||
from nova.db.sqlalchemy import api as sqlalchemy_api
|
from nova.db.sqlalchemy import api as sqlalchemy_api
|
||||||
from nova import exception
|
from nova import exception
|
||||||
|
from nova.openstack.common.db import exception as db_exc
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
from nova.openstack.common import timeutils
|
from nova.openstack.common import timeutils
|
||||||
from nova.openstack.common import uuidutils
|
from nova.openstack.common import uuidutils
|
||||||
@ -399,7 +400,7 @@ def bm_interface_set_vif_uuid(context, if_id, vif_uuid):
|
|||||||
try:
|
try:
|
||||||
session.add(bm_interface)
|
session.add(bm_interface)
|
||||||
session.flush()
|
session.flush()
|
||||||
except db_session.DBError, e:
|
except db_exc.DBError, e:
|
||||||
# TODO(deva): clean up when db layer raises DuplicateKeyError
|
# TODO(deva): clean up when db layer raises DuplicateKeyError
|
||||||
if str(e).find('IntegrityError') != -1:
|
if str(e).find('IntegrityError') != -1:
|
||||||
raise exception.NovaException(_("Baremetal interface %s "
|
raise exception.NovaException(_("Baremetal interface %s "
|
||||||
|
@ -44,8 +44,6 @@ CONF.import_opt('sqlite_db', 'nova.openstack.common.db.sqlalchemy.session')
|
|||||||
_ENGINE = None
|
_ENGINE = None
|
||||||
_MAKER = None
|
_MAKER = None
|
||||||
|
|
||||||
DBError = nova_session.DBError
|
|
||||||
|
|
||||||
|
|
||||||
def get_session(autocommit=True, expire_on_commit=False):
|
def get_session(autocommit=True, expire_on_commit=False):
|
||||||
"""Return a SQLAlchemy session."""
|
"""Return a SQLAlchemy session."""
|
||||||
|
@ -27,7 +27,7 @@ from oslo.config import cfg
|
|||||||
|
|
||||||
from nova.compute import instance_types
|
from nova.compute import instance_types
|
||||||
from nova import exception
|
from nova import exception
|
||||||
from nova.openstack.common.db.sqlalchemy import session as db_session
|
from nova.openstack.common.db import exception as db_exc
|
||||||
from nova.openstack.common import fileutils
|
from nova.openstack.common import fileutils
|
||||||
from nova.openstack.common import log as logging
|
from nova.openstack.common import log as logging
|
||||||
from nova.openstack.common import timeutils
|
from nova.openstack.common import timeutils
|
||||||
@ -428,7 +428,7 @@ class PXE(base.NodeDriver):
|
|||||||
bm_utils.unlink_without_raise(get_pxe_config_file_path(instance))
|
bm_utils.unlink_without_raise(get_pxe_config_file_path(instance))
|
||||||
try:
|
try:
|
||||||
macs = self._collect_mac_addresses(context, node)
|
macs = self._collect_mac_addresses(context, node)
|
||||||
except db_session.DBError:
|
except db_exc.DBError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
for mac in macs:
|
for mac in macs:
|
||||||
|
Loading…
Reference in New Issue
Block a user