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
This commit is contained in:
Kanagaraj Manickam 2015-08-27 17:55:46 +05:30
parent 7153d99f6c
commit fdd163b289
7 changed files with 62 additions and 16 deletions

View File

@ -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):

View File

@ -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):

View File

@ -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()

View File

@ -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):
"""

View File

@ -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()

View File

@ -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 '

View File

@ -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")