SEBA-381 Expose ONU reason in XOS modeling

Change-Id: I921a53df6ef5a083b137c5529ecce8143863ea95
diff --git a/VERSION b/VERSION
index 67da954..291d0de 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.15
+2.1.16
diff --git a/xos/synchronizer/models/volt.xproto b/xos/synchronizer/models/volt.xproto
index 927006f..75bf9af 100644
--- a/xos/synchronizer/models/volt.xproto
+++ b/xos/synchronizer/models/volt.xproto
@@ -79,6 +79,7 @@
     optional string admin_state = 6 [choices = "(('DISABLED', 'DISABLED'), ('ENABLED', 'ENABLED'))", default="ENABLED", help_text = "admin_state", db_index = False];
     optional string oper_status = 7 [help_text = "oper_status", db_index = False, feedback_state = True];
     optional string connect_status = 8 [help_text = "connect_status", db_index = False, feedback_state = True];
+    optional string reason = 9 [help_text = "ONU device configuration state machine status message", db_index = False, feedback_state = True];
 }
 
 message PONONUPort (PortBase) {
diff --git a/xos/synchronizer/pull_steps/pull_onus.py b/xos/synchronizer/pull_steps/pull_onus.py
index 18f047c..4f66304 100644
--- a/xos/synchronizer/pull_steps/pull_onus.py
+++ b/xos/synchronizer/pull_steps/pull_onus.py
@@ -110,6 +110,7 @@
             model.admin_state = onu["admin_state"]
             model.oper_status = onu["oper_status"]
             model.connect_status = onu["connect_status"]
+            model.reason = onu["reason"]
             model.xos_managed = False
 
             model.pon_port = pon_port
diff --git a/xos/synchronizer/pull_steps/test_pull_onus.py b/xos/synchronizer/pull_steps/test_pull_onus.py
index 6fc5816..0898018 100644
--- a/xos/synchronizer/pull_steps/test_pull_onus.py
+++ b/xos/synchronizer/pull_steps/test_pull_onus.py
@@ -112,6 +112,7 @@
                     "admin_state": "ENABLED",
                     "oper_status": "ACTIVE",
                     "connect_status": "REACHABLE",
+                    "reason": "starting-omci",
                     "parent_id": "00010fc93996afea",
                     "parent_port_no": 1
                 }
@@ -131,6 +132,7 @@
                     "admin_state": "ENABLED",
                     "oper_status": "ACTIVE",
                     "connect_status": "REACHABLE",
+                    "reason": "starting-omci",
                     "parent_id": "00010fc93996afea",
                     "parent_port_no": 1
                 },
@@ -145,6 +147,7 @@
                     "admin_state": "ENABLED",
                     "oper_status": "ACTIVE",
                     "connect_status": "REACHABLE",
+                    "reason": "omci-admin-lock",
                     "parent_id": "00010fc93996afeb",
                     "parent_port_no": 1
                 }
@@ -184,6 +187,7 @@
             self.assertEqual(saved_onu.admin_state, "ENABLED")
             self.assertEqual(saved_onu.oper_status, "ACTIVE")
             self.assertEqual(saved_onu.connect_status, "REACHABLE")
+            self.assertEqual(saved_onu.reason, "starting-omci")
             self.assertEqual(saved_onu.device_type, "broadcom_onu")
             self.assertEqual(saved_onu.vendor, "Broadcom")
             self.assertEqual(saved_onu.device_id, "0001130158f01b2d")
@@ -228,6 +232,7 @@
             self.assertEqual(saved_onu.admin_state, "ENABLED")
             self.assertEqual(saved_onu.oper_status, "ACTIVE")
             self.assertEqual(saved_onu.connect_status, "REACHABLE")
+            self.assertEqual(saved_onu.reason, "omci-admin-lock")
             self.assertEqual(saved_onu.device_type, "broadcom_onu")
             self.assertEqual(saved_onu.vendor, "Broadcom")
             self.assertEqual(saved_onu.device_id, "0001130158f01b2e")
@@ -266,6 +271,7 @@
             self.assertEqual(saved_onu.admin_state, "ENABLED")
             self.assertEqual(saved_onu.oper_status, "ACTIVE")
             self.assertEqual(saved_onu.connect_status, "REACHABLE")
+            self.assertEqual(saved_onu.reason, "omci-admin-lock")
             self.assertEqual(saved_onu.device_type, "broadcom_onu")
             self.assertEqual(saved_onu.vendor, "Broadcom")
             self.assertEqual(saved_onu.device_id, "0001130158f01b2e")