Add handling of parameter replacements.

We will need to replace the use of Parameters in the included template
with actual values in many cases.

Change-Id: I95fc9116dc2bba74c31d5570851c5c4eb476291a
This commit is contained in:
Clint Byrum 2013-07-10 10:58:05 -07:00
parent aebad8ce24
commit 4a43e6395d

@ -29,6 +29,22 @@ def translate_role(role):
raise Exception('%s -> %r' % (role, r))
return r
def resolve_params(item, param, value):
if item == {'Ref': param}:
return value
if isinstance(item, dict):
copy_item = dict(item)
for k, v in iter(copy_item.items()):
item[k] = resolve_params(v, param, value)
elif isinstance(item, list):
copy_item = list(item)
new_item = []
for v in copy_item:
new_item.append(resolve_params(v, param, value))
item = new_item
return item
errors = []
end_template={'HeatTemplateFormatVersion': '2012-12-12',
'Description': []}
@ -93,6 +109,11 @@ for template_path in templates:
subkeys = rbody.get('SubKey','').split('.')
while len(subkeys) and subkeys[0]:
include_content = include_content[subkeys.pop(0)]
for replace_param, replace_value in iter(rbody.get('Parameters',
{}).items()):
include_content = resolve_params(include_content,
replace_param,
replace_value)
end_template['Resources'][r] = include_content
else:
if r in end_template.get('Resources', {}):