in servicecatalog_factory/workflow/portfolios/create_version_pipeline_template_task.py [0:0]
def run(self):
logger_prefix = f"{self.product.get('Name')}-{self.version.get('Name')}"
logger.info(f"{logger_prefix} - Getting product id")
product_ids_by_region = {}
friendly_uid = None
tags = [
{"Key": tag.get("Key"), "Value": tag.get("Value"),} for tag in self.tags
]
source = utils.merge(
self.product.get("Source", {}), self.version.get("Source", {})
)
for region, product_details_content in (
self.input().get("create_products_tasks").items()
):
product_details = json.loads(product_details_content.open("r").read())
product_ids_by_region[region] = product_details.get("ProductId")
friendly_uid = product_details.get("uid")
if self.template.get("Name"):
with self.client("s3") as s3:
s3.put_object(
Bucket=f"sc-factory-artifacts-{self.factory_account_id}-{self.factory_region}",
Key=f"{self.template.get('Name')}/{self.template.get('Version')}/{self.product.get('Name')}/product_ids.json",
Body=json.dumps(product_ids_by_region),
)
s3.put_object(
Bucket=f"sc-factory-artifacts-{self.factory_account_id}-{self.factory_region}",
Key=f"{self.template.get('Name')}/{self.template.get('Version')}/{self.product.get('Name')}/{self.version.get('Name')}/template.json",
Body=json.dumps(utils.unwrap(self.template)),
)
rendered = product_template_factory.get(
self.template.get("Name"), self.template.get("Version")
).render(
self.template,
self.product.get("Name"),
self.version.get("Name"),
self.version.get("Description", self.product.get("Description")),
source,
product_ids_by_region,
tags,
friendly_uid,
)
elif self.provisioner.get("Type") == "CloudFormation":
rendered = self.handle_cloudformation_provisioner(
product_ids_by_region, friendly_uid, tags, source
)
elif self.provisioner.get("Type") == "Terraform":
rendered = self.handle_terraform_provisioner(
product_ids_by_region, friendly_uid, tags, source
)
else:
raise Exception(f"Unknown type: {self.type}")
with self.output().open("w") as output_file:
output_file.write(rendered)