def nuke_product_version()

in servicecatalog_factory/commands/portfolios.py [0:0]


def nuke_product_version(portfolio_name, product, version):
    click.echo("Nuking service catalog traces")
    with betterboto_client.ClientContextManager("servicecatalog") as servicecatalog:
        response = servicecatalog.list_portfolios_single_page()
        portfolio_id = None
        for portfolio_detail in response.get("PortfolioDetails"):
            if portfolio_detail.get("DisplayName") == portfolio_name:
                portfolio_id = portfolio_detail.get("Id")
                break
        if portfolio_id is None:
            raise Exception("Could not find your portfolio: {}".format(portfolio_name))
        else:
            logger.info("Portfolio_id found: {}".format(portfolio_id))
            product_name = "-".join([product, version])
            logger.info("Looking for product: {}".format(product_name))
            result = aws.get_product(servicecatalog, product)
            if result is not None:
                product_id = result.get("ProductId")
                logger.info("p: {}".format(product_id))

                logger.info("Looking for version: {}".format(version))
                response = servicecatalog.list_provisioning_artifacts(
                    ProductId=product_id,
                )

                version_id = None
                for provisioning_artifact_detail in response.get(
                    "ProvisioningArtifactDetails"
                ):
                    if provisioning_artifact_detail.get("Name") == version:
                        version_id = provisioning_artifact_detail.get("Id")
                if version_id is None:
                    click.echo("Could not find version: {}".format(version))
                else:
                    logger.info("Found version: {}".format(version_id))
                    logger.info("Deleting version: {}".format(version_id))
                    servicecatalog.delete_provisioning_artifact(
                        ProductId=product_id, ProvisioningArtifactId=version_id
                    )
                    click.echo("Deleted version: {}".format(version_id))
    click.echo("Finished nuking service catalog traces")

    click.echo("Nuking pipeline traces")
    with betterboto_client.ClientContextManager("cloudformation") as cloudformation:
        cloudformation.ensure_deleted(
            StackName="-".join([portfolio_name, product, version])
        )

    click.echo("Finished nuking pipeline traces")