Merge "Catch exceptions in service status report"
This commit is contained in:
commit
9f7f0e470e
|
@ -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()
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue