in servicecatalog_factory/commands/portfolios.py [0:0]
def fix_issues_for_portfolio(p):
click.echo("Fixing issues for portfolios")
for portfolio_file_name in os.listdir(p):
if ".yaml" in portfolio_file_name:
p_name = portfolio_file_name.split(".")[0]
portfolios = generate_portfolios(os.path.sep.join([p, portfolio_file_name]))
for portfolio in portfolios.get("Portfolios", []):
for component in portfolio.get("Components", []):
for version in component.get("Versions", []):
stack_name = "-".join(
[
p_name,
portfolio.get("DisplayName"),
component.get("Name"),
version.get("Name"),
]
)
logger.info("looking at stack: {}".format(stack_name))
with betterboto_client.ClientContextManager(
"cloudformation"
) as cloudformation:
response = {"Stacks": []}
try:
response = cloudformation.describe_stacks(
StackName=stack_name
)
except cloudformation.exceptions.ClientError as e:
if "Stack with id {} does not exist".format(
stack_name
) in str(e):
click.echo(
"There is no pipeline for: {}".format(
stack_name
)
)
else:
raise e
for stack in response.get("Stacks"):
if stack.get("StackStatus") == "ROLLBACK_COMPLETE":
if click.confirm(
'Found a stack: {} in status: "ROLLBACK_COMPLETE". '
"Should it be deleted?".format(stack_name)
):
cloudformation.delete_stack(
StackName=stack_name
)
waiter = cloudformation.get_waiter(
"stack_delete_complete"
)
waiter.wait(StackName=stack_name)
click.echo("Finished fixing issues for portfolios")