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/nc_rpc/base/close_session.py b/netconf/nc_rpc/base/close_session.py
index 43babb8..ce187cd 100644
--- a/netconf/nc_rpc/base/close_session.py
+++ b/netconf/nc_rpc/base/close_session.py
@@ -24,8 +24,9 @@
 
 class CloseSession(Rpc):
 
-    def __init__(self, rpc_request, rpc_method, session):
-        super(CloseSession, self).__init__(rpc_request, rpc_method, session)
+    def __init__(self, rpc_request, rpc_method, grpc_client, session):
+        super(CloseSession, self).__init__(rpc_request, rpc_method,
+                                           grpc_client, session)
         self._validate_parameters()
 
     def execute(self):
diff --git a/netconf/nc_rpc/base/commit.py b/netconf/nc_rpc/base/commit.py
index 61b7604..8933dc3 100644
--- a/netconf/nc_rpc/base/commit.py
+++ b/netconf/nc_rpc/base/commit.py
@@ -24,8 +24,9 @@
 
 class Commit(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(Commit, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(Commit, self).__init__(rpc_request, rpc_method, grpc_client,
+									 session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/copy_config.py b/netconf/nc_rpc/base/copy_config.py
index cf2fc82..e287770 100644
--- a/netconf/nc_rpc/base/copy_config.py
+++ b/netconf/nc_rpc/base/copy_config.py
@@ -23,8 +23,9 @@
 
 class CopyConfig(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(CopyConfig, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(CopyConfig, self).__init__(rpc_request, rpc_method,
+										 grpc_client, session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/delete_config.py b/netconf/nc_rpc/base/delete_config.py
index 7163ee6..e267807 100644
--- a/netconf/nc_rpc/base/delete_config.py
+++ b/netconf/nc_rpc/base/delete_config.py
@@ -23,8 +23,9 @@
 
 class DeleteConfig(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(DeleteConfig, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(DeleteConfig, self).__init__(rpc_request, rpc_method,
+										   grpc_client, session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/discard_changes.py b/netconf/nc_rpc/base/discard_changes.py
index c41d32e..57bdfed 100644
--- a/netconf/nc_rpc/base/discard_changes.py
+++ b/netconf/nc_rpc/base/discard_changes.py
@@ -23,8 +23,9 @@
 
 class DiscardChanges(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(DiscardChanges, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(DiscardChanges, self).__init__(rpc_request, rpc_method,
+											 grpc_client, session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/edit_config.py b/netconf/nc_rpc/base/edit_config.py
index 5c7599a..469e957 100644
--- a/netconf/nc_rpc/base/edit_config.py
+++ b/netconf/nc_rpc/base/edit_config.py
@@ -23,8 +23,9 @@
 
 class EditConfig(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(EditConfig, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(EditConfig, self).__init__(rpc_request, rpc_method,
+										 grpc_client, session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/get.py b/netconf/nc_rpc/base/get.py
index c6cdfab..39e095c 100644
--- a/netconf/nc_rpc/base/get.py
+++ b/netconf/nc_rpc/base/get.py
@@ -25,8 +25,9 @@
 
 class Get(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(Get, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(Get, self).__init__(rpc_request, rpc_method, grpc_client,
+								  session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/get_config.py b/netconf/nc_rpc/base/get_config.py
index dffe0d6..09f90b4 100644
--- a/netconf/nc_rpc/base/get_config.py
+++ b/netconf/nc_rpc/base/get_config.py
@@ -26,8 +26,9 @@
 
 class GetConfig(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(GetConfig, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(GetConfig, self).__init__(rpc_request, rpc_method,
+										grpc_client, session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/kill_session.py b/netconf/nc_rpc/base/kill_session.py
index 08a2e7a..c9a3352 100644
--- a/netconf/nc_rpc/base/kill_session.py
+++ b/netconf/nc_rpc/base/kill_session.py
@@ -25,8 +25,9 @@
 
 class KillSession(Rpc):
 
-    def __init__(self, rpc_request, rpc_method, session):
-        super(KillSession, self).__init__(rpc_request, rpc_method, session)
+    def __init__(self, rpc_request, rpc_method, grpc_client, session):
+        super(KillSession, self).__init__(rpc_request, rpc_method,
+                                          grpc_client, session)
         self._validate_parameters()
 
     def execute(self):
diff --git a/netconf/nc_rpc/base/lock.py b/netconf/nc_rpc/base/lock.py
index fc74e83..2f0130d 100644
--- a/netconf/nc_rpc/base/lock.py
+++ b/netconf/nc_rpc/base/lock.py
@@ -23,8 +23,9 @@
 
 class Lock(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(Lock, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(Lock, self).__init__(rpc_request, rpc_method, grpc_client,
+								   session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/unlock.py b/netconf/nc_rpc/base/unlock.py
index 78c59f1..f9ef062 100644
--- a/netconf/nc_rpc/base/unlock.py
+++ b/netconf/nc_rpc/base/unlock.py
@@ -23,8 +23,9 @@
 
 class UnLock(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(UnLock, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(UnLock, self).__init__(rpc_request, rpc_method, grpc_client,
+									 session)
 		self._validate_parameters()
 
 	def execute(self):
diff --git a/netconf/nc_rpc/base/validate.py b/netconf/nc_rpc/base/validate.py
index 1cb84af..93faf60 100644
--- a/netconf/nc_rpc/base/validate.py
+++ b/netconf/nc_rpc/base/validate.py
@@ -23,8 +23,9 @@
 
 class Validate(Rpc):
 
-	def __init__(self, rpc_request, rpc_method, session):
-		super(Validate, self).__init__(rpc_request, rpc_method, session)
+	def __init__(self, rpc_request, rpc_method, grpc_client, session):
+		super(Validate, self).__init__(rpc_request, rpc_method,
+									   grpc_client, session)
 		self._validate_parameters()
 
 	def execute(self):