it is in the correct format.
Usage: heat validate \\
- [--template-file=<template file>|--template-url=<template URL>]
+ [--template-file=<template file>|--template-url=<template URL>] \\
+ [options]
--template-file: Specify a local template file.
--template-url: Specify a URL pointing to a stack description template.
logging.error('Please specify a template file or url')
return utils.FAILURE
+ if options.parameters:
+ count = 1
+ for p in options.parameters.split(';'):
+ (n, v) = p.split('=')
+ parameters['Parameters.member.%d.ParameterKey' % count] = n
+ parameters['Parameters.member.%d.ParameterValue' % count] = v
+ count = count + 1
+
client = get_client(options)
result = client.validate_template(**parameters)
print json.dumps(result, indent=2)
logger.info('validate_template')
try:
- return con.validate_template(stack, **req.params)
+ return rpc.call(con, 'engine',
+ {'method': 'validate_template',
+ 'args': {'template': stack,
+ 'params': dict(req.params)}})
except rpc_common.RemoteError as ex:
return webob.exc.HTTPBadRequest(str(ex))
{'method': 'delete_stack',
'args': {'stack_name': req.params['StackName'],
'params': dict(req.params)}})
+
except rpc_common.RemoteError as ex:
return webob.exc.HTTPBadRequest(str(ex))
self.instance_id_set(ips.id)
self.state_set(self.CREATE_COMPLETE)
+ def validate(self):
+ '''
+ Validate the ip address here
+ '''
+ return None
+
def reload(self):
'''
get the ipaddress here
else:
self.state_set(self.CREATE_FAILED)
+ def validate(self):
+ '''
+ Validate the server's ip address
+ '''
+ return None
+
def reload(self):
'''
re-read the server's ipaddress so FnGetAtt works.
return {'stack': {'id': new_s.id, 'name': new_s.name,\
'created_at': str(new_s.created_at)}}
- def validate_template(self, req, body=None):
+ def validate_template(self, context, template, params):
"""
The validate_template method uses the stack parser to check
the validity of a template.
- arg1 -> http request params.
- arg2 -> Template body.
+ arg1 -> RPC context.
+ arg3 -> Template of stack you want to create.
+ arg4 -> Params passed from API.
"""
logger.info('validate_template')
- if body is None:
+ if template is None:
msg = _("No Template provided.")
return webob.exc.HTTPBadRequest(explanation=msg)
- s = parser.Stack('validate', body, 0, req.params)
+ s = parser.Stack('validate', template, 0, params)
res = s.validate()
return res
http://docs.amazonwebservices.com/AWSCloudFormation/latest/ \
APIReference/API_ValidateTemplate.html
'''
- response = {'ValidateTemplateResult': {
- 'Description': 'bla',
- 'Parameters': []}}
+ order = self.get_create_order()
+
+ response = None
+
+ for r in order:
+ try:
+ res = self.resources[r].validate()
+ if res:
+ print 'setting response'
+ response = {'ValidateTemplateResult': {
+ 'Description': 'Malformed Query Response [%s]' % res,
+ 'Parameters': []}}
+ break
+ except Exception as ex:
+ logger.exception('validate')
+ failed = True
+
+ if response == None:
+ response = {'ValidateTemplateResult': {
+ 'Description': 'Successfully validated',
+ 'Parameters': []}}
for p in self.parms:
jp = {'member': {}}
res = jp['member']
self.stack.resolve_joins(self.t)
self.stack.resolve_base64(self.t)
+ def validate(self):
+ logger.info('validating %s name:%s' % (self.t['Type'], self.name))
+
+ self.stack.resolve_attributes(self.t)
+ self.stack.resolve_joins(self.t)
+ self.stack.resolve_base64(self.t)
+
def instance_id_set(self, inst):
self.instance_id = inst
self.state_set(self.CREATE_COMPLETE)
+ def validate(self):
+ '''
+ Validate the security group
+ '''
+ return None
+
def delete(self):
if self.state == self.DELETE_IN_PROGRESS or \
self.state == self.DELETE_COMPLETE:
else:
self.state_set(self.CREATE_FAILED)
+ def validate(self):
+ '''
+ Validate the volume
+ '''
+ return None
+
def delete(self):
if self.state == self.DELETE_IN_PROGRESS or \
self.state == self.DELETE_COMPLETE:
self.state_set(self.CREATE_COMPLETE)
+ def validate(self):
+ '''
+ Validate the wait condition
+ '''
+ return None
+
def delete(self):
if self.state == self.DELETE_IN_PROGRESS or \
self.state == self.DELETE_COMPLETE: