KPI metrics example in simulated_olt

Change-Id: I9e5c8e72c15e284ea1c21fea295c67d9426224ef
diff --git a/voltha/core/adapter_agent.py b/voltha/core/adapter_agent.py
index 2313bb1..748872b 100644
--- a/voltha/core/adapter_agent.py
+++ b/voltha/core/adapter_agent.py
@@ -30,6 +30,7 @@
 from voltha.adapters.interface import IAdapterAgent
 from voltha.protos import third_party
 from voltha.protos.device_pb2 import Device, Port
+from voltha.protos.events_pb2 import KpiEvent
 from voltha.protos.voltha_pb2 import DeviceGroup, LogicalDevice, \
     LogicalPort, AdminState
 from voltha.registry import registry
@@ -305,3 +306,12 @@
 
         topic = 'packet-in:' + logical_device_id
         self.event_bus.publish(topic, (logical_port_no, packet))
+
+    # ~~~~~~~~~~~~~~~~~~~ Handling KPI metric submissions ~~~~~~~~~~~~~~~~~~~~~
+    def submit_kpis(self, kpi_event_msg):
+        try:
+            assert isinstance(kpi_event_msg, KpiEvent)
+            self.event_bus.publish('kpis', kpi_event_msg)
+        except Exception as e:
+            self.log.exception('failed-kpi-submission',
+                               type=type(kpi_event_msg))