VOL-3616: Support for API to retrieve information about UNI of an ONU

Change-Id: Iaf6f8147278cc0cbb084b66d7400ce84a0b18ae4
diff --git a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_adapter.py b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_adapter.py
index c261501..d68e72b 100644
--- a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_adapter.py
+++ b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_adapter.py
@@ -23,7 +23,7 @@
 from __future__ import absolute_import
 import structlog
 from twisted.internet import reactor
-from twisted.internet.defer import inlineCallbacks
+from twisted.internet.defer import inlineCallbacks, returnValue
 
 from zope.interface import implementer
 
@@ -41,7 +41,7 @@
 from brcm_openomci_onu_handler import BrcmOpenomciOnuHandler
 from omci.brcm_capabilities_task import BrcmCapabilitiesTask
 from copy import deepcopy
-
+from voltha_protos.extensions_pb2 import SingleGetValueResponse, GetValueResponse
 
 @implementer(IAdapterInterface)
 class BrcmOpenomciOnuAdapter(object):
@@ -305,3 +305,23 @@
         handler = self.devices_handlers[device.id]
         result = handler.start_omci_test_action(device, uuid)
         return result
+
+    @inlineCallbacks
+    def single_get_value_request(self, request):
+        """
+        :param request: A request to get a specific attribute of a device, of type SingleGetValueRequest
+        :return:
+        """
+        self.log.info('single-get-value-request', request=request)
+        handler = self.devices_handlers[request.targetId]
+        get_value_req = request.request
+        if get_value_req.HasField("uniInfo"):
+            result = yield handler.get_uni_status(get_value_req)
+            self.log.debug('single-get-value-result', res=result)
+            returnValue(result)
+        else:
+            self.log.debug('invalid-request')
+            errresult = SingleGetValueResponse()
+            errresult.response.status = GetValueResponse.ERROR
+            errresult.response.errReason = GetValueResponse.UNSUPPORTED
+            returnValue(errresult)