Merge "Deal with db_exc.DBDuplicate of conductor startup" into stable/pike

This commit is contained in:
Jenkins 2017-08-24 12:57:57 +00:00 committed by Gerrit Code Review
commit 3eb73ea41b
2 changed files with 14 additions and 4 deletions

View File

@ -17,6 +17,7 @@
from oslo_db import exception as db_exc
from oslo_db.sqlalchemy import session as db_session
from oslo_db.sqlalchemy import utils as db_utils
from oslo_log import log
from oslo_utils import importutils
from oslo_utils import strutils
from oslo_utils import timeutils
@ -38,6 +39,7 @@ profiler_sqlalchemy = importutils.try_import('osprofiler.sqlalchemy')
CONF = magnum.conf.CONF
LOG = log.getLogger(__name__)
_FACADE = None
@ -533,7 +535,14 @@ class Connection(api.Connection):
try:
magnum_service.save()
except db_exc.DBDuplicateEntry:
raise exception.MagnumServiceAlreadyExists(id=magnum_service['id'])
host = values["host"]
binary = values["binary"]
LOG.warning("Magnum service with same host:%(host)s and"
" binary:%(binary)s had been saved into DB",
{'host': host, 'binary': binary})
query = model_query(models.MagnumService)
query = query.filter_by(host=host, binary=binary)
return query.one()
return magnum_service
def get_magnum_service_list(self, disabled=None, limit=None,

View File

@ -24,9 +24,10 @@ class DbMagnumServiceTestCase(base.DbTestCase):
utils.create_test_magnum_service()
def test_create_magnum_service_failure_for_dup(self):
utils.create_test_magnum_service()
self.assertRaises(exception.MagnumServiceAlreadyExists,
utils.create_test_magnum_service)
ms = utils.create_test_magnum_service()
res = self.dbapi.get_magnum_service_by_host_and_binary(
ms['host'], ms['binary'])
self.assertEqual(ms.id, res.id)
def test_get_magnum_service_by_host_and_binary(self):
ms = utils.create_test_magnum_service()