Merge "Move conductor wait_until_ready() delay before manager init" into stable/queens
This commit is contained in:
commit
6004632958
|
@ -124,6 +124,9 @@ class Service(service.Service):
|
|||
self.manager_class_name = manager
|
||||
self.servicegroup_api = servicegroup.API()
|
||||
manager_class = importutils.import_class(self.manager_class_name)
|
||||
if objects_base.NovaObject.indirection_api:
|
||||
conductor_api = conductor.API()
|
||||
conductor_api.wait_until_ready(context.get_admin_context())
|
||||
self.manager = manager_class(host=self.host, *args, **kwargs)
|
||||
self.rpcserver = None
|
||||
self.report_interval = report_interval
|
||||
|
@ -132,9 +135,6 @@ class Service(service.Service):
|
|||
self.periodic_interval_max = periodic_interval_max
|
||||
self.saved_args, self.saved_kwargs = args, kwargs
|
||||
self.backdoor_port = None
|
||||
if objects_base.NovaObject.indirection_api:
|
||||
conductor_api = conductor.API()
|
||||
conductor_api.wait_until_ready(context.get_admin_context())
|
||||
setup_profiler(binary, self.host)
|
||||
|
||||
def __repr__(self):
|
||||
|
|
|
@ -27,6 +27,7 @@ import testtools
|
|||
from nova import exception
|
||||
from nova import manager
|
||||
from nova import objects
|
||||
from nova.objects import base as obj_base
|
||||
from nova import rpc
|
||||
from nova import service
|
||||
from nova import test
|
||||
|
@ -138,6 +139,20 @@ class ServiceTestCase(test.NoDBTestCase):
|
|||
# post_start_hook is called after RPC consumer is created.
|
||||
serv.manager.post_start_hook.assert_called_once_with()
|
||||
|
||||
@mock.patch('nova.conductor.api.API.wait_until_ready')
|
||||
def test_init_with_indirection_api_waits(self, mock_wait):
|
||||
obj_base.NovaObject.indirection_api = mock.MagicMock()
|
||||
|
||||
with mock.patch.object(FakeManager, '__init__') as init:
|
||||
def check(*a, **k):
|
||||
self.assertTrue(mock_wait.called)
|
||||
|
||||
init.side_effect = check
|
||||
service.Service(self.host, self.binary, self.topic,
|
||||
'nova.tests.unit.test_service.FakeManager')
|
||||
self.assertTrue(init.called)
|
||||
mock_wait.assert_called_once_with(mock.ANY)
|
||||
|
||||
@mock.patch('nova.objects.service.Service.get_by_host_and_binary')
|
||||
def test_start_updates_version(self, mock_get_by_host_and_binary):
|
||||
# test that the service version gets updated on services startup
|
||||
|
|
Loading…
Reference in New Issue