def list_stacks()

in lambdas/custom_resources/CTE_CrossAccountCloudFormation/src/cfn_helper.py [0:0]


def list_stacks(session=None):
    """Gets a list of all CloudFormation stacks in the account

    http://boto3.readthedocs.io/en/latest/reference/services/cloudformation.html#CloudFormation.Client.list_stacks

    Args:
        session (object, optional): boto3 session object

    Returns:
        list of str: List of stack names in the account
    """
    stacks = []
    client = boto3_client(service='cloudformation', session=session)
    try:
        paginator = client.get_paginator("list_stacks")
        for page in paginator.paginate(
                StackStatusFilter=[
                    'CREATE_IN_PROGRESS',
                    'CREATE_FAILED',
                    'CREATE_COMPLETE',
                    'ROLLBACK_IN_PROGRESS',
                    'ROLLBACK_FAILED',
                    'ROLLBACK_COMPLETE',
                    'DELETE_IN_PROGRESS',
                    'DELETE_FAILED',
                    'UPDATE_IN_PROGRESS',
                    'UPDATE_COMPLETE_CLEANUP_IN_PROGRESS',
                    'UPDATE_COMPLETE',
                    'UPDATE_ROLLBACK_IN_PROGRESS',
                    'UPDATE_ROLLBACK_FAILED',
                    'UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS',
                    'UPDATE_ROLLBACK_COMPLETE',
                    'REVIEW_IN_PROGRESS'
                ]
        ):
            for x in page['StackSummaries']:
                stacks.append(x['StackName'])

    except Exception as e:
        raise ex.CloudFormationException(
            f"Failed to get list of cloudformation templates: {str(e)}"
        )

    return stacks