Skip to content
This repository has been archived by the owner on Jun 13, 2024. It is now read-only.

Commit

Permalink
Merge pull request #228 from fabianvf/ignore-diff-with-warning
Browse files Browse the repository at this point in the history
Do not mark task as changed when diff is irrelevant
  • Loading branch information
fabianvf committed Sep 15, 2020
2 parents 1ea0fa1 + 0afe40e commit 28dcf76
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions plugins/module_utils/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,14 +259,30 @@ def load_resource_definitions(self, src):
self.fail(msg="Error loading resource_definition: {0}".format(exc))
return result

@staticmethod
def diff_objects(existing, new):
def diff_objects(self, existing, new):
result = dict()
diff = recursive_diff(existing, new)
if diff:
result['before'] = diff[0]
result['after'] = diff[1]
return not diff, result
if not diff:
return True, result

result['before'] = diff[0]
result['after'] = diff[1]

# If only metadata.generation and metadata.resourceVersion changed, ignore it
ignored_keys = set(['generation', 'resourceVersion'])

if list(result['after'].keys()) != ['metadata'] or list(result['before'].keys()) != ['metadata']:
return False, result

if not set(result['after']['metadata'].keys()).issubset(ignored_keys):
return False, result
if not set(result['before']['metadata'].keys()).issubset(ignored_keys):
return False, result

if hasattr(self, 'warn'):
self.warn('No meaningful diff was generated, but the API may not be idempotent (only metadata.generation or metadata.resourceVersion were changed)')

return True, result


class KubernetesAnsibleModule(AnsibleModule, K8sAnsibleMixin):
Expand Down

0 comments on commit 28dcf76

Please sign in to comment.