[CORD-3125] Adding blacklist and disabling ONUs
Change-Id: If12d799ea143627d3241bb67f7c6269c5ca89dc6
diff --git a/xos/synchronizer/model_policies/model_policy_hippieossserviceinstance.py b/xos/synchronizer/model_policies/model_policy_hippieossserviceinstance.py
index 543c0df..31c2290 100644
--- a/xos/synchronizer/model_policies/model_policy_hippieossserviceinstance.py
+++ b/xos/synchronizer/model_policies/model_policy_hippieossserviceinstance.py
@@ -14,7 +14,7 @@
# limitations under the License.
-from synchronizers.new_base.modelaccessor import RCORDSubscriber, model_accessor
+from synchronizers.new_base.modelaccessor import RCORDSubscriber, ONUDevice, model_accessor
from synchronizers.new_base.policy import Policy
class OSSServiceInstancePolicy(Policy):
@@ -22,12 +22,18 @@
def handle_update(self, si):
self.logger.debug("MODEL_POLICY: handle_update for HippieOSSServiceInstance %s " % si.id)
- if not si.valid:
- # NOTE we don't do anything if the ONU has not been activated
- self.logger.debug("MODEL_POLICY: skipping handle_update for HippieOSSServiceInstance %s as valid is %s" % (si.id, si.valid))
- pass
- else:
- self.logger.debug("MODEL_POLICY: creating RCORDSubscriber for HippieOSSServiceInstance %s as valid is %s" % (si.id, si.valid))
+
+ if not hasattr(si, 'valid') or si.valid is "awaiting":
+ self.logger.debug("MODEL_POLICY: skipping handle_update for HippieOSSServiceInstance %s as not validated yet" % si.id)
+ return
+ if si.valid == "invalid":
+ self.logger.debug("MODEL_POLICY: disabling ONUDevice [%s] for HippieOSSServiceInstance %s" % (si.serial_number, si.id))
+ onu = ONUDevice.objects.get(serial_number=si.serial_number)
+ onu.admin_state = "DISABLED"
+ onu.save(always_update_timestamp=True)
+ return
+ if si.valid == "valid":
+ self.logger.debug("MODEL_POLICY: creating RCORDSubscriber for HippieOSSServiceInstance %s" % si.id)
subscriber = RCORDSubscriber()
subscriber.onu_device = si.serial_number
subscriber.uni_port_id = si.uni_port_id
@@ -37,6 +43,7 @@
subscriber.c_tag = si.c_tag
subscriber.save()
+ return
def handle_delete(self, si):
pass