VOL-343: Remove and update xPON interfaces at ONU adapter(s) functionalities

Removing and updating xPON interfaces at ONU adapter(s) functionlaities:
 * remove_interface (v_ont_ani/ont_ani/v_enet)
 * update_interface (v_ont_ani/ont_ani/v_enet)

Verify pon_sim ONU adapter remove_interface() and update_interface() are called with appropriate adapter interface(s).

VOL-353: Add sanity check to verify whether device handler exists for the ONU device

Device handler is created only when device adapter is forwarded from the VOLTHA core. This is the case only when VOntAniConfig's parameter admin state is up. Adding sanity check to verify whether device handler exists for the ONU device resolves the issue.

Change-Id: Iac95ae9b92c0d43be1384df1dbc1f4b8f1208c94
[https://groups.google.com/a/opencord.org/forum/#!topic/voltha-discuss/rAyck-tlrpw]
diff --git a/voltha/adapters/ponsim_onu/ponsim_onu.py b/voltha/adapters/ponsim_onu/ponsim_onu.py
index 87fb0e0..ef73faa 100644
--- a/voltha/adapters/ponsim_onu/ponsim_onu.py
+++ b/voltha/adapters/ponsim_onu/ponsim_onu.py
@@ -55,7 +55,17 @@
 
     def create_interface(self, device, data):
         log.info('create-interface', device_id=device.id)
-        self.devices_handlers[device.id].create_interface(data)
+        if device.id in self.devices_handlers:
+            handler = self.devices_handlers[device.id]
+            if handler is not None:
+                handler.create_interface(data)
+
+    def remove_interface(self, device, data):
+        log.info('remove-interface', device_id=device.id)
+        if device.id in self.devices_handlers:
+            handler = self.devices_handlers[device.id]
+            if handler is not None:
+                handler.remove_interface(data)
 
 class PonSimOnuHandler(object):
     def __init__(self, adapter, device_id):
@@ -373,5 +383,12 @@
         interfaceConfig = self.get_interface_config(data)
         if interfaceConfig is not None:
             self.log.info(
-                'forwarding-create-interface-request-to-onu-interface-type',
+                'forwarding-create-interface-request-to-onu-for-intfc-type',
+                interface_type=type(data))
+
+    def remove_interface(self, data):
+        interfaceConfig = self.get_interface_config(data)
+        if interfaceConfig is not None:
+            self.log.info(
+                'forwarding-remove-interface-request-to-onu-for-intfc-type',
                 interface_type=type(data))