1111import json
1212import os
1313from collections import OrderedDict
14+ import logging
1415
1516import pathlib2
1617import yaml
2021from .python_compat import iteritems , primitive_types , PY3
2122from .remote_state import S3TerraformRemoteStateRetriever
2223
24+ logger = logging .getLogger (__name__ )
2325
2426class 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