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/common.proto b/experiments/netconf/proto2yang/common.proto
new file mode 100644
index 0000000..0ec8ce3
--- /dev/null
+++ b/experiments/netconf/proto2yang/common.proto
@@ -0,0 +1,71 @@
+syntax = "proto3";
+
+package voltha;
+
+// Convey a resource identifier
+message ID {
+    string id = 1;
+}
+
+
+// Logging verbosity level
+enum LogLevel {
+    DEBUG = 0;
+    INFO = 1;
+    WARNING = 2;
+    ERROR = 3;
+    CRITICAL = 4;
+}
+
+// Administrative State
+enum AdminState {
+
+    // The administrative state of the device is unknown
+    AS_UNKNOWN = 0;
+
+    // The device is pre-provisioned into Voltha, but not contacted by it
+    AS_PREPROVISIONED = 1;
+
+    // The device is enabled for activation and operation
+    AS_ENABLED = 3;
+
+    // The device is disabled and shall not perform its intended forwarding
+    // functions other than being available for re-activation.
+    AS_DISABLED = 2;
+}
+
+// Operational Status
+enum OperStatus {
+
+    // The status of the device is unknown at this point
+    OS_UNKNOWN = 0;
+
+    // The device has been discovered, but not yet activated
+    OS_DISCOVERED = 1;
+
+    // The device is being activated (booted, rebooted, upgraded, etc.)
+    OS_ACTIVATING = 2;
+
+    // Service impacting tests are being conducted
+    OS_TESTING = 3;
+
+    // The device is up and active
+    OS_ACTIVE = 4;
+
+    // The device has failed and cannot fulfill its intended role
+    OS_FAILED = 5;
+}
+
+// Connectivity Status
+enum ConnectStatus {
+
+    // The device connectivity status is unknown
+    CS_UNKNOWN = 0;
+
+    // The device cannot be reached by Voltha
+    CS_UNREACHABLE = 1;
+
+    // There is live communication between device and Voltha
+    CS_REACHABLE = 2;
+}
+