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")