The heat.engine.template Module

class heat.engine.template.Template(template, template_id=None, files=None, env=None)[source]

Bases: _abcoll.Mapping

Abstract base class for template format plugins.

All template formats (both internal and third-party) should derive from Template and implement the abstract functions to provide resource definitions and other data.

This is a stable third-party API. Do not add implementations that are specific to internal template formats. Do not add new abstract methods.

add_resource(definition, name=None)[source]

Add a resource to the template.

The resource is passed as a ResourceDefinition object. If no name is specified, the name from the ResourceDefinition should be used.

condition_functions = {}

Return a dictionary of resolved conditions.

classmethod create_empty_template(version=('heat_template_version', '2015-04-30'), from_template=None)[source]

Create an empty template.

Creates a new empty template with given version. If version is not provided, a new empty HOT template of version “2015-04-30” is returned.

Parameters:version – A tuple containing version header of the

template: version key and value. E.g. (“heat_template_version”, “2015-04-30”) :returns: A new empty template.

functions = {}

Return a correct section name.

classmethod load(context, template_id, t=None)[source]

Retrieve a Template with the given ID from the database.


Return a dict of parameters.Schema objects for the parameters.

parameters(stack_identifier, user_params, param_defaults=None)[source]

Return a parameters.Parameters object for the stack.

parse(stack, snippet, path='')[source]
parse_condition(stack, snippet, path='')[source]

Remove all the resources from the template.


Remove a resource from the template.


Return a dictionary of ResourceDefinition objects.


Store the Template in the database and return its ID.


Validate the template.

Validates the top-level sections of the template as well as syntax inside select sections. Some sections are not checked here but in code parts that are responsible for working with the respective sections (e.g. parameters are check by parameters schema class).


Check validity of resource definitions.

This method is deprecated. Subclasses should validate the resource definitions in the process of generating them when calling resource_definitions(). However, for now this method is still called in case any third-party plugins are relying on this for validation and need time to migrate.

classmethod validate_resource_key_type(key, valid_types, typename, allowed_keys, rsrc_name, rsrc_data)[source]

Validate the type of the value provided for a specific resource key.

This method is deprecated. This is a utility function previously used by the HOT and CFN template implementations. Its API makes no sense since it attempts to check both properties of user-provided keys (i.e. whether they’re valid keys) and properties that must necessarily be associated with a pre-defined whitelist of keys (i.e. knowing what types the values should be associated with). This method will be removed in a future version of Heat.