in control-tower-account-factory/src/handler.py [0:0]
def __provision_product(self, product):
"""provision product to new account"""
self._log_info(f'Provisioning product {product["product_name"]} - Provision Name: {product["provision_name"]}')
try:
if 'parameters' in product:
parameters = self.__process_paramters(product['parameters'])
self.sc_client.provision_product(
ProductId=product['id'],
ProvisioningArtifactId=product['artifact'],
ProvisionedProductName=product["provision_name"],
ProvisioningParameters=parameters,
ProvisioningPreferences={
'StackSetAccounts': [
self.destination_account
],
'StackSetRegions': product['regions']
}
)
else:
self.sc_client.provision_product(
ProductId=product['id'],
ProvisioningArtifactId=product['artifact'],
ProvisionedProductName=product["provision_name"],
ProvisioningPreferences={
'StackSetAccounts': [
self.destination_account
],
'StackSetRegions': product['regions']
}
)
self._log_info(f'Provision {product["provision_name"]} started')
self._track_deployment(product, 'deployment', 'in-progress')
return True
except ClientError as error:
self._log_error(f'Error provision product {product["product_name"]}: {error.response["Error"]}')
self._send_notification('Error provision product', f'Error provision product {product["product_name"]}: {error.response["Error"]}')
self._track_deployment(product, 'deployment', 'failed')
return False