Handle integer param values that are calculated values

Fixes #7828
reviewable/pr18780/r1
James Cammarata 11 years ago
parent abe3655cec
commit 46ba655cfa

@ -159,10 +159,15 @@ def set_parameter(param, value, immediate):
elif param.type == 'integer': elif param.type == 'integer':
if isinstance(value, basestring): if isinstance(value, basestring):
try:
for modifier in INT_MODIFIERS.keys(): for modifier in INT_MODIFIERS.keys():
if value.endswith(modifier): if value.endswith(modifier):
converted_value = int(value[:-1]) * INT_MODIFIERS[modifier] converted_value = int(value[:-1]) * INT_MODIFIERS[modifier]
converted_value = int(converted_value) converted_value = int(converted_value)
except ValueError:
# may be based on a variable (ie. {foo*3/4}) so
# just pass it on through to boto
converted_value = str(value)
elif type(value) == bool: elif type(value) == bool:
converted_value = 1 if value else 0 converted_value = 1 if value else 0
else: else:
@ -190,7 +195,16 @@ def modify_group(group, params, immediate=False):
param = group[key] param = group[key]
new_value = new_params[key] new_value = new_params[key]
if param.value != new_value: try:
old_value = param.value
except ValueError:
# some versions of boto have problems with retrieving
# integer values from params that may have their value
# based on a variable (ie. {foo*3/4}), so grab it in a
# way that bypasses the property functions
old_value = param._value
if old_value != new_value:
if not param.is_modifiable: if not param.is_modifiable:
raise NotModifiableError('Parameter %s is not modifiable.' % key) raise NotModifiableError('Parameter %s is not modifiable.' % key)

Loading…
Cancel
Save