Fix full graph loadbalancer creation if jobboard is disabled
This patch fixes the creation of a full loadbalancer graph in case the
jobboard_enabled config value is False, when no "listeners" parameter was
passed to the get_create_load_balancer_flow function call: use kwargs as the
flow creation function parameters and handle "store" separately.
Story 2010335
Task 46462
Signed-off-by: Anton Kurbatov <Anton.Kurbatov@acronis.com>
Change-Id: Id328b27db1ec9c8e17bf18120259e41e75dab3b9
(cherry picked from commit 216cce39c9
)
This commit is contained in:
parent
8fa8d8f071
commit
c662e42b84
@ -105,8 +105,9 @@ class ControllerWorker(object):
|
|||||||
LOG.info("Taskflow job will execute flow %s with id %s",
|
LOG.info("Taskflow job will execute flow %s with id %s",
|
||||||
func.__name__, job_id)
|
func.__name__, job_id)
|
||||||
else:
|
else:
|
||||||
|
store = kwargs.pop('store', None)
|
||||||
tf = self.tf_engine.taskflow_load(
|
tf = self.tf_engine.taskflow_load(
|
||||||
func(*args), **kwargs)
|
func(*args, **kwargs), store=store)
|
||||||
with tf_logging.DynamicLoggingListener(tf, log=LOG):
|
with tf_logging.DynamicLoggingListener(tf, log=LOG):
|
||||||
tf.run()
|
tf.run()
|
||||||
|
|
||||||
|
@ -652,6 +652,53 @@ class TestControllerWorker(base.TestCase):
|
|||||||
constants.TOPOLOGY_ACTIVE_STANDBY, listeners=dict_listeners,
|
constants.TOPOLOGY_ACTIVE_STANDBY, listeners=dict_listeners,
|
||||||
store=store)
|
store=store)
|
||||||
|
|
||||||
|
@mock.patch('octavia.controller.worker.v2.flows.load_balancer_flows.'
|
||||||
|
'LoadBalancerFlows.get_create_load_balancer_flow')
|
||||||
|
@mock.patch('octavia.common.base_taskflow.BaseTaskFlowEngine.'
|
||||||
|
'taskflow_load')
|
||||||
|
def test_create_load_balancer_full_graph_jobboard_disabled(
|
||||||
|
self,
|
||||||
|
mock_base_taskflow_load,
|
||||||
|
mock_get_create_load_balancer_flow,
|
||||||
|
mock_api_get_session,
|
||||||
|
mock_dyn_log_listener,
|
||||||
|
mock_taskflow_load,
|
||||||
|
mock_pool_repo_get,
|
||||||
|
mock_member_repo_get,
|
||||||
|
mock_l7rule_repo_get,
|
||||||
|
mock_l7policy_repo_get,
|
||||||
|
mock_listener_repo_get,
|
||||||
|
mock_lb_repo_get,
|
||||||
|
mock_health_mon_repo_get,
|
||||||
|
mock_amp_repo_get):
|
||||||
|
|
||||||
|
self.conf.config(group="task_flow", jobboard_enabled=False)
|
||||||
|
|
||||||
|
listeners = [data_models.Listener(id='listener1'),
|
||||||
|
data_models.Listener(id='listener2')]
|
||||||
|
dict_listeners = [listener.to_dict() for listener in
|
||||||
|
provider_utils.db_listeners_to_provider_listeners(
|
||||||
|
listeners)]
|
||||||
|
lb = data_models.LoadBalancer(id=LB_ID, listeners=listeners,
|
||||||
|
topology=constants.TOPOLOGY_SINGLE)
|
||||||
|
mock_lb_repo_get.return_value = lb
|
||||||
|
store = {
|
||||||
|
constants.LOADBALANCER_ID: LB_ID,
|
||||||
|
'update_dict': {'topology': constants.TOPOLOGY_SINGLE},
|
||||||
|
constants.BUILD_TYPE_PRIORITY: constants.LB_CREATE_NORMAL_PRIORITY,
|
||||||
|
constants.FLAVOR: None,
|
||||||
|
constants.SERVER_GROUP_ID: None,
|
||||||
|
constants.AVAILABILITY_ZONE: None,
|
||||||
|
}
|
||||||
|
|
||||||
|
cw = controller_worker.ControllerWorker()
|
||||||
|
cw.create_load_balancer(_load_balancer_mock)
|
||||||
|
|
||||||
|
mock_get_create_load_balancer_flow.assert_called_with(
|
||||||
|
constants.TOPOLOGY_SINGLE, listeners=dict_listeners)
|
||||||
|
mock_base_taskflow_load.assert_called_with(
|
||||||
|
mock_get_create_load_balancer_flow.return_value, store=store)
|
||||||
|
|
||||||
def test_delete_load_balancer_without_cascade(self,
|
def test_delete_load_balancer_without_cascade(self,
|
||||||
mock_api_get_session,
|
mock_api_get_session,
|
||||||
mock_dyn_log_listener,
|
mock_dyn_log_listener,
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Fix a bug when full graph of load balancer is created without
|
||||||
|
listeners if jobboard_enabled=False
|
Loading…
Reference in New Issue
Block a user