def diff_objects(self, existing, new): result = dict() diff = recursive_diff(existing, new) 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
def diff_objects(existing, new): result = dict() diff = recursive_diff(existing, new) if diff: result['before'] = diff[0] result['after'] = diff[1] return not diff, result
def test_diff(): for test in tests: assert(recursive_diff(test['before'], test['after']) == test['expected'])