ADTRAN: Update to containerized adapters.
Loading and running but still needs about a week or so of work to
catch up to where the OpenOLT/ONU containerized adapters are

Change-Id: I5522232e21dd76b3f95b4698af6c7e4cef96753d
diff --git a/adapters/adtran_olt/adtran_olt.py b/adapters/adtran_olt/adtran_olt.py
index c052b78..e25b42a 100644
--- a/adapters/adtran_olt/adtran_olt.py
+++ b/adapters/adtran_olt/adtran_olt.py
@@ -22,7 +22,7 @@
 from pyvoltha.adapters.iadapter import OltAdapter
 from pyvoltha.protos import third_party
 from pyvoltha.protos.common_pb2 import AdminState
-
+from pyvoltha.protos.health_pb2 import HealthStatus
 from adtran_olt_handler import AdtranOltHandler
 
 
@@ -43,7 +43,7 @@
                                                version='2.0.0',
                                                device_type=AdtranOltAdapter.name,
                                                accepts_bulk_flow_update=True,
-                                               accepts_add_remove_flow_updates=False)  # TODO: Implement me
+                                               accepts_add_remove_flow_updates=True)
 
         log.debug('adtran_olt.__init__')
 
@@ -55,7 +55,6 @@
         """
         # TODO: Currently this is always healthy for every adapter.
         #       If we decide not to modify this, delete this method and use base class method
-        from pyvoltha.protos.health_pb2 import HealthStatus
         return HealthStatus(state=HealthStatus.HEALTHY)
 
     def abandon_device(self, device):
@@ -75,8 +74,9 @@
         is provisioned top-down and needs to be activated by the adapter.
 
         :param device: A voltha.Device object, with possible device-type
-                specific extensions. Such extensions shall be described as part of
-                the device type specification returned by device_types().
+                       specific extensions. Such extensions shall be described as part of
+                       the device type specification returned by device_types().
+
         :return: (Deferred) Shall be fired to acknowledge device ownership.
         """
         log.info('adopt-device', device=device)
@@ -84,23 +84,36 @@
             'adapter': self,
             'device-id': device.id
         }
-        self.devices_handlers[device.id] = self.device_handler_class(**kwargs)
-        d = defer.Deferred()
-        reactor.callLater(0, self.devices_handlers[device.id].activate, d, False)
-        return d
+        try:
+            self.devices_handlers[device.id] = self.device_handler_class(**kwargs)
+            d = defer.Deferred()
+            reactor.callLater(0, self.devices_handlers[device.id].activate, d, False)
+            return d
+
+        except Exception as _e:
+            raise
 
     def reconcile_device(self, device):
+        """
+        Make sure the adapter looks after given device. Called when this
+        device has changed ownership from another Voltha instance to
+        this one (typically, this occurs when the previous voltha
+        instance went down).
+
+        :param device: A voltha.Device object, with possible device-type
+                       specific extensions. Such extensions shall be described as part of
+                       the device type specification returned by device_types().
+
+        :return: (Deferred) Shall be fired to acknowledge device ownership.
+        """
         try:
-            self.devices_handlers[device.id] = self.device_handler_class(self,
-                                                                         device.id)
+            kwargs = {
+                'adapter': self,
+                'device-id': device.id
+            }
+            self.devices_handlers[device.id] = self.device_handler_class(**kwargs)
             # Work only required for devices that are in ENABLED state
             if device.admin_state == AdminState.ENABLED:
-
-                kwargs = {
-                    'adapter': self,
-                    'device-id': device.id
-                }
-                self.devices_handlers[device.id] =self.device_handler_class(**kwargs)
                 d = defer.Deferred()
                 reactor.callLater(0, self.devices_handlers[device.id].activate, d, True)