Merge "Pass list of parameters to engine service to reset"
This commit is contained in:
commit
cd3e910312
@ -367,11 +367,15 @@ class Environment(object):
|
||||
self.registry.load(env_snippet.get(env_fmt.RESOURCE_REGISTRY, {}))
|
||||
self.params.update(env_snippet.get(env_fmt.PARAMETERS, {}))
|
||||
|
||||
def patch_previous_parameters(self, previous_env):
|
||||
def patch_previous_parameters(self, previous_env, clear_parameters=[]):
|
||||
"""This instance of Environment is the new environment where
|
||||
we are reusing as default the previous parameter values.
|
||||
"""
|
||||
previous_parameters = copy.deepcopy(previous_env.params)
|
||||
# clear the parameters from the previous set as requested
|
||||
for p in clear_parameters:
|
||||
previous_parameters.pop(p, None)
|
||||
|
||||
# patch the new set of parameters
|
||||
previous_parameters.update(self.params)
|
||||
self.params = previous_parameters
|
||||
|
@ -658,7 +658,9 @@ class EngineService(service.Service):
|
||||
current_stack.disable_rollback)
|
||||
env = environment.Environment(params)
|
||||
if args.get(rpc_api.PARAM_EXISTING, None):
|
||||
env.patch_previous_parameters(current_stack.env)
|
||||
env.patch_previous_parameters(
|
||||
current_stack.env,
|
||||
args.get(rpc_api.PARAM_CLEAR_PARAMETERS, []))
|
||||
updated_stack = parser.Stack(cnxt, stack_name, tmpl,
|
||||
env, **common_params)
|
||||
updated_stack.parameters.set_stack_id(current_stack.identifier())
|
||||
|
@ -15,10 +15,12 @@ ENGINE_TOPIC = 'engine'
|
||||
|
||||
PARAM_KEYS = (
|
||||
PARAM_TIMEOUT, PARAM_DISABLE_ROLLBACK, PARAM_ADOPT_STACK_DATA,
|
||||
PARAM_SHOW_DELETED, PARAM_SHOW_NESTED, PARAM_EXISTING
|
||||
PARAM_SHOW_DELETED, PARAM_SHOW_NESTED, PARAM_EXISTING,
|
||||
PARAM_CLEAR_PARAMETERS
|
||||
) = (
|
||||
'timeout_mins', 'disable_rollback', 'adopt_stack_data',
|
||||
'show_deleted', 'show_nested', 'existing'
|
||||
'show_deleted', 'show_nested', 'existing',
|
||||
'clear_parameters'
|
||||
)
|
||||
|
||||
STACK_KEYS = (
|
||||
|
@ -73,6 +73,33 @@ class EnvironmentTest(common.HeatTestCase):
|
||||
env.patch_previous_parameters(prev_env)
|
||||
self.assertEqual(expected, env.user_env_as_dict())
|
||||
|
||||
def test_patch_and_clear_existing_parameters(self):
|
||||
# This tests patching cli parameters over the existing parameters
|
||||
prev_params = {'foo': 'bar', 'tester': 'Yes',
|
||||
'another_tester': 'Yes'}
|
||||
params = {'tester': 'patched'}
|
||||
expected = {'parameters': {'foo': 'bar', 'tester': 'patched'},
|
||||
'resource_registry': {'resources': {}}}
|
||||
prev_env = environment.Environment(
|
||||
{'parameters': prev_params,
|
||||
'resource_registry': {'resources': {}}})
|
||||
env = environment.Environment(params)
|
||||
env.patch_previous_parameters(prev_env, ['another_tester'])
|
||||
self.assertEqual(expected, env.user_env_as_dict())
|
||||
|
||||
def test_clear_existing_parameters(self):
|
||||
# This tests removing some parameters in the existing set of parameters
|
||||
prev_params = {'foo': 'bar', 'tester': 'Yes'}
|
||||
params = {}
|
||||
expected = {'parameters': {'foo': 'bar'},
|
||||
'resource_registry': {'resources': {}}}
|
||||
prev_env = environment.Environment(
|
||||
{'parameters': prev_params,
|
||||
'resource_registry': {'resources': {}}})
|
||||
env = environment.Environment(params)
|
||||
env.patch_previous_parameters(prev_env, ['tester'])
|
||||
self.assertEqual(expected, env.user_env_as_dict())
|
||||
|
||||
def test_global_registry(self):
|
||||
self.g_env.register_class('CloudX::Nova::Server',
|
||||
generic_resource.GenericResource)
|
||||
|
Loading…
Reference in New Issue
Block a user