diff --git a/heat/engine/cfn/template.py b/heat/engine/cfn/template.py index 02a7d03466..17af70a76f 100644 --- a/heat/engine/cfn/template.py +++ b/heat/engine/cfn/template.py @@ -147,10 +147,3 @@ class CfnTemplate(template.Template): self.t.setdefault(self.RESOURCES, {}) self.t[self.RESOURCES][name] = cfn_tmpl - - -def template_mapping(): - return { - ('HeatTemplateFormatVersion', '2012-12-12'): CfnTemplate, - ('AWSTemplateFormatVersion', '2010-09-09'): CfnTemplate, - } diff --git a/heat/engine/hot/template.py b/heat/engine/hot/template.py index 3dcf4fc610..327f0d12d1 100644 --- a/heat/engine/hot/template.py +++ b/heat/engine/hot/template.py @@ -223,9 +223,3 @@ class HOTemplate(template.Template): self.t.setdefault(self.RESOURCES, {}) self.t[self.RESOURCES][name] = definition.render_hot() - - -def template_mapping(): - return { - ('heat_template_version', '2013-05-23'): HOTemplate, - } diff --git a/heat/engine/template.py b/heat/engine/template.py index 5e1862001c..39d0334203 100644 --- a/heat/engine/template.py +++ b/heat/engine/template.py @@ -15,6 +15,7 @@ import abc import collections import copy import functools +from stevedore import extension from heat.common import exception from heat.db import api as db_api @@ -76,8 +77,12 @@ def get_template_class(plugin_mgr, template_data): global _template_classes if _template_classes is None: - tmpl_mapping = plugin_manager.PluginMapping('template') - _template_classes = dict(tmpl_mapping.load_all(plugin_mgr)) + mgr = extension.ExtensionManager( + namespace='heat.templates', + invoke_on_load=False, + verify_requirements=True) + _template_classes = dict((tuple(name.split('.')), mgr[name].plugin) + for name in mgr.names()) available_versions = _template_classes.keys() version = get_version(template_data, available_versions) diff --git a/setup.cfg b/setup.cfg index 2e8a54c11c..befbd39415 100644 --- a/setup.cfg +++ b/setup.cfg @@ -45,6 +45,12 @@ heat.constraints = nova.keypair = heat.engine.resources.nova_keypair:KeypairConstraint +heat.templates = + heat_template_version.2013-05-23 = heat.engine.hot.template:HOTemplate + HeatTemplateFormatVersion.2012-12-12 = heat.engine.cfn.template:CfnTemplate + AWSTemplateFormatVersion.2010-09-09 = heat.engine.cfn.template:CfnTemplate + + [global] setup-hooks = pbr.hooks.setup_hook