def create_stack_instances()

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