Waveserver Ai Driver support

Change-Id: I1d65e30b4b46dbad8802fd2edd9dec74b5d2ec18

revert readme

Change-Id: I32f7a9ec21f743d98cdece2ceb097fc65b784589
diff --git a/models/ciena/waveserverai/src/main/yang/ciena-waveserver-chassis@2017-12-20.yang b/models/ciena/waveserverai/src/main/yang/ciena-waveserver-chassis@2017-12-20.yang
new file mode 100644
index 0000000..3155d9d
--- /dev/null
+++ b/models/ciena/waveserverai/src/main/yang/ciena-waveserver-chassis@2017-12-20.yang
@@ -0,0 +1,820 @@
+module ciena-waveserver-chassis {
+  namespace "urn:ciena:params:xml:ns:yang:ciena-ws:ciena-waveserver-chassis";
+  prefix chassis;
+
+  import ciena-waveserver-typedefs {
+    prefix cienawstypes;
+  }
+
+  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 Chassis data for the Waveserver Platform.";
+
+  revision 2017-12-20 {
+    description
+      "Added management-port 'mode', 'speed', and 'duplex' for wayside channel configuration.
+       Added return code for waveserver-wcs-restart and waveserver-wcs-restart-cold.";
+    reference "Waveserver Ai user's guide.";
+  }
+  revision 2017-09-05 {
+    description
+      "Waveserver Platform Data Model
+       Migrated from Waveserver Classic R1.4 YANG model.
+       Updated namespace to 'ciena-waveserver'.
+       Added 'waveserver ai chassis' type.
+       Updated several UI and description strings.
+       Added access-panel container, wcs container, and inventory view of components.
+       Added slot power management and wcs-restart RPCs.
+       Removed 10-second delay from restart RPCs and remove restart-cancel RPCs.
+       Added access-panel capabilities.
+       Moved several device-id attributes into common grouping used by all components.
+       Removed 'number-of-fans', 'number-of-temperature-sensors' and 'status' list from 'cooling-fan-units/properties' container.";
+    reference "Waveserver Ai user's guide.";
+  }
+
+  typedef mac-block-size {
+    type uint32;
+    description
+      "MAC address block size.";
+  }
+
+  typedef chassis-operation-state {
+    type enumeration {
+      enum "uninstalled" {
+        description
+          "Device is not present.";
+      }
+      enum "normal" {
+        description
+          "Device is up/operational.";
+      }
+      enum "faulted" {
+        description
+          "Device is in a failed/faulted state.";
+      }
+    }
+    description
+      "Chassis operational state. Applies to PSU, CFU, AP, WCS components in the chassis.";
+  }
+
+  grouping device-id-group {
+    description
+      "Common group of device identification attributes for components in the chassis.";
+    leaf model {
+      type cienawstypes:string-maxl-50;
+      config false;
+      description
+        "Device model information.";
+    }
+    leaf description {
+      type cienawstypes:string-maxl-254;
+      config false;
+      description
+        "Device description.";
+    }
+    leaf serial-number {
+      type cienawstypes:string-maxl-50;
+      config false;
+      description
+        "Device serial number information.";
+    }
+    leaf part-number {
+      type cienawstypes:string-maxl-50;
+      config false;
+      description
+        "Device part number information.";
+    }
+    leaf revision {
+      type cienawstypes:string-maxl-50;
+      config false;
+      description
+        "Device revision information.";
+    }
+    leaf manufacture-date {
+      type cienawstypes:string-maxl-50;
+      config false;
+      description
+        "Device Manufacture Date, in string format.";
+    }
+  }
+
+  container waveserver-chassis {
+    description
+      "Waveserver chassis configuration data and operational data.";
+    container identification {
+      config false;
+      description
+        "Waveserver chassis identification attributes.";
+      leaf type {
+        type enumeration {
+          enum "unknown chassis" {
+            description
+              "Chassis type is unknown.";
+          }
+          enum "waveserver chassis" {
+            description
+              "Waveserver WL3e Chassis.";
+          }
+          enum "waveserver ai chassis" {
+            description
+              "Waveserver Ai Chassis.";
+          }
+        }
+        config false;
+        description
+          "Type enum value of the Chassis.";
+      }
+      uses device-id-group;
+    }
+    container capabilities {
+      config false;
+      description
+        "Waveserver chassis capabilities attributes.";
+      container control {
+        description
+          "Control module capabilities for this chassis.";
+        leaf count {
+          type uint8;
+          config false;
+          description
+            "Number of control modules available to the Waveserver chassis.";
+        }
+        leaf type {
+          type cienawstypes:module-type-bits;
+          config false;
+          description
+            "Chassis control module type. Can be integrated or field-replaceable.";
+        }
+      }
+      container access-panel {
+        description
+          "Access Panel capabilities for this chassis.";
+        leaf count {
+          type uint8;
+          config false;
+          description
+            "Number of access panel modules available to the Waveserver chassis.";
+        }
+        leaf type {
+          type cienawstypes:module-type-bits;
+          config false;
+          description
+            "Chassis access panel module type. Can be integrated or field-replaceable.";
+        }
+      }
+      container switch {
+        description
+          "Switch module capabilities for this chassis.";
+        leaf count {
+          type uint8;
+          config false;
+          description
+            "Number of switch modules available to the Waveserver chassis.";
+        }
+        leaf type {
+          type cienawstypes:module-type-bits;
+          config false;
+          description
+            "Chassis switch module type. Can be integrated or field-replaceable.";
+        }
+      }
+      container modules {
+        description
+          "Service module capabilities for this chassis.";
+        leaf count {
+          type uint8;
+          config false;
+          description
+            "Total number of service modules available to a fully-equipped Waveserver chassis.";
+        }
+        leaf type {
+          type cienawstypes:module-type-bits;
+          config false;
+          description
+            "Chassis service module type. Can be integrated or field-replaceable.";
+        }
+      }
+      container fan {
+        description
+          "Fan unit capabilities for this chassis.";
+        leaf count {
+          type uint8;
+          config false;
+          description
+            "Number of fan units available to the Waveserver chassis.";
+        }
+        leaf type {
+          type cienawstypes:module-type-bits;
+          config false;
+          description
+            "Chassis fan unit type. Can be integrated or field-replaceable.";
+        }
+      }
+      container air-filter {
+        description
+          "Air filter capabilities for this chassis.";
+        leaf supported {
+          type cienawstypes:yes-no-enum;
+          config false;
+          description
+            "Is the air filter supported on the Waveserver chassis.";
+        }
+        leaf type {
+          type cienawstypes:module-type-bits;
+          config false;
+          description
+            "Chassis air filter type. Can be integrated or field-replaceable.";
+        }
+        leaf active {
+          type cienawstypes:yes-no-enum;
+          config false;
+          description
+            "Is the air filter active on the Waveserver chassis.";
+        }
+      }
+      container power {
+        description
+          "Power supply capabilities for this chassis.";
+        leaf count {
+          type uint8;
+          config false;
+          description
+            "Number of power supply units available to the Waveserver chassis.";
+        }
+        leaf type {
+          type cienawstypes:module-type-bits;
+          config false;
+          description
+            "Power supply unit type. Can be integrated or field-replaceable.";
+        }
+        leaf redundant {
+          type cienawstypes:yes-no-enum;
+          config false;
+          description
+            "Is redundant power present for the Waveserver chassis.";
+        }
+        leaf dc-support {
+          type cienawstypes:yes-no-enum;
+          config false;
+          description
+            "Whether or not DC power is supported.";
+        }
+      }
+    }
+    container mac-addresses {
+      config false;
+      description
+        "MAC Addresses used by this chassis.";
+      container chassis {
+        description
+          "Chassis MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "The Chassis Base MAC address. All MACs used in shelf offset from this.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "Number of MACs allocated by manufacturing.";
+        }
+      }
+      container local-management {
+        description
+          "Local management MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "Local Management MAC address.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "Local Management MAC Block Size.";
+        }
+      }
+      container remote-management {
+        description
+          "Remote management MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "Remote Management MAC address.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "Remote Management MAC address Block Size.";
+        }
+      }
+      container dcn {
+        description
+          "Data Communications Network (DCN) port MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "DCN MAC address.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "DCN MAC address Block Size.";
+        }
+      }
+      container ilan-1 {
+        description
+          "Internal Local Area Network 1 (ILAN-1) port MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "ILAN-1 MAC address.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "ILAN-1 MAC address Block Size.";
+        }
+      }
+      container ilan-2 {
+        description
+          "Internal Local Area Network 2 (ILAN-2) port MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "ILAN-2 MAC address.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "ILAN-2 MAC address Block Size.";
+        }
+      }
+      container ports {
+        description
+          "Port MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "Port Base MAC address.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "Port Base MAC address Block Size.";
+        }
+      }
+      container reserved {
+        description
+          "Reserved MAC address information.";
+        leaf base {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "Reserved MAC address.";
+        }
+        leaf block-size {
+          type mac-block-size;
+          config false;
+          description
+            "Reserved MAC address Block Size.";
+        }
+      }
+    }
+    list power-supply-units {
+      key "psu-number";
+      description
+        "Power Supply Unit Status.";
+      leaf psu-number {
+        type uint8;
+        description
+          "Unique index number for the Power Supply Unit list entry.";
+      }
+      leaf name {
+        type cienawstypes:string-maxl-16;
+        config false;
+        description
+          "Name of the power supply unit. In the format of PSU-<slot #>. Contains the slot number of the power supply unit.";
+      }
+      container state {
+        description
+          "Power Supply Unit state information.";
+        leaf admin-state {
+          type cienawstypes:enabled-disabled-enum;
+          description
+            "Whether admin state of the Power Supply Unit is enabled or disabled. Disabled state masks the alarms only.";
+        }
+        leaf operational-state {
+          type chassis-operation-state;
+          config false;
+          description
+            "Operational state of the Power Supply Unit.";
+        }
+      }
+      container properties {
+        config false;
+        description
+          "All the operational data fields of this Power Supply Unit.";
+        leaf type {
+          type enumeration {
+            enum "AC" {
+              description
+                "Power supply unit uses AC power.";
+            }
+            enum "DC" {
+              description
+                "Power supply unit uses DC power.";
+            }
+            enum "unequipped" {
+              description
+                "Power supply unit is unequipped.";
+            }
+          }
+          config false;
+          description
+            "The Power Supply Unit type.";
+        }
+      }
+      container device-id {
+        config false;
+        description
+          "Device identification information of this Power Supply Unit.";
+        uses device-id-group;
+      }
+    }
+    list cooling-fan-units {
+      key "cfu-number";
+      description
+        "Cooling Fan Unit Status.";
+      leaf cfu-number {
+        type uint8;
+        description
+          "Unique index number for the Cooling Fan Unit list entry.";
+      }
+      leaf name {
+        type cienawstypes:string-maxl-16;
+        config false;
+        description
+          "Name of the cooling fan unit. In the format of CFU-<slot #>. Contains the slot number of the cooling fan unit.";
+      }
+      container state {
+        description
+          "Cooling Fan Unit state information.";
+        leaf admin-state {
+          type cienawstypes:enabled-disabled-enum;
+          description
+            "Whether Admin State of the cooling fan unit is enabled or disabled. Disabled state masks the alarms only.";
+        }
+        leaf operational-state {
+          type chassis-operation-state;
+          config false;
+          description
+            "Operational state of the Cooling Fan unit.";
+        }
+      }
+      container properties {
+        config false;
+        description
+          "All the operational data fields of this Cooling Fan Unit.";
+        leaf automatic-control {
+          type cienawstypes:enabled-disabled-enum;
+          config false;
+          description
+            "Whether Automatic Control of the cooling fan unit is enabled or disabled.";
+        }
+      }
+      container device-id {
+        config false;
+        description
+          "Device Identification information of this Cooling Fan Unit.";
+        uses device-id-group;
+      }
+    }
+    list management-port {
+      key "index";
+      description
+        "A list to manage chassis ports.";
+      leaf index {
+        type uint16;
+        description
+          "Index value of the management port.";
+      }
+      container id {
+        config false;
+        description
+          "Identification information of this management port.";
+        leaf name {
+          type cienawstypes:string-maxl-16;
+          config false;
+          description
+            "Name of the Port. The names are predefined.";
+        }
+      }
+      container state {
+        description
+          "Management port state information.";
+        leaf admin-state {
+          type cienawstypes:enabled-disabled-enum;
+          description
+            "Whether Admin State is enabled or disabled for this management port.";
+        }
+        leaf operational-state {
+          type cienawstypes:up-down-enum;
+          config false;
+          description
+            "Operational state of this management port.";
+        }
+      }
+      container properties {
+        description
+          "All the operational data of this management port.";
+        leaf type {
+          type enumeration {
+            enum "ethernet" {
+              description
+                "Ethernet management port.";
+            }
+            enum "serial" {
+              description
+                "Serial management port.";
+            }
+          }
+          config false;
+          description
+            "Management port type. If the port is DCN, ilan-1, or ilan-2, the port type will be Ethernet. If the port is Console, the port type will be Serial.";
+        }
+        leaf mode {
+          type enumeration {
+            enum "management" {
+              description
+                "Management port is configured as a local management interface. This is the default mode.";
+            }
+            enum "wayside-channel" {
+              description
+                "Management port is configured as a wayside communications channel.";
+            }
+          }
+          description
+            "Management port mode. Specifies whether the port is configured as a local management interface or wayside communications channel (carry through).";
+        }
+        leaf speed {
+          type enumeration {
+            enum "Unknown" {
+              description
+                "Unknown port speed.";
+            }
+            enum "10M" {
+              description
+                "10 Mbps Ethernet.";
+            }
+            enum "100M" {
+              description
+                "100 Mbps Ethernet.";
+            }
+            enum "1G" {
+              description
+                "1 Gbps Ethernet.";
+            }
+            enum "10G" {
+              description
+                "10 Gbps Ethernet.";
+            }
+          }
+          config false;
+          description
+            "Management port speed.";
+        }
+        leaf duplex {
+          type enumeration {
+            enum "Unknown" {
+              description
+                "Unknown port duplex.";
+            }
+            enum "full" {
+              description
+                "Port is full-duplex.";
+            }
+            enum "half" {
+              description
+                "Port is half-duplex.";
+            }
+          }
+          config false;
+          description
+            "Management port duplex.";
+        }
+        leaf mac-address {
+          type cienawstypes:mac-string;
+          config false;
+          description
+            "MAC Address of the management port.";
+        }
+        leaf max-frame-size {
+          type uint32;
+          config false;
+          description
+            "Max Frame Size of the management port.";
+        }
+      }
+    }
+    container access-panel {
+      description
+        "Access Panel";
+      container state {
+        description
+          "Access Panel state information.";
+        leaf admin-state {
+          type cienawstypes:enabled-disabled-enum;
+          description
+            "Whether admin state of the Access Panel is enabled or disabled.";
+        }
+        leaf operational-state {
+          type chassis-operation-state;
+          config false;
+          description
+            "Operational state of the Access Panel.";
+        }
+      }
+      container properties {
+        config false;
+        description
+          "All the operational data fields of the Access Panel.";
+        leaf type {
+          type enumeration {
+            enum "type-1" {
+              description
+                "Access Panel Type 1.";
+            }
+            enum "unequipped" {
+              description
+                "Access Panel is unequipped.";
+            }
+          }
+          config false;
+          description
+            "The Access Panel type.";
+        }
+      }
+      container device-id {
+        config false;
+        description
+          "Device identification information of the Access Panel.";
+        uses device-id-group;
+      }
+    }
+    container wcs {
+      description
+        "Waveserver Control Subsystem. This is the control module for the Waveserver Ai chassis.";
+      container state {
+        description
+          "WCS control module state information.";
+        leaf admin-state {
+          type cienawstypes:enabled-disabled-enum;
+          description
+            "Whether admin state of the WCS is enabled or disabled.";
+        }
+        leaf operational-state {
+          type chassis-operation-state;
+          config false;
+          description
+            "Operational state of the WCS.";
+        }
+      }
+      container properties {
+        config false;
+        description
+          "All the operational data fields of the WCS.";
+        leaf type {
+          type enumeration {
+            enum "type-1" {
+              description
+                "WCS Type 1.";
+            }
+            enum "unequipped" {
+              description
+                "WCS is unequipped.";
+            }
+          }
+          config false;
+          description
+            "The WCS module type.";
+        }
+      }
+      container device-id {
+        config false;
+        description
+          "Device identification information of the WCS.";
+        uses device-id-group;
+      }
+    }
+    container inventory {
+      config false;
+      description
+        "The inventory view of all of the components in the chassis.";
+      list component {
+        key "index";
+        config false;
+        description
+          "Inventory component details.";
+        leaf index {
+          type uint16;
+          description
+            "Index value of the inventory component.";
+        }
+        leaf name {
+          type cienawstypes:string-maxl-16;
+          config false;
+          description
+            "Name of the inventory component (e.g., Chassis, DCN, WCS, AP, PSU-<n>, CFU-<n>, etc.).";
+        }
+        uses device-id-group;
+      }
+    }
+    list slot {
+      key "slot-id";
+      description
+        "Chassis slot power management.";
+      leaf slot-id {
+        type uint8 {
+          range "1..3";
+        }
+        mandatory true;
+        description
+          "Chassis slot number, Key value for the chassis slot list.";
+      }
+      leaf power-state {
+        type cienawstypes:power-state;
+        config false;
+        description
+          "Slot power state.";
+      }
+      leaf actual-power-state {
+        type cienawstypes:on-off-enum;
+        config false;
+        description
+          "The actual power state (on or off) of the specified slot.";
+      }
+    }
+  }
+  rpc waveserver-chassis-restart {
+    description
+      "Initiates a chassis warm restart. This restarts the WCS and all modules.";
+  }
+  rpc waveserver-chassis-restart-cold {
+    description
+      "Initiates a chassis cold restart. This restarts the WCS and all modules.";
+  }
+  rpc waveserver-wcs-restart {
+    description
+      "Initiates a WCS warm restart.";
+    output {
+      leaf return-code {
+        type uint32;
+        description
+          "return code: 0 is success; non-zero is failure";
+      }
+      leaf return-string {
+        type cienawstypes:string-maxl-254;
+        description
+          "Return code description";
+      }
+    }
+  }
+  rpc waveserver-wcs-restart-cold {
+    description
+      "Initiates a WCS cold restart.";
+    output {
+      leaf return-code {
+        type uint32;
+        description
+          "return code: 0 is success; non-zero is failure";
+      }
+      leaf return-string {
+        type cienawstypes:string-maxl-254;
+        description
+          "Return code description";
+      }
+    }
+  }
+}