Handle integer param values that are calculated values

Fixes #7828
This commit is contained in:
James Cammarata 2014-06-19 00:04:04 -05:00
parent aac194e639
commit 853471f14d

View file

@ -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):
for modifier in INT_MODIFIERS.keys(): try:
if value.endswith(modifier): for modifier in INT_MODIFIERS.keys():
converted_value = int(value[:-1]) * INT_MODIFIERS[modifier] if value.endswith(modifier):
converted_value = int(converted_value) converted_value = int(value[:-1]) * INT_MODIFIERS[modifier]
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)