Source code for runway.cfngin.actions.info

"""CFNgin info action."""
import logging
from typing import Any

from .. import exceptions
from .base import BaseAction

LOGGER = logging.getLogger(__name__)


[docs]class Action(BaseAction): """Get information on CloudFormation stacks. Displays the outputs for the set of CloudFormation stacks. """ NAME = "info" @property def _stack_action(self) -> Any: """Run against a step.""" return None
[docs] def run(self, *_args: Any, **_kwargs: Any) -> None: """Get information on CloudFormation stacks.""" LOGGER.info("outputs for stacks: %s", self.context.get_fqn()) if not self.context.stacks: LOGGER.warning("no stacks detected (error in config?)") for stack in self.context.stacks: provider = self.build_provider() try: provider_stack = provider.get_stack(stack.fqn) except exceptions.StackDoesNotExist: LOGGER.info("%s:stack does not exist", stack.fqn) continue LOGGER.info("%s:", stack.fqn) if "Outputs" in provider_stack: for output in provider_stack["Outputs"]: LOGGER.info( "\t%s: %s", output.get("OutputKey"), output.get("OutputValue") )