Merge "Catch exceptions in service status report"

This commit is contained in:
Jenkins 2015-06-12 05:05:18 +00:00 committed by Gerrit Code Review
commit 9f7f0e470e
2 changed files with 20 additions and 9 deletions

View File

@ -1603,14 +1603,7 @@ class EngineService(service.Service):
def service_manage_report(self):
cnxt = context.get_admin_context()
if self.service_id is not None:
# Service is already running
service_objects.Service.update_by_id(
cnxt,
self.service_id,
dict(deleted_at=None))
LOG.info(_LI('Service %s is updated'), self.service_id)
else:
if self.service_id is None:
service_ref = service_objects.Service.create(
cnxt,
dict(host=self.host,
@ -1621,11 +1614,18 @@ class EngineService(service.Service):
report_interval=cfg.CONF.periodic_interval)
)
self.service_id = service_ref['id']
LOG.info(_LI('Service %s is started'), self.service_id)
try:
service_objects.Service.update_by_id(
cnxt,
self.service_id,
dict(deleted_at=None))
LOG.info(_LI('Service %s is started'), self.service_id)
LOG.info(_LI('Service %s is updated'), self.service_id)
except Exception as ex:
LOG.error(_LE('Service %(service_id)s update '
'failed: %(error)s'),
{'service_id': self.service_id, 'error': ex})
def service_manage_cleanup(self):
cnxt = context.get_admin_context()

View File

@ -116,6 +116,17 @@ class ServiceEngineTest(common.HeatTestCase):
'mock_id',
dict(deleted_at=None))
@mock.patch.object(service_objects.Service, 'update_by_id')
@mock.patch.object(context, 'get_admin_context')
def test_service_manage_report_update_fail(self, mock_admin_context,
mock_service_update):
self.eng.service_id = 'mock_id'
mock_admin_context.return_value = self.ctx
mock_service_update.side_effect = Exception()
self.eng.service_manage_report()
msg = 'Service %s update failed' % self.eng.service_id
self.assertIn(msg, self.LOG.output)
def test_stop_rpc_server(self):
with mock.patch.object(self.eng,
'_rpc_server') as mock_rpc_server: