def test_dict_merge_no_change_1(self): source = { 'a': [{'a': False}], 'b': True } target = [] self.assertEqual(dict_merge(source, target), source)
def test_dict_merge_success(self): source = { 'a': [{'a': False}], 'b': True } target ={ 'a': [{'b': 0}] } self.assertEqual(dict_merge(source, target), {'a': [{'a': False}, {'b': 0}], 'b': True})
def _parse_resources(self): ''' Assigns all resources defined in the terraform plan :return: none ''' # Resources ( exists in Plan ) for findings in seek_key_in_dict(self.raw.get('planned_values', {}).get('root_module', {}), 'resources'): for resource in findings.get('resources', []): if self.is_type(resource, 'data'): self.data[resource['address']] = resource else: self.resources[resource['address']] = resource # Resources ( exists in State ) for findings in seek_key_in_dict(self.raw.get('values', {}).get('root_module', {}), 'resources'): for resource in findings.get('resources', []): if self.is_type(resource, 'data'): self.data[resource['address']] = resource else: self.resources[resource['address']] = resource # Resources ( exists in Prior State ) for findings in seek_key_in_dict(self.raw.get('prior_state', {}).get('values', {}).get('root_module', {}).get('resources', {}), 'resource'): for resource in findings.get('resources', []): if self.is_type(resource, 'data'): self.data[resource['address']] = resource else: self.resources[resource['address']] = resource # Child Modules Resources ( exists in State ) for findings in seek_key_in_dict(self.raw.get('values', {}).get('root_module', {}), 'child_modules'): for resource in findings.get('resources', []): if self.is_type(resource, 'data'): self.data[resource['address']] = resource else: self.resources[resource['address']] = resource # Resource Changes ( exists in Plan ) for finding in self.raw.get('resource_changes', {}): resource = deepcopy(finding) change = resource.get('change', {}) actions = change.get('actions', []) if actions != ['delete']: resource['values'] = dict_merge(change.get('after', {}), change.get('after_unknown', {})) if 'change' in resource: del resource['change'] if self.is_type(resource, 'data'): self.data[resource['address']] = resource else: self.resources[resource['address']] = resource
def test_dict_merge_dict_list_failure(self): source = { 'a': 'something', 'b': {'something': False} } target = { 'b': ['completely different something'] } self.assertEqual(dict_merge(source, target), { 'a': 'something', 'b': {'something': False} })
def test_dict_merge_str_list(self): source = { 'a': 'something', 'b': 'something else' } target = { 'b': ['completely different something'] } self.assertEqual(dict_merge(source, target), { 'a': 'something', 'b': ['completely different something', 'something else'] })
def test_dict_merge_dict_dict(self): source = { 'a': 'something', 'b': 'something else' } target = { 'c': 'completely different something' } self.assertEqual(dict_merge(source, target), { 'a': 'something', 'b': 'something else', 'c': 'completely different something' })
def test_dict_merge_no_change_2(self): self.assertEqual(dict_merge([], []), [])