[SEBA-304] Clean up stale state when transitioning to awaiting-auth

Change-Id: I58c3ed6cc39720023a362d5fc30c37496bb24077
diff --git a/VERSION b/VERSION
index ffcb6c9..ef56770 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1,2 @@
-1.0.9
+1.0.10
 
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 602aded..3cc1f59 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
@@ -55,6 +55,11 @@
         if subscriber:
             self.update_subscriber(subscriber, si)
 
+        if si.authentication_state in ["AWAITING", "REQUESTED", "STARTED"]:
+            si.ip_address = ""
+            si.mac_address = ""
+            si.dhcp_state = ""
+
         si.save_changed_fields()
 
     def validate_onu_state(self, si):
@@ -103,6 +108,17 @@
             )
             ip.save()
 
+    def delete_subscriber_ip(self, subscriber, ip):
+        try:
+            ip = RCORDIpAddress.objects.filter(
+                subscriber_id=subscriber.id,
+                ip=ip
+            )[0]
+            self.logger.debug("MODEL_POLICY: delete RCORDIpAddress for subscriber", onu_device=subscriber.onu_device, subscriber_status=subscriber.status, ip=ip)
+            ip.delete()
+        except:
+            self.logger.warning("MODEL_POLICY: no RCORDIpAddress object found, cannot delete", ip=ip)
+
     def update_subscriber(self, subscriber, si):
         cur_status = subscriber.status
         if si.authentication_state == "AWAITING":
@@ -126,8 +142,10 @@
         # - we get a DHCPACK event
         if cur_status != subscriber.status or si.dhcp_state == "DHCPACK":
             self.logger.debug("MODEL_POLICY: updating subscriber", onu_device=subscriber.onu_device, authentication_state=si.authentication_state, subscriber_status=subscriber.status)
-            if si.ip_address and si.mac_address:
-                # subscriber.ip_address = si.ip_address
+            if subscriber.status == "awaiting-auth":
+                self.delete_subscriber_ip(subscriber, si.ip_address)
+                subscriber.mac_address = ""
+            elif si.ip_address and si.mac_address:
                 self.update_subscriber_ip(subscriber, si.ip_address)
                 subscriber.mac_address = si.mac_address
             subscriber.save_changed_fields(always_update_timestamp=True)
diff --git a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
index 57630e1..3b1b0df 100644
--- a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
+++ b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
@@ -251,6 +251,7 @@
             ip='10.11.2.23'
         )
 
+        self.si.authentication_state = "APPROVED"
         self.si.dhcp_state = "DHCPACK"
         self.si.ip_address = "10.11.2.23"
         self.si.mac_address = "4321"
@@ -274,6 +275,7 @@
             onu_device="BRCM1234"
         )
 
+        self.si.authentication_state = "APPROVED"
         self.si.dhcp_state = "DHCPACK"
         self.si.ip_address = "10.11.2.23"
         self.si.mac_address = "4321"