From d517abf44b515746f44c757e0949977e68e6f723 Mon Sep 17 00:00:00 2001
From: Jhonny Everson <khronnuz@gmail.com>
Date: Tue, 9 Jun 2015 09:44:34 -0300
Subject: [PATCH] Fixes the bug where it was using only the keys to determine
 whether a change was made, i.e. values changes for existing keys was reported
 incorrectly.

---
 monitoring/datadog_monitor.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/monitoring/datadog_monitor.py b/monitoring/datadog_monitor.py
index 97968ed648d..cb54cd32b5d 100644
--- a/monitoring/datadog_monitor.py
+++ b/monitoring/datadog_monitor.py
@@ -194,6 +194,10 @@ def _post_monitor(module, options):
     except Exception, e:
         module.fail_json(msg=str(e))
 
+def _equal_dicts(a, b, ignore_keys):
+    ka = set(a).difference(ignore_keys)
+    kb = set(b).difference(ignore_keys)
+    return ka == kb and all(a[k] == b[k] for k in ka)
 
 def _update_monitor(module, monitor, options):
     try:
@@ -202,7 +206,7 @@ def _update_monitor(module, monitor, options):
                                  options=options)
         if 'errors' in msg:
             module.fail_json(msg=str(msg['errors']))
-        elif len(set(msg) - set(monitor)) == 0:
+        elif _equal_dicts(msg, monitor, ['creator', 'overall_state']):
             module.exit_json(changed=False, msg=msg)
         else:
             module.exit_json(changed=True, msg=msg)