Add OpenROADM 7.1.0 device and common models
[transportpce.git] / ordmodels / common / src / main / yang / org-openroadm-pm@2020-05-29.yang
diff --git a/ordmodels/common/src/main/yang/org-openroadm-pm@2020-05-29.yang b/ordmodels/common/src/main/yang/org-openroadm-pm@2020-05-29.yang
new file mode 100644 (file)
index 0000000..44b9328
--- /dev/null
@@ -0,0 +1,361 @@
+module org-openroadm-pm {
+  namespace "http://org/openroadm/pm";
+  prefix org-openroadm-pm;
+
+  import ietf-yang-types {
+    prefix yang;
+    revision-date 2013-07-15;
+  }
+  import org-openroadm-common-types {
+    prefix org-openroadm-common-types;
+    revision-date 2020-05-29;
+  }
+  import org-openroadm-common-alarm-pm-types {
+    prefix org-openroadm-common-alarm-pm-types;
+    revision-date 2019-11-29;
+  }
+  import org-openroadm-resource {
+    prefix org-openroadm-resource;
+    revision-date 2020-05-29;
+  }
+  import org-openroadm-resource-types {
+    prefix org-openroadm-resource-types;
+    revision-date 2019-11-29;
+  }
+  import org-openroadm-pm-types {
+    prefix org-openroadm-pm-types;
+    revision-date 2020-03-27;
+  }
+
+  organization
+    "Open ROADM MSA";
+  contact
+    "OpenROADM.org";
+  description
+    "YANG definitions of performance management.
+
+      Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
+      All other rights reserved.
+
+      Redistribution and use in source and binary forms, with or without modification,
+      are permitted provided that the following conditions are met:
+
+      * Redistributions of source code must retain the above copyright notice, this
+        list of conditions and the following disclaimer.
+      * Redistributions in binary form must reproduce the above copyright notice,
+        this list of conditions and the following disclaimer in the documentation and/or
+        other materials provided with the distribution.
+      * Neither the Members of the Open ROADM MSA Agreement nor the names of its
+        contributors may be used to endorse or promote products derived from this software
+        without specific prior written permission.
+
+      THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS''
+      AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+      IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT,
+      INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+      NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA,
+      OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+      WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+      ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+      POSSIBILITY OF SUCH DAMAGE";
+
+  revision 2020-05-29 {
+    description
+      "Version 7.1.0";
+  }
+  revision 2020-03-27 {
+    description
+      "Version 7.0.0";
+  }
+  revision 2019-11-29 {
+    description
+      "Version 6.1.0";
+  }
+  revision 2019-09-27 {
+    description
+      "Version 6.0.0";
+  }
+  revision 2019-05-31 {
+    description
+      "Version 5.1.0";
+  }
+  revision 2019-03-29 {
+    description
+      "Version 5.0.0";
+  }
+  revision 2018-11-30 {
+    description
+      "Version 4.1.0";
+  }
+  revision 2018-09-28 {
+    description
+      "Version 4.0.0";
+  }
+  revision 2018-05-30 {
+    description
+      "Version 3.1.0";
+  }
+  revision 2018-03-30 {
+    description
+      "Version 3.0.0";
+  }
+  revision 2017-12-15 {
+    description
+      "Version 2.2";
+  }
+  revision 2017-09-29 {
+    description
+      "Version 2.1";
+  }
+  revision 2017-07-28 {
+    description
+      "Version 2.0.1 - added revision-date to imports";
+  }
+  revision 2017-06-26 {
+    description
+      "Version 2.0";
+  }
+  revision 2016-10-14 {
+    description
+      "Version 1.2";
+  }
+
+  feature historical-pm-retrieval {
+    description
+      "The device supports the ability to directly retrieve the historical
+       PM data from the YANG model.";
+  }
+
+  grouping current-pm-group {
+    description
+      "PM Data with current values - both realtime (granularity=notApplicable)
+       and binned (granularity=15 minute, 24h))";
+    leaf pm-resource-instance {
+      type instance-identifier;
+      config false;
+      mandatory true;
+      description
+        "Retrieves all PM associate with the resource instance";
+    }
+    leaf pm-resource-type {
+      type org-openroadm-resource-types:resource-type-enum;
+      config false;
+      mandatory true;
+      description
+        "The supported pm-resource-type associated with the given resource instance.";
+    }
+    leaf pm-resource-type-extension {
+      type string;
+      config false;
+      description
+        "The resource type extension when the type is not defined in the resource-type-enum.";
+    }
+    leaf start-time {
+      type yang:date-and-time;
+      config false;
+      mandatory true;
+      description
+        "Represents the start time of the bin (15m, 24h granularity) or the start of data collection (notApplicable/untimed granularity).";
+    }
+    leaf retrieval-time {
+      type yang:date-and-time;
+      config false;
+      mandatory true;
+      description
+        "Represents the time when the data is being read, not the bin start or end time.";
+    }
+    list current-pm {
+      key "type extension location direction";
+      config false;
+      uses current-pm-val-group;
+    }
+  }
+
+  grouping current-pm-val-group {
+    uses org-openroadm-pm-types:pm-names;
+    leaf location {
+      type org-openroadm-common-alarm-pm-types:location;
+    }
+    leaf direction {
+      type org-openroadm-common-alarm-pm-types:direction;
+    }
+    list measurement {
+      key "granularity";
+      leaf granularity {
+        type org-openroadm-pm-types:pm-granularity;
+      }
+      uses org-openroadm-pm-types:pm-measurement;
+    }
+  }
+
+  grouping historical-pm-group {
+    description
+      "PM Data with historical values - binned (granularity=15 minute, 24h))";
+    leaf pm-resource-instance {
+      type instance-identifier;
+      config false;
+      mandatory true;
+      description
+        "Retrieves all PM associate with the resource instance";
+    }
+    leaf pm-resource-type {
+      type org-openroadm-resource-types:resource-type-enum;
+      config false;
+      mandatory true;
+    }
+    leaf pm-resource-type-extension {
+      type string;
+      config false;
+      description
+        "The resource type extension when the type is not defined in the resource-type-enum.";
+    }
+    list historical-pm {
+      key "type extension location direction";
+      uses historical-pm-val-group;
+    }
+  }
+
+  grouping historical-pm-val-group {
+    description
+      "PM Data with historical values";
+    uses org-openroadm-pm-types:pm-names;
+    leaf location {
+      type org-openroadm-common-alarm-pm-types:location;
+    }
+    leaf direction {
+      type org-openroadm-common-alarm-pm-types:direction;
+    }
+    list measurement {
+      key "granularity bin-number";
+      leaf granularity {
+        type org-openroadm-pm-types:pm-granularity;
+        mandatory true;
+      }
+      leaf bin-number {
+        type uint16 {
+          range "1..max";
+        }
+        config false;
+        mandatory true;
+      }
+      uses org-openroadm-pm-types:pm-measurement;
+      leaf completion-time {
+        type yang:date-and-time;
+        config false;
+        mandatory true;
+        description
+          "The time at the end of the period; For example if bin starts at
+           01:15:00 and ends at 01:29:59, the completion-time is 01:29:59";
+      }
+    }
+  }
+
+  grouping collect-history-pm-group {
+    leaf pm-filename {
+      type string {
+        length "10..255";
+      }
+      mandatory true;
+      description
+        "The file name to write the historical PM data.
+         The controller should be able to use this name to retrieve the file via ftp/sftp.
+         The file name should be unique for each RPC request since a new RPC request
+         could be initiated while the file transfer of the previous file is still in progress.
+
+         The file content should be written in xml format based on the historical-pm-list
+         yang definition and the file should be gzip compressed.";
+    }
+    uses org-openroadm-common-types:rpc-response-status;
+  }
+
+  rpc clear-pm {
+    description
+      "Command to initialize PM data";
+    input {
+      uses org-openroadm-resource:resource;
+      leaf pm-type {
+        type enumeration {
+          enum current {
+            value 1;
+          }
+          enum all {
+            value 2;
+          }
+        }
+        default "current";
+      }
+      leaf granularity {
+        type org-openroadm-pm-types:pm-granularity;
+        default "15min";
+      }
+    }
+    output {
+      uses org-openroadm-common-types:rpc-response-status;
+    }
+  }
+
+  rpc collect-historical-pm-file {
+    description
+      "Command to query historical PM data.
+       The device should be able to process an rpc request for 15min data
+       and a separate request for 24hour data in parallel.";
+    input {
+      leaf from-bin-number {
+        type uint16 {
+          range "1..max";
+        }
+        default "1";
+        description
+          "The start bin-number of the range";
+      }
+      leaf to-bin-number {
+        type uint16 {
+          range "1..max";
+        }
+        default "1";
+        description
+          "The end bin-number of the range";
+      }
+      leaf granularity {
+        type org-openroadm-pm-types:pm-granularity;
+        default "15min";
+        description
+          "The granularity of the retrieve, default to 15 minutes PM";
+      }
+    }
+    output {
+      uses collect-history-pm-group;
+    }
+  }
+
+  notification historical-pm-collect-result {
+    description
+      "This Notification is sent when the pm collection is successful or failed.";
+    uses collect-history-pm-group;
+  }
+
+  container current-pm-list {
+    config false;
+    description
+      "List of current PMs.";
+    list current-pm-entry {
+      key "pm-resource-type pm-resource-type-extension pm-resource-instance";
+      description
+        "List of current PM entries";
+      uses current-pm-group;
+    }
+  }
+  container historical-pm-list {
+    if-feature "historical-pm-retrieval";
+    config false;
+    description
+      "List of historical PM";
+    list historical-pm-entry {
+      key "pm-resource-type pm-resource-type-extension pm-resource-instance";
+      description
+        "List of historical PM entries";
+      uses historical-pm-group;
+    }
+  }
+}