def validate_security_group_str(value, parameter_name, vpc_id=None): # NOTE(Alex) Amazon accepts any ASCII for EC2 classic; # for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$* if vpc_id: allowed = '^[a-zA-Z0-9\._\-:/\(\)#,@\[\]\+=&;\{\}!\$\*\ ]+$' else: allowed = r'^[\x20-\x7E]+$' msg = '' try: val = value.strip() except AttributeError: msg = (_("Security group %s is not a string or unicode") % parameter_name) if not val: msg = _("Security group %s cannot be empty.") % parameter_name elif allowed and not re.match(allowed, val): # Some validation to ensure that values match API spec. # - Alphanumeric characters, spaces, dashes, and underscores. # TODO(Daviey): LP: #813685 extend beyond group_name checking, and # probably create a param validator that can be used elsewhere. msg = (_("Specified value for parameter Group%(property)s is " "invalid. Content limited to '%(allowed)s'.") % {'allowed': 'allowed', 'property': parameter_name}) elif len(val) > 255: msg = _("Security group %s should not be greater " "than 255 characters.") % parameter_name if msg: raise exception.ValidationError(reason=msg) return True
def validate_str(val, parameter_name, max_length=None): if (isinstance(val, basestring) and (max_length is None or max_length and len(val) <= max_length)): return True raise exception.ValidationError( reason=_("%s should not be greater " "than 255 characters.") % parameter_name)
def validate_security_group_str(value, parameter_name, vpc_id=None): # NOTE(Alex) Amazon accepts any ASCII for EC2 classic; # for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$* if vpc_id: allowed = '^[a-zA-Z0-9\._\-:/\(\)#,@\[\]\+=&;\{\}!\$\*\ ]+$' else: allowed = r'^[\x20-\x7E]+$' msg = '' try: val = value.strip() except AttributeError: msg = (_("Security group %s is not a string or unicode") % parameter_name) if not val: msg = _("Security group %s cannot be empty.") % parameter_name elif not re.match(allowed, val): msg = (_("Specified value for parameter Group%(property)s is " "invalid. Content limited to '%(allowed)s'.") % { 'allowed': 'allowed', 'property': parameter_name }) elif len(val) > 255: msg = _("Security group %s should not be greater " "than 255 characters.") % parameter_name if msg: raise exception.ValidationError(reason=msg) return True
def validate_int(val, parameter_name): if isinstance(val, int): return True raise exception.ValidationError( reason=(_("Expected an integer value for parameter %s") % parameter_name))
def validate_bool(val, parameter_name): if isinstance(val, bool): return True raise exception.ValidationError( reason=_("Expected a boolean value for parameter %s") % parameter_name)