Exemple #1
0
 def test_dict_merge_no_change_1(self):
     source = {
         'a': [{'a': False}],
         'b': True
     }
     target = []
     self.assertEqual(dict_merge(source, target), source)
Exemple #2
0
 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
Exemple #4
0
    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}
        })
Exemple #5
0
    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']
        })
Exemple #6
0
    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'
        })
Exemple #7
0
 def test_dict_merge_no_change_2(self):
     self.assertEqual(dict_merge([], []), [])