diff --git a/tripleo_common/actions/scale.py b/tripleo_common/actions/scale.py index f11ada314..476f966a6 100644 --- a/tripleo_common/actions/scale.py +++ b/tripleo_common/actions/scale.py @@ -113,6 +113,11 @@ class ScaleDownAction(templates.ProcessTemplatesAction): 'resource_list': [r.resource_name for r in role_resources] }] + # force reset the removal_policies_mode to 'append' + # as 'update' can lead to deletion of unintended nodes. + removal_mode = "{0}RemovalPoliciesMode".format(role) + stack_params[removal_mode] = 'append' + return stack_params def run(self, context): diff --git a/tripleo_common/tests/actions/test_scale.py b/tripleo_common/tests/actions/test_scale.py index 7face5b90..a3f6d9064 100644 --- a/tripleo_common/tests/actions/test_scale.py +++ b/tripleo_common/tests/actions/test_scale.py @@ -139,7 +139,8 @@ class ScaleDownActionTest(base.TestCase): template={'heat_template_version': '2016-04-30'} ) - clear_list = list(['ComputeCount', 'ComputeRemovalPolicies']) + clear_list = list(['ComputeCount', 'ComputeRemovalPolicies', + 'ComputeRemovalPoliciesMode']) _, kwargs = heatclient.stacks.update.call_args self.assertEqual(set(kwargs['clear_parameters']), set(clear_list)) self.assertEqual(kwargs['environment'], env)