Check for encrypted_param_names key in environment
If unencrypted data exists in the database, there will be no 'encrypted_param_names' key in the environment. Check for this key before referencing it. Change-Id: Ie8c593818a64d150e815487e1449a52173f1ab5d Closes-Bug: #1456700
This commit is contained in:
parent
1b451c2be1
commit
22e4a84cf2
@ -47,8 +47,11 @@ class RawTemplate(
|
|||||||
tpl[field] = db_tpl[field]
|
tpl[field] = db_tpl[field]
|
||||||
|
|
||||||
# If any of the parameters were encrypted, then decrypt them
|
# If any of the parameters were encrypted, then decrypt them
|
||||||
|
if env_fmt.ENCRYPTED_PARAM_NAMES in tpl.environment:
|
||||||
parameters = tpl.environment[env_fmt.PARAMETERS]
|
parameters = tpl.environment[env_fmt.PARAMETERS]
|
||||||
encrypted_param_names = tpl.environment[env_fmt.ENCRYPTED_PARAM_NAMES]
|
encrypted_param_names = tpl.environment[
|
||||||
|
env_fmt.ENCRYPTED_PARAM_NAMES]
|
||||||
|
|
||||||
for param_name in encrypted_param_names:
|
for param_name in encrypted_param_names:
|
||||||
decrypt_function_name = parameters[param_name][0]
|
decrypt_function_name = parameters[param_name][0]
|
||||||
decrypt_function = getattr(crypt, decrypt_function_name)
|
decrypt_function = getattr(crypt, decrypt_function_name)
|
||||||
|
@ -2030,6 +2030,42 @@ class StackTest(common.HeatTestCase):
|
|||||||
self.assertEqual('foo', params.get('param1'))
|
self.assertEqual('foo', params.get('param1'))
|
||||||
self.assertEqual('bar', params.get('param2'))
|
self.assertEqual('bar', params.get('param2'))
|
||||||
|
|
||||||
|
def test_parameters_stored_decrypted_successful_load(self):
|
||||||
|
'''
|
||||||
|
Test stack loading with disabled parameter value validation.
|
||||||
|
'''
|
||||||
|
tmpl = template_format.parse('''
|
||||||
|
heat_template_version: 2013-05-23
|
||||||
|
parameters:
|
||||||
|
param1:
|
||||||
|
type: string
|
||||||
|
description: value1.
|
||||||
|
param2:
|
||||||
|
type: string
|
||||||
|
description: value2.
|
||||||
|
hidden: true
|
||||||
|
resources:
|
||||||
|
a_resource:
|
||||||
|
type: GenericResourceType
|
||||||
|
''')
|
||||||
|
env1 = environment.Environment({'param1': 'foo', 'param2': 'bar'})
|
||||||
|
self.stack = stack.Stack(self.ctx, 'test',
|
||||||
|
template.Template(tmpl, env=env1))
|
||||||
|
cfg.CONF.set_override('encrypt_parameters_and_properties', False)
|
||||||
|
|
||||||
|
# Verify that hidden parameters are stored decrypted
|
||||||
|
self.stack.store()
|
||||||
|
db_tpl = db_api.raw_template_get(self.ctx, self.stack.t.id)
|
||||||
|
db_params = db_tpl.environment['parameters']
|
||||||
|
self.assertEqual('foo', db_params['param1'])
|
||||||
|
self.assertEqual('bar', db_params['param2'])
|
||||||
|
|
||||||
|
# Verify that stack loads without error
|
||||||
|
loaded_stack = stack.Stack.load(self.ctx, stack_id=self.stack.id)
|
||||||
|
params = loaded_stack.t.env.params
|
||||||
|
self.assertEqual('foo', params.get('param1'))
|
||||||
|
self.assertEqual('bar', params.get('param2'))
|
||||||
|
|
||||||
|
|
||||||
class StackKwargsForCloningTest(common.HeatTestCase):
|
class StackKwargsForCloningTest(common.HeatTestCase):
|
||||||
scenarios = [
|
scenarios = [
|
||||||
|
Loading…
Reference in New Issue
Block a user