Skip to content

Commit 9ed178c

Browse files
authored
Don't inject secrets or interpolate on excluded map keys (#8)
1 parent b40da83 commit 9ed178c

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

himl/config_generator.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import json
1212
import os
1313
from collections import OrderedDict
14+
import logging
1415

1516
import pathlib2
1617
import yaml
@@ -20,6 +21,7 @@
2021
from .python_compat import iteritems, primitive_types, PY3
2122
from .remote_state import S3TerraformRemoteStateRetriever
2223

24+
logger = logging.getLogger(__name__)
2325

2426
class ConfigProcessor(object):
2527

@@ -41,6 +43,9 @@ def process(self, cwd=None, path=None, filters=(), exclude_keys=(), enclosing_ke
4143
generator.generate_hierarchy()
4244
generator.process_hierarchy()
4345

46+
if len(exclude_keys) > 0:
47+
generator.exclude_keys(exclude_keys)
48+
4449
if not skip_interpolations:
4550
generator.resolve_interpolations()
4651
# Perform another resolving, in case some secrets are used as interpolations.
@@ -65,9 +70,6 @@ def process(self, cwd=None, path=None, filters=(), exclude_keys=(), enclosing_ke
6570
if len(filters) > 0:
6671
generator.filter_data(filters)
6772

68-
if len(exclude_keys) > 0:
69-
generator.exclude_keys(exclude_keys)
70-
7173
if not skip_interpolation_validation:
7274
generator.validate_interpolations()
7375

@@ -232,7 +234,11 @@ def filter_data(self, keys):
232234
def exclude_keys(self, keys):
233235
for key in keys:
234236
if key in self.generated_data:
235-
del self.generated_data[key]
237+
try:
238+
logger.info("Excluding key %s", key)
239+
del self.generated_data[key]
240+
except KeyNotFound:
241+
logger.info("Excluded key %s not found or already removed", key)
236242

237243
def add_dynamic_data(self):
238244
remote_state_retriever = S3TerraformRemoteStateRetriever()

0 commit comments

Comments
 (0)