Skip to content

Commit bba8d88

Browse files
committed
Don't check deleted resources for compliance
1 parent 541b3ff commit bba8d88

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

terraform_compliance/extensions/terraform.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,17 @@ def _parse_resources(self):
111111
# Resource Changes ( exists in Plan )
112112
for finding in self.raw.get('resource_changes', {}):
113113
resource = deepcopy(finding)
114-
resource['values'] = resource.get('change', {}).get('after', {})
115-
if 'change' in resource:
116-
del resource['change']
117-
118-
if resource['address'].startswith('data'):
119-
self.data[resource['address']] = resource
120-
else:
121-
self.resources[resource['address']] = resource
114+
change = resource.get('change', {})
115+
actions = change.get('actions', [])
116+
if actions != ['delete']:
117+
resource['values'] = change.get('after', {})
118+
if 'change' in resource:
119+
del resource['change']
120+
121+
if resource['address'].startswith('data'):
122+
self.data[resource['address']] = resource
123+
else:
124+
self.resources[resource['address']] = resource
122125

123126
def _parse_configurations(self):
124127
'''

tests/terraform_compliance/extensions/test_terraform.py

+20
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,26 @@ def test_parse_resources_resources_exists_in_the_resource_changes_resource(self,
194194
obj._parse_resources()
195195
self.assertEqual(obj.resources['something'], {'address': 'something', 'values': {'key': 'bar'}})
196196

197+
@patch.object(TerraformParser, '_read_file', return_value={})
198+
def test_parse_resources_resources_exists_in_the_resource_changes_deleted(self, *args):
199+
obj = TerraformParser('somefile', parse_it=False)
200+
obj.raw['resource_changes'] = [
201+
{
202+
'address': 'something',
203+
'change': {
204+
'actions': ['delete'],
205+
'before': {
206+
'key': 'foo'
207+
},
208+
'after': {
209+
'key': 'bar'
210+
}
211+
}
212+
}
213+
]
214+
obj._parse_resources()
215+
self.assertEqual(obj.resources, {})
216+
197217
@patch.object(TerraformParser, '_read_file', return_value={})
198218
def test_parse_configurations_resources(self, *args):
199219
obj = TerraformParser('somefile', parse_it=False)

0 commit comments

Comments
 (0)