diff options
author | Kanagaraj Manickam <kanagaraj.manickam@hp.com> | 2015-08-27 17:55:46 +0530 |
---|---|---|
committer | Kanagaraj Manickam <kanagaraj.manickam@hp.com> | 2015-09-03 09:55:47 +0530 |
commit | fdd163b28966e327f39f823c2938a5e902e15018 (patch) | |
tree | 5ea5c4249107a3764c2691f50e2dd78d30d2a690 | |
parent | 7153d99f6c89abcfa25fa477fe0798ff4a0d810d (diff) | |
download | heat-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.py | 7 | ||||
-rw-r--r-- | heat/engine/environment.py | 11 | ||||
-rw-r--r-- | heat/engine/service.py | 16 | ||||
-rw-r--r-- | heat/rpc/client.py | 16 | ||||
-rw-r--r-- | heat/tests/api/openstack_v1/test_stacks.py | 18 | ||||
-rw-r--r-- | heat/tests/engine/service/test_service_engine.py | 2 | ||||
-rw-r--r-- | heat/tests/test_rpc_client.py | 8 |
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") |