summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKanagaraj Manickam <kanagaraj.manickam@hp.com>2015-08-27 17:55:46 +0530
committerKanagaraj Manickam <kanagaraj.manickam@hp.com>2015-09-03 09:55:47 +0530
commitfdd163b28966e327f39f823c2938a5e902e15018 (patch)
tree5ea5c4249107a3764c2691f50e2dd78d30d2a690
parent7153d99f6c89abcfa25fa477fe0798ff4a0d810d (diff)
downloadheat-fdd163b28966e327f39f823c2938a5e902e15018.tar.gz
Updates resource type filtering with name, version
Adds name and version parameters to the resource type filterings implements blueprint heat-resource-type-search APIImpact Change-Id: I7500d5c56ce252bf8c0a9ae7a188a8cb25e643ce
-rw-r--r--heat/api/openstack/v1/stacks.py7
-rw-r--r--heat/engine/environment.py11
-rw-r--r--heat/engine/service.py16
-rw-r--r--heat/rpc/client.py16
-rw-r--r--heat/tests/api/openstack_v1/test_stacks.py18
-rw-r--r--heat/tests/engine/service/test_service_engine.py2
-rw-r--r--heat/tests/test_rpc_client.py8
7 files changed, 62 insertions, 16 deletions
diff --git a/heat/api/openstack/v1/stacks.py b/heat/api/openstack/v1/stacks.py
index 0a0652577..8d6e1226f 100644
--- a/heat/api/openstack/v1/stacks.py
+++ b/heat/api/openstack/v1/stacks.py
@@ -524,9 +524,14 @@ class StackController(object):
Returns a list of valid resource types that may be used in a template.
"""
support_status = req.params.get('support_status')
+ type_name = req.params.get('name')
+ version = req.params.get('version')
return {
'resource_types':
- self.rpc_client.list_resource_types(req.context, support_status)}
+ self.rpc_client.list_resource_types(req.context,
+ support_status=support_status,
+ type_name=type_name,
+ heat_version=version)}
@util.policy_enforce
def list_template_versions(self, req):
diff --git a/heat/engine/environment.py b/heat/engine/environment.py
index 229806d3e..c7eeb36fe 100644
--- a/heat/engine/environment.py
+++ b/heat/engine/environment.py
@@ -567,8 +567,15 @@ class Environment(object):
def get_class(self, resource_type, resource_name=None):
return self.registry.get_class(resource_type, resource_name)
- def get_types(self, cnxt=None, support_status=None):
- return self.registry.get_types(cnxt, support_status)
+ def get_types(self,
+ cnxt=None,
+ support_status=None,
+ type_name=None,
+ version=None):
+ return self.registry.get_types(cnxt,
+ support_status=support_status,
+ type_name=type_name,
+ version=version)
def get_resource_info(self, resource_type, resource_name=None,
registry_type=None):
diff --git a/heat/engine/service.py b/heat/engine/service.py
index 7fd2b3c2e..6c83e88fc 100644
--- a/heat/engine/service.py
+++ b/heat/engine/service.py
@@ -273,7 +273,7 @@ class EngineService(service.Service):
by the RPC caller.
"""
- RPC_API_VERSION = '1.15'
+ RPC_API_VERSION = '1.16'
def __init__(self, host, topic):
super(EngineService, self).__init__()
@@ -1106,12 +1106,22 @@ class EngineService(service.Service):
abandon=True)
return stack_info
- def list_resource_types(self, cnxt, support_status=None):
+ def list_resource_types(self,
+ cnxt,
+ support_status=None,
+ type_name=None,
+ heat_version=None):
"""Get a list of supported resource types.
:param cnxt: RPC context.
+ :param support_status: Support status of resource type
+ :param type_name: Resource type's name (regular expression allowed)
+ :param heat_version: Heat version
"""
- return resources.global_env().get_types(cnxt, support_status)
+ return resources.global_env().get_types(cnxt,
+ support_status=support_status,
+ type_name=type_name,
+ version=heat_version)
def list_template_versions(self, cnxt):
mgr = templatem._get_template_extension_manager()
diff --git a/heat/rpc/client.py b/heat/rpc/client.py
index b09eaa971..5526674d2 100644
--- a/heat/rpc/client.py
+++ b/heat/rpc/client.py
@@ -36,6 +36,7 @@ class EngineClient(object):
1.13 - Add support for template functions list
1.14 - Add cancel_with_rollback option to stack_cancel_update
1.15 - Add preview_update_stack() call
+ 1.16 - Adds version, type_name to list_resource_types()
'''
BASE_RPC_API_VERSION = '1.0'
@@ -348,15 +349,24 @@ class EngineClient(object):
self.make_msg('abandon_stack',
stack_identity=stack_identity))
- def list_resource_types(self, ctxt, support_status=None):
+ def list_resource_types(self,
+ ctxt,
+ support_status=None,
+ type_name=None,
+ heat_version=None):
"""
Get a list of valid resource types.
:param ctxt: RPC context.
+ :param support_status: Support status of resource type
+ :param type_name: Resource type's name (regular expression allowed)
+ :param version: Heat version
"""
return self.call(ctxt, self.make_msg('list_resource_types',
- support_status=support_status),
- version='1.1')
+ support_status=support_status,
+ type_name=type_name,
+ heat_version=heat_version),
+ version='1.16')
def list_template_versions(self, ctxt):
"""
diff --git a/heat/tests/api/openstack_v1/test_stacks.py b/heat/tests/api/openstack_v1/test_stacks.py
index 0cc499c64..54a7949e0 100644
--- a/heat/tests/api/openstack_v1/test_stacks.py
+++ b/heat/tests/api/openstack_v1/test_stacks.py
@@ -2024,8 +2024,14 @@ class StackControllerTest(tools.ControllerTest, common.HeatTestCase):
self.m.StubOutWithMock(rpc_client.EngineClient, 'call')
rpc_client.EngineClient.call(
- req.context, ('list_resource_types', {'support_status': None}),
- version="1.1"
+ req.context,
+ ('list_resource_types',
+ {
+ 'support_status': None,
+ 'type_name': None,
+ 'heat_version': None
+ }),
+ version="1.16"
).AndReturn(engine_response)
self.m.ReplayAll()
response = self.controller.list_resource_types(req,
@@ -2042,8 +2048,12 @@ class StackControllerTest(tools.ControllerTest, common.HeatTestCase):
rpc_client.EngineClient.call(
req.context,
('list_resource_types',
- {'support_status': None},
- ), version="1.1"
+ {
+ 'support_status': None,
+ 'type_name': None,
+ 'heat_version': None
+ }),
+ version="1.16"
).AndRaise(tools.to_remote_error(error))
self.m.ReplayAll()
diff --git a/heat/tests/engine/service/test_service_engine.py b/heat/tests/engine/service/test_service_engine.py
index c1e9edaac..fb586736d 100644
--- a/heat/tests/engine/service/test_service_engine.py
+++ b/heat/tests/engine/service/test_service_engine.py
@@ -39,7 +39,7 @@ class ServiceEngineTest(common.HeatTestCase):
def test_make_sure_rpc_version(self):
self.assertEqual(
- '1.15',
+ '1.16',
service.EngineService.RPC_API_VERSION,
('RPC version is changed, please update this test to new version '
'and make sure additional test cases are added for RPC APIs '
diff --git a/heat/tests/test_rpc_client.py b/heat/tests/test_rpc_client.py
index 2bad6dba5..9bb5879b4 100644
--- a/heat/tests/test_rpc_client.py
+++ b/heat/tests/test_rpc_client.py
@@ -201,8 +201,12 @@ class EngineRpcAPITestCase(common.HeatTestCase):
params={u'Egg': u'spam'})
def test_list_resource_types(self):
- self._test_engine_api('list_resource_types', 'call',
- support_status=None, version='1.1')
+ self._test_engine_api('list_resource_types',
+ 'call',
+ support_status=None,
+ type_name=None,
+ heat_version=None,
+ version='1.16')
def test_resource_schema(self):
self._test_engine_api('resource_schema', 'call', type_name="TYPE")