Merge "Wire in files to template validate"

This commit is contained in:
Jenkins 2015-09-18 11:31:37 +00:00 committed by Gerrit Code Review
commit 6a18429ead
7 changed files with 24 additions and 11 deletions

View File

@ -537,7 +537,8 @@ class StackController(object):
result = self.rpc_client.validate_template(req.context, result = self.rpc_client.validate_template(req.context,
data.template(), data.template(),
data.environment()) data.environment(),
files=data.files())
if 'Error' in result: if 'Error' in result:
raise exc.HTTPBadRequest(result['Error']) raise exc.HTTPBadRequest(result['Error'])

View File

@ -273,7 +273,7 @@ class EngineService(service.Service):
by the RPC caller. by the RPC caller.
""" """
RPC_API_VERSION = '1.16' RPC_API_VERSION = '1.17'
def __init__(self, host, topic): def __init__(self, host, topic):
super(EngineService, self).__init__() super(EngineService, self).__init__()
@ -958,7 +958,7 @@ class EngineService(service.Service):
engine_id=engine_id) engine_id=engine_id)
@context.request_context @context.request_context
def validate_template(self, cnxt, template, params=None): def validate_template(self, cnxt, template, params=None, files=None):
""" """
The validate_template method uses the stack parser to check The validate_template method uses the stack parser to check
the validity of a template. the validity of a template.
@ -966,13 +966,14 @@ class EngineService(service.Service):
:param cnxt: RPC context. :param cnxt: RPC context.
:param template: Template of stack you want to create. :param template: Template of stack you want to create.
:param params: Stack Input Params :param params: Stack Input Params
:param files: Files referenced from the template
""" """
LOG.info(_LI('validate_template')) LOG.info(_LI('validate_template'))
if template is None: if template is None:
msg = _("No Template provided.") msg = _("No Template provided.")
return webob.exc.HTTPBadRequest(explanation=msg) return webob.exc.HTTPBadRequest(explanation=msg)
tmpl = templatem.Template(template) tmpl = templatem.Template(template, files=files)
# validate overall template # validate overall template
try: try:

View File

@ -37,6 +37,7 @@ class EngineClient(object):
1.14 - Add cancel_with_rollback option to stack_cancel_update 1.14 - Add cancel_with_rollback option to stack_cancel_update
1.15 - Add preview_update_stack() call 1.15 - Add preview_update_stack() call
1.16 - Adds version, type_name to list_resource_types() 1.16 - Adds version, type_name to list_resource_types()
1.17 - Add files to validate_template
''' '''
BASE_RPC_API_VERSION = '1.0' BASE_RPC_API_VERSION = '1.0'
@ -292,7 +293,7 @@ class EngineClient(object):
), ),
version='1.15') version='1.15')
def validate_template(self, ctxt, template, params=None): def validate_template(self, ctxt, template, params=None, files=None):
""" """
The validate_template method uses the stack parser to check The validate_template method uses the stack parser to check
the validity of a template. the validity of a template.
@ -300,10 +301,13 @@ class EngineClient(object):
:param ctxt: RPC context. :param ctxt: RPC context.
:param template: Template of stack you want to create. :param template: Template of stack you want to create.
:param params: Stack Input Params/Environment :param params: Stack Input Params/Environment
:param files: files referenced from the environment/template.
""" """
return self.call(ctxt, self.make_msg('validate_template', return self.call(ctxt, self.make_msg('validate_template',
template=template, template=template,
params=params)) params=params,
files=files),
version='1.17')
def authenticated_to_backend(self, ctxt): def authenticated_to_backend(self, ctxt):
""" """

View File

@ -1073,7 +1073,9 @@ class CfnStackControllerTest(common.HeatTestCase):
self.m.StubOutWithMock(rpc_client.EngineClient, 'call') self.m.StubOutWithMock(rpc_client.EngineClient, 'call')
rpc_client.EngineClient.call( rpc_client.EngineClient.call(
dummy_req.context, dummy_req.context,
('validate_template', {'template': json_template, 'params': None}) ('validate_template', {'template': json_template, 'params': None,
'files': None}),
version='1.17'
).AndReturn(response) ).AndReturn(response)
self.m.ReplayAll() self.m.ReplayAll()

View File

@ -2058,7 +2058,9 @@ class StackControllerTest(tools.ControllerTest, common.HeatTestCase):
'params': {'parameters': {}, 'params': {'parameters': {},
'encrypted_param_names': [], 'encrypted_param_names': [],
'parameter_defaults': {}, 'parameter_defaults': {},
'resource_registry': {}}}) 'resource_registry': {}},
'files': {}}),
version='1.17'
).AndReturn(engine_response) ).AndReturn(engine_response)
self.m.ReplayAll() self.m.ReplayAll()
@ -2083,7 +2085,9 @@ class StackControllerTest(tools.ControllerTest, common.HeatTestCase):
'params': {'parameters': {}, 'params': {'parameters': {},
'encrypted_param_names': [], 'encrypted_param_names': [],
'parameter_defaults': {}, 'parameter_defaults': {},
'resource_registry': {}}}) 'resource_registry': {}},
'files': {}}),
version='1.17'
).AndReturn({'Error': 'fubar'}) ).AndReturn({'Error': 'fubar'})
self.m.ReplayAll() self.m.ReplayAll()

View File

@ -39,7 +39,7 @@ class ServiceEngineTest(common.HeatTestCase):
def test_make_sure_rpc_version(self): def test_make_sure_rpc_version(self):
self.assertEqual( self.assertEqual(
'1.16', '1.17',
service.EngineService.RPC_API_VERSION, service.EngineService.RPC_API_VERSION,
('RPC version is changed, please update this test to new version ' ('RPC version is changed, please update this test to new version '
'and make sure additional test cases are added for RPC APIs ' 'and make sure additional test cases are added for RPC APIs '

View File

@ -198,7 +198,8 @@ class EngineRpcAPITestCase(common.HeatTestCase):
def test_validate_template(self): def test_validate_template(self):
self._test_engine_api('validate_template', 'call', self._test_engine_api('validate_template', 'call',
template={u'Foo': u'bar'}, template={u'Foo': u'bar'},
params={u'Egg': u'spam'}) params={u'Egg': u'spam'},
files=None)
def test_list_resource_types(self): def test_list_resource_types(self):
self._test_engine_api('list_resource_types', self._test_engine_api('list_resource_types',