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/experiments/netconf/proto2yang/ietf-common.yang b/experiments/netconf/proto2yang/ietf-common.yang
new file mode 100644
index 0000000..b2f6fab
--- /dev/null
+++ b/experiments/netconf/proto2yang/ietf-common.yang
@@ -0,0 +1,111 @@
+
+module ietf-common {
+
+
+    namespace "urn:opencord:params:xml:ns:voltha:ietf-common";
+    prefix common;
+
+
+    organization "CORD";
+    contact
+        " Any name";
+
+    description
+        "";
+
+    revision "2016-11-15" {
+        description "Initial revision.";
+        reference "reference";
+    }
+
+    typedef LogLevel {
+        type enumeration {
+            enum DEBUG {
+                description "";
+            }
+            enum INFO {
+                description "";
+            }
+            enum WARNING {
+                description "";
+            }
+            enum ERROR {
+                description "";
+            }
+            enum CRITICAL {
+                description "";
+            }
+        }
+        description
+            "Logging verbosity level";
+    }
+    typedef AdminState {
+        type enumeration {
+            enum AS_UNKNOWN {
+                description "";
+            }
+            enum AS_PREPROVISIONED {
+                description "";
+            }
+            enum AS_ENABLED {
+                description "";
+            }
+            enum AS_DISABLED {
+                description "";
+            }
+        }
+        description
+            "Administrative State";
+    }
+    typedef OperStatus {
+        type enumeration {
+            enum OS_UNKNOWN {
+                description "";
+            }
+            enum OS_DISCOVERED {
+                description "";
+            }
+            enum OS_ACTIVATING {
+                description "";
+            }
+            enum OS_TESTING {
+                description "";
+            }
+            enum OS_ACTIVE {
+                description "";
+            }
+            enum OS_FAILED {
+                description "";
+            }
+        }
+        description
+            "Operational Status";
+    }
+    typedef ConnectStatus {
+        type enumeration {
+            enum CS_UNKNOWN {
+                description "";
+            }
+            enum CS_UNREACHABLE {
+                description "";
+            }
+            enum CS_REACHABLE {
+                description "";
+            }
+        }
+        description
+            "Connectivity Status";
+    }
+
+    grouping ID {
+        description
+            "Convey a resource identifier";
+        leaf id {
+            type  string; 
+            description
+                "";
+        }
+
+    }
+
+}
\ No newline at end of file