summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZane Bitter <zbitter@redhat.com>2018-07-24 13:49:31 -0400
committerZane Bitter <zbitter@redhat.com>2018-07-31 01:02:13 +0000
commit95ef1e52fc48321f5d00c963432c707da54ff97f (patch)
tree5c3f5bf08049259c32b273e9ad39e8d7c0f5e78a
parente63778efc91869efbd41e2f96b0c554aef1c80e5 (diff)
downloadheat-95ef1e52fc48321f5d00c963432c707da54ff97f.tar.gz
Always start convergence worker service
The purpose of the cfg.CONF.convergence_engine option is to determine whether new stacks will be created using convergence or not. For some reason, however, the worker service was not started when the option was disabled, meaning that previously-created convergence stacks could no longer be updated (there was a hack in place to allow them to be deleted). Always start the worker service and continue operating any existing convergence stacks in convergence mode, regardless of the current setting for new stacks. Change-Id: Ic3574e4d15ac48b2bc8e0e8101c81d24f40f0606 Related-Bug: #1508324
-rw-r--r--heat/engine/service.py20
-rw-r--r--heat/tests/engine/service/test_service_engine.py9
2 files changed, 15 insertions, 14 deletions
diff --git a/heat/engine/service.py b/heat/engine/service.py
index 0101e5e3c..cffcbeffa 100644
--- a/heat/engine/service.py
+++ b/heat/engine/service.py
@@ -345,14 +345,13 @@ class EngineService(service.ServiceBase):
LOG.debug("Starting listener for engine %s", self.engine_id)
self.listener.start()
- if cfg.CONF.convergence_engine:
- self.worker_service = worker.WorkerService(
- host=self.host,
- topic=rpc_worker_api.TOPIC,
- engine_id=self.engine_id,
- thread_group_mgr=self.thread_group_mgr
- )
- self.worker_service.start()
+ self.worker_service = worker.WorkerService(
+ host=self.host,
+ topic=rpc_worker_api.TOPIC,
+ engine_id=self.engine_id,
+ thread_group_mgr=self.thread_group_mgr
+ )
+ self.worker_service.start()
target = messaging.Target(
version=self.RPC_API_VERSION, server=self.host,
@@ -401,8 +400,7 @@ class EngineService(service.ServiceBase):
if self.listener:
self.listener.stop()
- if cfg.CONF.convergence_engine and self.worker_service:
- # Stop the WorkerService
+ if self.worker_service:
self.worker_service.stop()
# Wait for all active threads to be finished
@@ -1373,7 +1371,7 @@ class EngineService(service.ServiceBase):
stack = parser.Stack.load(cnxt, stack=st)
self.resource_enforcer.enforce_stack(stack, is_registered_policy=True)
- if stack.convergence and cfg.CONF.convergence_engine:
+ if stack.convergence:
stack.thread_group_mgr = self.thread_group_mgr
template = templatem.Template.create_empty_template(
from_template=stack.t)
diff --git a/heat/tests/engine/service/test_service_engine.py b/heat/tests/engine/service/test_service_engine.py
index a66e8e0de..421c2e359 100644
--- a/heat/tests/engine/service/test_service_engine.py
+++ b/heat/tests/engine/service/test_service_engine.py
@@ -227,6 +227,8 @@ class ServiceEngineTest(common.HeatTestCase):
return_value=mock.Mock())
@mock.patch('heat.engine.service.EngineListener',
return_value=mock.Mock())
+ @mock.patch('heat.engine.worker.WorkerService',
+ return_value=mock.Mock())
@mock.patch('oslo_service.threadgroup.ThreadGroup',
return_value=mock.Mock())
@mock.patch.object(service.EngineService, '_configure_db_conn_pool_size')
@@ -234,16 +236,17 @@ class ServiceEngineTest(common.HeatTestCase):
self,
configure_db_conn_pool_size,
thread_group_class,
+ worker_service_class,
engine_listener_class,
thread_group_manager_class,
sample_uuid_method,
rpc_client_class,
target_class,
rpc_server_method):
- cfg.CONF.set_default('convergence_engine', False)
+ cfg.CONF.set_override('convergence_engine', False)
self._test_engine_service_start(
thread_group_class,
- None,
+ worker_service_class,
engine_listener_class,
thread_group_manager_class,
sample_uuid_method,
@@ -280,7 +283,7 @@ class ServiceEngineTest(common.HeatTestCase):
rpc_client_class,
target_class,
rpc_server_method):
- cfg.CONF.set_default('convergence_engine', True)
+ cfg.CONF.set_override('convergence_engine', True)
self._test_engine_service_start(
thread_group_class,
worker_service_class,