in source/state_machine_handler.py [0:0]
def create_stack_instances(self):
self.logger.info("Executing: " + self.__class__.__name__ + "/"
+ inspect.stack()[0][3])
self.logger.info(self.params)
# Create stack instances
stack_set = StackSet(self.logger)
# set to default values (new instance creation)
account_list = self.params.get('AccountList')
region_list = self.params.get('RegionList')
# if AddAccountList is not empty
if self.event.get('AddAccountList') is not None and len(self.event.get('AddAccountList')) != 0:
account_list = self.event.get('AddAccountList')
# if AddRegionList is not empty
if self.event.get('AddRegionList') is not None and len(self.event.get('AddRegionList')) != 0:
region_list = self.event.get('AddRegionList')
# both AddAccountList and AddRegionList are not empty
if self.event.get('LoopFlag') == 'yes':
# create new stack instance in new account only with
# all regions. new stack instances in new region
# for existing accounts will be deployed in the second round
if self.event.get('ActiveAccountList') is not None:
if self.event.get('ActiveAccountList') \
== self.event.get('AddAccountList'):
account_list = \
self._add_list(self.params.get('AccountList'),
self.event.get('ActiveAccountList'))
else:
account_list = self.event.get('AddAccountList')
region_list = self.params.get('RegionList')
self.event.update({'ActiveAccountList': account_list})
self.event.update({'ActiveRegionList': region_list})
self.logger.info("LoopFlag: {}".format(self.event.get('LoopFlag')))
self.logger.info("Create stack instances for accounts: {}"
.format(account_list))
self.logger.info("Create stack instances in regions: {}"
.format(region_list))
self.logger.info("Creating StackSet Instance: {}".format(
self.params.get('StackSetName')))
if 'ParameterOverrides' in self.params:
self.logger.info(
"Found 'ParameterOverrides' key in the event.")
parameters = self._get_ssm_secure_string(
self.params.get('ParameterOverrides'))
response = stack_set. \
create_stack_instances_with_override_params(
self.params.get('StackSetName'),
account_list,
region_list,
parameters)
else:
response = stack_set.create_stack_instances(
self.params.get('StackSetName'),
account_list,
region_list)
self.logger.info(response)
self.logger.info("Operation ID: {}"
.format(response.get('OperationId')))
self.event.update({'OperationId': response.get('OperationId')})
return self.event