Do not disable ONU as result of an onu.disabled event,
save the subscriber from dhcp only if something has changed.

Change-Id: I4a97bb7fe2e08e408341aa36617709b554e9e5bb
diff --git a/Dockerfile.synchronizer b/Dockerfile.synchronizer
index 28ab55e..d9c1c4e 100644
--- a/Dockerfile.synchronizer
+++ b/Dockerfile.synchronizer
@@ -16,7 +16,7 @@
 
 # xosproject/att-workflow-driver-synchronizer
 
-FROM xosproject/xos-synchronizer-base:master
+FROM xosproject/xos-synchronizer-base:2.1.4
 
 COPY xos/synchronizer /opt/xos/synchronizers/att-workflow-driver
 COPY VERSION /opt/xos/synchronizers/att-workflow-driver/
diff --git a/xos/synchronizer/event_steps/dhcp_event.py b/xos/synchronizer/event_steps/dhcp_event.py
index d6a789f..eec273d 100644
--- a/xos/synchronizer/event_steps/dhcp_event.py
+++ b/xos/synchronizer/event_steps/dhcp_event.py
@@ -47,6 +47,9 @@
 
         # NOTE it will be better to update the SI and use the model policy to update the subscriber,
         # if this fails for any reason the event is lost
-        subscriber.ip_address = value["ipAddress"]
-        subscriber.mac_address = value["macAddress"]
-        subscriber.save()
+        if subscriber.ip_address != value["ipAddress"] or \
+            subscriber.mac_address != value["macAddress"]:
+
+            subscriber.ip_address = value["ipAddress"]
+            subscriber.mac_address = value["macAddress"]
+            subscriber.save()
diff --git a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py
index a664dcd..fb8a9d6 100644
--- a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py
+++ b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py
@@ -44,9 +44,6 @@
             # we validate the ONU state only if it is enabled or awaiting,
             # if it's disabled it means someone has disabled it
             self.validate_onu_state(si)
-        else:
-            # but we still verify that the device is actually down
-            self.update_onu(si.serial_number, "DISABLED")
 
         # handling the subscriber status
         subscriber = self.get_subscriber(si.serial_number)