def run()

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)