in servicecatalog_factory/workflow/portfolios/create_combined_product_pipeline_template_task.py [0:0]
def run(self):
product_ids_by_region = {}
friendly_uid = None
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")
provisioner_type = self.product.get("Provisioner", {}).get(
"Type", constants.PROVISIONERS_DEFAULT
)
template_format = self.product.get("Provisioner", {}).get(
"Format", constants.TEMPLATE_FORMATS_DEFAULT
)
versions = list()
for version in self.product.get("Versions"):
if (
version.get("Status", constants.STATUS_DEFAULT)
== constants.STATUS_ACTIVE
):
versions.append(version)
if provisioner_type == constants.PROVISIONERS_CLOUDFORMATION:
template = utils.ENV.get_template(constants.PRODUCT_COMBINED_CLOUDFORMATION)
rendered = template.render(
friendly_uid=friendly_uid,
product=self.product,
template_format=template_format,
Options=self.product.get("Options", {}),
Versions=versions,
ALL_REGIONS=self.all_regions,
product_ids_by_region=product_ids_by_region,
FACTORY_VERSION=self.factory_version,
VERSION=config.get_stack_version(),
tags=self.product.get("Tags"),
)
rendered = jinja2.Template(rendered).render(
friendly_uid=friendly_uid,
product=self.product,
Options=self.product.get("Options", {}),
Versions=versions,
ALL_REGIONS=self.all_regions,
product_ids_by_region=product_ids_by_region,
)
else:
raise Exception(f"Unknown/unsupported provisioner type: {provisioner_type}")
self.write_output_raw(rendered)