# There's probably an idiomatic way I'm missing right now.
t = deepcopy(pt.template)
t['Resources'][resource_id]['Metadata'] = metadata
- pt.template = t
- pt.save()
+ pt.update_and_save({'template': t})
return [None, metadata]
@manager.periodic_task
response['ValidateTemplateResult']['Parameters'].append(res)
return response
+ def parsed_template_get(self):
+ stack = None
+ if self.parsed_template_id == 0:
+ if self.id == 0:
+ stack = db_api.stack_get(self.context, self.id)
+ else:
+ stack = db_api.stack_get_by_name(self.context, self.name)
+
+ if stack is None:
+ return None
+
+ self.parsed_template_id = stack.raw_template.parsed_template.id
+ return db_api.parsed_template_get(self.context,
+ self.parsed_template_id)
+
def update_parsed_template(self):
'''
Update the parsed template after each resource has been
created, so commands like describe will work.
'''
- if self.parsed_template_id == 0:
- stack = db_api.stack_get(self.context, self.id)
- if stack:
- self.parsed_template_id = stack.raw_template.parsed_template.id
- else:
- return
-
- pt = db_api.parsed_template_get(self.context, self.parsed_template_id)
+ pt = self.parsed_template_get()
if pt:
template = self.t.copy()
template['Resources'] = dict((k, r.parsed_template())
try:
while status == 'WAITING':
pt = None
- if self.stack.parsed_template_id:
- try:
- pt = db_api.parsed_template_get(self.stack.context,
- self.stack.parsed_template_id)
- except Exception as ex:
- if 'not found' in ex:
- # it has been deleted
- status = 'DELETED'
- else:
- pass
+ try:
+ pt = self.stack.parsed_template_get()
+ except Exception as ex:
+ if 'not found' in ex:
+ # it has been deleted
+ status = 'DELETED'
+ else:
+ pass
if pt:
res = pt.template['Resources'][self.resource_id]