Always convert AllowedValues to a list
Passing e.g. a string as the AllowedValues list can appear to work, since str.__contains__() performs a substring match. It's better to fail fast, so convert AllowedValues to a list regardless of its initial type. Change-Id: I74783e6a7c1743ead3f086116dd3850afeb7a028
This commit is contained in:
parent
08e04e6733
commit
096c08cdc0
@ -87,7 +87,7 @@ class Parameter(object):
|
||||
|
||||
def _validate(self, value):
|
||||
if VALUES in self.schema:
|
||||
allowed = self.schema[VALUES]
|
||||
allowed = list(self.schema[VALUES])
|
||||
if value not in allowed:
|
||||
message = '%s not in %s %s' % (value, VALUES, allowed)
|
||||
raise ValueError(self._error_msg(message))
|
||||
@ -253,7 +253,7 @@ class JsonParam(Parameter, collections.Mapping):
|
||||
raise ValueError(self._error_msg(message))
|
||||
# check valid keys
|
||||
if VALUES in self.schema:
|
||||
allowed = self.schema[VALUES]
|
||||
allowed = list(self.schema[VALUES])
|
||||
bad_keys = [k for k in self.parsed if k not in allowed]
|
||||
if bad_keys:
|
||||
message = ('keys %s are not in %s %s'
|
||||
|
@ -21,7 +21,8 @@ from heat.common import exception
|
||||
|
||||
SCHEMA_KEYS = (
|
||||
REQUIRED, IMPLEMENTED, DEFAULT, TYPE, SCHEMA,
|
||||
PATTERN, MIN_VALUE, MAX_VALUE, VALUES, MIN_LENGTH, MAX_LENGTH,
|
||||
PATTERN, MIN_VALUE, MAX_VALUE, VALUES,
|
||||
MIN_LENGTH, MAX_LENGTH,
|
||||
) = (
|
||||
'Required', 'Implemented', 'Default', 'Type', 'Schema',
|
||||
'AllowedPattern', 'MinValue', 'MaxValue', 'AllowedValues',
|
||||
@ -67,7 +68,7 @@ class Property(object):
|
||||
|
||||
def _check_allowed(self, value):
|
||||
if VALUES in self.schema:
|
||||
allowed = self.schema[VALUES]
|
||||
allowed = list(self.schema[VALUES])
|
||||
if value not in allowed:
|
||||
raise ValueError('"%s" is not an allowed value %s' %
|
||||
(value, str(allowed)))
|
||||
|
Loading…
Reference in New Issue
Block a user