VOL-2654: Add Serial number of OLT in UNI events

Change-Id: Iac4eb26b8d61ec49165ad6b4ff88fb818f699ac1
diff --git a/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java b/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java
index 9ffb90f..9090f66 100644
--- a/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java
+++ b/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java
@@ -20,6 +20,9 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.net.AnnotationKeys;
+import org.onosproject.net.Device;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.Port;
 import org.opencord.kafka.EventBusService;
 import org.opencord.olt.AccessDeviceEvent;
@@ -48,6 +51,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected EventBusService eventBusService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
+    protected DeviceService deviceService;
+
     @Reference(cardinality = ReferenceCardinality.OPTIONAL,
             policy = ReferencePolicy.DYNAMIC,
             bind = "bindAccessDeviceService",
@@ -65,6 +71,7 @@
     private static final String PORT_NUMBER = "portNumber";  // uni port
     private static final String DEVICE_ID = "deviceId";  // OLT OpenFlow Id
     private static final String TIMESTAMP = "timestamp";
+    private static final String OLT_SERIAL_NUMBER = "oltSerialNumber"; // OLT Serial Number
 
     // statuses
     private static final String ACTIVATED = "activated";
@@ -105,6 +112,11 @@
         onuNode.put(PORT_NUMBER, port.number().toString());
         onuNode.put(DEVICE_ID, port.element().id().toString());
 
+        Device d = deviceService.getDevice((DeviceId) port.element().id());
+        if (d != null) {
+            onuNode.put(OLT_SERIAL_NUMBER, d.serialNumber());
+        }
+
         return onuNode;
     }