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