in source/aws/services/cloudformation.py [0:0]
def update_stack_set(self, stack_set_name, parameter, template_url,
capabilities):
try:
parameters = []
param_dict = {}
for key, value in parameter.items():
"""This condition checks if the value is a List and convert
it into a Comma-delimited string. Note: Remember to change
the parameter type from 'List<AWS::EC2::*::*>' (Supported
AWS-Specific Parameter Types) to 'CommaDelimitedList' in the
template."""
if type(value) == list:
value = ",".join(map(str, value))
param_dict['ParameterKey'] = key
param_dict['ParameterValue'] = value
parameters.append(param_dict.copy())
response = self.cfn_client.update_stack_set(
StackSetName=stack_set_name,
TemplateURL=template_url,
Parameters=parameters,
Capabilities=json.loads(capabilities),
AdministrationRoleARN=os.environ.get(
'ADMINISTRATION_ROLE_ARN'),
ExecutionRoleName=os.environ.get('EXECUTION_ROLE_NAME'),
OperationPreferences={
'FailureTolerancePercentage': self.failed_tolerance_percent,
'MaxConcurrentPercentage': self.max_concurrent_percent,
'RegionConcurrencyType': self.region_concurrency_type
}
)
return response
except ClientError as e:
if e.response['Error']['Code'] == 'OperationInProgressException':
self.logger.info(self.operation_in_progress_except_msg)
return {"OperationId": "OperationInProgressException"}
else:
self.logger.log_unhandled_exception(e)
raise