def __update_product()

in control-tower-account-factory/src/handler.py [0:0]


    def __update_product(self, product):
        """update product"""

        self._log_info(f'Update product {product["product_name"]} - Provision Name: {product["provision_name"]}')
        try:
            if 'parameters' in product:
                parameters = self.__process_paramters(product['parameters'])

                self.sc_client.update_provisioned_product(
                    ProvisionedProductId=product['provision_id'],
                    ProductId=product['id'],
                    ProvisioningArtifactId=product['artifact'],
                    ProvisioningParameters=parameters,
                    ProvisioningPreferences={
                        'StackSetAccounts': [
                            self.destination_account
                        ],
                        'StackSetRegions': product['regions'],
                        'StackSetOperationType': 'UPDATE'
                    }
                )
            else:
                self.sc_client.update_provisioned_product(
                    ProvisionedProductId=product['provision_id'],
                    ProductId=product['id'],
                    ProvisioningArtifactId=product['artifact'],
                    ProvisioningPreferences={
                        'StackSetAccounts': [
                            self.destination_account
                        ],
                        'StackSetRegions': product['regions'],
                        'StackSetOperationType': 'UPDATE'
                    }
                )
            self._log_info(f'Update {product["provision_name"]} started')
            self._track_deployment(product, 'update', 'in-progress')
            return True
        except ClientError as error:
            self._log_error(f'Error update product {product["product_name"]}: {error.response["Error"]}')
            self._send_notification('Error update product', f'Error provision product {product["product_name"]}: {error.response["Error"]}')
            self._track_deployment(product, 'update', 'failed')
            return False