Add support for template-function-list command
Example: heat template-function-list <template_version> DocImpact Implements bp: template-function-list Change-Id: I80fdd94c10be49f80bd8dab1288ad336d185f55d
This commit is contained in:
parent
6c4d183f6e
commit
a7067fbde7
|
@ -94,3 +94,9 @@ class SimpleReadOnlyHeatClientTest(base.ClientTestBase):
|
||||||
ret = self.heat('template-version-list')
|
ret = self.heat('template-version-list')
|
||||||
tmpl_types = self.parser.listing(ret)
|
tmpl_types = self.parser.listing(ret)
|
||||||
self.assertTableStruct(tmpl_types, ['version', 'type'])
|
self.assertTableStruct(tmpl_types, ['version', 'type'])
|
||||||
|
|
||||||
|
def test_heat_template_function_list(self):
|
||||||
|
ret = self.heat('template-function-list '
|
||||||
|
'heat_template_version.2013-05-23')
|
||||||
|
tmpl_functions = self.parser.listing(ret)
|
||||||
|
self.assertTableStruct(tmpl_functions, ['functions', 'description'])
|
||||||
|
|
|
@ -38,3 +38,20 @@ class TemplateVersionManagerTest(testtools.TestCase):
|
||||||
versions = manager.list()
|
versions = manager.list()
|
||||||
self.assertEqual('2013-05-23', getattr(versions[0], 'version'))
|
self.assertEqual('2013-05-23', getattr(versions[0], 'version'))
|
||||||
self.assertEqual('hot', getattr(versions[0], 'type'))
|
self.assertEqual('hot', getattr(versions[0], 'type'))
|
||||||
|
|
||||||
|
def test_get(self):
|
||||||
|
expect = ('GET', '/template_versions/heat_template_version.2015-04-30'
|
||||||
|
'/functions')
|
||||||
|
|
||||||
|
class FakeResponse(object):
|
||||||
|
def json(self):
|
||||||
|
return {'template_functions': [{'function': 'get_attr'}]}
|
||||||
|
|
||||||
|
class FakeClient(object):
|
||||||
|
def get(self, *args, **kwargs):
|
||||||
|
assert ('GET', args[0]) == expect
|
||||||
|
return FakeResponse()
|
||||||
|
|
||||||
|
manager = template_versions.TemplateVersionManager(FakeClient())
|
||||||
|
functions = manager.get('heat_template_version.2015-04-30')
|
||||||
|
self.assertEqual('get_attr', getattr(functions[0], 'function'))
|
||||||
|
|
|
@ -1404,3 +1404,16 @@ def do_template_version_list(hc, args):
|
||||||
versions = hc.template_versions.list()
|
versions = hc.template_versions.list()
|
||||||
fields = ['version', 'type']
|
fields = ['version', 'type']
|
||||||
utils.print_list(versions, fields, sortby_index=1)
|
utils.print_list(versions, fields, sortby_index=1)
|
||||||
|
|
||||||
|
|
||||||
|
@utils.arg('template_version', metavar='<TEMPLATE_VERSION>',
|
||||||
|
help=_('Template version to get the functions for.'))
|
||||||
|
def do_template_function_list(hc, args):
|
||||||
|
'''List the available functions.'''
|
||||||
|
try:
|
||||||
|
functions = hc.template_versions.get(args.template_version)
|
||||||
|
except exc.HTTPNotFound:
|
||||||
|
raise exc.CommandError(
|
||||||
|
_('Template version not found: %s') % args.template_version)
|
||||||
|
else:
|
||||||
|
utils.print_list(functions, ['functions', 'description'])
|
||||||
|
|
|
@ -11,6 +11,9 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from oslo_utils import encodeutils
|
||||||
|
from six.moves.urllib import parse
|
||||||
|
|
||||||
from heatclient.openstack.common.apiclient import base
|
from heatclient.openstack.common.apiclient import base
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,3 +33,12 @@ class TemplateVersionManager(base.BaseManager):
|
||||||
:rtype: list of :class:`TemplateVersion`
|
:rtype: list of :class:`TemplateVersion`
|
||||||
"""
|
"""
|
||||||
return self._list('/template_versions', 'template_versions')
|
return self._list('/template_versions', 'template_versions')
|
||||||
|
|
||||||
|
def get(self, template_version):
|
||||||
|
"""Get a list of functions for a specific resource_type.
|
||||||
|
|
||||||
|
:param template_version: template version to get the functions for
|
||||||
|
"""
|
||||||
|
url_str = '/template_versions/%s/functions' % (
|
||||||
|
parse.quote(encodeutils.safe_encode(template_version), ''))
|
||||||
|
return self._list(url_str, 'template_functions')
|
||||||
|
|
Loading…
Reference in New Issue