Ton Ngo 397ac68baa Minor tweaks
Add yaml dump formatting for correct printing of the HOT template.
Change the sequence of the life cycle operation to work for the
monitoring use case.  We still need to generalize the life cycle
sequence to cover all scenarios.

Change-Id: I30a9e18ec2f3026bc9ae88183042c9e845bc5188
2015-01-06 15:13:39 -08:00

68 lines
2.3 KiB
Python

#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import textwrap
import yaml
class HotTemplate(object):
'''Container for full Heat Orchestration template.'''
SECTIONS = (VERSION, DESCRIPTION, PARAMETER_GROUPS, PARAMETERS,
RESOURCES, OUTPUTS, MAPPINGS) = \
('heat_template_version', 'description', 'parameter_groups',
'parameters', 'resources', 'outputs', '__undefined__')
VERSIONS = (LATEST,) = ('2013-05-23',)
def __init__(self):
self.resources = []
self.outputs = []
self.parameters = []
self.description = ""
def output_to_yaml(self):
dict_output = {}
# Version
version_string = self.VERSION + ": " + self.LATEST + "\n\n"
# Description
desc_str = ""
if self.description:
# Wrap the text to a new line if the line exceeds 80 characters.
wrapped_txt = "\n ".join(textwrap.wrap(self.description, 80))
desc_str = self.DESCRIPTION + ": >\n " + wrapped_txt + "\n\n"
# Parameters
all_params = {}
for parameter in self.parameters:
all_params.update(parameter.get_dict_output())
dict_output.update({self.PARAMETERS: all_params})
# Resources
all_resources = {}
for resource in self.resources:
all_resources.update(resource.get_dict_output())
dict_output.update({self.RESOURCES: all_resources})
# Outputs
all_outputs = {}
for output in self.outputs:
all_outputs.update(output.get_dict_output())
dict_output.update({self.OUTPUTS: all_outputs})
yaml_string = yaml.dump(dict_output, default_flow_style=False)
# get rid of the '' from yaml.dump around numbers
yaml_string = yaml_string.replace('\'', '')
return version_string + desc_str + yaml_string