This commit consists of:
1) Dockerizing the netconf server
2) Update proto2yang to support module imports
3) Provide a set of yang modules derived from the proto files in voltha.
   These files as well as the slight mmodifications to the proto files are
   provided in the experiments/netconf/proto2yang directory
4) Code to automatically pull proto files from voltha into the netconf server,
   compiles them and produce the yang equivalent files.
5) Add a getvoltha netconf API to provide voltha state information (basic at
   this time).  There is potential to make this generic once we experiment
   with additional APIs

Change-Id: I94f3a1f871b8025ad675d5f9b9b626d1be8b8d36
diff --git a/netconf/session/nc_protocol_handler.py b/netconf/session/nc_protocol_handler.py
index e0a4baf..a08ea37 100644
--- a/netconf/session/nc_protocol_handler.py
+++ b/netconf/session/nc_protocol_handler.py
@@ -33,11 +33,11 @@
 
 
 class NetconfProtocolHandler:
-    def __init__(self, nc_server, nc_conn, session, grpc_stub):
+    def __init__(self, nc_server, nc_conn, session, grpc_client):
         self.started = True
         self.conn = nc_conn
         self.nc_server = nc_server
-        self.grpc_stub = grpc_stub
+        self.grpc_client = grpc_client
         self.new_framing = False
         self.capabilities = Capabilities()
         self.session = session
@@ -171,6 +171,7 @@
                 # Get a rpc handler
                 rpc_handler = rpc_factory.get_rpc_handler(rpc,
                                                           msg,
+                                                          self.grpc_client,
                                                           self.session)
                 if rpc_handler:
                     # set the parameters for this handler
@@ -206,21 +207,6 @@
                 error = ncerror.ServerException(rpc, ex)
                 self.send_message(error.get_reply_msg())
 
-    # @inlineCallbacks
-    # def invoke_method(self, rpcname, rpc, params):
-    #     try:
-    #         # Handle any namespaces or prefixes in the tag, other than
-    #         # "nc" which was removed above. Of course, this does not handle
-    #         # namespace collisions, but that seems reasonable for now.
-    #         rpcname = rpcname.rpartition("}")[-1]
-    #         method_name = "rpc_" + rpcname.replace('-', '_')
-    #         method = getattr(self.methods, method_name,
-    #                          self._rpc_not_implemented)
-    #         log.info("invoking-method", method=method_name)
-    #         reply = yield method(self, rpc, *params)
-    #         returnValue(reply)
-    #     except NotImplementedError:
-    #         raise ncerror.NotImpl(rpc)
 
     def stop(self, reason):
         if not self.exiting: