def validate(self): ''' Validate that a parameter belongs to only one Parameter Group and that each parameter name references a valid parameter. ''' LOG.debug('Validating Parameter Groups.') LOG.debug(self.parameter_names) if self.parameter_groups is not None: #Loop through groups and validate parameters grouped_parameters = [] for group in self.parameter_groups: parameters = group.get(PARAMETERS) if parameters is None: raise StackValidationFailed( message=_('Parameters must be provided for ' 'each Parameter Group.')) for param in parameters: #Check if param has been added to a previous group if param in grouped_parameters: raise StackValidationFailed(message=_( 'The %s parameter must be assigned to one ' 'Parameter Group only.') % param) else: grouped_parameters.append(param) #Check that grouped parameter references a valid Parameter if param not in self.parameter_names: raise StackValidationFailed(message=_( 'The Parameter name (%s) does not reference ' 'an existing parameter.') % param)
def validate(self): ''' http://docs.amazonwebservices.com/AWSCloudFormation/latest/\ APIReference/API_ValidateTemplate.html ''' # TODO(sdake) Should return line number of invalid reference # Check duplicate names between parameters and resources dup_names = set(self.parameters.keys()) & set(self.resources.keys()) if dup_names: logger.debug("Duplicate names %s" % dup_names) raise StackValidationFailed(message="Duplicate names %s" % dup_names) for res in self: try: result = res.validate() except ServerError as ex: logger.exception(ex) raise ex except Exception as ex: logger.exception(ex) raise StackValidationFailed(message=str(ex)) if result: raise StackValidationFailed(message=result)
def validate(self): ''' Validates the template. ''' # TODO(sdake) Should return line number of invalid reference # Validate Parameter Groups parameter_groups = ParameterGroups(self.t) parameter_groups.validate() # Check duplicate names between parameters and resources dup_names = set(self.parameters.keys()) & set(self.keys()) if dup_names: logger.debug(_("Duplicate names %s") % dup_names) raise StackValidationFailed(message=_("Duplicate names %s") % dup_names) for res in self.dependencies: try: result = res.validate() except exception.Error as ex: logger.exception(ex) raise ex except Exception as ex: logger.exception(ex) raise StackValidationFailed( message=strutils.safe_decode(six.text_type(ex))) if result: raise StackValidationFailed(message=result)
def validate(self): ''' http://docs.amazonwebservices.com/AWSCloudFormation/latest/\ APIReference/API_ValidateTemplate.html ''' # TODO(sdake) Should return line number of invalid reference for res in self: try: result = res.validate() except Exception as ex: logger.exception(ex) raise StackValidationFailed(message=str(ex)) if result: raise StackValidationFailed(message=result)
def validate(self): ''' Validates the template. ''' # TODO(sdake) Should return line number of invalid reference # validate overall template (top-level structure) self.t.validate() # Validate parameters self.parameters.validate(context=self.context) # Validate Parameter Groups parameter_groups = ParameterGroups(self.t) parameter_groups.validate() # Check duplicate names between parameters and resources dup_names = set(self.parameters.keys()) & set(self.keys()) if dup_names: LOG.debug("Duplicate names %s" % dup_names) raise StackValidationFailed(message=_("Duplicate names %s") % dup_names) for res in self.dependencies: try: result = res.validate() except exception.HeatException as ex: LOG.info(ex) raise ex except Exception as ex: LOG.exception(ex) raise StackValidationFailed( message=encodeutils.safe_decode(six.text_type(ex))) if result: raise StackValidationFailed(message=result) for val in self.outputs.values(): snippet = val.get('Value', '') try: function.validate(snippet) except Exception as ex: reason = 'Output validation error: %s' % six.text_type(ex) raise StackValidationFailed(message=reason)