Skip to content
This repository was archived by the owner on Mar 31, 2025. It is now read-only.

Commit b77291c

Browse files
author
Nish Bhat
authored
Merge pull request #9 from bhatman/lazy_load_parameters
[SEC-102] offline flag for parameter values
2 parents 1582462 + 4d3875a commit b77291c

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

clrenv/lazy_env.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,26 @@
33
import os.path
44
from os import environ
55
from glob import glob
6-
from itertools import chain, groupby
6+
from itertools import chain
77
import shlex
88
import sys
9+
import logging
10+
import socket
911

1012
from munch import Munch, munchify
1113
import yaml
1214

1315
from .path import find_environment_path, find_user_environment_paths
1416
from functools import reduce
1517

18+
logger = logging.getLogger(__name__)
19+
20+
# Flag to prevent clrenv from throwing errors
21+
# if it cannot connect to the Parameter Store API.
22+
OFFLINE_FLAG = 'CLRENV_OFFLINE_DEV'
23+
OFFLINE_VALUE = 'CLRENV_OFFLINE_PLACEHOLDER'
24+
25+
1626
class LazyEnv(object):
1727
def __init__(self):
1828
self.__mode = tuple(shlex.split(environ.get('CLRENV_MODE', '')))
@@ -85,7 +95,6 @@ def get_env(*mode):
8595

8696
_env[mode] = e
8797

88-
8998
return _env[mode]
9099

91100
def _coerce_none_to_string(d):
@@ -182,11 +191,15 @@ def _apply_functions(d, recursive=False):
182191
value = value[9:]
183192
value = _get_keyfile_cache().get(value, '')
184193
elif value.startswith("^parameter "):
185-
value = value.split(' ', 1)[1]
186-
value = _get_ssm_client().get_parameter(
187-
Name=value,
188-
WithDecryption=True
189-
)['Parameter']['Value']
194+
parameter_name = value.split(' ', 1)[1]
195+
if os.environ.get(OFFLINE_FLAG):
196+
logger.warning(f"[{socket.gethostname()}] Offline, using placeholder value for {parameter_name}.")
197+
value = OFFLINE_VALUE
198+
else:
199+
value = _get_ssm_client().get_parameter(
200+
Name=parameter_name,
201+
WithDecryption=True
202+
)['Parameter']['Value']
190203
new[key] = value
191204

192205
if not recursive:

0 commit comments

Comments
 (0)