Source code for runway.cfngin.lookups.handlers.default

"""Lookup to provide a default value."""
# pylint: disable=arguments-differ,unused-argument
from runway.lookups.handlers.base import LookupHandler

TYPE_NAME = "default"


[docs]class DefaultLookup(LookupHandler): """Lookup to provide a default value."""
[docs] @classmethod def handle(cls, value, context=None, provider=None, **kwargs): """Use a value from the environment or fall back to a default value. Allows defaults to be set at the config file level. Args: value (str): Parameter(s) given to this lookup. ``<env_var>::<default value>`` context (:class:`runway.cfngin.context.Context`): Context instance. provider (:class:`runway.cfngin.providers.base.BaseProvider`): Provider instance. Returns: str: Looked up value Example: :: Groups: ${default app_security_groups::sg-12345,sg-67890} If ``app_security_groups`` is defined in the environment, its defined value will be returned. Otherwise, ``sg-12345,sg-67890`` will be thereturned value. """ try: env_var_name, default_val = value.split("::", 1) except ValueError: raise ValueError( "Invalid value for default: %s. Must be in " "<env_var>::<default value> format." % value ) if env_var_name in context.environment: return context.environment[env_var_name] return default_val