Source code for infrahouse_toolkit.cli.ih_secrets.cmd_list

"""
.. topic:: ``ih-secrets list``

    A ``ih-secrets list`` subcommand.

    See ``ih-secrets list`` for more details.
"""

import sys
from logging import getLogger
from operator import itemgetter
from pprint import pformat

import click
from botocore.exceptions import ClientError
from tabulate import tabulate

LOG = getLogger(__name__)


[docs]def list_secrets(secretsmanager_client, all_fields=False): """ Print a summary about EC2 instances in a region. """ secrets = [] fields = ["Name", "Description"] if all_fields: fields.extend(["ARN", "CreatedDate", "LastAccessedDate", "LastChangedDate", "SecretVersionsToStages"]) next_token = None while True: kwargs = {"NextToken": next_token} if next_token else {} response = secretsmanager_client.list_secrets(**kwargs) LOG.debug("list_secrets() = %s", pformat(response, indent=4)) ## nosem for secret in response["SecretList"]: row = [] for field in fields: row.append(secret.get(field)) secrets.append(row) next_token = response.get("NextToken") if next_token is None: break print(tabulate(sorted(secrets, key=itemgetter(0)), headers=fields, tablefmt="outline"))
@click.command(name="list") @click.option("--all", help="Show all secret properties.", is_flag=True, default=False, show_default=True) @click.pass_context def cmd_list(ctx, **kwargs): """ List created EC2 instances. """ secretsmanager_client = ctx.obj["secretsmanager_client"] aws_config = ctx.obj["aws_config"] try: list_secrets(secretsmanager_client, kwargs["all"]) except ClientError as err: LOG.exception(err) LOG.error("Try to run ih-secrets with --aws-profile option.") LOG.error("Available profiles:\n\t%s", "\n\t".join(aws_config.profiles)) sys.exit(1)