Update TAPI YANG model version to v2.1.1

Change-Id: Ie4d6a10800c34cc63c797f6649ba52da81902fd7
diff --git a/models/tapi/src/main/yang/tapi-oam@2018-12-10.yang b/models/tapi/src/main/yang/tapi-oam@2018-12-10.yang
new file mode 100755
index 0000000..5410ba4
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-oam@2018-12-10.yang
@@ -0,0 +1,825 @@
+module tapi-oam {

+    namespace "urn:onf:otcc:yang:tapi-oam";

+    prefix tapi-oam;

+    import tapi-common {

+        prefix tapi-common;

+    }

+    import tapi-connectivity {

+        prefix tapi-connectivity;

+    }

+    import tapi-topology {

+        prefix tapi-topology;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

+    description "

+        This module contains TAPI OAM Model definitions.

+        Source: TapiOam.uml

+        - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.

+        - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+          <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+          and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+          <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+        - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+          As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+        - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+          The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+          YANG models included in this release may not be backward compatible with previous TAPI releases.

+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

+        License: This module is distributed under the Apache License 2.0";

+    revision 2018-12-10 {

+        description "ONF Transport API version 2.1.1.

+                   Changes included in this TAPI release (v2.1.1) are listed in

+                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model

+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+                   Changes included in this TAPI release (v2.1.0) are listed in

+                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model

+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

+    revision 2018-03-07 {

+        description "ONF Transport API version 2.0.2

+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

+    }

+    revision 2018-02-16 {

+        description "ONF Transport API version 2.0.1

+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

+    }

+    revision 2018-01-02 {

+        description "ONF Transport API version 2.0.0

+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

+    }

+    augment "/tapi-common:context" {

+        container oam-context {

+            uses oam-context;

+            description "Augments the base TAPI Context with OamService information";

+        }

+        description "Augments the base TAPI Context with OamService information";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container mep-mip-list {

+            uses mep-mip-list;

+            description "none";

+        }

+        description "none";

+    }

+

+   /**************************

+    * definitions of references

+    **************************/

+    grouping oam-service-ref {

+        leaf oam-service-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-service/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping oam-service-end-point-ref {

+        uses oam-service-ref;

+        leaf oam-service-end-point-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping meg-ref {

+        leaf meg-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping maintenance-entity-ref {

+        uses meg-ref;

+        leaf maintenance-entity-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:me/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping mep-ref {

+        uses meg-ref;

+        leaf mep-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping mip-ref {

+        uses meg-ref;

+        leaf mip-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping oam-job-ref {

+        leaf oam-job-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping pm-current-data-ref {

+        uses oam-job-ref;

+        leaf pm-current-data-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping pm-history-data-ref {

+        uses pm-current-data-ref;

+        leaf pm-history-data-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping oam-profile-ref {

+        leaf oam-profile-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping pm-threshold-data-ref {

+        uses oam-profile-ref;

+        leaf pm-threshold-data-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    grouping pm-bin-data-ref {

+        uses oam-profile-ref;

+        leaf pm-bin-data-local-id {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-bin-data/tapi-oam:local-id';

+            }

+            description "none";

+        }

+        description "none";

+    }

+

+   /**************************

+    * package object-classes

+    **************************/

+    grouping mep {

+        leaf layer-protocol-name {

+            type tapi-common:layer-protocol-name;

+            config false;

+            description "none";

+        }

+        leaf direction {

+            type tapi-common:termination-direction;

+            config false;

+            description "none";

+        }

+        leaf mep-identifier {

+            type string;

+            config false;

+            description "none";

+        }

+        leaf-list peer-mep-identifier {

+            type string;

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        uses tapi-common:operational-state-pac;

+        description "none";

+    }

+    grouping oam-job {

+        list oam-service-end-point {

+            uses oam-service-end-point-ref;

+            key 'oam-service-uuid oam-service-end-point-local-id';

+            min-elements 1;

+            description "none";

+        }

+        container oam-profile {

+            uses oam-profile-ref;

+            description "none";

+        }

+        list pm-current-data {

+            key 'local-id';

+            config false;

+            uses pm-current-data;

+            description "Granularity period of the CurrentData identifies the specific CurrentData instance in the scope of this OamJob.

+                For example, typically at least

+                one 15min and

+                one 24hr;

+                optionally one additional configurable (< 15min)";

+        }

+        leaf oam-job-type {

+            type oam-job-type;

+            description "none";

+        }

+        container schedule {

+            uses tapi-common:time-range;

+            description "none";

+        }

+        leaf creation-time {

+            type tapi-common:date-and-time;

+            config false;

+            description "none";

+        }

+        uses tapi-common:global-class;

+        uses tapi-common:admin-state-pac;

+        description "none";

+    }

+    grouping meg {

+        list mep {

+            key 'local-id';

+            config false;

+            uses mep;

+            description "1. ME may have 0 MEPs (case of transit domains where at least 1 MIP is present)

+                2. ME may have 1 MEP (case of edge domaind, where the peer MEP is ouside the managed domain)

+                3. ME may have 2 MEPs";

+        }

+        list mip {

+            key 'local-id';

+            config false;

+            uses mip;

+            description "ME may 0, 1, or more MIPs";

+        }

+        leaf layer-protocol-name {

+            type tapi-common:layer-protocol-name;

+            config false;

+            description "none";

+        }

+        leaf direction {

+            type tapi-common:forwarding-direction;

+            config false;

+            description "none";

+        }

+        leaf meg-level {

+            type uint64;

+            config false;

+            description "none";

+        }

+        leaf meg-identifier {

+            type string;

+            config false;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

+        uses tapi-common:operational-state-pac;

+        description "none";

+    }

+    grouping mip {

+        leaf layer-protocol-name {

+            type tapi-common:layer-protocol-name;

+            config false;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    grouping oam-service {

+        list end-point {

+            key 'local-id';

+            min-elements 2;

+            uses oam-service-end-point;

+            description "none";

+        }

+        container meg {

+            uses meg-ref;

+            config false;

+            description "none";

+        }

+        container oam-profile {

+            uses oam-profile-ref;

+            description "none";

+        }

+        uses tapi-common:service-spec;

+        uses tapi-common:admin-state-pac;

+        uses oam-constraint;

+        description "none";

+    }

+    grouping oam-context {

+        list oam-service {

+            key 'uuid';

+            uses oam-service;

+            description "none";

+        }

+        list meg {

+            key 'uuid';

+            config false;

+            uses meg;

+            description "none";

+        }

+        list oam-job {

+            key 'uuid';

+            uses oam-job;

+            description "none";

+        }

+        list oam-profile {

+            key 'uuid';

+            uses oam-profile;

+            description "none";

+        }

+        description "none";

+    }

+    grouping oam-service-end-point {

+        container service-interface-point {

+            uses tapi-common:service-interface-point-ref;

+            description "none";

+        }

+        container connectivity-service-end-point {

+            uses tapi-connectivity:connectivity-service-end-point-ref;

+            description "none";

+        }

+        container mep {

+            uses mep-ref;

+            config false;

+            description "none";

+        }

+        container mip {

+            uses mip-ref;

+            config false;

+            description "none";

+        }

+        leaf layer-protocol-name {

+            type tapi-common:layer-protocol-name;

+            description "none";

+        }

+        leaf direction {

+            type tapi-common:port-direction;

+            description "none";

+        }

+        leaf mep-identifier {

+            type string;

+            description "This attribute contains the identifier of the MEP.

+                This attribute is empty in case the OSEP relates to the provisioing of an MIP.

+                ";

+        }

+        leaf-list peer-mep-identifier {

+            type string;

+            description "This attribute models the MI_PeerMEP_ID[i] defined in G.8021 and configured as specified in G.8051. It provides the identifiers of the MEPs which are peer to the subject MEP.

+                This attribute is not specified in case the OSEP relates to the provisioing of an MIP.

+                In case of P2P, there is only one peer";

+        }

+        uses tapi-common:local-class;

+        uses tapi-common:admin-state-pac;

+        description "none";

+    }

+    grouping mep-mip-list {

+        list mip {

+            uses mip-ref;

+            key 'meg-uuid mip-local-id';

+            description "none";

+        }

+        list mep {

+            uses mep-ref;

+            key 'meg-uuid mep-local-id';

+            description "none";

+        }

+        description "none";

+    }

+    grouping oam-constraint {

+        leaf layer-protocol-name {

+            type tapi-common:layer-protocol-name;

+            description "none";

+        }

+        leaf direction {

+            type tapi-common:forwarding-direction;

+            description "none";

+        }

+        leaf meg-level {

+            type uint64;

+            description "none";

+        }

+        description "none";

+    }

+    grouping pm-current-data {

+        list pm-history-data {

+            key 'local-id';

+            config false;

+            uses pm-history-data;

+            description "in case of 24hr Current Data, at least 1 History Data.

+                In case of 15min Current Data, at least 16 History Data.

+                In case of <15min, the number of History Data shall be able to cover a span of 4 hours.";

+        }

+        container granularity-period {

+            uses tapi-common:time-period;

+            description "none";

+        }

+        leaf timestamp {

+            type tapi-common:date-and-time;

+            config false;

+            description "This attribute indicates the start of the current monitoring interval.

+                The value is bound to the quarter of an hour in case of a 15 minute interval and bound to the hour in case of a 24 hour interval.";

+        }

+        container elapsed-time {

+            uses tapi-common:time-interval;

+            description "none";

+        }

+        leaf suspect-interval-flag {

+            type boolean;

+            description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:

+                – Suspect data were detected by the actual resource doing data collection.

+                – Transition of the administrativeState attribute to/from the 'lock' state.

+                – Transition of the operationalState to/from the 'disabled' state.

+                – Scheduler setting that inhibits the collection function.

+                – The performance counters were reset during the interval.

+                – The currentData (or subclass) object instance was created during the monitoring period.";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    grouping pm-history-data {

+        container granularity-period {

+            uses tapi-common:time-period;

+            description "none";

+        }

+        leaf period-end-time {

+            type tapi-common:date-and-time;

+            description "none";

+        }

+        leaf suspect-interval-flag {

+            type boolean;

+            config false;

+            description "This attribute indicates that the performance data may not be reliable.";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    grouping oam-profile {

+        list pm-threshold-data {

+            key 'local-id';

+            min-elements 1;

+            uses pm-threshold-data;

+            description "none";

+        }

+        list pm-bin-data {

+            key 'local-id';

+            min-elements 1;

+            uses pm-bin-data;

+            description "none";

+        }

+        uses tapi-common:global-class;

+        description "none";

+    }

+    grouping pm-threshold-data {

+        container granularity-period {

+            uses tapi-common:time-period;

+            description "none";

+        }

+        leaf is-transient {

+            type boolean;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    grouping pm-bin-data {

+        container granularity-period {

+            uses tapi-common:time-period;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+

+   /**************************

+    * package type-definitions

+    **************************/

+    identity OAM_JOB_TYPE {

+        description "none";

+    }

+    typedef oam-job-type {

+        type identityref {

+            base OAM_JOB_TYPE;

+        }

+        description "none";

+    }

+

+   /**************************

+    * package interfaces

+    **************************/

+    rpc create-oam-service {

+        description "none";

+        input {

+            list end-point {

+                key 'local-id';

+                min-elements 2;

+                uses oam-service-end-point;

+                description "none";

+            }

+            container oam-constraint {

+                uses oam-constraint;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container service {

+                uses oam-service;

+                description "none";

+            }

+        }

+    }

+    rpc delete-oam-service {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+        }

+    }

+    rpc get-oam-service {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container service {

+                uses oam-service;

+                description "none";

+            }

+        }

+    }

+    rpc create-oam-job {

+        description "none";

+        input {

+            leaf oam-job-type {

+                type oam-job-type;

+                description "none";

+            }

+            list oam-service-end-point {

+                key 'local-id';

+                min-elements 2;

+                uses oam-service-end-point;

+                description "none";

+            }

+            container oam-profile {

+                uses oam-profile;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

+            leaf schedule {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container oam-job {

+                uses oam-job;

+                description "none";

+            }

+        }

+    }

+    rpc get-oam-job {

+        description "none";

+        input {

+            leaf job-id {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container oam-job {

+                uses oam-job;

+                description "none";

+            }

+        }

+    }

+    rpc get-oam-service-list {

+        description "none";

+        output {

+            list service {

+                key 'uuid';

+                uses oam-service;

+                description "none";

+            }

+        }

+    }

+    rpc get-meg {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container meg {

+                uses meg;

+                description "none";

+            }

+        }

+    }

+    rpc update-oam-service {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+            list end-point {

+                key 'local-id';

+                uses oam-service-end-point;

+                description "none";

+            }

+            container oam-constraint {

+                uses oam-constraint;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container service {

+                uses oam-service;

+                description "none";

+            }

+        }

+    }

+    rpc delete-oam-job {

+        description "none";

+        input {

+            leaf job-id {

+                type string;

+                description "none";

+            }

+        }

+    }

+    rpc update-oam-job {

+        description "none";

+        input {

+            leaf job-id {

+                type string;

+                description "none";

+            }

+            container oam-profile {

+                uses oam-profile;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

+            leaf schedule {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container oam-job {

+                uses oam-job;

+                description "none";

+            }

+        }

+    }

+    rpc create-oam-service-end-point {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+            leaf sip-id {

+                type string;

+                description "none";

+            }

+            leaf c-sep-id {

+                type string;

+                description "none";

+            }

+            leaf layer {

+                type string;

+                description "none";

+            }

+            leaf direction {

+                type string;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

+            leaf mep-identifier {

+                type string;

+                description "none";

+            }

+            leaf-list peer-mep-identifier {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container end-point {

+                uses oam-service-end-point;

+                description "none";

+            }

+        }

+    }

+    rpc delete-oam-service-end-point {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+            leaf o-sep-id {

+                type string;

+                description "none";

+            }

+        }

+    }

+    rpc update-oam-service-end-point {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+            leaf o-sep-id {

+                type string;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container end-point {

+                uses oam-service-end-point;

+                description "none";

+            }

+        }

+    }

+    rpc get-oam-service-end-point {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+            leaf o-sep-id {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container end-point {

+                uses oam-service-end-point;

+                description "none";

+            }

+        }

+    }

+}