Waveserver Ai Driver support

Change-Id: I1d65e30b4b46dbad8802fd2edd9dec74b5d2ec18

revert readme

Change-Id: I32f7a9ec21f743d98cdece2ceb097fc65b784589
diff --git a/models/ciena/waveserverai/src/main/yang/ciena-waveserver-module@2017-12-12.yang b/models/ciena/waveserverai/src/main/yang/ciena-waveserver-module@2017-12-12.yang
new file mode 100644
index 0000000..5fc21de
--- /dev/null
+++ b/models/ciena/waveserverai/src/main/yang/ciena-waveserver-module@2017-12-12.yang
@@ -0,0 +1,221 @@
+module ciena-waveserver-module {
+  namespace "urn:ciena:params:xml:ns:yang:ciena-ws:ciena-waveserver-module";
+  prefix mod;
+
+  import ciena-waveserver-typedefs {
+    prefix cienawstypes;
+  }
+  import ciena-waveserver-chassis {
+    prefix ciena-ws-chassis;
+  }
+  import ciena-waveserver-xcvr {
+    prefix xcvr;
+  }
+
+  organization
+    "Ciena Corporation";
+  contact
+    "Web URL: http://www.ciena.com/
+     Postal:  7035 Ridge Road
+             Hanover, Maryland 21076
+             U.S.A.
+     Phone:   +1 800-921-1144
+     Fax:     +1 410-694-5750";
+  description
+    "This module defines Module data for the Waveserver Platform.";
+
+  revision 2017-12-12 {
+    description
+      "Added 'cmd-4' module type support.
+       Renamed 'faulted' operational-state to 'fault' and add 'down' state.
+       Renamed 'motr-8x100' enum to 'motr-100-2'.";
+    reference "Waveserver Ai user's guide.";
+  }
+  revision 2017-09-05 {
+    description
+      "Waveserver Platform Data Model
+       Initial revision.";
+    reference "Waveserver Ai user's guide.";
+  }
+
+  typedef module-type {
+    type enumeration {
+      enum "unknown" {
+        description
+          "Unknown module type.";
+      }
+      enum "filler" {
+        description
+          "Filler card. Operational only, cannot be used for user create.";
+      }
+      enum "motr-100-2" {
+        description
+          "MOTR service module with 2 WaveLogic Ai line ports and 8 100G capable client ports.";
+      }
+      enum "cmd-4" {
+        description
+          "CMD-4 passive photonics module.";
+      }
+    }
+    description
+      "Module type.";
+  }
+
+  typedef module-operational-state {
+    type enumeration {
+      enum "unequipped" {
+        value 0;
+        description
+          "Module is not detected.";
+      }
+      enum "deprovisioned" {
+        value 1;
+        description
+          "Module is detected but uninitialized.";
+      }
+      enum "initializing" {
+        value 2;
+        description
+          "Module initialization started.";
+      }
+      enum "up" {
+        value 3;
+        description
+          "Module is up/operational.";
+      }
+      enum "fault" {
+        value 4;
+        description
+          "Module is faulted.";
+      }
+      enum "shutdown" {
+        value 5;
+        description
+          "Module is shutdown/powered off.";
+      }
+      enum "shutting-down" {
+        value 6;
+        description
+          "Module is shutting down.";
+      }
+      enum "unsupported" {
+        value 7;
+        description
+          "Module type is not supported.";
+      }
+      enum "mismatched" {
+        value 8;
+        description
+          "Detected module type does not match provisioned module type.";
+      }
+      enum "down" {
+        value 9;
+        description
+          "Module is down/disabled.";
+      }
+    }
+    description
+      "Module operational state.";
+  }
+
+  container waveserver-modules {
+    description
+      "Waveserver service module configuration data and operational data.";
+    list modules {
+      key "module-id";
+      description
+        "Module list.";
+      leaf module-id {
+        type cienawstypes:name-string;
+        mandatory true;
+        description
+          "Unique access identifier string of the Module, which may just be a slot number (e.g. '1'). Key value for the Module list. Read-only attribute.";
+      }
+      container id {
+        description
+          "ID information of this Module instance.";
+        leaf type {
+          type module-type;
+          mandatory true;
+          description
+            "The service module type. Must be specified on creation, and cannot be modified.";
+        }
+        leaf label {
+          type cienawstypes:description-string;
+          description
+            "The user-specified label string for this module.";
+        }
+        uses ciena-ws-chassis:device-id-group;
+      }
+      container state {
+        description
+          "State information of this Module instance.";
+        leaf admin-state {
+          type cienawstypes:enabled-disabled-enum;
+          description
+            "Whether Admin State is enabled or disabled for this Module.";
+        }
+        leaf operational-state {
+          type module-operational-state;
+          config false;
+          description
+            "Operational state of this Module.";
+        }
+        leaf last-restart {
+          type cienawstypes:string-maxl-32;
+          config false;
+          description
+            "The date and time of last restart in the format of a human readable string. e.g 'Wed Jun 30 21:49:08 2015', or 'N/A' if unavailable.";
+        }
+        leaf last-restart-reason {
+          type cienawstypes:restart-reason;
+          config false;
+          description
+            "Cause for the last restart.";
+        }
+        leaf uptime {
+          type cienawstypes:string-maxl-32;
+          config false;
+          description
+            "The time since last restart of the module, in the format of a human readable string. e.g '041d 11h 29m 53s', or 'N/A' if unavailable.";
+        }
+      }
+      container subcomponents {
+        config false;
+        description
+          "Module subcomponent (XCVR) references.";
+        leaf-list xcvrs {
+          type leafref {
+            path "/xcvr:waveserver-xcvrs/xcvr:xcvrs/xcvr:xcvr-id";
+          }
+          description
+            "Module subcomponent (XCVR) reference list.";
+        }
+      }
+    }
+  }
+  rpc waveserver-module-restart {
+    description
+      "Initiates a module warm restart.";
+    input {
+      leaf module-id {
+        type cienawstypes:name-string;
+        mandatory true;
+        description
+          "Unique Module ID string.";
+      }
+    }
+  }
+  rpc waveserver-module-restart-cold {
+    description
+      "Initiates a module cold restart.";
+    input {
+      leaf module-id {
+        type cienawstypes:name-string;
+        mandatory true;
+        description
+          "Unique Module ID string.";
+      }
+    }
+  }
+}