[ODTN]Fix indentation for Yang files

It is change only in appearance.

Change-Id: I09cbf6d3a47b2d6f1ea8c2504f0a1cbde7ce126f
diff --git a/models/tapi/src/main/yang/tapi-common@2018-10-16.yang b/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
old mode 100644
new mode 100755
index 958febf..d526a7a
--- a/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
@@ -27,34 +27,34 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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>";

     }

 

-    /*************************

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

     * definitions of refrences

-    *************************/

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

     grouping service-interface-point-ref {

         leaf service-interface-point-uuid {

             type leafref {

@@ -65,614 +65,613 @@
         description "none";

     }

 

-    /***********************

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

     * package object-classes

-    **********************/ 

-        grouping admin-state-pac {

-            leaf administrative-state {

-                type administrative-state;

-                description "none";

-            }

-            leaf operational-state {

-                type operational-state;

-                config false;

-                description "none";

-            }

-            leaf lifecycle-state {

-                type lifecycle-state;

-                config false;

-                description "none";

-            }

-            description "Provides state attributes that are applicable to an entity that can be administered. Such an entity also has operational and lifecycle aspects.";

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

+    grouping admin-state-pac {

+        leaf administrative-state {

+            type administrative-state;

+            description "none";

         }

-        grouping global-class {

-            leaf uuid {

-                type uuid;

-                description "UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity.

-                    UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.

-                    Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} 

-                    Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";

-            }

-            list name {

-                key 'value-name';

-                uses name-and-value;

-                description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";

-            }

-            description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";

+        leaf operational-state {

+            type operational-state;

+            config false;

+            description "none";

         }

-        grouping lifecycle-state-pac {

-            leaf lifecycle-state {

-                type lifecycle-state;

-                config false;

+        leaf lifecycle-state {

+            type lifecycle-state;

+            config false;

+            description "none";

+        }

+        description "Provides state attributes that are applicable to an entity that can be administered. Such an entity also has operational and lifecycle aspects.";

+    }

+    grouping global-class {

+        leaf uuid {

+            type uuid;

+            description "UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity.

+                UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.

+                Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}

+                Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";

+        }

+        list name {

+            key 'value-name';

+            uses name-and-value;

+            description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";

+        }

+        description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";

+    }

+    grouping lifecycle-state-pac {

+        leaf lifecycle-state {

+            type lifecycle-state;

+            config false;

+            description "none";

+        }

+        description "Provides state attributes for an entity that has lifeccycle aspects only.";

+    }

+    grouping local-class {

+        leaf local-id {

+            type string;

+            description "none";

+        }

+        list name {

+            key 'value-name';

+            uses name-and-value;

+            description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";

+        }

+        description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";

+    }

+    grouping operational-state-pac {

+        leaf operational-state {

+            type operational-state;

+            config false;

+            description "none";

+        }

+        leaf lifecycle-state {

+            type lifecycle-state;

+            config false;

+            description "none";

+        }

+        description "Provides state attributes that are applicable to an entity that reflects operational aspects. Such an entity is expected to also have lifecycle aspects.";

+    }

+    container context {

+        uses tapi-context;

+        presence "Root container for all TAPI interaction";

+        description "none";

+    }

+    grouping tapi-context {

+        list service-interface-point {

+            key 'uuid';

+            uses service-interface-point;

+            description "none";

+        }

+        uses global-class;

+        description "The Network Control Domain (NCD) object class represents the scope of control that a particular SDN controller has with respect to a particular network, (i.e., encompassing a designated set of interconnected (virtual) network elements).";

+    }

+    grouping resource-spec {

+        uses global-class;

+        description "none";

+    }

+    grouping service-spec {

+        uses global-class;

+        description "none";

+    }

+    grouping service-interface-point {

+        leaf layer-protocol-name {

+            type layer-protocol-name;

+            config false;

+            description "Usage of layerProtocolName [>1]  in the ServiceInterfacePoint should be considered experimental";

+        }

+        leaf-list supported-layer-protocol-qualifier {

+            type layer-protocol-qualifier;

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        uses resource-spec;

+        uses admin-state-pac;

+        uses capacity-pac;

+        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.

+            The structure of LTP supports all transport protocols including circuit and packet forms.";

+    }

+    grouping capacity-pac {

+        container total-potential-capacity {

+            config false;

+            uses capacity;

+            description "An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken.";

+        }

+        container available-capacity {

+            config false;

+            uses capacity;

+            description "Capacity available to be assigned.";

+        }

+        description "The TopologicalEntity derives capacity from the underlying realization.

+            A TopologicalEntity may be an abstraction and virtualization of a subset of the underlying capability offered in a view or may be directly reflecting the underlying realization.

+            A TopologicalEntity may be directly used in the view or may be assigned to another view for use.

+            The clients supported by a multi-layer TopologicalEntity may interact such that the resources used by one client may impact those available to another. This is derived from the LTP spec details.

+            Represents the capacity available to user (client) along with client interaction and usage.

+            A TopologicalEntity may reflect one or more client protocols and one or more members for each profile.";

+    }

+    grouping termination-pac {

+        leaf termination-direction {

+            type termination-direction;

+            config false;

+            description "The overall directionality of the LP.

+                - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.

+                - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows

+                - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";

+        }

+        leaf termination-state {

+            type termination-state;

+            config false;

+            description "Indicates whether the layer is terminated and if so how.";

+        }

+        description "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality.

+            It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection.

+            Where the client – server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where the is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP. ";

+    }

+

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

+    * package type-definitions

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

+    identity LAYER_PROTOCOL_QUALIFIER {

+        description "none";

+    }

+    typedef administrative-state {

+        type enumeration {

+            enum LOCKED {

+                description "Users are administratively prohibited from making use of the resource.";

+            }

+            enum UNLOCKED {

+                description "Users are allowed to use the resource";

+            }

+        }

+        description "The possible values of the administrativeState.";

+    }

+    typedef date-and-time {

+        type string;

+        description "This primitive type defines the date and time according to the following structure:

+            yyyyMMddhhmmss.s[Z|{+|-}HHMm] where:

+            yyyy    0000..9999    year

+            MM    01..12            month

+            dd        01..31            day

+            hh        00..23            hour

+            mm    00..59            minute

+            ss        00..59            second

+            s        .0...9            tenth of second (set to .0 if EMS or NE cannot support this granularity)

+            Z        Z                indicates UTC (rather than local time)

+            {+|-}    + or -            delta from UTC

+            HH        00..23            time zone difference in hours

+            Mm    00..59            time zone difference in minutes.";

+    }

+    typedef directive-value {

+        type enumeration {

+            enum MINIMIZE {

                 description "none";

             }

-            description "Provides state attributes for an entity that has lifeccycle aspects only.";

+            enum MAXIMIZE {

+                description "none";

+            }

+            enum ALLOW {

+                description "none";

+            }

+            enum DISALLOW {

+                description "none";

+            }

+            enum DONT_CARE {

+                description "none";

+            }

         }

-        grouping local-class {

-            leaf local-id {

+        description "none";

+    }

+    typedef forwarding-direction {

+        type enumeration {

+            enum BIDIRECTIONAL {

+                description "The Fowarding entity supports both BIDIRECTIONAL flows at all Ports (i.e. all Ports have both an INPUT flow and an OUTPUT flow defined)";

+            }

+            enum UNIDIRECTIONAL {

+                description "The Forwarding entity has Ports that are either INPUT or OUTPUT. It has no BIDIRECTIONAL Ports.";

+            }

+            enum UNDEFINED_OR_UNKNOWN {

+                description "Not a normal state. The system is unable to determine the correct value.";

+            }

+        }

+        description "The directionality of a Forwarding entity.";

+    }

+    typedef layer-protocol-name {

+        type enumeration {

+            enum ODU {

+                description "Models the ODU layer as per ITU-T G.872";

+            }

+            enum ETH {

+                description "Models the ETH layer as per ITU-T G.8010";

+            }

+            enum DSR {

+                description "Models a Digital Signal of an unspecified rate. This value can be used when the intent is to respresent an generic digital layer signal without making any statement on its format or overhead (processing) capabilities.";

+            }

+            enum PHOTONIC_MEDIA {

+                description "Models the OCH, OTSi, OTSiA, OTSiG, OMS, OTS and Media channels as per ITU-T G.872 (2017) version 4";

+            }

+        }

+        description "Provides a controlled list of layer protocol names and indicates the naming authority.

+            Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference.

+            Layer protocol names include:

+            -    Layer 1 (L1): OTU, ODU

+            -    Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)

+            ";

+    }

+    typedef lifecycle-state {

+        type enumeration {

+            enum PLANNED {

+                description "The resource is planned but is not present in the network.";

+            }

+            enum POTENTIAL_AVAILABLE {

+                description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.

+                    o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.

+                    o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";

+            }

+            enum POTENTIAL_BUSY {

+                description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.

+                    o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.

+                    o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";

+            }

+            enum INSTALLED {

+                description "The resource is present in the network and is capable of providing the service expected.";

+            }

+            enum PENDING_REMOVAL {

+                description "The resource has been marked for removal";

+            }

+        }

+        description "The possible values of the lifecycleState.";

+    }

+    grouping name-and-value {

+        leaf value-name {

+            type string;

+            description "The name of the value. The value need not have a name.";

+        }

+        leaf value {

+            type string;

+            description "The value";

+        }

+        description "A scoped name-value pair";

+    }

+    typedef operational-state {

+        type enumeration {

+            enum DISABLED {

+                description "The resource is unable to meet the SLA of the user of the resource. If no (explicit) SLA is defined the resource is disabled if it is totally inoperable and unable to provide service to the user.";

+            }

+            enum ENABLED {

+                description "The resource is partially or fully operable and available for use";

+            }

+        }

+        description "The possible values of the operationalState.";

+    }

+    typedef port-direction {

+        type enumeration {

+            enum BIDIRECTIONAL {

+                description "The Port has both an INPUT flow and an OUTPUT flow defined.";

+            }

+            enum INPUT {

+                description "The Port only has definition for a flow into the Forwarding entity (i.e. an ingress flow).";

+            }

+            enum OUTPUT {

+                description "The Port only has definition for a flow out of the Forwarding entity (i.e. an egress flow).";

+            }

+            enum UNIDENTIFIED_OR_UNKNOWN {

+                description "Not a normal state. The system is unable to determine the correct value.";

+            }

+        }

+        description "The orientation of flow at the Port of a Forwarding entity";

+    }

+    typedef port-role {

+        type enumeration {

+            enum SYMMETRIC {

+                description "none";

+            }

+            enum ROOT {

+                description "none";

+            }

+            enum LEAF {

+                description "none";

+            }

+            enum TRUNK {

+                description "none";

+            }

+            enum UNKNOWN {

+                description "none";

+            }

+        }

+        description "The role of an end in the context of the function of the forwarding entity that it bounds";

+    }

+    typedef termination-direction {

+        type enumeration {

+            enum BIDIRECTIONAL {

+                description "A Termination with both SINK and SOURCE flows.";

+            }

+            enum SINK {

+                description "The flow is up the layer stack from the server side to the client side.

+                    Considering an example of a Termination function within the termination entity, a SINK flow:

+                    - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component

+                    - then will be decoded and deconstructed

+                    - then relevant parts of the flow will be sent out of the termination function (the client side) where it is essentially at an OUTPUT from the termination component

+                    A SINK termination is one that only supports a SINK flow.

+                    A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";

+            }

+            enum SOURCE {

+                description "The flow is down the layer stack from the server side to the client side.

+                    Considering an example of a Termination function within the termination entity, a SOURCE flow:

+                    - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component

+                    - then will be assembled with various overheads etc and will be coded

+                    - then coded form of the assembly of flow will be sent out of the termination function (the server side) where it is essentially at an OUTPUT from the termination component

+                    A SOURCE termination is one that only supports a SOURCE flow.

+                    A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";

+            }

+            enum UNDEFINED_OR_UNKNOWN {

+                description "Not a normal state. The system is unable to determine the correct value.";

+            }

+        }

+        description "The directionality of a termination entity";

+    }

+    typedef termination-state {

+        type enumeration {

+            enum LP_CAN_NEVER_TERMINATE {

+                description "A non-flexible case that can never be terminated.";

+            }

+            enum LT_NOT_TERMINATED {

+                description "A flexible termination that can terminate but is currently not terminated.";

+            }

+            enum TERMINATED_SERVER_TO_CLIENT_FLOW {

+                description "A flexible termination that is currently terminated for server to client flow only.";

+            }

+            enum TERMINATED_CLIENT_TO_SERVER_FLOW {

+                description "A flexible termination that is currently terminated for client to server flow only.";

+            }

+            enum TERMINATED_BIDIRECTIONAL {

+                description "A flexible termination that is currently terminated in both directions of flow.";

+            }

+            enum LT_PERMENANTLY_TERMINATED {

+                description "A non-flexible termination that is always terminated (in both directions of flow for a bidirectional case and in the one direction of flow for both unidirectional cases).";

+            }

+            enum TERMINATION_STATE_UNKNOWN {

+                description "There TerminationState cannot be determined.";

+            }

+        }

+        description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.

+            Indicates to what degree the LayerTermination is terminated.";

+    }

+    typedef uuid {

+        type string;

+        description "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure.

+            UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.

+            Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}

+            Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";

+    }

+    grouping capacity {

+        container total-size {

+            uses capacity-value;

+            description "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate.";

+        }

+        container bandwidth-profile {

+            uses bandwidth-profile;

+            description "none";

+        }

+        description "Information on capacity of a particular TopologicalEntity.";

+    }

+    grouping bandwidth-profile {

+        leaf bw-profile-type {

+            type bandwidth-profile-type;

+            description "none";

+        }

+        container committed-information-rate {

+            uses capacity-value;

+            description "none";

+        }

+        container committed-burst-size {

+            uses capacity-value;

+            description "none";

+        }

+        container peak-information-rate {

+            uses capacity-value;

+            description "none";

+        }

+        container peak-burst-size {

+            uses capacity-value;

+            description "none";

+        }

+        leaf color-aware {

+            type boolean;

+            description "none";

+        }

+        leaf coupling-flag {

+            type boolean;

+            description "none";

+        }

+        description "none";

+    }

+    grouping capacity-value {

+        leaf value {

+            type uint64;

+            description "none";

+        }

+        leaf unit {

+            type capacity-unit;

+            description "none";

+        }

+        description "The Capacity (Bandwidth) values that are applicable for digital layers.";

+    }

+    typedef capacity-unit {

+        type enumeration {

+            enum TB {

+                description "Indicates that the integer CapacityValue is in TeraBytes";

+            }

+            enum TBPS {

+                description "Indicates that the integer CapacityValue is in Terabit-per-second";

+            }

+            enum GB {

+                description "Indicates that the integer CapacityValue is in GigaBytes";

+            }

+            enum GBPS {

+                description "Indicates that the integer CapacityValue is in Gigabit-per-second";

+            }

+            enum MB {

+                description "Indicates that the integer CapacityValue is in MegaBytes";

+            }

+            enum MBPS {

+                description "Indicates that the integer CapacityValue is in Megabit-per-second";

+            }

+            enum KB {

+                description "Indicates that the integer CapacityValue is in KiloBytes";

+            }

+            enum KBPS {

+                description "Indicates that the integer CapacityValue is in Kilobit-per-second";

+            }

+            enum GHz {

+                description "none";

+            }

+            enum MHz {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef bandwidth-profile-type {

+        type enumeration {

+            enum MEF_10.x {

+                description "none";

+            }

+            enum RFC_2697 {

+                description "none";

+            }

+            enum RFC_2698 {

+                description "none";

+            }

+            enum RFC_4115 {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    grouping time-range {

+        leaf end-time {

+            type date-and-time;

+            description "none";

+        }

+        leaf start-time {

+            type date-and-time;

+            description "none";

+        }

+        description "none";

+    }

+    grouping time-period {

+        leaf value {

+            type uint64;

+            description "none";

+        }

+        leaf unit {

+            type time-unit;

+            description "none";

+        }

+        description "none";

+    }

+    typedef time-unit {

+        type enumeration {

+            enum YEARS {

+                description "none";

+            }

+            enum MONTHS {

+                description "none";

+            }

+            enum DAYS {

+                description "none";

+            }

+            enum HOURS {

+                description "none";

+            }

+            enum MINUTES {

+                description "none";

+            }

+            enum SECONDS {

+                description "none";

+            }

+            enum MILLISECONDS {

+                description "none";

+            }

+            enum MICROSECONDS {

+                description "none";

+            }

+            enum NANOSECONDS {

+                description "none";

+            }

+            enum PICOSECONDS {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    grouping time-interval {

+        list period {

+            key 'unit';

+            min-elements 1;

+            max-elements 5;

+            uses time-period;

+            description "none";

+        }

+        description "none";

+    }

+    typedef layer-protocol-qualifier {

+        type identityref {

+            base LAYER_PROTOCOL_QUALIFIER;

+        }

+        description "This enumeration is used to qualify the sub-layers (if applicable) for a specific LayerProtocol.

+            This extensible enumeration is intentionally empty in the common module and will be augmented with layer-specific values in the respective technology-specific modules.

+            Examples:

+            - LayerProtocolName := OPTICAL_DATA_UNIT

+            LayerProtocolQualifier := 'ODU_FLEX', 'ODU_0', 'ODU_1', 'ODU_2', 'ODU_2E', 'ODU_3', 'ODU_4'', 'ODU_CBR'', 'ODU_GFP'', 'ODU_GFP_HAO', etc

+            - LayerProtocolName := DIGITAL_SIGNAL_RATE

+            LayerProtocolQualifier := 'GBE', '10_GBE_WAN', '10_GBE_LAN', '100_GBE', 'FC_100', 'FC_200', 'FC_400', 'FC_800', 'FC_1200', 'FC_1600', 'FC_3200', 'STM_1', 'STM_4', 'STM_16', 'STM_64', 'STM_256', 'OC_3', 'OC_12', 'OC_48', 'OC_192', 'OC_768', 'OTU_1', 'OTU_2', 'OTU_2E', 'OTU_3', 'OTU_4', 'GPON', 'XGPON', 'IB_SDR', 'IB_DDR', 'IB_QDR', 'SBCON_ESCON', 'DVB_ASI', 'SDI', 'SDI_1G5', 'SDI_3G', etc

+            - LayerProtocolName := PHOTONIC_MEDIA

+            LayerProtocolQualifier := OCH, OTSi, OTSiA, NMC, NMCA, SMC, SMCA, OMS, OTS

+            ";

+    }

+

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

+    * package interfaces

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

+    rpc get-service-interface-point-details {

+        description "none";

+        input {

+            leaf sip-id-or-name {

                 type string;

                 description "none";

             }

-            list name {

-                key 'value-name';

-                uses name-and-value;

-                description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";

-            }

-            description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";

         }

-        grouping operational-state-pac {

-            leaf operational-state {

-                type operational-state;

-                config false;

+        output {

+            container sip {

+                uses service-interface-point;

                 description "none";

             }

-            leaf lifecycle-state {

-                type lifecycle-state;

-                config false;

-                description "none";

-            }

-            description "Provides state attributes that are applicable to an entity that reflects operational aspects. Such an entity is expected to also have lifecycle aspects.";

         }

-        container context {

-            uses tapi-context;

-            presence "Root container for all TAPI interaction";

-            description "none";

-        }

-        grouping tapi-context {

-            list service-interface-point {

+    }

+    rpc get-service-interface-point-list {

+        description "none";

+        output {

+            list sip {

                 key 'uuid';

                 uses service-interface-point;

                 description "none";

             }

-            uses global-class;

-            description "The Network Control Domain (NCD) object class represents the scope of control that a particular SDN controller has with respect to a particular network, (i.e., encompassing a designated set of interconnected (virtual) network elements).";

         }

-        grouping resource-spec {

-            uses global-class;

-            description "none";

-        }

-        grouping service-spec {

-            uses global-class;

-            description "none";

-        }

-        grouping service-interface-point {

-            leaf layer-protocol-name {

-                type layer-protocol-name;

-                config false;

-                description "Usage of layerProtocolName [>1]  in the ServiceInterfacePoint should be considered experimental";

-            }

-            leaf-list supported-layer-protocol-qualifier {

-                type layer-protocol-qualifier;

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            uses resource-spec;

-            uses admin-state-pac;

-            uses capacity-pac;

-            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 

-                The structure of LTP supports all transport protocols including circuit and packet forms.";

-        }

-        grouping capacity-pac {

-            container total-potential-capacity {

-                config false;

-                uses capacity;

-                description "An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken.";

-            }

-            container available-capacity {

-                config false;

-                uses capacity;

-                description "Capacity available to be assigned.";

-            }

-            description "The TopologicalEntity derives capacity from the underlying realization. 

-                A TopologicalEntity may be an abstraction and virtualization of a subset of the underlying capability offered in a view or may be directly reflecting the underlying realization.

-                A TopologicalEntity may be directly used in the view or may be assigned to another view for use.

-                The clients supported by a multi-layer TopologicalEntity may interact such that the resources used by one client may impact those available to another. This is derived from the LTP spec details.

-                Represents the capacity available to user (client) along with client interaction and usage. 

-                A TopologicalEntity may reflect one or more client protocols and one or more members for each profile.";

-        }

-        grouping termination-pac {

-            leaf termination-direction {

-                type termination-direction;

-                config false;

-                description "The overall directionality of the LP. 

-                    - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.

-                    - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows

-                    - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";

-            }

-            leaf termination-state {

-                type termination-state;

-                config false;

-                description "Indicates whether the layer is terminated and if so how.";

-            }

-            description "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality. 

-                It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection. 

-                Where the client – server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where the is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP. ";

-        }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        identity LAYER_PROTOCOL_QUALIFIER {

-            description "none";

-        }

-        typedef administrative-state {

-            type enumeration {

-                enum LOCKED {

-                    description "Users are administratively prohibited from making use of the resource.";

-                }

-                enum UNLOCKED {

-                    description "Users are allowed to use the resource";

-                }

-            }

-            description "The possible values of the administrativeState.";

-        }

-        typedef date-and-time {

-            type string;

-            description "This primitive type defines the date and time according to the following structure:

-                yyyyMMddhhmmss.s[Z|{+|-}HHMm] where:

-                yyyy    0000..9999    year

-                MM    01..12            month

-                dd        01..31            day

-                hh        00..23            hour

-                mm    00..59            minute

-                ss        00..59            second

-                s        .0...9            tenth of second (set to .0 if EMS or NE cannot support this granularity)

-                Z        Z                indicates UTC (rather than local time)

-                {+|-}    + or -            delta from UTC

-                HH        00..23            time zone difference in hours

-                Mm    00..59            time zone difference in minutes.";

-        }

-        typedef directive-value {

-            type enumeration {

-                enum MINIMIZE {

-                    description "none";

-                }

-                enum MAXIMIZE {

-                    description "none";

-                }

-                enum ALLOW {

-                    description "none";

-                }

-                enum DISALLOW {

-                    description "none";

-                }

-                enum DONT_CARE {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef forwarding-direction {

-            type enumeration {

-                enum BIDIRECTIONAL {

-                    description "The Fowarding entity supports both BIDIRECTIONAL flows at all Ports (i.e. all Ports have both an INPUT flow and an OUTPUT flow defined)";

-                }

-                enum UNIDIRECTIONAL {

-                    description "The Forwarding entity has Ports that are either INPUT or OUTPUT. It has no BIDIRECTIONAL Ports.";

-                }

-                enum UNDEFINED_OR_UNKNOWN {

-                    description "Not a normal state. The system is unable to determine the correct value.";

-                }

-            }

-            description "The directionality of a Forwarding entity.";

-        }

-        typedef layer-protocol-name {

-            type enumeration {

-                enum ODU {

-                    description "Models the ODU layer as per ITU-T G.872";

-                }

-                enum ETH {

-                    description "Models the ETH layer as per ITU-T G.8010";

-                }

-                enum DSR {

-                    description "Models a Digital Signal of an unspecified rate. This value can be used when the intent is to respresent an generic digital layer signal without making any statement on its format or overhead (processing) capabilities.";

-                }

-                enum PHOTONIC_MEDIA {

-                    description "Models the OCH, OTSi, OTSiA, OTSiG, OMS, OTS and Media channels as per ITU-T G.872 (2017) version 4";

-                }

-            }

-            description "Provides a controlled list of layer protocol names and indicates the naming authority.

-                Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference.

-                Layer protocol names include:

-                -    Layer 1 (L1): OTU, ODU

-                -    Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)

-                ";

-        }

-        typedef lifecycle-state {

-            type enumeration {

-                enum PLANNED {

-                    description "The resource is planned but is not present in the network.";

-                }

-                enum POTENTIAL_AVAILABLE {

-                    description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.

-                        o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.

-                        o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";

-                }

-                enum POTENTIAL_BUSY {

-                    description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.

-                        o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.

-                        o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";

-                }

-                enum INSTALLED {

-                    description "The resource is present in the network and is capable of providing the service expected.";

-                }

-                enum PENDING_REMOVAL {

-                    description "The resource has been marked for removal";

-                }

-            }

-            description "The possible values of the lifecycleState.";

-        }

-        grouping name-and-value {

-            leaf value-name {

+    }

+    rpc update-service-interface-point {

+        description "none";

+        input {

+            leaf sip-id-or-name {

                 type string;

-                description "The name of the value. The value need not have a name.";

-            }

-            leaf value {

-                type string;

-                description "The value";

-            }

-            description "A scoped name-value pair";

-        }

-        typedef operational-state {

-            type enumeration {

-                enum DISABLED {

-                    description "The resource is unable to meet the SLA of the user of the resource. If no (explicit) SLA is defined the resource is disabled if it is totally inoperable and unable to provide service to the user.";

-                }

-                enum ENABLED {

-                    description "The resource is partially or fully operable and available for use";

-                }

-            }

-            description "The possible values of the operationalState.";

-        }

-        typedef port-direction {

-            type enumeration {

-                enum BIDIRECTIONAL {

-                    description "The Port has both an INPUT flow and an OUTPUT flow defined.";

-                }

-                enum INPUT {

-                    description "The Port only has definition for a flow into the Forwarding entity (i.e. an ingress flow).";

-                }

-                enum OUTPUT {

-                    description "The Port only has definition for a flow out of the Forwarding entity (i.e. an egress flow).";

-                }

-                enum UNIDENTIFIED_OR_UNKNOWN {

-                    description "Not a normal state. The system is unable to determine the correct value.";

-                }

-            }

-            description "The orientation of flow at the Port of a Forwarding entity";

-        }

-        typedef port-role {

-            type enumeration {

-                enum SYMMETRIC {

-                    description "none";

-                }

-                enum ROOT {

-                    description "none";

-                }

-                enum LEAF {

-                    description "none";

-                }

-                enum TRUNK {

-                    description "none";

-                }

-                enum UNKNOWN {

-                    description "none";

-                }

-            }

-            description "The role of an end in the context of the function of the forwarding entity that it bounds";

-        }

-        typedef termination-direction {

-            type enumeration {

-                enum BIDIRECTIONAL {

-                    description "A Termination with both SINK and SOURCE flows.";

-                }

-                enum SINK {

-                    description "The flow is up the layer stack from the server side to the client side. 

-                        Considering an example of a Termination function within the termination entity, a SINK flow:

-                        - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component

-                        - then will be decoded and deconstructed 

-                        - then relevant parts of the flow will be sent out of the termination function (the client side) where it is essentially at an OUTPUT from the termination component

-                        A SINK termination is one that only supports a SINK flow.

-                        A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";

-                }

-                enum SOURCE {

-                    description "The flow is down the layer stack from the server side to the client side. 

-                        Considering an example of a Termination function within the termination entity, a SOURCE flow:

-                        - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component

-                        - then will be assembled with various overheads etc and will be coded 

-                        - then coded form of the assembly of flow will be sent out of the termination function (the server side) where it is essentially at an OUTPUT from the termination component

-                        A SOURCE termination is one that only supports a SOURCE flow.

-                        A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";

-                }

-                enum UNDEFINED_OR_UNKNOWN {

-                    description "Not a normal state. The system is unable to determine the correct value.";

-                }

-            }

-            description "The directionality of a termination entity";

-        }

-        typedef termination-state {

-            type enumeration {

-                enum LP_CAN_NEVER_TERMINATE {

-                    description "A non-flexible case that can never be terminated.";

-                }

-                enum LT_NOT_TERMINATED {

-                    description "A flexible termination that can terminate but is currently not terminated.";

-                }

-                enum TERMINATED_SERVER_TO_CLIENT_FLOW {

-                    description "A flexible termination that is currently terminated for server to client flow only.";

-                }

-                enum TERMINATED_CLIENT_TO_SERVER_FLOW {

-                    description "A flexible termination that is currently terminated for client to server flow only.";

-                }

-                enum TERMINATED_BIDIRECTIONAL {

-                    description "A flexible termination that is currently terminated in both directions of flow.";

-                }

-                enum LT_PERMENANTLY_TERMINATED {

-                    description "A non-flexible termination that is always terminated (in both directions of flow for a bidirectional case and in the one direction of flow for both unidirectional cases).";

-                }

-                enum TERMINATION_STATE_UNKNOWN {

-                    description "There TerminationState cannot be determined.";

-                }

-            }

-            description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.

-                Indicates to what degree the LayerTermination is terminated.";

-        }

-        typedef uuid {

-            type string;

-            description "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure.

-                UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.

-                Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} 

-                Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";

-        }

-        grouping capacity {

-            container total-size {

-                uses capacity-value;

-                description "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate.";

-            }

-            container bandwidth-profile {

-                uses bandwidth-profile;

                 description "none";

             }

-            description "Information on capacity of a particular TopologicalEntity.";

-        }

-        grouping bandwidth-profile {

-            leaf bw-profile-type {

-                type bandwidth-profile-type;

+            leaf state {

+                type administrative-state;

                 description "none";

             }

-            container committed-information-rate {

-                uses capacity-value;

-                description "none";

-            }

-            container committed-burst-size {

-                uses capacity-value;

-                description "none";

-            }

-            container peak-information-rate {

-                uses capacity-value;

-                description "none";

-            }

-            container peak-burst-size {

-                uses capacity-value;

-                description "none";

-            }

-            leaf color-aware {

-                type boolean;

-                description "none";

-            }

-            leaf coupling-flag {

-                type boolean;

-                description "none";

-            }

-            description "none";

-        }

-        grouping capacity-value {

-            leaf value {

-                type uint64;

-                description "none";

-            }

-            leaf unit {

-                type capacity-unit;

-                description "none";

-            }

-            description "The Capacity (Bandwidth) values that are applicable for digital layers.";

-        }

-        typedef capacity-unit {

-            type enumeration {

-                enum TB {

-                    description "Indicates that the integer CapacityValue is in TeraBytes";

-                }

-                enum TBPS {

-                    description "Indicates that the integer CapacityValue is in Terabit-per-second";

-                }

-                enum GB {

-                    description "Indicates that the integer CapacityValue is in GigaBytes";

-                }

-                enum GBPS {

-                    description "Indicates that the integer CapacityValue is in Gigabit-per-second";

-                }

-                enum MB {

-                    description "Indicates that the integer CapacityValue is in MegaBytes";

-                }

-                enum MBPS {

-                    description "Indicates that the integer CapacityValue is in Megabit-per-second";

-                }

-                enum KB {

-                    description "Indicates that the integer CapacityValue is in KiloBytes";

-                }

-                enum KBPS {

-                    description "Indicates that the integer CapacityValue is in Kilobit-per-second";

-                }

-                enum GHz {

-                    description "none";

-                }

-                enum MHz {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef bandwidth-profile-type {

-            type enumeration {

-                enum MEF_10.x {

-                    description "none";

-                }

-                enum RFC_2697 {

-                    description "none";

-                }

-                enum RFC_2698 {

-                    description "none";

-                }

-                enum RFC_4115 {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        grouping time-range {

-            leaf end-time {

-                type date-and-time;

-                description "none";

-            }

-            leaf start-time {

-                type date-and-time;

-                description "none";

-            }

-            description "none";

-        }

-        grouping time-period {

-            leaf value {

-                type uint64;

-                description "none";

-            }

-            leaf unit {

-                type time-unit;

-                description "none";

-            }

-            description "none";

-        }

-        typedef time-unit {

-            type enumeration {

-                enum YEARS {

-                    description "none";

-                }

-                enum MONTHS {

-                    description "none";

-                }

-                enum DAYS {

-                    description "none";

-                }

-                enum HOURS {

-                    description "none";

-                }

-                enum MINUTES {

-                    description "none";

-                }

-                enum SECONDS {

-                    description "none";

-                }

-                enum MILLISECONDS {

-                    description "none";

-                }

-                enum MICROSECONDS {

-                    description "none";

-                }

-                enum NANOSECONDS {

-                    description "none";

-                }

-                enum PICOSECONDS {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        grouping time-interval {

-            list period {

-                key 'unit';

-                min-elements 1;

-                max-elements 5;

-                uses time-period;

-                description "none";

-            }

-            description "none";

-        }

-        typedef layer-protocol-qualifier {

-            type identityref {

-                base LAYER_PROTOCOL_QUALIFIER;

-            }

-            description "This enumeration is used to qualify the sub-layers (if applicable) for a specific LayerProtocol.

-                This extensible enumeration is intentionally empty in the common module and will be augmented with layer-specific values in the respective technology-specific modules.

-                Examples:

-                - LayerProtocolName := OPTICAL_DATA_UNIT

-                LayerProtocolQualifier := 'ODU_FLEX', 'ODU_0', 'ODU_1', 'ODU_2', 'ODU_2E', 'ODU_3', 'ODU_4'', 'ODU_CBR'', 'ODU_GFP'', 'ODU_GFP_HAO', etc

-                - LayerProtocolName := DIGITAL_SIGNAL_RATE

-                LayerProtocolQualifier := 'GBE', '10_GBE_WAN', '10_GBE_LAN', '100_GBE', 'FC_100', 'FC_200', 'FC_400', 'FC_800', 'FC_1200', 'FC_1600', 'FC_3200', 'STM_1', 'STM_4', 'STM_16', 'STM_64', 'STM_256', 'OC_3', 'OC_12', 'OC_48', 'OC_192', 'OC_768', 'OTU_1', 'OTU_2', 'OTU_2E', 'OTU_3', 'OTU_4', 'GPON', 'XGPON', 'IB_SDR', 'IB_DDR', 'IB_QDR', 'SBCON_ESCON', 'DVB_ASI', 'SDI', 'SDI_1G5', 'SDI_3G', etc

-                - LayerProtocolName := PHOTONIC_MEDIA

-                LayerProtocolQualifier := OCH, OTSi, OTSiA, NMC, NMCA, SMC, SMCA, OMS, OTS

-                ";

-        }

-

-    /***********************

-    * package interfaces

-    **********************/ 

-        rpc get-service-interface-point-details {

-            description "none";

-            input {

-                leaf sip-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container sip {

-                    uses service-interface-point;

-                    description "none";

-                }

-            }

         }

-        rpc get-service-interface-point-list {

-            description "none";

-            output {

-                list sip {

-                	key 'uuid';

-                    uses service-interface-point;

-                    description "none";

-                }

-            }

-        }

-        rpc update-service-interface-point {

-            description "none";

-            input {

-                leaf sip-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf state {

-                    type administrative-state;

-                    description "none";

-                }

-            }

-        }

-

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
old mode 100644
new mode 100755
index 7f01298..755eb2e
--- a/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
@@ -35,28 +35,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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" {

@@ -67,16 +67,16 @@
         description "Augments the base TAPI Context with ConnectivityService information";

     }

     augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

-    	container cep-list {

+        container cep-list {

             uses cep-list;

             description "none";

         }

         description "none";

     }

 

-    /*************************

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

     * definitions of references

-    *************************/

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

     grouping connectivity-service-ref {

         leaf connectivity-service-uuid {

             type leafref {

@@ -86,16 +86,15 @@
         }

         description "none";

     }

-

     grouping connectivity-service-end-point-ref {

-    	uses connectivity-service-ref;

-    	leaf connectivity-service-end-point-local-id {

-	    	type leafref {

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

-	        }

-	    	description "none";

-    	}

-    	description "none";

+        uses connectivity-service-ref;

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

+            type leafref {

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

+            }

+            description "none";

+        }

+        description "none";

     }

     grouping connection-end-point-ref {

         uses tapi-topology:node-edge-point-ref;

@@ -107,7 +106,6 @@
         }

         description "none";

     }

-

     grouping connection-ref {

         leaf connection-uuid {

             type leafref {

@@ -117,7 +115,6 @@
         }

         description "none";

     }

-

     grouping switch-control-ref {

         uses connection-ref;

         leaf switch-control-uuid {

@@ -128,9 +125,8 @@
         }

         description "none";

     }

-    

     grouping route-ref {

-    	uses connection-ref;

+        uses connection-ref;

         leaf route-local-id {

             type leafref {

                 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';

@@ -140,620 +136,619 @@
         description "none";

     }

 

-    /***********************

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

     * package object-classes

-    **********************/ 

-        grouping connection {

-            list connection-end-point {

-                uses connection-end-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

-                config false;

-                min-elements 2;

-                description "none";

-            }

-            list lower-connection {

-                uses connection-ref;

-                key 'connection-uuid';

-                config false;

-                description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).

-                    Aggregation is used as for the Node/Topology  to allow changes in hierarchy. 

-                    Connection aggregation reflects Node/Topology aggregation. 

-                    The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";

-            }

-            list supported-client-link {

-            	uses tapi-topology:link-ref;

-                key 'topology-uuid link-uuid';

-                config false;

-                description "none";

-            }

-            list route {

-                key 'local-id';

-                config false;

-                uses route;

-                description "none";

-            }

-            list switch-control {

-                key 'uuid';

-                config false;

-                uses switch-control;

-                description "none";

-            }

-            leaf direction {

-                type tapi-common:forwarding-direction;

-                config false;

-                description "none";

-            }

-            leaf layer-protocol-name {

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

-                config false;

-                description "none";

-            }

-            uses tapi-common:resource-spec;

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

-            description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.

-                At the lowest level of recursion, a FC represents a cross-connection within an NE.";

-        }

-        grouping connection-end-point {

-            leaf layer-protocol-name {

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

-                config false;

-                description "none";

-            }

-            leaf layer-protocol-qualifier {

-                type tapi-common:layer-protocol-qualifier;

-                config false;

-                description "none";

-            }

-            container parent-node-edge-point {

-            	uses tapi-topology:node-edge-point-ref;

-                config false;

-                description "none";

-            }

-            list client-node-edge-point {

-                uses tapi-topology:node-edge-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid';

-                config false;

-                description "none";

-            }

-            list aggregated-connection-end-point {

-                uses connection-end-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

-                config false;

-                description "none";

-            }

-            leaf connection-port-direction {

-                type tapi-common:port-direction;

-                config false;

-                description "The orientation of defined flow at the EndPoint.";

-            }

-            leaf connection-port-role {

-                type tapi-common:port-role;

-                config false;

-                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";

-            }

-            uses tapi-common:resource-spec;

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

-            uses tapi-common:termination-pac;

-            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 

-                The structure of LTP supports all transport protocols including circuit and packet forms.";

-        }

-        grouping connectivity-constraint {

-            leaf service-layer {

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

-                description "none";

-            }

-            leaf service-type {

-                type service-type;

-                description "none";

-            }

-            leaf service-level {

-                type string;

-                description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";

-            }

-            container requested-capacity {

-                uses tapi-common:capacity;

-                description "none";

-            }

-            leaf connectivity-direction {

-                type tapi-common:forwarding-direction;

-                description "none";

-            }

-            container schedule {

-                uses tapi-common:time-range;

-                description "none";

-            }

-            container coroute-inclusion {

-            	uses connectivity-service-ref;

-                description "none";

-            }

-            list diversity-exclusion {

-            	uses connectivity-service-ref;

-                key 'connectivity-service-uuid';

-                description "none";

-            }

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

+    grouping connection {

+        list connection-end-point {

+            uses connection-end-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

+            config false;

+            min-elements 2;

             description "none";

         }

-        grouping connectivity-service {

+        list lower-connection {

+            uses connection-ref;

+            key 'connection-uuid';

+            config false;

+            description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).

+                Aggregation is used as for the Node/Topology  to allow changes in hierarchy.

+                Connection aggregation reflects Node/Topology aggregation.

+                The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";

+        }

+        list supported-client-link {

+            uses tapi-topology:link-ref;

+            key 'topology-uuid link-uuid';

+            config false;

+            description "none";

+        }

+        list route {

+            key 'local-id';

+            config false;

+            uses route;

+            description "none";

+        }

+        list switch-control {

+            key 'uuid';

+            config false;

+            uses switch-control;

+            description "none";

+        }

+        leaf direction {

+            type tapi-common:forwarding-direction;

+            config false;

+            description "none";

+        }

+        leaf layer-protocol-name {

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

+            config false;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

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

+        description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.

+            At the lowest level of recursion, a FC represents a cross-connection within an NE.";

+    }

+    grouping connection-end-point {

+        leaf layer-protocol-name {

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

+            config false;

+            description "none";

+        }

+        leaf layer-protocol-qualifier {

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

+            config false;

+            description "none";

+        }

+        container parent-node-edge-point {

+            uses tapi-topology:node-edge-point-ref;

+            config false;

+            description "none";

+        }

+        list client-node-edge-point {

+            uses tapi-topology:node-edge-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid';

+            config false;

+            description "none";

+        }

+        list aggregated-connection-end-point {

+            uses connection-end-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

+            config false;

+            description "none";

+        }

+        leaf connection-port-direction {

+            type tapi-common:port-direction;

+            config false;

+            description "The orientation of defined flow at the EndPoint.";

+        }

+        leaf connection-port-role {

+            type tapi-common:port-role;

+            config false;

+            description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";

+        }

+        uses tapi-common:resource-spec;

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

+        uses tapi-common:termination-pac;

+        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.

+            The structure of LTP supports all transport protocols including circuit and packet forms.";

+    }

+    grouping connectivity-constraint {

+        leaf service-layer {

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

+            description "none";

+        }

+        leaf service-type {

+            type service-type;

+            description "none";

+        }

+        leaf service-level {

+            type string;

+            description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";

+        }

+        container requested-capacity {

+            uses tapi-common:capacity;

+            description "none";

+        }

+        leaf connectivity-direction {

+            type tapi-common:forwarding-direction;

+            description "none";

+        }

+        container schedule {

+            uses tapi-common:time-range;

+            description "none";

+        }

+        container coroute-inclusion {

+            uses connectivity-service-ref;

+            description "none";

+        }

+        list diversity-exclusion {

+            uses connectivity-service-ref;

+            key 'connectivity-service-uuid';

+            description "none";

+        }

+        description "none";

+    }

+    grouping connectivity-service {

+        list end-point {

+            key 'local-id';

+            min-elements 2;

+            uses connectivity-service-end-point;

+            description "none";

+        }

+        list connection {

+            uses connection-ref;

+            key 'connection-uuid';

+            config false;

+            description "none";

+        }

+        uses tapi-common:service-spec;

+        uses connectivity-constraint;

+        uses tapi-path-computation:routing-constraint;

+        uses tapi-path-computation:topology-constraint;

+        uses resilience-constraint;

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

+        description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.

+            At the lowest level of recursion, a FC represents a cross-connection within an NE.";

+    }

+    grouping connectivity-service-end-point {

+        leaf layer-protocol-name {

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

+            description "none";

+        }

+        leaf layer-protocol-qualifier {

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

+            description "none";

+        }

+        container service-interface-point {

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

+            description "none";

+        }

+        list connection-end-point {

+            uses connection-end-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

+            config false;

+            description "none";

+        }

+        container capacity {

+            uses tapi-common:capacity;

+            description "none";

+        }

+        leaf direction {

+            type tapi-common:port-direction;

+            description "The orientation of defined flow at the EndPoint.";

+        }

+        leaf role {

+            type tapi-common:port-role;

+            description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";

+        }

+        leaf protection-role {

+            type protection-role;

+            description "To specify the protection role of this Port when create or update ConnectivityService.";

+        }

+        uses tapi-common:local-class;

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

+        description "The association of the FC to LTPs is made via EndPoints.

+            The EndPoint (EP) object class models the access to the FC function.

+            The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.

+            In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.

+            It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.

+            The EP replaces the Protection Unit of a traditional protection model.

+            The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";

+    }

+    grouping route {

+        list connection-end-point {

+            uses connection-end-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

+            config false;

+            min-elements 2;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        description "The FC Route (FcRoute) object class models the individual routes of an FC.

+            The route of an FC object is represented by a list of FCs at a lower level.

+            Note that depending on the service supported by an FC, an the FC can have multiple routes.";

+    }

+    grouping connectivity-context {

+        list connectivity-service {

+            key 'uuid';

+            uses connectivity-service;

+            description "none";

+        }

+        list connection {

+            key 'uuid';

+            config false;

+            uses connection;

+            description "none";

+        }

+        description "none";

+    }

+    grouping switch {

+        list selected-connection-end-point {

+            uses connection-end-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

+            min-elements 1;

+            description "none";

+        }

+        list selected-route {

+            uses route-ref;

+            key 'connection-uuid route-local-id';

+            min-elements 1;

+            description "none";

+        }

+        leaf selection-control {

+            type selection-control;

+            description "Degree of administrative control applied to the switch selection.";

+        }

+        leaf selection-reason {

+            type selection-reason;

+            config false;

+            description "The reason for the current switch selection.";

+        }

+        leaf switch-direction {

+            type tapi-common:port-direction;

+            description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";

+        }

+        uses tapi-common:local-class;

+        description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection).

+            If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.

+            The FC switch represents and defines a protection switch structure encapsulated in the FC.

+            Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit.

+            One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.

+            The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.

+            It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).

+            It may be locked out (prevented from switching), force switched or manual switched.

+            It will indicate switch state and change of state.

+            The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').

+            The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.

+            This ability allows multiple alternate routes to be present that otherwise would be in conflict.";

+    }

+    grouping switch-control {

+        list sub-switch-control {

+            uses switch-control-ref;

+            key 'connection-uuid switch-control-uuid';

+            description "none";

+        }

+        list switch {

+            key 'local-id';

+            uses switch;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

+        uses resilience-constraint;

+        description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";

+    }

+    grouping resilience-constraint {

+        container resilience-type {

+            uses tapi-topology:resilience-type;

+            description "none";

+        }

+        leaf restoration-coordinate-type {

+            type coordinate-type;

+            description " The coordination mechanism between multi-layers.";

+        }

+        leaf restore-priority {

+            type uint64;

+            description "none";

+        }

+        leaf reversion-mode {

+            type reversion-mode;

+            description "Indcates whether the protection scheme is revertive or non-revertive.";

+        }

+        leaf wait-to-revert-time {

+            type uint64;

+            default "15";

+            description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";

+        }

+        leaf hold-off-time {

+            type uint64;

+            description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";

+        }

+        leaf is-lock-out {

+            type boolean;

+            description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.

+                This overrides all other protection control states including forced.

+                If the item is locked out then it cannot be used under any circumstances.

+                Note: Only relevant when part of a protection scheme.";

+        }

+        leaf is-frozen {

+            type boolean;

+            description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.

+                Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.

+                All administrative controls of any aspect of protection are rejected.";

+        }

+        leaf is-coordinated-switching-both-ends {

+            type boolean;

+            description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";

+        }

+        leaf max-switch-times {

+            type uint64;

+            description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";

+        }

+        leaf-list preferred-restoration-layer {

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

+            description "Indicate which layer this resilience parameters package configured for.";

+        }

+        description "A list of control parameters to apply to a switch.";

+    }

+    grouping cep-list {

+        list connection-end-point {

+            key 'uuid';

+            uses connection-end-point;

+            description "none";

+        }

+        description "none";

+    }

+

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

+    * package type-definitions

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

+    typedef service-type {

+        type enumeration {

+            enum POINT_TO_POINT_CONNECTIVITY {

+                description "none";

+            }

+            enum POINT_TO_MULTIPOINT_CONNECTIVITY {

+                description "none";

+            }

+            enum MULTIPOINT_CONNECTIVITY {

+                description "none";

+            }

+            enum ROOTED_MULTIPOINT_CONNECTIVITY {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef reversion-mode {

+        type enumeration {

+            enum REVERTIVE {

+                description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";

+            }

+            enum NON-REVERTIVE {

+                description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";

+            }

+        }

+        description "The reversion mode associated with protection.";

+    }

+    typedef selection-control {

+        type enumeration {

+            enum LOCK_OUT {

+                description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.

+                    This overrides all other protection control states including forced.

+                    If the item is locked out then it cannot be used under any circumstances.

+                    Note: Only relevant when part of a protection scheme.";

+            }

+            enum NORMAL {

+                description "none";

+            }

+            enum MANUAL {

+                description "none";

+            }

+            enum FORCED {

+                description "none";

+            }

+        }

+        description "Possible degrees of administrative control applied to the Route selection.";

+    }

+    typedef selection-reason {

+        type enumeration {

+            enum LOCKOUT {

+                description "none";

+            }

+            enum NORMAL {

+                description "none";

+            }

+            enum MANUAL {

+                description "none";

+            }

+            enum FORCED {

+                description "none";

+            }

+            enum WAIT_TO_REVERT {

+                description "none";

+            }

+            enum SIGNAL_DEGRADE {

+                description "none";

+            }

+            enum SIGNAL_FAIL {

+                description "none";

+            }

+        }

+        description "The cause of the current route selection.";

+    }

+    typedef coordinate-type {

+        type enumeration {

+            enum NO_COORDINATE {

+                description "none";

+            }

+            enum HOLD_OFF_TIME {

+                description "none";

+            }

+            enum WAIT_FOR_NOTIFICATION {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef protection-role {

+        type enumeration {

+            enum WORK {

+                description "none";

+            }

+            enum PROTECT {

+                description "none";

+            }

+            enum PROTECTED {

+                description "none";

+            }

+            enum NA {

+                description "none";

+            }

+            enum WORK_RESTORE {

+                description "none";

+            }

+            enum PROTECT_RESTORE {

+                description "none";

+            }

+        }

+        description "none";

+    }

+

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

+    * package interfaces

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

+    rpc get-connection-details {

+        description "none";

+        input {

+            leaf connection-id-or-name {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container connection {

+                uses connection;

+                description "none";

+            }

+        }

+    }

+    rpc get-connectivity-service-list {

+        description "none";

+        output {

+            list service {

+                key 'uuid';

+                uses connectivity-service;

+                description "none";

+            }

+        }

+    }

+    rpc get-connectivity-service-details {

+        description "none";

+        input {

+            leaf service-id-or-name {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container service {

+                uses connectivity-service;

+                description "none";

+            }

+        }

+    }

+    rpc create-connectivity-service {

+        description "none";

+        input {

             list end-point {

                 key 'local-id';

                 min-elements 2;

                 uses connectivity-service-end-point;

                 description "none";

             }

-            list connection {

-                uses connection-ref;

-                key 'connection-uuid';

-                config false;

+            container connectivity-constraint {

+                uses connectivity-constraint;

                 description "none";

             }

-            uses tapi-common:service-spec;

-            uses connectivity-constraint;

-            uses tapi-path-computation:routing-constraint;

-            uses tapi-path-computation:topology-constraint;

-            uses resilience-constraint;

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

-            description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.

-                At the lowest level of recursion, a FC represents a cross-connection within an NE.";

+            container routing-constraint {

+                uses tapi-path-computation:routing-constraint;

+                description "none";

+            }

+            container topology-constraint {

+                uses tapi-path-computation:topology-constraint;

+                description "none";

+            }

+            container resilience-constraint {

+                uses resilience-constraint;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

         }

-        grouping connectivity-service-end-point {

-            leaf layer-protocol-name {

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

-                description "none";

-            }

-            leaf layer-protocol-qualifier {

-                type tapi-common:layer-protocol-qualifier;

-                description "none";

-            }

-            container service-interface-point {

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

-                description "none";

-            }

-            list connection-end-point {

-            	uses connection-end-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

-                config false;

-                description "none";

-            }

-            container capacity {

-                uses tapi-common:capacity;

-                description "none";

-            }

-            leaf direction {

-                type tapi-common:port-direction;

-                description "The orientation of defined flow at the EndPoint.";

-            }

-            leaf role {

-                type tapi-common:port-role;

-                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";

-            }

-            leaf protection-role {

-                type protection-role;

-                description "To specify the protection role of this Port when create or update ConnectivityService.";

-            }

-            uses tapi-common:local-class;

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

-            description "The association of the FC to LTPs is made via EndPoints.

-                The EndPoint (EP) object class models the access to the FC function. 

-                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  

-                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 

-                It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.

-                The EP replaces the Protection Unit of a traditional protection model. 

-                The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";

-        }

-        grouping route {

-            list connection-end-point {

-                uses connection-end-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

-                config false;

-                min-elements 2;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "The FC Route (FcRoute) object class models the individual routes of an FC. 

-                The route of an FC object is represented by a list of FCs at a lower level. 

-                Note that depending on the service supported by an FC, an the FC can have multiple routes.";

-        }

-        grouping connectivity-context {

-            list connectivity-service {

-                key 'uuid';

+        output {

+            container service {

                 uses connectivity-service;

                 description "none";

             }

-            list connection {

-                key 'uuid';

-                config false;

-                uses connection;

-                description "none";

-            }

-            description "none";

         }

-        grouping switch {

-            list selected-connection-end-point {

-                uses connection-end-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

-                min-elements 1;

+    }

+    rpc update-connectivity-service {

+        description "none";

+        input {

+            leaf service-id-or-name {

+                type string;

                 description "none";

             }

-            list selected-route {

-                uses route-ref;

-                key 'connection-uuid route-local-id';

-                min-elements 1;

-                description "none";

-            }

-            leaf selection-control {

-                type selection-control;

-                description "Degree of administrative control applied to the switch selection.";

-            }

-            leaf selection-reason {

-                type selection-reason;

-                config false;

-                description "The reason for the current switch selection.";

-            }

-            leaf switch-direction {

-                type tapi-common:port-direction;

-                description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";

-            }

-            uses tapi-common:local-class;

-            description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection). 

-                If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.

-                The FC switch represents and defines a protection switch structure encapsulated in the FC. 

-                Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit. 

-                One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.

-                The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.

-                It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).

-                It may be locked out (prevented from switching), force switched or manual switched.

-                It will indicate switch state and change of state.

-                The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').

-                The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.

-                This ability allows multiple alternate routes to be present that otherwise would be in conflict.";

-        }

-        grouping switch-control {

-            list sub-switch-control {

-                uses switch-control-ref;

-                key 'connection-uuid switch-control-uuid';

-                description "none";

-            }

-            list switch {

+            list end-point {

                 key 'local-id';

-                uses switch;

+                uses connectivity-service-end-point;

                 description "none";

             }

-            uses tapi-common:resource-spec;

-            uses resilience-constraint;

-            description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";

+            container connectivity-constraint {

+                uses connectivity-constraint;

+                description "none";

+            }

+            container routing-constraint {

+                uses tapi-path-computation:routing-constraint;

+                description "none";

+            }

+            container topology-constraint {

+                uses tapi-path-computation:topology-constraint;

+                description "none";

+            }

+            container resilience-constraint {

+                uses resilience-constraint;

+                description "none";

+            }

+            leaf state {

+                type string;

+                description "none";

+            }

         }

-        grouping resilience-constraint {

-            container resilience-type {

-                uses tapi-topology:resilience-type;

+        output {

+            container service {

+                uses connectivity-service;

                 description "none";

             }

-            leaf restoration-coordinate-type {

-                type coordinate-type;

-                description " The coordination mechanism between multi-layers.";

-            }

-            leaf restore-priority {

-                type uint64;

-                description "none";

-            }

-            leaf reversion-mode {

-                type reversion-mode;

-                description "Indcates whether the protection scheme is revertive or non-revertive.";

-            }

-            leaf wait-to-revert-time {

-                type uint64;

-                default "15";

-                description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";

-            }

-            leaf hold-off-time {

-                type uint64;

-                description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";

-            }

-            leaf is-lock-out {

-                type boolean;

-                description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.

-                    This overrides all other protection control states including forced.

-                    If the item is locked out then it cannot be used under any circumstances.

-                    Note: Only relevant when part of a protection scheme.";

-            }

-            leaf is-frozen {

-                type boolean;

-                description "Temporarily prevents any switch action to be taken and, as such, freezes the current state. 

-                    Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.

-                    All administrative controls of any aspect of protection are rejected.";

-            }

-            leaf is-coordinated-switching-both-ends {

-                type boolean;

-                description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";

-            }

-            leaf max-switch-times {

-                type uint64;

-                description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";

-            }

-            leaf-list preferred-restoration-layer {

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

-                description "Indicate which layer this resilience parameters package configured for.";

-            }

-            description "A list of control parameters to apply to a switch.";

         }

-        grouping cep-list {

-            list connection-end-point {

-                key 'uuid';

+    }

+    rpc delete-connectivity-service {

+        description "none";

+        input {

+            leaf service-id-or-name {

+                type string;

+                description "none";

+            }

+        }

+    }

+    rpc get-connection-end-point-details {

+        description "none";

+        input {

+            leaf topology-id-or-name {

+                type string;

+                description "none";

+            }

+            leaf node-id-or-name {

+                type string;

+                description "none";

+            }

+            leaf nep-id-or-name {

+                type string;

+                description "none";

+            }

+            leaf cep-id-or-name {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container connection-end-point {

                 uses connection-end-point;

                 description "none";

             }

-            description "none";

         }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        typedef service-type {

-            type enumeration {

-                enum POINT_TO_POINT_CONNECTIVITY {

-                    description "none";

-                }

-                enum POINT_TO_MULTIPOINT_CONNECTIVITY {

-                    description "none";

-                }

-                enum MULTIPOINT_CONNECTIVITY {

-                    description "none";

-                }

-                enum ROOTED_MULTIPOINT_CONNECTIVITY {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef reversion-mode {

-            type enumeration {

-                enum REVERTIVE {

-                    description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";

-                }

-                enum NON-REVERTIVE {

-                    description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";

-                }

-            }

-            description "The reversion mode associated with protection.";

-        }

-        typedef selection-control {

-            type enumeration {

-                enum LOCK_OUT {

-                    description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.

-                        This overrides all other protection control states including forced.

-                        If the item is locked out then it cannot be used under any circumstances.

-                        Note: Only relevant when part of a protection scheme.";

-                }

-                enum NORMAL {

-                    description "none";

-                }

-                enum MANUAL {

-                    description "none";

-                }

-                enum FORCED {

-                    description "none";

-                }

-            }

-            description "Possible degrees of administrative control applied to the Route selection.";

-        }

-        typedef selection-reason {

-            type enumeration {

-                enum LOCKOUT {

-                    description "none";

-                }

-                enum NORMAL {

-                    description "none";

-                }

-                enum MANUAL {

-                    description "none";

-                }

-                enum FORCED {

-                    description "none";

-                }

-                enum WAIT_TO_REVERT {

-                    description "none";

-                }

-                enum SIGNAL_DEGRADE {

-                    description "none";

-                }

-                enum SIGNAL_FAIL {

-                    description "none";

-                }

-            }

-            description "The cause of the current route selection.";

-        }

-        typedef coordinate-type {

-            type enumeration {

-                enum NO_COORDINATE {

-                    description "none";

-                }

-                enum HOLD_OFF_TIME {

-                    description "none";

-                }

-                enum WAIT_FOR_NOTIFICATION {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef protection-role {

-            type enumeration {

-                enum WORK {

-                    description "none";

-                }

-                enum PROTECT {

-                    description "none";

-                }

-                enum PROTECTED {

-                    description "none";

-                }

-                enum NA {

-                    description "none";

-                }

-                enum WORK_RESTORE {

-                    description "none";

-                }

-                enum PROTECT_RESTORE {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-

-    /***********************

-    * package interfaces

-    **********************/ 

-        rpc get-connection-details {

-            description "none";

-            input {

-                leaf connection-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container connection {

-                    uses connection;

-                    description "none";

-                }

-            }

-        }

-        rpc get-connectivity-service-list {

-            description "none";

-            output {

-                list service {

-                	key 'uuid';

-                    uses connectivity-service;

-                    description "none";

-                }

-            }

-        }

-        rpc get-connectivity-service-details {

-            description "none";

-            input {

-                leaf service-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container service {

-                    uses connectivity-service;

-                    description "none";

-                }

-            }

-        }

-        rpc create-connectivity-service {

-            description "none";

-            input {

-                list end-point {

-                    key 'local-id';

-                    min-elements 2;

-                    uses connectivity-service-end-point;

-                    description "none";

-                }

-                container connectivity-constraint {

-                    uses connectivity-constraint;

-                    description "none";

-                }

-                container routing-constraint {

-                    uses tapi-path-computation:routing-constraint;

-                    description "none";

-                }

-                container topology-constraint {

-                    uses tapi-path-computation:topology-constraint;

-                    description "none";

-                }

-                container resilience-constraint {

-                    uses resilience-constraint;

-                    description "none";

-                }

-                leaf state {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container service {

-                    uses connectivity-service;

-                    description "none";

-                }

-            }

-        }

-        rpc update-connectivity-service {

-            description "none";

-            input {

-                leaf service-id-or-name {

-                    type string;

-                    description "none";

-                }

-                list end-point {

-                	key 'local-id';

-                    uses connectivity-service-end-point;

-                    description "none";

-                }

-                container connectivity-constraint {

-                    uses connectivity-constraint;

-                    description "none";

-                }

-                container routing-constraint {

-                    uses tapi-path-computation:routing-constraint;

-                    description "none";

-                }

-                container topology-constraint {

-                    uses tapi-path-computation:topology-constraint;

-                    description "none";

-                }

-                container resilience-constraint {

-                    uses resilience-constraint;

-                    description "none";

-                }

-                leaf state {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container service {

-                    uses connectivity-service;

-                    description "none";

-                }

-            }

-        }

-        rpc delete-connectivity-service {

-            description "none";

-            input {

-                leaf service-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-        }

-        rpc get-connection-end-point-details {

-            description "none";

-            input {

-                leaf topology-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf node-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf nep-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf cep-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container connection-end-point {

-                    uses connection-end-point;

-                    description "none";

-                }

-            }

-        }

-

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang b/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang
old mode 100644
new mode 100755
index 362ab4e..545f585
--- a/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang
@@ -25,190 +25,190 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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>";

     }

-    /***********************

-    * package type-definitions

-    **********************/ 

-        identity DIGITAL_SIGNAL_TYPE {

-        	base tapi-common:LAYER_PROTOCOL_QUALIFIER;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_GigE {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_10_GigE_LAN {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_10_GigE_WAN {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_40_GigE {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_100_GigE {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_FC_100 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_FC_200 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_FC_400 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_FC_800 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_FC_1200 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_FC_1600 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_FC_3200 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_STM_1 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_STM_4 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_STM_16 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_STM_64 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_STM_256 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OC_3 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OC_12 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OC_48 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OC_192 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OC_768 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OTU_1 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OTU_2 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OTU_2E {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OTU_3 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_OTU_4 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_GPON {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_XGPON {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_IB_SDR {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_IB_DDR {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_IB_QDR {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_SBCON_ESCON {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_DVB_ASI {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_SDI {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_SDI_1G5 {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        identity DIGITAL_SIGNAL_TYPE_SDI_3G {

-            base DIGITAL_SIGNAL_TYPE;

-            description "none";

-        }

-        typedef digital-signal-type {

-            type identityref {

-                base DIGITAL_SIGNAL_TYPE;

-            }

-            description "none";

-        }

 

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

+    * package type-definitions

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

+    identity DIGITAL_SIGNAL_TYPE {

+        base tapi-common:LAYER_PROTOCOL_QUALIFIER;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_GigE {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_10_GigE_LAN {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_10_GigE_WAN {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_40_GigE {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_100_GigE {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_FC_100 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_FC_200 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_FC_400 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_FC_800 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_FC_1200 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_FC_1600 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_FC_3200 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_STM_1 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_STM_4 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_STM_16 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_STM_64 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_STM_256 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OC_3 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OC_12 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OC_48 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OC_192 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OC_768 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OTU_1 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OTU_2 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OTU_2E {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OTU_3 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_OTU_4 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_GPON {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_XGPON {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_IB_SDR {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_IB_DDR {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_IB_QDR {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_SBCON_ESCON {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_DVB_ASI {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_SDI {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_SDI_1G5 {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    identity DIGITAL_SIGNAL_TYPE_SDI_3G {

+        base DIGITAL_SIGNAL_TYPE;

+        description "none";

+    }

+    typedef digital-signal-type {

+        type identityref {

+            base DIGITAL_SIGNAL_TYPE;

+        }

+        description "none";

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang b/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
old mode 100644
new mode 100755
index 7e5e407..383558e
--- a/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
@@ -37,28 +37,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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/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" {

@@ -299,1599 +299,1599 @@
         }

         description "none";

     }

-    /***********************

+

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

     * package object-classes

-    **********************/ 

-        grouping eth-ctp-pac {

-            leaf-list auxiliary-function-position-sequence {

-                type uint64;

-                description "This attribute indicates the positions (i.e., the relative order) of all the MEP, MIP, and TCS objects which are associated with the CTP.";

-            }

-            leaf vlan-config {

-                type uint64;

-                description "This attribute models the ETHx/ETH-m_A_So_MI_Vlan_Config information defined in G.8021.

-                    range of type : -1, 0, 1..4094";

-            }

-            leaf csf-rdi-fdi-enable {

-                type boolean;

-                description "This attribute models the MI_CSFrdifdiEnable information defined in G.8021.";

-            }

-            leaf csf-report {

-                type boolean;

-                description "This attribute models the MI_CSF_Reported information defined in G.8021.

-                    range of type : true, false";

-            }

-            leaf-list filter-config-snk {

-                type mac-address;

-                description "This attribute models the FilteConfig MI defined in 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

-                    01-80-C2-00-00-10, 

-                    01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and 

-                    01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

-                    The filter action is Pass or Block. 

-                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

-                    If none of the above addresses match, the ETH_CI_D is passed.";

-            }

-            leaf mac-length {

-                type uint64;

-                default "2000";

-                description "This attribute models the MAC_Lenght MI defined in 8.6/G.8021 for the MAC Length Check process. It indicates the allowed maximum frame length in bytes.

-                    range of type : 1518, 1522, 2000";

-            }

-            container filter-config {

-                uses control-frame-filter;

-                description "This attribute models the FilterConfig MI defined in section 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

-                    - All bridges address: 01-80-C2-00-00-10,

-                    - Reserved addresses: 01-80-C2-00-00-00 to 01-80-C2-00-00-0F,

-                    - GARP Application addresses: 01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

-                    The filter action is Pass or Block. 

-                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

-                    If none of the above addresses match, the ETH_CI_D is passed.";

-            }

-            leaf is-ssf-reported {

-                type boolean;

-                description "This attribute provisions whether the SSF defect should be reported as fault cause or not.

-                    It models the ETH-LAG_FT_Sk_MI_SSF_Reported defined in G.8021.";

-            }

-            leaf pll-thr {

-                type uint64;

-                description "This attribute provisions the threshold for the number of active ports. If the number of active ports is more than zero but less than the provisioned threshold, a cPLL (Partial Link Loss) is raised. See section 9.7.1.2 of G.8021.

-                    range of type : 0..number of ports";

-            }

-            leaf actor-oper-key {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    The current operational value of the Key for the Aggregator. The administrative Key value may differ from the operational Key value for the reasons discussed in 5.6.2.

-                    The meaning of particular Key values is of local significance.

-                    range of type : 16 bit";

-            }

-            leaf actor-system-id {

-                type mac-address;

-                description "See 802.1AX:

-                    A MAC address used as a unique identifier for the System that contains this Aggregator.";

-            }

-            leaf actor-system-priority {

-                type uint64;

-                description "See 802.1AX:

-                    Indicating the priority associated with the Actors System ID.

-                    range of type : 2-octet";

-            }

-            leaf collector-max-delay {

-                type uint64;

-                description "See 802.1AX:

-                    The value of this attribute defines the maximum delay, in tens of microseconds, that may be imposed by the Frame Collector between receiving a frame from an Aggregator Parser, and either delivering the frame to its MAC Client or discarding the frame (see IEEE 802.1AX clause 5.2.3.1.1).

-                    range of type : 16-bit";

-            }

-            leaf data-rate {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    The current data rate, in bits per second, of the aggregate link. The value is calculated as N times the data rate of a single link in the aggregation, where N is the number of active links.";

-            }

-            leaf partner-oper-key {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    The current operational value of the Key for the Aggregators current protocol Partner. If the aggregation is manually configured, this Key value will be a value assigned by the local System.

-                    range of type : 16-bit";

-            }

-            leaf partner-system-id {

-                type mac-address;

-                config false;

-                description "See 802.1AX:

-                    A MAC address consisting of the unique identifier for the current protocol Partner of this Aggregator. A value of zero indicates that there is no known Partner. If the aggregation is manually configured, this System ID value will be a value assigned by the local System.";

-            }

-            leaf partner-system-priority {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    Indicates the priority associated with the Partners System ID. If the aggregation is manually configured, this System Priority value will be a value assigned by the local System.

-                    range of type : 2-octet";

-            }

-            leaf csf-config {

-                type csf-config;

-                description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.

-                    range of type : true, false";

-            }

-            container traffic-shaping {

-                uses traffic-shaping-pac;

-                description "none";

-            }

-            container traffic-conditioning {

-                uses traffic-conditioning-pac;

-                description "none";

-            }

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

+    grouping eth-ctp-pac {

+        leaf-list auxiliary-function-position-sequence {

+            type uint64;

+            description "This attribute indicates the positions (i.e., the relative order) of all the MEP, MIP, and TCS objects which are associated with the CTP.";

+        }

+        leaf vlan-config {

+            type uint64;

+            description "This attribute models the ETHx/ETH-m_A_So_MI_Vlan_Config information defined in G.8021.

+                range of type : -1, 0, 1..4094";

+        }

+        leaf csf-rdi-fdi-enable {

+            type boolean;

+            description "This attribute models the MI_CSFrdifdiEnable information defined in G.8021.";

+        }

+        leaf csf-report {

+            type boolean;

+            description "This attribute models the MI_CSF_Reported information defined in G.8021.

+                range of type : true, false";

+        }

+        leaf-list filter-config-snk {

+            type mac-address;

+            description "This attribute models the FilteConfig MI defined in 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

+                01-80-C2-00-00-10,

+                01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and

+                01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

+                The filter action is Pass or Block.

+                If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action.

+                If none of the above addresses match, the ETH_CI_D is passed.";

+        }

+        leaf mac-length {

+            type uint64;

+            default "2000";

+            description "This attribute models the MAC_Lenght MI defined in 8.6/G.8021 for the MAC Length Check process. It indicates the allowed maximum frame length in bytes.

+                range of type : 1518, 1522, 2000";

+        }

+        container filter-config {

+            uses control-frame-filter;

+            description "This attribute models the FilterConfig MI defined in section 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

+                - All bridges address: 01-80-C2-00-00-10,

+                - Reserved addresses: 01-80-C2-00-00-00 to 01-80-C2-00-00-0F,

+                - GARP Application addresses: 01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

+                The filter action is Pass or Block.

+                If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action.

+                If none of the above addresses match, the ETH_CI_D is passed.";

+        }

+        leaf is-ssf-reported {

+            type boolean;

+            description "This attribute provisions whether the SSF defect should be reported as fault cause or not.

+                It models the ETH-LAG_FT_Sk_MI_SSF_Reported defined in G.8021.";

+        }

+        leaf pll-thr {

+            type uint64;

+            description "This attribute provisions the threshold for the number of active ports. If the number of active ports is more than zero but less than the provisioned threshold, a cPLL (Partial Link Loss) is raised. See section 9.7.1.2 of G.8021.

+                range of type : 0..number of ports";

+        }

+        leaf actor-oper-key {

+            type uint64;

+            config false;

+            description "See 802.1AX:

+                The current operational value of the Key for the Aggregator. The administrative Key value may differ from the operational Key value for the reasons discussed in 5.6.2.

+                The meaning of particular Key values is of local significance.

+                range of type : 16 bit";

+        }

+        leaf actor-system-id {

+            type mac-address;

+            description "See 802.1AX:

+                A MAC address used as a unique identifier for the System that contains this Aggregator.";

+        }

+        leaf actor-system-priority {

+            type uint64;

+            description "See 802.1AX:

+                Indicating the priority associated with the Actors System ID.

+                range of type : 2-octet";

+        }

+        leaf collector-max-delay {

+            type uint64;

+            description "See 802.1AX:

+                The value of this attribute defines the maximum delay, in tens of microseconds, that may be imposed by the Frame Collector between receiving a frame from an Aggregator Parser, and either delivering the frame to its MAC Client or discarding the frame (see IEEE 802.1AX clause 5.2.3.1.1).

+                range of type : 16-bit";

+        }

+        leaf data-rate {

+            type uint64;

+            config false;

+            description "See 802.1AX:

+                The current data rate, in bits per second, of the aggregate link. The value is calculated as N times the data rate of a single link in the aggregation, where N is the number of active links.";

+        }

+        leaf partner-oper-key {

+            type uint64;

+            config false;

+            description "See 802.1AX:

+                The current operational value of the Key for the Aggregators current protocol Partner. If the aggregation is manually configured, this Key value will be a value assigned by the local System.

+                range of type : 16-bit";

+        }

+        leaf partner-system-id {

+            type mac-address;

+            config false;

+            description "See 802.1AX:

+                A MAC address consisting of the unique identifier for the current protocol Partner of this Aggregator. A value of zero indicates that there is no known Partner. If the aggregation is manually configured, this System ID value will be a value assigned by the local System.";

+        }

+        leaf partner-system-priority {

+            type uint64;

+            config false;

+            description "See 802.1AX:

+                Indicates the priority associated with the Partners System ID. If the aggregation is manually configured, this System Priority value will be a value assigned by the local System.

+                range of type : 2-octet";

+        }

+        leaf csf-config {

+            type csf-config;

+            description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.

+                range of type : true, false";

+        }

+        container traffic-shaping {

+            uses traffic-shaping-pac;

             description "none";

         }

-        grouping eth-connection-end-point-spec {

-            container ety-term {

-                uses ety-termination-pac;

-                description "none";

-            }

-            container eth-term {

-                uses eth-termination-pac;

-                description "none";

-            }

-            container eth-ctp {

-                uses eth-ctp-pac;

-                description "none";

-            }

+        container traffic-conditioning {

+            uses traffic-conditioning-pac;

             description "none";

         }

-        grouping eth-termination-pac {

-            container priority-regenerate {

-                uses priority-mapping;

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_P_Regenerate information defined in G.8021.";

-            }

-            leaf ether-type {

-                type vlan-type;

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_Etype information defined in G.8021.";

-            }

-            leaf-list filter-config-1 {

-                type mac-address;

-                description "This attribute models the ETHx/ETH-m_A_Sk_MI_Filter_Config information defined in G.8021.

-                    It indicates the configured filter action for each of the 33 group MAC addresses for control frames.

-                    The 33 MAC addresses are:

-                    01-80-C2-00-00-10, 

-                    01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and 

-                    01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

-                    The filter action is Pass or Block. 

-                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

-                    If none of the above addresses match, the ETH_CI_D is passed.

-                    range of type : MacAddress: 

-                    01-80-C2-00-00-10, 

-                    01-80-C2-00-00-00 to 

-                    01-80-C2-00-00-0F, and 

-                    01-80-C2-00-00-20 to 

-                    01-80-C2-00-00-2F;

-                    ActionEnum:

-                    PASS, BLOCK";

-            }

-            leaf frametype-config {

-                type frame-type;

-                description "This attribute models the ETHx/ETH-m_A_Sk_MI_Frametype_Config information defined in G.8021.

-                    range of type : see Enumeration";

-            }

-            leaf port-vid {

-                type vid;

-                default "1";

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_PVID information defined in G.8021.";

-            }

-            leaf priority-code-point-config {

-                type pcp-coding;

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_PCP_Config information defined in G.8021.

-                    range of type : see Enumeration";

-            }

-            description "This object class models the Ethernet Flow Termination function located at a layer boundary.";

-        }

-        grouping ety-termination-pac {

-            leaf is-fts-enabled {

-                type boolean;

-                description "This attribute indicates whether Forced Transmitter Shutdown (FTS) is enabled or not. It models the ETYn_TT_So_MI_FTSEnable information.";

-            }

-            leaf is-tx-pause-enabled {

-                type boolean;

-                description "This attribute identifies whether the Transmit Pause process is enabled or not. It models the MI_TxPauseEnable defined in G.8021.";

-            }

-            leaf phy-type {

-                type ety-phy-type;

-                config false;

-                description "This attribute identifies the PHY type of the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.2.";

-            }

-            leaf-list phy-type-list {

-                type ety-phy-type;

-                config false;

-                description "This attribute identifies the possible PHY types that could be supported at the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.3.";

-            }

+        description "none";

+    }

+    grouping eth-connection-end-point-spec {

+        container ety-term {

+            uses ety-termination-pac;

             description "none";

         }

-        grouping traffic-conditioning-pac {

-            list prio-config-list {

-                key 'queue-id';

-                config false;

-                uses priority-configuration;

-                description "This attribute indicates the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

-            }

-            list cond-config-list {

-                key 'queue-id';

-                config false;

-                uses traffic-conditioning-configuration;

-                description "This attribute indicates for the conditioner process the conditioning parameters:

-                    - Queue ID: Indicates the Queue ID

-                    - Committed Information Rate (CIR): number of bits per second

-                    - Committed Burst Size (CBS): number of bytes

-                    - Excess Information Rate (EIR): number of bits per second

-                    - Excess Burst Size (EBS): number of bytes

-                    - Coupling flag (CF): 0 or 1

-                    - Color mode (CM): color-blind and color-aware.";

-            }

-            leaf codirectional {

-                type boolean;

-                config false;

-                description "This attribute indicates the direction of the conditioner. The value of true means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the sink part of the containing CTP. The value of false means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the source part of the containing CTP.";

-            }

-            description "This object class models the ETH traffic conditioning function as defined in G.8021.

-                Basic attributes: codirectional, condConfigList, prioConfigList";

-        }

-        grouping traffic-shaping-pac {

-            list prio-config-list {

-                key 'queue-id';

-                config false;

-                uses priority-configuration;

-                description "This attribute configures the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

-            }

-            list queue-config-list {

-                key 'queue-id';

-                config false;

-                uses queue-configuration;

-                description "This attribute configures the Queue depth and Dropping threshold parameters of the Queue process. The Queue depth sets the maximum size of the queue in bytes. An incoming ETH_CI traffic unit is dropped if there is insufficient space in the queue to hold the whole unit. The Dropping threshold sets the threshold of the queue. If the queue is filled beyond this threshold, incoming ETH_CI traffic units accompanied by the ETH_CI_DE signal set are dropped.";

-            }

-            leaf sched-config {

-                type scheduling-configuration;

-                config false;

-                description "This attribute configures the scheduler process. The value of this attribute is for further study because it is for further study in G.8021.

-                    Scheduler is a pointer to a Scheduler object, which is to be defined in the future (because in G.8021, this is FFS).

-                    Note that the only significance of the GTCS function defined in G.8021 is the use of a common scheduler for shaping. Given that, G.8052 models the common scheduler feature by having a common value for this attribute.";

-            }

-            leaf codirectional {

-                type boolean;

-                config false;

-                description "This attribute indicates the direction of the shaping function. The value of true means that the shaping (modeled as a TCS Source according to G.8021) is associated with the source part of the containing CTP. The value of false means that the shaping (modeled as a TCS Source according to G.8021) is associated with the sink part of the containing CTP.";

-            }

-            description "This object class models the ETH traffic shaping function as defined in G.8021.

-                Basic attribute: codirectional, prioConfigList, queueConfigList, schedConfig";

-        }

-        grouping eth-meg-spec {

-            leaf client-mel {

-                type uint64;

-                description "none";

-            }

+        container eth-term {

+            uses eth-termination-pac;

             description "none";

         }

-        grouping eth-mep-spec {

-            container eth-mep-common {

-                uses eth-mep-common;

-                description "none";

-            }

-            container eth-mep-source-pac {

-                uses eth-mep-source;

-                description "none";

-            }

-            container eth-mep-sink {

-                uses eth-mep-sink;

-                description "none";

-            }

+        container eth-ctp {

+            uses eth-ctp-pac;

             description "none";

         }

-        grouping eth-mip-spec {

-            leaf mip-mac {

-                type mac-address;

-                config false;

-                description "This attribute contains the MAC address of the MIP instance.";

-            }

-            leaf is-full-mip {

-                type boolean;

-                config false;

-                description "This attribute indicates whether the MIP is a full MIP (true) or a down-half MIP (false).";

-            }

+        description "none";

+    }

+    grouping eth-termination-pac {

+        container priority-regenerate {

+            uses priority-mapping;

+            description "This attribute models the ETHx/ETH-m _A_Sk_MI_P_Regenerate information defined in G.8021.";

+        }

+        leaf ether-type {

+            type vlan-type;

+            description "This attribute models the ETHx/ETH-m _A_Sk_MI_Etype information defined in G.8021.";

+        }

+        leaf-list filter-config-1 {

+            type mac-address;

+            description "This attribute models the ETHx/ETH-m_A_Sk_MI_Filter_Config information defined in G.8021.

+                It indicates the configured filter action for each of the 33 group MAC addresses for control frames.

+                The 33 MAC addresses are:

+                01-80-C2-00-00-10,

+                01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and

+                01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

+                The filter action is Pass or Block.

+                If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action.

+                If none of the above addresses match, the ETH_CI_D is passed.

+                range of type : MacAddress:

+                01-80-C2-00-00-10,

+                01-80-C2-00-00-00 to

+                01-80-C2-00-00-0F, and

+                01-80-C2-00-00-20 to

+                01-80-C2-00-00-2F;

+                ActionEnum:

+                PASS, BLOCK";

+        }

+        leaf frametype-config {

+            type frame-type;

+            description "This attribute models the ETHx/ETH-m_A_Sk_MI_Frametype_Config information defined in G.8021.

+                range of type : see Enumeration";

+        }

+        leaf port-vid {

+            type vid;

+            default "1";

+            description "This attribute models the ETHx/ETH-m _A_Sk_MI_PVID information defined in G.8021.";

+        }

+        leaf priority-code-point-config {

+            type pcp-coding;

+            description "This attribute models the ETHx/ETH-m _A_Sk_MI_PCP_Config information defined in G.8021.

+                range of type : see Enumeration";

+        }

+        description "This object class models the Ethernet Flow Termination function located at a layer boundary.";

+    }

+    grouping ety-termination-pac {

+        leaf is-fts-enabled {

+            type boolean;

+            description "This attribute indicates whether Forced Transmitter Shutdown (FTS) is enabled or not. It models the ETYn_TT_So_MI_FTSEnable information.";

+        }

+        leaf is-tx-pause-enabled {

+            type boolean;

+            description "This attribute identifies whether the Transmit Pause process is enabled or not. It models the MI_TxPauseEnable defined in G.8021.";

+        }

+        leaf phy-type {

+            type ety-phy-type;

+            config false;

+            description "This attribute identifies the PHY type of the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.2.";

+        }

+        leaf-list phy-type-list {

+            type ety-phy-type;

+            config false;

+            description "This attribute identifies the possible PHY types that could be supported at the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.3.";

+        }

+        description "none";

+    }

+    grouping traffic-conditioning-pac {

+        list prio-config-list {

+            key 'queue-id';

+            config false;

+            uses priority-configuration;

+            description "This attribute indicates the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

+        }

+        list cond-config-list {

+            key 'queue-id';

+            config false;

+            uses traffic-conditioning-configuration;

+            description "This attribute indicates for the conditioner process the conditioning parameters:

+                - Queue ID: Indicates the Queue ID

+                - Committed Information Rate (CIR): number of bits per second

+                - Committed Burst Size (CBS): number of bytes

+                - Excess Information Rate (EIR): number of bits per second

+                - Excess Burst Size (EBS): number of bytes

+                - Coupling flag (CF): 0 or 1

+                - Color mode (CM): color-blind and color-aware.";

+        }

+        leaf codirectional {

+            type boolean;

+            config false;

+            description "This attribute indicates the direction of the conditioner. The value of true means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the sink part of the containing CTP. The value of false means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the source part of the containing CTP.";

+        }

+        description "This object class models the ETH traffic conditioning function as defined in G.8021.

+            Basic attributes: codirectional, condConfigList, prioConfigList";

+    }

+    grouping traffic-shaping-pac {

+        list prio-config-list {

+            key 'queue-id';

+            config false;

+            uses priority-configuration;

+            description "This attribute configures the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

+        }

+        list queue-config-list {

+            key 'queue-id';

+            config false;

+            uses queue-configuration;

+            description "This attribute configures the Queue depth and Dropping threshold parameters of the Queue process. The Queue depth sets the maximum size of the queue in bytes. An incoming ETH_CI traffic unit is dropped if there is insufficient space in the queue to hold the whole unit. The Dropping threshold sets the threshold of the queue. If the queue is filled beyond this threshold, incoming ETH_CI traffic units accompanied by the ETH_CI_DE signal set are dropped.";

+        }

+        leaf sched-config {

+            type scheduling-configuration;

+            config false;

+            description "This attribute configures the scheduler process. The value of this attribute is for further study because it is for further study in G.8021.

+                Scheduler is a pointer to a Scheduler object, which is to be defined in the future (because in G.8021, this is FFS).

+                Note that the only significance of the GTCS function defined in G.8021 is the use of a common scheduler for shaping. Given that, G.8052 models the common scheduler feature by having a common value for this attribute.";

+        }

+        leaf codirectional {

+            type boolean;

+            config false;

+            description "This attribute indicates the direction of the shaping function. The value of true means that the shaping (modeled as a TCS Source according to G.8021) is associated with the source part of the containing CTP. The value of false means that the shaping (modeled as a TCS Source according to G.8021) is associated with the sink part of the containing CTP.";

+        }

+        description "This object class models the ETH traffic shaping function as defined in G.8021.

+            Basic attribute: codirectional, prioConfigList, queueConfigList, schedConfig";

+    }

+    grouping eth-meg-spec {

+        leaf client-mel {

+            type uint64;

             description "none";

         }

-        grouping eth-loopback-job {

-            container eth-lb-msg {

-                uses eth-oam-msg-common-pac;

-                description "none";

-            }

-            leaf number {

-                type uint64;

-                description "G.8052: This parameter specifies how many LB messages to be sent for the LB_Series process.";

-            }

-            description "This class represents the Loopback (LB) process (send a series of LB messages carrying a test pattern to a particular MEP). The termination occurs at specified stop time (schedule attribute of OamJob).

-                This class models also the 'loopback discover' process, when destinationAddress is multicast.

-                When number is greater than 1, then the process is to perform a Loopback (LB) Series process (send a series of N LB messages to a particular MEP/MIP. ";

-        }

-        grouping eth-mep-common {

-            leaf mep-mac {

-                type mac-address;

-                config false;

-                description "This attribute contains the MAC Address of the MEP.";

-            }

-            leaf is-cc-enabled {

-                type boolean;

-                description "This attribute models the MI_CC_Enable signal defined in G.8021 and configured as specified in G8051.";

-            }

-            leaf cc-period {

-                type oam-period;

-                description "This attribute models the MI_CC_Period signal defined in G.8021 and configured as specified in G8051. 

-                    It is the period at which the CCM message should be sent. 

-                    Default values are: 3.33 ms for PS, 100 ms for PM, 1 s for FM.";

-            }

-            leaf cc-priority {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute models the MI_CC_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CCM message should be sent.";

-            }

-            leaf lck-period {

-                type oam-period;

-                description "This attribute models the MI_LCK_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the LCK messages should be sent.

-                    range of type : 1s, 1min";

-            }

-            leaf lck-priority {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute models the MI_LCK_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the LCK messages should be sent.";

-            }

-            description "Basic attributes: adminState, clientMel, megIdentifier, mepMac

-                Continuity Check Process related attributes: ccPeriod, ccPriority, isCcEnabled

-                Lock Process related attributes: lckPeriod, lckPriority

-                This object class models the MEP functions that are common to MEP Sink and MEP Source.";

-        }

-        grouping eth-mep-sink {

-            leaf-list dm-1-priority {

-                type uint64;

-                description "This attribute indicates the list of 1DM priorities for the MepSink.";

-            }

-            leaf ais-priority {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute models the MI_AIS_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the AIS messages should be sent.";

-            }

-            leaf ais-period {

-                type oam-period;

-                description "This attribute models the MI_AIS_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the AIS messages should be sent.

-                    range of type : 1s, 1min";

-            }

-            leaf is-csf-reported {

-                type boolean;

-                default "true";

-                description "This attribute models the MI_CSF_Reported signal defined in G.8021 and configured as specified in G8051. It configures whether the secondary failure CSF should be reported or not.";

-            }

-            leaf is-csf-rdi-fdi-enabled {

-                type boolean;

-                default "true";

-                description "This attribute models the MI_CSFrdifdiEnable signal defined in G.8021 and configured as specified in G8051.";

-            }

-            container bandwidth-report {

-                config false;

-                uses bandwidth-report;

-                description "This attribute models the content of the bandwidth report received by the MEP Sink from the peer MEP Source.";

-            }

-            leaf lm-degm {

-                type uint64;

-                default "10";

-                description "This attribute defines the number of consecutive bad seconds necessary for the 'degraded' detection. See also section 'Degraded signal defect (dDEG)' in G.8021.";

-            }

-            leaf lm-deg-thr {

-                type uint64;

-                default "30";

-                description "This attribute defines the threshold for declaring a 'bad second'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

-            }

-            leaf lm-m {

-                type uint64 {

-                    range "2..10";

-                }

-                default "10";

-                description "This attribute defines the number of consecutive good seconds necessary for the clearing of 'degraded'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

-            }

-            leaf lm-tf-min {

-                type uint64;

-                description "This attribute defines the necessary number of transmitted frames to enable the detection of 'bad seconds'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

-            }

-            description "1DM related attribute: 1DmPriority

-                AIS Process related attributes: aisPeriod, aisPriority

-                Bandwidth notification Process related attribute: bandwidthReport

-                Basic attribute: peerMepRefList

-                CSF Process related attributes: isCsfRdiFdiEnabled, isCsfReported

-                Defect correlation Process related attribute: currentProblemList

-                This object class models the MEP sink function. Instance of this object class can be created and contained by ETH CTP or TTP objects.

-                It also provides the management of the dual-ended maintenance job, such as test.

-                This object contains the configuration parameters for detecting 'degraded signal' (DEG).";

-        }

-        grouping eth-mep-source {

-            leaf aps-priority {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute specifies the priority of the APS messages.

-                    See section 8.1.5    APS insert process in G.8021.";

-            }

-            leaf csf-priority {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute models the MI_CSF_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CSF messages should be sent";

-            }

-            leaf csf-period {

-                type oam-period;

-                description "This attribute models the MI_CSF_Period signal defined in G.8021 and configured as specified in G8051. It is the period at which the CSF messages should be sent.

-                    range of type : 1s, 1min";

-            }

-            leaf csf-config {

-                type csf-config;

-                description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.";

-            }

-            description "APS Process related attribute: apsPriority

-                Basic attribute: mepIdentifier

-                CSF Process related attributes: csfConfig, csfPeriod, csfPriority

-                Link trace related operation: linkTrace

-                Loopback related operations: loopbackDiscover, loopbackSeries, loopbackTest, loopbackTestTerminate

-                On demand measurement job control related operation: establishOnDemandDualEndedMeasurementJobSource

-                Proactive measurement job control related operation: establishProActiveDualEndedMeasurementJobSource

-                Test related operations: testInitiatorStart, testInitiatorTerminate

-                This object class models the MEP source function. Instance of this object class can be created and contained by ETH CTP or TTP objects.

-                It also provides the management of single-ended maintenance jobs, such as loopback test, loopback discover, loopback series, link trace, and dual-ended maintenance job, such as test.";

-        }

-        grouping eth-link-trace-job {

-            container eth-lt-msg {

-                uses eth-oam-operation-common-pac;

-                description "none";

-            }

-            leaf time-to-live {

-                type uint64;

-                description "G.8052: This parameter provides the Time To Live (TTL) parameter of the Link Track protocol.

-                    The TTL parameter allows the receiver (MIP or MEP) of the LTM frame to determine if the frame can be terminated. TTL is decremented every time the LTM frame is relayed. LTM frame with TTL<=1 is terminated and not relayed.";

-            }

-            description "This class represents the Link Trace (LT) process for fault localization or for discovering the intermediate MIPs along the link from the MEP Source to a target MEP or MIP. An LTM frame will be sent from the MEP source to the target MEP/MIP.

-                The termination occurs at specified stop time (schedule attribute of OamJob).";

-        }

-        grouping eth-test-job {

-            container eth-test-msg {

-                uses eth-oam-msg-common-pac;

-                description "none";

-            }

-            description "This class represents the 1-way on-demand in-service or out-of-service diagnostic test. The diagnostic test includes verifying bandwidth throughput, frame loss, bit errors, etc. TST frames are transmitted.

-                The termination occurs at specified stop time (schedule attribute of OamJob).";

-        }

-        grouping eth-on-demand-measurement-job-control-sink {

-            leaf responder-mep-id {

-                type string;

-                description "none";

-            }

-            leaf source-address {

-                type mac-address;

-                description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

-            }

-            leaf priority {

-                type uint64;

-                default "7";

-                description "This attribute contains the priority of the OAM PDU frames.

-                    range of type : 0, 1, 2, 3, 4, 5, 6, 7";

-            }

-            leaf test-identifier {

-                type uint64;

-                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

-                    range of type : 0..(2^32) - 1";

-            }

-            description "This object class represents an on-demand measurement job controller sink for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSink() operation. It is deleted either automatically after the measurement job has completed (stop time reached) and the performance data AVC notification has been sent, or by an explicit abortOnDemandMeasurementJob() operation when the measurement job is running.";

-        }

-        grouping eth-on-demand-measurement-job-control-source {

-            leaf controller-mep-id {

-                type string;

-                description "none";

-            }

-            leaf oam-pdu-generation-type {

-                type oam-pdu-generation-type;

-                description "This attribute contains the pattern that is used for the generation of OAM PDUs.";

-            }

-            leaf destination-address {

-                type mac-address;

-                description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

-            }

-            leaf priority {

-                type uint64;

-                default "7";

-                description "This attribute contains the priority of the OAM PDU frames.

-                    range of type : 0, 1, 2, 3, 4, 5, 6, 7";

-            }

-            leaf message-period {

-                type message-period;

-                description "This attribute contains the frequency of the OAM message (PDU) generation within a series. 

-                    Note that the value 0 means that only one OAM message per measurement interval is generated.

-                    range of type : See corresponding Enum.";

-            }

-            leaf repetition-period {

-                type repetition-period;

-                description "This attribute contains the time between the start of two measurement intervals. This IS applicable for the repetitive instance type and MAY be applicable for the repetitive series type. 

-                    Note that a value of 0 means not applicable (NA), which is for the cases of single instance, single series, or repetitive series without extra gap in between the measurement intervals (i.e., also as known as continuous series).";

-            }

-            leaf measurement-interval {

-                type uint64;

-                description "This attribute contains the discrete non overlapping periods of time (in seconds) during which measurements are performed (i.e., OAM messages are generated) and reports are gathered at the end of the measurement intervals. Note that the value 0 means a degenerated measurement interval with a single OAM message and the report is sent as immediately as possible.

-                    range of type : Non-negative";

-            }

-            leaf test-identifier {

-                type uint64;

-                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

-                    Note: The attribute is not used in case of LMM/LMR measurement.

-                    range of type : 0..(2^32) - 1";

-            }

-            leaf data-tlv-length {

-                type uint64;

-                description "This parameter provides the size of the optional data TLV.

-                    Non-negative integer represents the number of bytes for the length of the padding TLV.

-                    Notes:

-                    When configuring this parameter one should be aware of the maximum allowed total frame size limitation.

-                    The attribute is not used in case of 2-way loss measurement.

-                    range of type : Depends on the allowed MTU size.";

-            }

-            description "Basic attributes: destinationAddress, priority

-                Measurement configuration related attributes: oamPduGenerationType, startTime, stopTime, messagePeriod, repetitionPeriod, measurementInterval

-                Optional attributes: dataTlvLength, testIdentifier

-                This object class represents an on-demand measurement job controller source for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSource() operation. It is deleted either automatically after the measurement job has completed (stop time reached), or by an explicit abortOnDemandMeasurementJob() operation while the measurement job is running.";

-        }

-        grouping eth-pro-active-measurement-job-control-sink {

-            leaf responder-mep-id {

-                type string;

-                description "none";

-            }

-            leaf is-enabled {

-                type boolean;

-                default "true";

-                description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";

-            }

-            leaf source-address {

-                type mac-address;

-                description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

-            }

-            leaf test-identifier {

-                type uint64;

-                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

-                    range of type : 0..(2^32) - 1";

-            }

-            description "This object class allows the control of the proactive 1-way measurement. It is created as a part of an establishProActiveDualEndedMeasurementJobSink() operation. Lifecycle: A pre-condition of deleting the object is that the Enable attribute should have the value FALSE.";

-        }

-        grouping eth-pro-active-measurement-job-control-source {

-            leaf controller-mep-id {

-                type string;

-                description "none";

-            }

-            leaf is-enabled {

-                type boolean;

-                default "true";

-                description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";

-            }

-            leaf destination-address {

-                type mac-address;

-                description "This attribute provides the Unicast MAC address of the intented destination.";

-            }

-            leaf priority {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute contains the priority value on which the MEP performs the measurement. When the measurement is enabled, the MEP should use this value to encode the priority of generated measurement frames. The EMF usese this value to assign the P parameter of the measurement operation.";

-            }

-            leaf period {

-                type oam-period;

-                description "This attribute indicates the period (frequency) of the measurement frame transmission.

-                    range of type : 100ms, 1s, 10s";

-            }

-            leaf test-identifier {

-                type uint64;

-                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

-                    Note: The attribute is not used in case of 2-way loss measurement. 

-                    range of type : 0..(2^32) - 1";

-            }

-            leaf data-tlv-length {

-                type uint64;

-                description "This parameter provides the size of the optional data TLV.

-                    Non-negative integer represents the number of bytes for the length of the padding TLV.

-                    Notes:

-                    When configuring this parameter one should be aware of the maximum allowed total frame size limitation.

-                    The attribute is not used in case of 2-way loss measurement.

-                    range of type : Depends on the allowed MTU size.";

-            }

-            description "This object class represents a proactive measurement job controller source for 1way measurements. It is created as a part of an establishProactiveDualEndedMeasurementJobSource() operation.";

-        }

-        grouping eth-pro-active-1-dm-performance-data {

-            container pro-active-near-end-1-dm-parameters {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the statistical near end performnace parameters.";

-            }

-            description "This object class represents the PM current data collected in a pro-active delay measurement job (using 1DM).";

-        }

-        grouping eth-pro-active-1-lm-performance-data {

-            container pro-active-near-end-1-lm-parameters {

-                uses statistical-lm-performance-parameters;

-                description "This attribute contains the statistical near end performnace parameters.";

-            }

-            description "This object class represents the PM current data collected in a pro-active loss measurement job (using 1SL).";

-        }

-        grouping eth-pro-active-dm-performance-data {

-            container pro-active-bi-dir-dm-parameters {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the statistical bidirectional performnace parameters.";

-            }

-            container pro-active-far-end-dm-parameters {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the statistical far end performnace parameters.";

-            }

-            container pro-active-near-end-dm-parameters {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the statistical near end performnace parameters.";

-            }

-            description "This object class represents the PM current data collected in a pro-active delay measurement job (using DMM/DMR).";

-        }

-        grouping eth-pro-active-lm-performance-data {

-            container pro-active-far-end-lm-parameters {

-                uses statistical-lm-performance-parameters;

-                description "This attribute contains the statistical far end performnace parameters.";

-            }

-            container pro-active-near-end-lm-parameters {

-                uses statistical-lm-performance-parameters;

-                description "This attribute contains the statistical near end performnace parameters.";

-            }

-            leaf bidirectional-uas {

-                type uint64;

-                description "This attribute contains the bidirectional UAS (unavailable seconds) detected in the monitoring interval.

-                    range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

-            }

-            description "This object class represents the PM current data collected in a pro-active loss measurement job (using LMM/LMR or SLM/SLR).";

-        }

-        grouping eth-on-demand-1-dm-performance-data {

-            container on-demand-near-end-1-dm-parameters {

-                uses on-demand-dm-performance-parameters;

-                description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

-            }

+        description "none";

+    }

+    grouping eth-mep-spec {

+        container eth-mep-common {

+            uses eth-mep-common;

             description "none";

         }

-        grouping eth-on-demand-1-lm-performance-data {

-            container on-demand-near-end-1-lm-parameters {

-                uses on-demand-lm-performance-parameters;

-                description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";

-            }

+        container eth-mep-source-pac {

+            uses eth-mep-source;

             description "none";

         }

-        grouping eth-on-demand-dm-performance-data {

-            container on-demand-far-end-dm-parameters {

-                uses on-demand-dm-performance-parameters;

-                description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

-            }

-            container on-demand-near-end-dm-parameters {

-                uses on-demand-dm-performance-parameters;

-                description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

-            }

+        container eth-mep-sink {

+            uses eth-mep-sink;

             description "none";

         }

-        grouping eth-on-demand-lm-performance-data {

-            container on-demand-far-end-lm-parameters {

-                uses on-demand-lm-performance-parameters;

-                description "This attribute contains the results of an on-demand synthetic loss measurement job in the egress direction.";

-            }

-            container on-demand-near-end-lm-parameters {

-                uses on-demand-lm-performance-parameters;

-                description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";

-            }

+        description "none";

+    }

+    grouping eth-mip-spec {

+        leaf mip-mac {

+            type mac-address;

+            config false;

+            description "This attribute contains the MAC address of the MIP instance.";

+        }

+        leaf is-full-mip {

+            type boolean;

+            config false;

+            description "This attribute indicates whether the MIP is a full MIP (true) or a down-half MIP (false).";

+        }

+        description "none";

+    }

+    grouping eth-loopback-job {

+        container eth-lb-msg {

+            uses eth-oam-msg-common-pac;

             description "none";

         }

-        grouping eth-pro-active-1way-measurement-job {

-            container pro-active-control-1way-source {

-                uses eth-pro-active-measurement-job-control-source;

-                description "none";

-            }

-            container pro-active-control-1way-sink {

-                uses eth-pro-active-measurement-job-control-sink;

-                description "none";

-            }

-            description "none";

+        leaf number {

+            type uint64;

+            description "G.8052: This parameter specifies how many LB messages to be sent for the LB_Series process.";

         }

-        grouping eth-pro-active-2way-measurement-job {

-            container pro-active-control-2way-source {

-                uses eth-pro-active-measurement-job-control-source;

-                description "none";

-            }

-            description "none";

+        description "This class represents the Loopback (LB) process (send a series of LB messages carrying a test pattern to a particular MEP). The termination occurs at specified stop time (schedule attribute of OamJob).

+            This class models also the 'loopback discover' process, when destinationAddress is multicast.

+            When number is greater than 1, then the process is to perform a Loopback (LB) Series process (send a series of N LB messages to a particular MEP/MIP. ";

+    }

+    grouping eth-mep-common {

+        leaf mep-mac {

+            type mac-address;

+            config false;

+            description "This attribute contains the MAC Address of the MEP.";

         }

-        grouping eth-on-demand-2way-measurement-job {

-            container on-demand-control-2way-source {

-                uses eth-on-demand-measurement-job-control-source;

-                description "none";

-            }

-            description "none";

+        leaf is-cc-enabled {

+            type boolean;

+            description "This attribute models the MI_CC_Enable signal defined in G.8021 and configured as specified in G8051.";

         }

-        grouping eth-on-demand-1way-measurement-job {

-            container on-demand-control-1way-source {

-                uses eth-on-demand-measurement-job-control-source;

-                description "none";

-            }

-            container on-demand-control-1way-sink {

-                uses eth-on-demand-measurement-job-control-sink;

-                description "none";

-            }

-            description "none";

+        leaf cc-period {

+            type oam-period;

+            description "This attribute models the MI_CC_Period signal defined in G.8021 and configured as specified in G8051.

+                It is the period at which the CCM message should be sent. 

+                Default values are: 3.33 ms for PS, 100 ms for PM, 1 s for FM.";

         }

-        grouping eth-1-dm-threshold-data {

-            container near-end-1-dm-cross-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the near end cross threshold values of the delay measurements.";

+        leaf cc-priority {

+            type uint64 {

+                range "0..7";

             }

-            container near-end-1-dm-clear-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the near end clear threshold values of the delay measurements.";

-            }

-            description "This data type contains the threshold values for frame delay related 1-way measurements.";

+            default "7";

+            description "This attribute models the MI_CC_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CCM message should be sent.";

         }

-        grouping eth-1-lm-threshold-data {

-            container near-end-1-lm-cross-threshold {

-                uses statistical-lm-performance-parameters;

-                description "This attribute contains the near end cross threshold values of the loss measurements.";

-            }

-            container near-end-1-lm-clear-threshold {

-                uses statistical-lm-performance-parameters;

-                description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";

-            }

-            description "This data type contains the threshold values for frame loss related 1-way measurements.";

+        leaf lck-period {

+            type oam-period;

+            description "This attribute models the MI_LCK_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the LCK messages should be sent.

+                range of type : 1s, 1min";

         }

-        grouping eth-dm-threshold-data {

-            container near-end-dm-cross-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the near end cross threshold values of the delay measurements.";

+        leaf lck-priority {

+            type uint64 {

+                range "0..7";

             }

-            container near-end-dm-clear-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the near end clear threshold values of the delay measurements.";

-            }

-            container far-end-dm-cross-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the far end cross threshold values of the delay measurements.";

-            }

-            container far-end-dm-clear-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the far end clear threshold values of the delay measurements.";

-            }

-            container bi-dir-dm-cross-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the bidirectional cross threshold values of the delay measurements.";

-            }

-            container bi-dir-dm-clear-threshold {

-                uses statistical-dm-performance-parameters;

-                description "This attribute contains the bidirectional clear threshold values of the delay measurements.";

-            }

-            description "This data type contains the threshold values for frame delay related 2-way measurements.";

+            default "7";

+            description "This attribute models the MI_LCK_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the LCK messages should be sent.";

         }

-        grouping eth-lm-threshold-data {

-            container near-end-lm-cross-threshold {

-                uses statistical-lm-performance-parameters;

-                description "This attribute contains the near end cross threshold values of the loss measurements.";

-            }

-            container near-end-lm-clear-threshold {

-                uses statistical-lm-performance-parameters;

-                description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";

-            }

-            container far-end-lm-cross-threshold {

-                uses statistical-lm-performance-parameters;

-                description "This attribute contains the far end cross threshold values of the loss measurements.";

-            }

-            container far-end-lm-clear-threshold {

-                uses statistical-lm-performance-parameters;

-                description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the far end clear threshold values of the loss measurements.";

-            }

-            leaf bi-dir-lm-uas-cross-threshold {

-                type uint64;

-                description "This attribute contains the bidirectional cross threshold value of the UAS loss measurement.";

-            }

-            leaf bi-dir-lm-uas-clear-threshold {

-                type uint64;

-                description "This attribute is only valid for the UAS parameter working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the bidirectional clear threshold value of the UAS loss measurement.";

-            }

-            description "This data type contains the threshold values for frame loss related 2-way measurements.";

+        description "Basic attributes: adminState, clientMel, megIdentifier, mepMac

+            Continuity Check Process related attributes: ccPeriod, ccPriority, isCcEnabled

+            Lock Process related attributes: lckPeriod, lckPriority

+            This object class models the MEP functions that are common to MEP Sink and MEP Source.";

+    }

+    grouping eth-mep-sink {

+        leaf-list dm-1-priority {

+            type uint64;

+            description "This attribute indicates the list of 1DM priorities for the MepSink.";

         }

-        grouping eth-loopback-result-data {

-            leaf rec-lbr-frames {

-                type uint64;

-                config false;

-                description "G.8052: This parameter returns the total number of received LBR messages, including the out of order LBR frames.";

+        leaf ais-priority {

+            type uint64 {

+                range "0..7";

             }

-            leaf out-of-order-lbr-frames {

-                type uint64;

-                config false;

-                description "G.8052: This parameter returns the number of LBR traffic unites (messages) that were received out of order (OO).";

-            }

-            leaf sent-lbm-frames {

-                type uint64;

-                config false;

-                description "G.8052: This parameter returns the total number of sent LBM frames.";

-            }

-            leaf crc-lbr-frames {

-                type uint64;

-                config false;

-                description "G.8052: This parameter returns the number of LBR frames where the CRC in the pattern failed.";

-            }

-            leaf ber-lbr-frames {

-                type uint64;

-                config false;

-                description "G.8052: This parameter returns the number of LBR frames where there was a bit error in the pattern.";

-            }

-            leaf-list detected-peer-mep {

-                type mac-address;

-                config false;

-                description "G.8052: This parameter returns the MAC addresses of the discovered peer MEPs of the subject MEP.";

-            }

-            description "none";

+            default "7";

+            description "This attribute models the MI_AIS_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the AIS messages should be sent.";

         }

-        grouping eth-link-trace-result-data {

-            list result-list {

-                key 'source-address';

-                config false;

-                uses link-trace-result;

-                description "G.8052: This parameter returns the results of the LT process. It contains a list of the result received from the individual LTR frames.

-                    The result from the individual LTR frame include the Source Mac Address, the TTL, and TLV.";

-            }

-            description "none";

+        leaf ais-period {

+            type oam-period;

+            description "This attribute models the MI_AIS_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the AIS messages should be sent.

+                range of type : 1s, 1min";

         }

-        grouping eth-test-result-data {

-            leaf sent-tst-frames {

-                type uint64;

-                config false;

-                description "G.8052: This parameter returns the total number of sent TST frames.";

-            }

-            description "none";

+        leaf is-csf-reported {

+            type boolean;

+            default "true";

+            description "This attribute models the MI_CSF_Reported signal defined in G.8021 and configured as specified in G8051. It configures whether the secondary failure CSF should be reported or not.";

         }

-        grouping eth-oam-operation-common-pac {

-            leaf destination-address {

-                type mac-address;

-                description "G.8052: This parameter provides the destination address, i.e., the MAC Address of the target MEP or MIP.";

-            }

-            leaf priority {

-                type uint64;

-                default "7";

-                description "G.8052: This parameter provides the priority to be used in the LBM frame.";

-            }

-            description "none";

+        leaf is-csf-rdi-fdi-enabled {

+            type boolean;

+            default "true";

+            description "This attribute models the MI_CSFrdifdiEnable signal defined in G.8021 and configured as specified in G8051.";

         }

-        grouping eth-oam-msg-common-pac {

-            leaf period {

-                type oam-period;

-                description "G.8052: This parameter provides the periodicity of the TST OAM messages.";

+        container bandwidth-report {

+            config false;

+            uses bandwidth-report;

+            description "This attribute models the content of the bandwidth report received by the MEP Sink from the peer MEP Source.";

+        }

+        leaf lm-degm {

+            type uint64;

+            default "10";

+            description "This attribute defines the number of consecutive bad seconds necessary for the 'degraded' detection. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+        }

+        leaf lm-deg-thr {

+            type uint64;

+            default "30";

+            description "This attribute defines the threshold for declaring a 'bad second'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+        }

+        leaf lm-m {

+            type uint64 {

+                range "2..10";

             }

-            leaf drop-eligibility {

-                type boolean;

-                description "G.8052: This parameter provides the eligibility of frames with unicast ETH-TST information to be discarded when congestion conditions are encountered.";

+            default "10";

+            description "This attribute defines the number of consecutive good seconds necessary for the clearing of 'degraded'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+        }

+        leaf lm-tf-min {

+            type uint64;

+            description "This attribute defines the necessary number of transmitted frames to enable the detection of 'bad seconds'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+        }

+        description "1DM related attribute: 1DmPriority

+            AIS Process related attributes: aisPeriod, aisPriority

+            Bandwidth notification Process related attribute: bandwidthReport

+            Basic attribute: peerMepRefList

+            CSF Process related attributes: isCsfRdiFdiEnabled, isCsfReported

+            Defect correlation Process related attribute: currentProblemList

+            This object class models the MEP sink function. Instance of this object class can be created and contained by ETH CTP or TTP objects.

+            It also provides the management of the dual-ended maintenance job, such as test.

+            This object contains the configuration parameters for detecting 'degraded signal' (DEG).";

+    }

+    grouping eth-mep-source {

+        leaf aps-priority {

+            type uint64 {

+                range "0..7";

             }

-            leaf data-tlv-length {

-                type uint64;

-                description "G.8052: This parameter provides the length (in number of octet) of the optional Data TLV to be included in the TST frame.";

+            default "7";

+            description "This attribute specifies the priority of the APS messages.

+                See section 8.1.5    APS insert process in G.8021.";

+        }

+        leaf csf-priority {

+            type uint64 {

+                range "0..7";

             }

-            leaf test-pattern {

-                type uint64;

-                description "G.8052: This parameter provides the test pattern to be used in the optional Data TLV.

-                    Examples of test patterns include pseudo-random bit sequence (PRBS) 2^31-1 as specified in clause 5.8 of [ITU-T O.150], all '0' pattern, etc.

-                    The following values of pattern types are defined:

-                    0: 'Null signal without CRC-32'

-                    1: 'Null signal with CRC-32'

-                    2: 'PRBS 2^31-1 without CRC-32'

-                    3: 'PRBS 2^31-1 with CRC-32'.";

-            }

+            default "7";

+            description "This attribute models the MI_CSF_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CSF messages should be sent";

+        }

+        leaf csf-period {

+            type oam-period;

+            description "This attribute models the MI_CSF_Period signal defined in G.8021 and configured as specified in G8051. It is the period at which the CSF messages should be sent.

+                range of type : 1s, 1min";

+        }

+        leaf csf-config {

+            type csf-config;

+            description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.";

+        }

+        description "APS Process related attribute: apsPriority

+            Basic attribute: mepIdentifier

+            CSF Process related attributes: csfConfig, csfPeriod, csfPriority

+            Link trace related operation: linkTrace

+            Loopback related operations: loopbackDiscover, loopbackSeries, loopbackTest, loopbackTestTerminate

+            On demand measurement job control related operation: establishOnDemandDualEndedMeasurementJobSource

+            Proactive measurement job control related operation: establishProActiveDualEndedMeasurementJobSource

+            Test related operations: testInitiatorStart, testInitiatorTerminate

+            This object class models the MEP source function. Instance of this object class can be created and contained by ETH CTP or TTP objects.

+            It also provides the management of single-ended maintenance jobs, such as loopback test, loopback discover, loopback series, link trace, and dual-ended maintenance job, such as test.";

+    }

+    grouping eth-link-trace-job {

+        container eth-lt-msg {

             uses eth-oam-operation-common-pac;

             description "none";

         }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        identity ETH_OAM_JOB_TYPE {

-        	base tapi-oam:OAM_JOB_TYPE;

+        leaf time-to-live {

+            type uint64;

+            description "G.8052: This parameter provides the Time To Live (TTL) parameter of the Link Track protocol.

+                The TTL parameter allows the receiver (MIP or MEP) of the LTM frame to determine if the frame can be terminated. TTL is decremented every time the LTM frame is relayed. LTM frame with TTL<=1 is terminated and not relayed.";

+        }

+        description "This class represents the Link Trace (LT) process for fault localization or for discovering the intermediate MIPs along the link from the MEP Source to a target MEP or MIP. An LTM frame will be sent from the MEP source to the target MEP/MIP.

+            The termination occurs at specified stop time (schedule attribute of OamJob).";

+    }

+    grouping eth-test-job {

+        container eth-test-msg {

+            uses eth-oam-msg-common-pac;

             description "none";

         }

-        identity ETH_OAM_JOB_TYPE_ETH_1DM {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_1SLM {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_LM_CCM {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_LM_LMM {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_SLM {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_DM {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_LTC {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_LBK {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        identity ETH_OAM_JOB_TYPE_ETH_TEST {

-            base ETH_OAM_JOB_TYPE;

-            description "none";

-        }

-        grouping priority-configuration {

-            leaf priority {

-                type uint64 {

-                    range "0..7";

-                }

-                description "none";

-            }

-            leaf queue-id {

-                type uint64 {

-                    range "1..8";

-                }

-                description "none";

-            }

-            description "none";

-        }

-        grouping queue-configuration {

-            leaf queue-id {

-                type uint64;

-                description "This attribute indicates the queue id.";

-            }

-            leaf queue-depth {

-                type uint64;

-                description "This attribute defines the depth of the queue in bytes.";

-            }

-            leaf queue-threshold {

-                type uint64;

-                description "This attribute defines the threshold of the queue in bytes.";

-            }

-            description "none";

-        }

-        grouping traffic-conditioning-configuration {

-            leaf cir {

-                type uint64;

-                description "This attribute indicates the Committed Information Rate in bits/s.";

-            }

-            leaf cbs {

-                type uint64;

-                description "This attribute indicates the Committed Burst Size in bytes.";

-            }

-            leaf eir {

-                type uint64;

-                description "This attribute indicates the Excess Information Rate in bits/s.";

-            }

-            leaf ebs {

-                type uint64;

-                description "This attribute indicates the Excess Burst Size in bytes.";

-            }

-            leaf coupling-flag {

-                type boolean;

-                description "This attribute indicates the coupling flag.";

-            }

-            leaf colour-mode {

-                type colour-mode;

-                description "This attribute indicates the colour mode.";

-            }

-            leaf queue-id {

-                type uint64 {

-                    range "1..8";

-                }

-                description "This attribute indicates the queue id.";

-            }

-            description "none";

-        }

-        typedef mac-address {

-            type string;

-            description "This primitive data type contains an Ethernet MAC address defined by IEEE 802a. The format of the address consists of 12 hexadecimal characters, grouped in pairs and separated by '-' (e.g., 03-27-AC-75-3E-1D).";

-        }

-        grouping priority-mapping {

-            leaf priority-0 {

-                type uint64 {

-                    range "0..7";

-                }

-                description "This attribute defines the new priority value for the old priority value 0.";

-            }

-            leaf priority-1 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "1";

-                description "This attribute defines the new priority value for the old priority value 1.";

-            }

-            leaf priority-2 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "2";

-                description "This attribute defines the new priority value for the old priority value 2.";

-            }

-            leaf priority-3 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "3";

-                description "This attribute defines the new priority value for the old priority value 3.";

-            }

-            leaf priority-4 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "4";

-                description "This attribute defines the new priority value for the old priority value 4.";

-            }

-            leaf priority-5 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "5";

-                description "This attribute defines the new priority value for the old priority value 5.";

-            }

-            leaf priority-6 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "6";

-                description "This attribute defines the new priority value for the old priority value 6.";

-            }

-            leaf priority-7 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute defines the new priority value for the old priority value 7.";

-            }

-            description "This data type provides the priority mapping done in the 'P Regenerate' process defined in G.8021.";

-        }

-        typedef vid {

-            type string;

-            description "This primitive type models the 12 Bit VLAN identifier of a VLAN tag.";

-        }

-        typedef modify-cross-connection-data {

+        description "This class represents the 1-way on-demand in-service or out-of-service diagnostic test. The diagnostic test includes verifying bandwidth throughput, frame loss, bit errors, etc. TST frames are transmitted.

+            The termination occurs at specified stop time (schedule attribute of OamJob).";

+    }

+    grouping eth-on-demand-measurement-job-control-sink {

+        leaf responder-mep-id {

             type string;

             description "none";

         }

-        grouping address-tuple {

-            leaf address {

-                type mac-address;

-                description "This attribute contains the MAC address of the address tuple.";

-            }

-            leaf-list port-list {

-                type mac-address;

-                description "This attribute contains the ports associated to the MAC address in the address tuple.";

-            }

-            description "This data type contains an address tuple consisting of a MAC address and a corresponding port list.";

+        leaf source-address {

+            type mac-address;

+            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

         }

-        typedef scheduling-configuration {

+        leaf priority {

+            type uint64;

+            default "7";

+            description "This attribute contains the priority of the OAM PDU frames.

+                range of type : 0, 1, 2, 3, 4, 5, 6, 7";

+        }

+        leaf test-identifier {

+            type uint64;

+            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                range of type : 0..(2^32) - 1";

+        }

+        description "This object class represents an on-demand measurement job controller sink for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSink() operation. It is deleted either automatically after the measurement job has completed (stop time reached) and the performance data AVC notification has been sent, or by an explicit abortOnDemandMeasurementJob() operation when the measurement job is running.";

+    }

+    grouping eth-on-demand-measurement-job-control-source {

+        leaf controller-mep-id {

             type string;

-            description "The syntax of this dataType is pending on the specification in G.8021, which is for further study.";

-        }

-        grouping control-frame-filter {

-            leaf c-2-00-00-10 {

-                type boolean;

-                description "This attribute identifies the 'All LANs Bridge Management Group Address'.";

-            }

-            leaf c-2-00-00-00 {

-                type boolean;

-                description "This attribute identifies the STP/RSTP/MSTP protocol address.";

-            }

-            leaf c-2-00-00-01 {

-                type boolean;

-                description "This attribute identifies the IEEE MAC-specific Control Protocols group address (PAUSE protocol).";

-            }

-            leaf c-2-00-00-02 {

-                type boolean;

-                description "This attribute identifies the IEEE 802.3 Slow_Protocols_Multicast address (LACP/LAMP or Link OAM protocols).";

-            }

-            leaf c-2-00-00-03 {

-                type boolean;

-                description "This attribute identifies the Nearest non-TPMR Bridge group address (Port Authentication protocol).";

-            }

-            leaf c-2-00-00-04 {

-                type boolean;

-                description "This attribute identifies the IEEE MAC-specific Control Protocols group address.";

-            }

-            leaf c-2-00-00-05 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-06 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-07 {

-                type boolean;

-                description "This attribute identifies the Metro Ethernet Forum E-LMI protocol group address.";

-            }

-            leaf c-2-00-00-08 {

-                type boolean;

-                description "This attribute identifies the Provider Bridge Group address.";

-            }

-            leaf c-2-00-00-09 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-a {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-b {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-c {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-d {

-                type boolean;

-                description "This attribute identifies the Provider Bridge MVRP address.";

-            }

-            leaf c-2-00-00-0-e {

-                type boolean;

-                description "This attribute identifies the Individual LAN Scope group address, Nearest Bridge group address (LLDP protocol).";

-            }

-            leaf c-2-00-00-0-f {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-20 {

-                type boolean;

-                description "This attribute identifies the Customer and Provider Bridge MMRP address.";

-            }

-            leaf c-2-00-00-21 {

-                type boolean;

-                description "This attribute identifies the Customer Bridge MVRP address.";

-            }

-            leaf c-2-00-00-22 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-23 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-24 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-25 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-26 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-27 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-28 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-29 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-a {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-b {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-c {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-d {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-e {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-f {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            description "This data type identifies the filter action for each of the 33 group MAC addresses (control frames).

-                Value 'false' means block: The frame is discarded by the filter process.

-                Value 'true' means pass: The frame is passed unchanged through the filter process.";

-        }

-        grouping bandwidth-report {

-            leaf source-mac-address {

-                type mac-address;

-                description "The sourceMacAddress is the address from the far end.";

-            }

-            leaf port-id {

-                type uint64;

-                description "This attribute returns the far end port identifier.";

-            }

-            leaf nominal-bandwidth {

-                type uint64;

-                description "This attribute returns the configured bandwidth";

-            }

-            leaf current-bandwidth {

-                type uint64;

-                description "This attribute returns the current bandwidth.";

-            }

-            description "Data type for the bandwidth report.";

-        }

-        typedef admin-state {

-            type enumeration {

-                enum LOCK {

-                    description "none";

-                }

-                enum NORMAL {

-                    description "none";

-                }

-            }

             description "none";

         }

-        typedef colour-mode {

-            type enumeration {

-                enum COLOUR_BLIND {

-                    description "none";

-                }

-                enum COLOUR_AWARE {

-                    description "none";

-                }

-            }

-            description "none";

+        leaf oam-pdu-generation-type {

+            type oam-pdu-generation-type;

+            description "This attribute contains the pattern that is used for the generation of OAM PDUs.";

         }

-        typedef csf-config {

-            type enumeration {

-                enum DISABLED {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is false

-                        - MI_CSFrdifdi_Enable is false

-                        - MI_CSFdci_Enable is false.";

-                }

-                enum ENABLED {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is false

-                        - MI_CSFdci_Enable is false.";

-                }

-                enum ENABLED_WITH_RDI_FDI {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is true

-                        - MI_CSFdci_Enable is false.";

-                }

-                enum ENABLED_WITH_RDI_FDI_DCI {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is true

-                        - MI_CSFdci_Enable is true.";

-                }

-                enum ENABLED_WITH_DCI {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is false

-                        - MI_CSFdci_Enable is true.";

-                }

-            }

-            description "none";

+        leaf destination-address {

+            type mac-address;

+            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

         }

-        typedef ety-phy-type {

-            type enumeration {

-                enum OTHER {

-                    description "none";

-                }

-                enum UNKNOWN {

-                    description "none";

-                }

-                enum NONE {

-                    description "none";

-                }

-                enum 2BASE_TL {

-                    description "none";

-                }

-                enum 10MBIT_S {

-                    description "none";

-                }

-                enum 10PASS_TS {

-                    description "none";

-                }

-                enum 100BASE_T4 {

-                    description "none";

-                }

-                enum 100BASE_X {

-                    description "none";

-                }

-                enum 100BASE_T2 {

-                    description "none";

-                }

-                enum 1000BASE_X {

-                    description "none";

-                }

-                enum 1000BASE_T {

-                    description "none";

-                }

-                enum 10GBASE-X {

-                    description "none";

-                }

-                enum 10GBASE_R {

-                    description "none";

-                }

-                enum 10GBASE_W {

-                    description "none";

-                }

-            }

-            description "none";

+        leaf priority {

+            type uint64;

+            default "7";

+            description "This attribute contains the priority of the OAM PDU frames.

+                range of type : 0, 1, 2, 3, 4, 5, 6, 7";

         }

-        typedef frame-type {

-            type enumeration {

-                enum ADMIT_ONLY_VLAN_TAGGED_FRAMES {

-                    description "none";

-                }

-                enum ADMIT_ONLY_UNTAGGED_AND_PRIORITY_TAGGED_FRAMES {

-                    description "none";

-                }

-                enum ADMIT_ALL_FRAMES {

-                    description "none";

-                }

-            }

-            description "none";

+        leaf message-period {

+            type message-period;

+            description "This attribute contains the frequency of the OAM message (PDU) generation within a series.

+                Note that the value 0 means that only one OAM message per measurement interval is generated.

+                range of type : See corresponding Enum.";

         }

-        typedef oam-period {

-            type enumeration {

-                enum 3_33MS {

-                    description "Default for protection.";

-                }

-                enum 10MS {

-                    description "none";

-                }

-                enum 100MS {

-                    description "none";

-                }

-                enum 1S {

-                    description "none";

-                }

-                enum 10S {

-                    description "none";

-                }

-                enum 1MIN {

-                    description "none";

-                }

-                enum 10MIN {

-                    description "none";

-                }

-            }

-            description "Provides the frequency for the OAM PDU insertion.";

+        leaf repetition-period {

+            type repetition-period;

+            description "This attribute contains the time between the start of two measurement intervals. This IS applicable for the repetitive instance type and MAY be applicable for the repetitive series type.

+                Note that a value of 0 means not applicable (NA), which is for the cases of single instance, single series, or repetitive series without extra gap in between the measurement intervals (i.e., also as known as continuous series).";

         }

-        typedef pcp-coding {

-            type enumeration {

-                enum 8P0D {

-                    description "none";

-                }

-                enum 7P1D {

-                    description "none";

-                }

-                enum 6P2D {

-                    description "none";

-                }

-                enum 5P3D {

-                    description "none";

-                }

-                enum DEI {

-                    description "This enumeration value means that all priorities should be drop eligible.

-                        DEI = Drop Eligibility Indicator";

-                }

-            }

-            description "This enum models the coding of the Priority Code Point as defined in section 'Priority Code Point encoding' of IEEE 802.1Q.";

+        leaf measurement-interval {

+            type uint64;

+            description "This attribute contains the discrete non overlapping periods of time (in seconds) during which measurements are performed (i.e., OAM messages are generated) and reports are gathered at the end of the measurement intervals. Note that the value 0 means a degenerated measurement interval with a single OAM message and the report is sent as immediately as possible.

+                range of type : Non-negative";

         }

-        typedef vlan-type {

-            type enumeration {

-                enum C_Tag {

-                    description "0x8100";

-                }

-                enum S_Tag {

-                    description "0x88a8";

-                }

-                enum I_Tag {

-                    description "88-e7";

-                }

-            }

-            description "This enumeration contains the Ethertypes defined in IEEE 802.1Q.";

+        leaf test-identifier {

+            type uint64;

+            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                Note: The attribute is not used in case of LMM/LMR measurement.

+                range of type : 0..(2^32) - 1";

         }

-        typedef repetition-period {

-            type enumeration {

-                enum 1MIN {

-                    description "none";

-                }

-                enum 1S {

-                    description "none";

-                }

-                enum 10S {

-                    description "none";

-                }

-                enum 0 {

-                    description "none";

-                }

-            }

-            description "This enumeration defines the allowed values for the repetition period in on-demand measurements.

-                Note: The value 0 means that the value is not relevant.";

-        }

-        typedef message-period {

-            type enumeration {

-                enum 10MS {

-                    description "none";

-                }

-                enum 100MS {

-                    description "none";

-                }

-                enum 1S {

-                    description "none";

-                }

-                enum 10S {

-                    description "none";

-                }

-                enum 0 {

-                    description "none";

-                }

-            }

-            description "This enumeration defines the allowed values for the message period in on-demand measurements.

+        leaf data-tlv-length {

+            type uint64;

+            description "This parameter provides the size of the optional data TLV.

+                Non-negative integer represents the number of bytes for the length of the padding TLV.

                 Notes:

-                The value 10ms is only used in synthetic loss measurements.

-                The value 0 means that the value is not relevant.";

+                When configuring this parameter one should be aware of the maximum allowed total frame size limitation.

+                The attribute is not used in case of 2-way loss measurement.

+                range of type : Depends on the allowed MTU size.";

         }

-        typedef oam-pdu-generation-type {

-            type enumeration {

-                enum SINGLE_INSTANCE {

-                    description "none";

-                }

-                enum REPETITIVE_INSTANCE {

-                    description "none";

-                }

-                enum SINGLE_SERIES {

-                    description "none";

-                }

-                enum REPETITIVE_SERIES {

-                    description "none";

-                }

-            }

-            description "This enumeration defines the generation pattern of the on-demand OAM PDUs (messages). ";

+        description "Basic attributes: destinationAddress, priority

+            Measurement configuration related attributes: oamPduGenerationType, startTime, stopTime, messagePeriod, repetitionPeriod, measurementInterval

+            Optional attributes: dataTlvLength, testIdentifier

+            This object class represents an on-demand measurement job controller source for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSource() operation. It is deleted either automatically after the measurement job has completed (stop time reached), or by an explicit abortOnDemandMeasurementJob() operation while the measurement job is running.";

+    }

+    grouping eth-pro-active-measurement-job-control-sink {

+        leaf responder-mep-id {

+            type string;

+            description "none";

         }

-        grouping on-demand-dm-performance-parameters {

-            leaf number-of-samples {

-                type uint64;

-                description "This attribute contains the number of received DM frames (successful samples) used for this frame delay measurement.

-                    range of type : non-negative";

-            }

-            leaf-list frame-delay-list {

-                type uint64;

-                description "This attribute contains the frame delays measured in ns (nano second, 1x10e-9 seconds). The multiplicity is defined by the numberOfSamples attribute.";

-            }

-            leaf-list frame-delay-variation-list {

-                type uint64;

-                description "This attribute contains the frame delay variations measured in ns (nano second).  The multiplicity is defined by (numberOfSamples - 1, for numberOfSamples > 0).";

-            }

-            description "This data type contains the results of an on-demand delay measurement job.";

+        leaf is-enabled {

+            type boolean;

+            default "true";

+            description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";

         }

-        grouping on-demand-lm-performance-parameters {

-            leaf total-transmitted-frames {

-                type uint64;

-                description "This attribute contains the total number of frames transmitted.";

-            }

-            leaf total-lost-frames {

-                type uint64;

-                description "This attribute contains the total number of frames lost.";

-            }

-            leaf total-frame-loss-ratio {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "This attribute contains the frame loss ratio (number of lost frames divided by the number of total frames (N_LF / N_TF)).

-                    The accuracy of the value is for further study.";

-            }

-            description "This data type contains the results of an on-demand loss measurement job.";

+        leaf source-address {

+            type mac-address;

+            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

         }

-        grouping statistical-dm-performance-parameters {

-            leaf minimum-frame-delay {

-                type uint64;

-                description "This attribute contains the minimum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

-            }

-            leaf average-frame-delay {

-                type uint64;

-                description "This attribute contains the average frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

-            }

-            leaf maximum-frame-delay {

-                type uint64;

-                description "This attribute contains the maximum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

-            }

-            leaf minimum-frame-delay-variation {

-                type uint64;

-                description "This attribute contains the minimum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

-            }

-            leaf average-frame-delay-variation {

-                type uint64;

-                description "This attribute contains the average frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

-            }

-            leaf maximum-frame-delay-variation {

-                type uint64;

-                description "This attribute contains the maximum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

-            }

-            description "This data type contains the statistical delay measurement performance parameters.";

+        leaf test-identifier {

+            type uint64;

+            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                range of type : 0..(2^32) - 1";

         }

-        grouping statistical-lm-performance-parameters {

-            leaf minimum-frame-loss-ratio {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "This attribute contains the minimum frame loss ratio calculated over a period of time.

-                    The accuracy of the value is for further study.";

-            }

-            leaf average-frame-loss-ratio {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "This attribute contains the average frame loss ratio calculated over a period of time.

-                    The accuracy of the value is for further study.";

-            }

-            leaf maximum-frame-loss-ratio {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "This attribute contains the maximum frame loss ratio calculated over a period of time.

-                    The accuracy of the value is for further study.";

-            }

-            leaf ses {

-                type uint64;

-                description "This attribute contains the SES detected in the monitoring interval.

-                    range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

-            }

-            leaf uas {

-                type uint64;

-                description "This attribute contains UAS (unavailable seconds) detected in the monitoring interval.

-                    range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

-            }

-            description "This data type contains the statistical loss measurement performance parameters.";

+        description "This object class allows the control of the proactive 1-way measurement. It is created as a part of an establishProActiveDualEndedMeasurementJobSink() operation. Lifecycle: A pre-condition of deleting the object is that the Enable attribute should have the value FALSE.";

+    }

+    grouping eth-pro-active-measurement-job-control-source {

+        leaf controller-mep-id {

+            type string;

+            description "none";

         }

-        typedef eth-oam-job-type {

-            type identityref {

-                base ETH_OAM_JOB_TYPE;

+        leaf is-enabled {

+            type boolean;

+            default "true";

+            description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";

+        }

+        leaf destination-address {

+            type mac-address;

+            description "This attribute provides the Unicast MAC address of the intented destination.";

+        }

+        leaf priority {

+            type uint64 {

+                range "0..7";

+            }

+            default "7";

+            description "This attribute contains the priority value on which the MEP performs the measurement. When the measurement is enabled, the MEP should use this value to encode the priority of generated measurement frames. The EMF usese this value to assign the P parameter of the measurement operation.";

+        }

+        leaf period {

+            type oam-period;

+            description "This attribute indicates the period (frequency) of the measurement frame transmission.

+                range of type : 100ms, 1s, 10s";

+        }

+        leaf test-identifier {

+            type uint64;

+            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                Note: The attribute is not used in case of 2-way loss measurement.

+                range of type : 0..(2^32) - 1";

+        }

+        leaf data-tlv-length {

+            type uint64;

+            description "This parameter provides the size of the optional data TLV.

+                Non-negative integer represents the number of bytes for the length of the padding TLV.

+                Notes:

+                When configuring this parameter one should be aware of the maximum allowed total frame size limitation.

+                The attribute is not used in case of 2-way loss measurement.

+                range of type : Depends on the allowed MTU size.";

+        }

+        description "This object class represents a proactive measurement job controller source for 1way measurements. It is created as a part of an establishProactiveDualEndedMeasurementJobSource() operation.";

+    }

+    grouping eth-pro-active-1-dm-performance-data {

+        container pro-active-near-end-1-dm-parameters {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the statistical near end performnace parameters.";

+        }

+        description "This object class represents the PM current data collected in a pro-active delay measurement job (using 1DM).";

+    }

+    grouping eth-pro-active-1-lm-performance-data {

+        container pro-active-near-end-1-lm-parameters {

+            uses statistical-lm-performance-parameters;

+            description "This attribute contains the statistical near end performnace parameters.";

+        }

+        description "This object class represents the PM current data collected in a pro-active loss measurement job (using 1SL).";

+    }

+    grouping eth-pro-active-dm-performance-data {

+        container pro-active-bi-dir-dm-parameters {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the statistical bidirectional performnace parameters.";

+        }

+        container pro-active-far-end-dm-parameters {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the statistical far end performnace parameters.";

+        }

+        container pro-active-near-end-dm-parameters {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the statistical near end performnace parameters.";

+        }

+        description "This object class represents the PM current data collected in a pro-active delay measurement job (using DMM/DMR).";

+    }

+    grouping eth-pro-active-lm-performance-data {

+        container pro-active-far-end-lm-parameters {

+            uses statistical-lm-performance-parameters;

+            description "This attribute contains the statistical far end performnace parameters.";

+        }

+        container pro-active-near-end-lm-parameters {

+            uses statistical-lm-performance-parameters;

+            description "This attribute contains the statistical near end performnace parameters.";

+        }

+        leaf bidirectional-uas {

+            type uint64;

+            description "This attribute contains the bidirectional UAS (unavailable seconds) detected in the monitoring interval.

+                range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

+        }

+        description "This object class represents the PM current data collected in a pro-active loss measurement job (using LMM/LMR or SLM/SLR).";

+    }

+    grouping eth-on-demand-1-dm-performance-data {

+        container on-demand-near-end-1-dm-parameters {

+            uses on-demand-dm-performance-parameters;

+            description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

+        }

+        description "none";

+    }

+    grouping eth-on-demand-1-lm-performance-data {

+        container on-demand-near-end-1-lm-parameters {

+            uses on-demand-lm-performance-parameters;

+            description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";

+        }

+        description "none";

+    }

+    grouping eth-on-demand-dm-performance-data {

+        container on-demand-far-end-dm-parameters {

+            uses on-demand-dm-performance-parameters;

+            description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

+        }

+        container on-demand-near-end-dm-parameters {

+            uses on-demand-dm-performance-parameters;

+            description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

+        }

+        description "none";

+    }

+    grouping eth-on-demand-lm-performance-data {

+        container on-demand-far-end-lm-parameters {

+            uses on-demand-lm-performance-parameters;

+            description "This attribute contains the results of an on-demand synthetic loss measurement job in the egress direction.";

+        }

+        container on-demand-near-end-lm-parameters {

+            uses on-demand-lm-performance-parameters;

+            description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";

+        }

+        description "none";

+    }

+    grouping eth-pro-active-1way-measurement-job {

+        container pro-active-control-1way-source {

+            uses eth-pro-active-measurement-job-control-source;

+            description "none";

+        }

+        container pro-active-control-1way-sink {

+            uses eth-pro-active-measurement-job-control-sink;

+            description "none";

+        }

+        description "none";

+    }

+    grouping eth-pro-active-2way-measurement-job {

+        container pro-active-control-2way-source {

+            uses eth-pro-active-measurement-job-control-source;

+            description "none";

+        }

+        description "none";

+    }

+    grouping eth-on-demand-2way-measurement-job {

+        container on-demand-control-2way-source {

+            uses eth-on-demand-measurement-job-control-source;

+            description "none";

+        }

+        description "none";

+    }

+    grouping eth-on-demand-1way-measurement-job {

+        container on-demand-control-1way-source {

+            uses eth-on-demand-measurement-job-control-source;

+            description "none";

+        }

+        container on-demand-control-1way-sink {

+            uses eth-on-demand-measurement-job-control-sink;

+            description "none";

+        }

+        description "none";

+    }

+    grouping eth-1-dm-threshold-data {

+        container near-end-1-dm-cross-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the near end cross threshold values of the delay measurements.";

+        }

+        container near-end-1-dm-clear-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the near end clear threshold values of the delay measurements.";

+        }

+        description "This data type contains the threshold values for frame delay related 1-way measurements.";

+    }

+    grouping eth-1-lm-threshold-data {

+        container near-end-1-lm-cross-threshold {

+            uses statistical-lm-performance-parameters;

+            description "This attribute contains the near end cross threshold values of the loss measurements.";

+        }

+        container near-end-1-lm-clear-threshold {

+            uses statistical-lm-performance-parameters;

+            description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";

+        }

+        description "This data type contains the threshold values for frame loss related 1-way measurements.";

+    }

+    grouping eth-dm-threshold-data {

+        container near-end-dm-cross-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the near end cross threshold values of the delay measurements.";

+        }

+        container near-end-dm-clear-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the near end clear threshold values of the delay measurements.";

+        }

+        container far-end-dm-cross-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the far end cross threshold values of the delay measurements.";

+        }

+        container far-end-dm-clear-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the far end clear threshold values of the delay measurements.";

+        }

+        container bi-dir-dm-cross-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the bidirectional cross threshold values of the delay measurements.";

+        }

+        container bi-dir-dm-clear-threshold {

+            uses statistical-dm-performance-parameters;

+            description "This attribute contains the bidirectional clear threshold values of the delay measurements.";

+        }

+        description "This data type contains the threshold values for frame delay related 2-way measurements.";

+    }

+    grouping eth-lm-threshold-data {

+        container near-end-lm-cross-threshold {

+            uses statistical-lm-performance-parameters;

+            description "This attribute contains the near end cross threshold values of the loss measurements.";

+        }

+        container near-end-lm-clear-threshold {

+            uses statistical-lm-performance-parameters;

+            description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";

+        }

+        container far-end-lm-cross-threshold {

+            uses statistical-lm-performance-parameters;

+            description "This attribute contains the far end cross threshold values of the loss measurements.";

+        }

+        container far-end-lm-clear-threshold {

+            uses statistical-lm-performance-parameters;

+            description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the far end clear threshold values of the loss measurements.";

+        }

+        leaf bi-dir-lm-uas-cross-threshold {

+            type uint64;

+            description "This attribute contains the bidirectional cross threshold value of the UAS loss measurement.";

+        }

+        leaf bi-dir-lm-uas-clear-threshold {

+            type uint64;

+            description "This attribute is only valid for the UAS parameter working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the bidirectional clear threshold value of the UAS loss measurement.";

+        }

+        description "This data type contains the threshold values for frame loss related 2-way measurements.";

+    }

+    grouping eth-loopback-result-data {

+        leaf rec-lbr-frames {

+            type uint64;

+            config false;

+            description "G.8052: This parameter returns the total number of received LBR messages, including the out of order LBR frames.";

+        }

+        leaf out-of-order-lbr-frames {

+            type uint64;

+            config false;

+            description "G.8052: This parameter returns the number of LBR traffic unites (messages) that were received out of order (OO).";

+        }

+        leaf sent-lbm-frames {

+            type uint64;

+            config false;

+            description "G.8052: This parameter returns the total number of sent LBM frames.";

+        }

+        leaf crc-lbr-frames {

+            type uint64;

+            config false;

+            description "G.8052: This parameter returns the number of LBR frames where the CRC in the pattern failed.";

+        }

+        leaf ber-lbr-frames {

+            type uint64;

+            config false;

+            description "G.8052: This parameter returns the number of LBR frames where there was a bit error in the pattern.";

+        }

+        leaf-list detected-peer-mep {

+            type mac-address;

+            config false;

+            description "G.8052: This parameter returns the MAC addresses of the discovered peer MEPs of the subject MEP.";

+        }

+        description "none";

+    }

+    grouping eth-link-trace-result-data {

+        list result-list {

+            key 'source-address';

+            config false;

+            uses link-trace-result;

+            description "G.8052: This parameter returns the results of the LT process. It contains a list of the result received from the individual LTR frames.

+                The result from the individual LTR frame include the Source Mac Address, the TTL, and TLV.";

+        }

+        description "none";

+    }

+    grouping eth-test-result-data {

+        leaf sent-tst-frames {

+            type uint64;

+            config false;

+            description "G.8052: This parameter returns the total number of sent TST frames.";

+        }

+        description "none";

+    }

+    grouping eth-oam-operation-common-pac {

+        leaf destination-address {

+            type mac-address;

+            description "G.8052: This parameter provides the destination address, i.e., the MAC Address of the target MEP or MIP.";

+        }

+        leaf priority {

+            type uint64;

+            default "7";

+            description "G.8052: This parameter provides the priority to be used in the LBM frame.";

+        }

+        description "none";

+    }

+    grouping eth-oam-msg-common-pac {

+        leaf period {

+            type oam-period;

+            description "G.8052: This parameter provides the periodicity of the TST OAM messages.";

+        }

+        leaf drop-eligibility {

+            type boolean;

+            description "G.8052: This parameter provides the eligibility of frames with unicast ETH-TST information to be discarded when congestion conditions are encountered.";

+        }

+        leaf data-tlv-length {

+            type uint64;

+            description "G.8052: This parameter provides the length (in number of octet) of the optional Data TLV to be included in the TST frame.";

+        }

+        leaf test-pattern {

+            type uint64;

+            description "G.8052: This parameter provides the test pattern to be used in the optional Data TLV.

+                Examples of test patterns include pseudo-random bit sequence (PRBS) 2^31-1 as specified in clause 5.8 of [ITU-T O.150], all '0' pattern, etc.

+                The following values of pattern types are defined:

+                0: 'Null signal without CRC-32'

+                1: 'Null signal with CRC-32'

+                2: 'PRBS 2^31-1 without CRC-32'

+                3: 'PRBS 2^31-1 with CRC-32'.";

+        }

+        uses eth-oam-operation-common-pac;

+        description "none";

+    }

+

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

+    * package type-definitions

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

+    identity ETH_OAM_JOB_TYPE {

+        base tapi-oam:OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_1DM {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_1SLM {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_LM_CCM {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_LM_LMM {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_SLM {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_DM {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_LTC {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_LBK {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    identity ETH_OAM_JOB_TYPE_ETH_TEST {

+        base ETH_OAM_JOB_TYPE;

+        description "none";

+    }

+    grouping priority-configuration {

+        leaf priority {

+            type uint64 {

+                range "0..7";

             }

             description "none";

         }

-        grouping link-trace-result {

-            leaf source-address {

-                type mac-address;

-                description "G.8052: This attribute contains the source MAC Address of an individual LTR frame result.";

+        leaf queue-id {

+            type uint64 {

+                range "1..8";

             }

-            leaf time-to-live {

-                type uint64;

-                description "G.8052: This attribute contains the Time To Live (TTL) value of an individual LTR frame result.";

-            }

-            leaf data-tlv-length {

-                type uint64;

-                description "G.8052: This attribute contains the length (in number of octets) of the Data TLV of an individual LTR frame result.";

-            }

-            description "G.8052: This data type contains the result from an individual LTR frame.";

+            description "none";

         }

-

+        description "none";

+    }

+    grouping queue-configuration {

+        leaf queue-id {

+            type uint64;

+            description "This attribute indicates the queue id.";

+        }

+        leaf queue-depth {

+            type uint64;

+            description "This attribute defines the depth of the queue in bytes.";

+        }

+        leaf queue-threshold {

+            type uint64;

+            description "This attribute defines the threshold of the queue in bytes.";

+        }

+        description "none";

+    }

+    grouping traffic-conditioning-configuration {

+        leaf cir {

+            type uint64;

+            description "This attribute indicates the Committed Information Rate in bits/s.";

+        }

+        leaf cbs {

+            type uint64;

+            description "This attribute indicates the Committed Burst Size in bytes.";

+        }

+        leaf eir {

+            type uint64;

+            description "This attribute indicates the Excess Information Rate in bits/s.";

+        }

+        leaf ebs {

+            type uint64;

+            description "This attribute indicates the Excess Burst Size in bytes.";

+        }

+        leaf coupling-flag {

+            type boolean;

+            description "This attribute indicates the coupling flag.";

+        }

+        leaf colour-mode {

+            type colour-mode;

+            description "This attribute indicates the colour mode.";

+        }

+        leaf queue-id {

+            type uint64 {

+                range "1..8";

+            }

+            description "This attribute indicates the queue id.";

+        }

+        description "none";

+    }

+    typedef mac-address {

+        type string;

+        description "This primitive data type contains an Ethernet MAC address defined by IEEE 802a. The format of the address consists of 12 hexadecimal characters, grouped in pairs and separated by '-' (e.g., 03-27-AC-75-3E-1D).";

+    }

+    grouping priority-mapping {

+        leaf priority-0 {

+            type uint64 {

+                range "0..7";

+            }

+            description "This attribute defines the new priority value for the old priority value 0.";

+        }

+        leaf priority-1 {

+            type uint64 {

+                range "0..7";

+            }

+            default "1";

+            description "This attribute defines the new priority value for the old priority value 1.";

+        }

+        leaf priority-2 {

+            type uint64 {

+                range "0..7";

+            }

+            default "2";

+            description "This attribute defines the new priority value for the old priority value 2.";

+        }

+        leaf priority-3 {

+            type uint64 {

+                range "0..7";

+            }

+            default "3";

+            description "This attribute defines the new priority value for the old priority value 3.";

+        }

+        leaf priority-4 {

+            type uint64 {

+                range "0..7";

+            }

+            default "4";

+            description "This attribute defines the new priority value for the old priority value 4.";

+        }

+        leaf priority-5 {

+            type uint64 {

+                range "0..7";

+            }

+            default "5";

+            description "This attribute defines the new priority value for the old priority value 5.";

+        }

+        leaf priority-6 {

+            type uint64 {

+                range "0..7";

+            }

+            default "6";

+            description "This attribute defines the new priority value for the old priority value 6.";

+        }

+        leaf priority-7 {

+            type uint64 {

+                range "0..7";

+            }

+            default "7";

+            description "This attribute defines the new priority value for the old priority value 7.";

+        }

+        description "This data type provides the priority mapping done in the 'P Regenerate' process defined in G.8021.";

+    }

+    typedef vid {

+        type string;

+        description "This primitive type models the 12 Bit VLAN identifier of a VLAN tag.";

+    }

+    typedef modify-cross-connection-data {

+        type string;

+        description "none";

+    }

+    grouping address-tuple {

+        leaf address {

+            type mac-address;

+            description "This attribute contains the MAC address of the address tuple.";

+        }

+        leaf-list port-list {

+            type mac-address;

+            description "This attribute contains the ports associated to the MAC address in the address tuple.";

+        }

+        description "This data type contains an address tuple consisting of a MAC address and a corresponding port list.";

+    }

+    typedef scheduling-configuration {

+        type string;

+        description "The syntax of this dataType is pending on the specification in G.8021, which is for further study.";

+    }

+    grouping control-frame-filter {

+        leaf c-2-00-00-10 {

+            type boolean;

+            description "This attribute identifies the 'All LANs Bridge Management Group Address'.";

+        }

+        leaf c-2-00-00-00 {

+            type boolean;

+            description "This attribute identifies the STP/RSTP/MSTP protocol address.";

+        }

+        leaf c-2-00-00-01 {

+            type boolean;

+            description "This attribute identifies the IEEE MAC-specific Control Protocols group address (PAUSE protocol).";

+        }

+        leaf c-2-00-00-02 {

+            type boolean;

+            description "This attribute identifies the IEEE 802.3 Slow_Protocols_Multicast address (LACP/LAMP or Link OAM protocols).";

+        }

+        leaf c-2-00-00-03 {

+            type boolean;

+            description "This attribute identifies the Nearest non-TPMR Bridge group address (Port Authentication protocol).";

+        }

+        leaf c-2-00-00-04 {

+            type boolean;

+            description "This attribute identifies the IEEE MAC-specific Control Protocols group address.";

+        }

+        leaf c-2-00-00-05 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-06 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-07 {

+            type boolean;

+            description "This attribute identifies the Metro Ethernet Forum E-LMI protocol group address.";

+        }

+        leaf c-2-00-00-08 {

+            type boolean;

+            description "This attribute identifies the Provider Bridge Group address.";

+        }

+        leaf c-2-00-00-09 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-0-a {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-0-b {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-0-c {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-0-d {

+            type boolean;

+            description "This attribute identifies the Provider Bridge MVRP address.";

+        }

+        leaf c-2-00-00-0-e {

+            type boolean;

+            description "This attribute identifies the Individual LAN Scope group address, Nearest Bridge group address (LLDP protocol).";

+        }

+        leaf c-2-00-00-0-f {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-20 {

+            type boolean;

+            description "This attribute identifies the Customer and Provider Bridge MMRP address.";

+        }

+        leaf c-2-00-00-21 {

+            type boolean;

+            description "This attribute identifies the Customer Bridge MVRP address.";

+        }

+        leaf c-2-00-00-22 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-23 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-24 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-25 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-26 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-27 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-28 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-29 {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-2-a {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-2-b {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-2-c {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-2-d {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-2-e {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        leaf c-2-00-00-2-f {

+            type boolean;

+            description "Reserved for future standardization.";

+        }

+        description "This data type identifies the filter action for each of the 33 group MAC addresses (control frames).

+            Value 'false' means block: The frame is discarded by the filter process.

+            Value 'true' means pass: The frame is passed unchanged through the filter process.";

+    }

+    grouping bandwidth-report {

+        leaf source-mac-address {

+            type mac-address;

+            description "The sourceMacAddress is the address from the far end.";

+        }

+        leaf port-id {

+            type uint64;

+            description "This attribute returns the far end port identifier.";

+        }

+        leaf nominal-bandwidth {

+            type uint64;

+            description "This attribute returns the configured bandwidth";

+        }

+        leaf current-bandwidth {

+            type uint64;

+            description "This attribute returns the current bandwidth.";

+        }

+        description "Data type for the bandwidth report.";

+    }

+    typedef admin-state {

+        type enumeration {

+            enum LOCK {

+                description "none";

+            }

+            enum NORMAL {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef colour-mode {

+        type enumeration {

+            enum COLOUR_BLIND {

+                description "none";

+            }

+            enum COLOUR_AWARE {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef csf-config {

+        type enumeration {

+            enum DISABLED {

+                description "This literal covers the following states of the CSF related MI informations:

+                    - MI_CSF_Enable is false

+                    - MI_CSFrdifdi_Enable is false

+                    - MI_CSFdci_Enable is false.";

+            }

+            enum ENABLED {

+                description "This literal covers the following states of the CSF related MI informations:

+                    - MI_CSF_Enable is true

+                    - MI_CSFrdifdi_Enable is false

+                    - MI_CSFdci_Enable is false.";

+            }

+            enum ENABLED_WITH_RDI_FDI {

+                description "This literal covers the following states of the CSF related MI informations:

+                    - MI_CSF_Enable is true

+                    - MI_CSFrdifdi_Enable is true

+                    - MI_CSFdci_Enable is false.";

+            }

+            enum ENABLED_WITH_RDI_FDI_DCI {

+                description "This literal covers the following states of the CSF related MI informations:

+                    - MI_CSF_Enable is true

+                    - MI_CSFrdifdi_Enable is true

+                    - MI_CSFdci_Enable is true.";

+            }

+            enum ENABLED_WITH_DCI {

+                description "This literal covers the following states of the CSF related MI informations:

+                    - MI_CSF_Enable is true

+                    - MI_CSFrdifdi_Enable is false

+                    - MI_CSFdci_Enable is true.";

+            }

+        }

+        description "none";

+    }

+    typedef ety-phy-type {

+        type enumeration {

+            enum OTHER {

+                description "none";

+            }

+            enum UNKNOWN {

+                description "none";

+            }

+            enum NONE {

+                description "none";

+            }

+            enum 2BASE_TL {

+                description "none";

+            }

+            enum 10MBIT_S {

+                description "none";

+            }

+            enum 10PASS_TS {

+                description "none";

+            }

+            enum 100BASE_T4 {

+                description "none";

+            }

+            enum 100BASE_X {

+                description "none";

+            }

+            enum 100BASE_T2 {

+                description "none";

+            }

+            enum 1000BASE_X {

+                description "none";

+            }

+            enum 1000BASE_T {

+                description "none";

+            }

+            enum 10GBASE-X {

+                description "none";

+            }

+            enum 10GBASE_R {

+                description "none";

+            }

+            enum 10GBASE_W {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef frame-type {

+        type enumeration {

+            enum ADMIT_ONLY_VLAN_TAGGED_FRAMES {

+                description "none";

+            }

+            enum ADMIT_ONLY_UNTAGGED_AND_PRIORITY_TAGGED_FRAMES {

+                description "none";

+            }

+            enum ADMIT_ALL_FRAMES {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef oam-period {

+        type enumeration {

+            enum 3_33MS {

+                description "Default for protection.";

+            }

+            enum 10MS {

+                description "none";

+            }

+            enum 100MS {

+                description "none";

+            }

+            enum 1S {

+                description "none";

+            }

+            enum 10S {

+                description "none";

+            }

+            enum 1MIN {

+                description "none";

+            }

+            enum 10MIN {

+                description "none";

+            }

+        }

+        description "Provides the frequency for the OAM PDU insertion.";

+    }

+    typedef pcp-coding {

+        type enumeration {

+            enum 8P0D {

+                description "none";

+            }

+            enum 7P1D {

+                description "none";

+            }

+            enum 6P2D {

+                description "none";

+            }

+            enum 5P3D {

+                description "none";

+            }

+            enum DEI {

+                description "This enumeration value means that all priorities should be drop eligible.

+                    DEI = Drop Eligibility Indicator";

+            }

+        }

+        description "This enum models the coding of the Priority Code Point as defined in section 'Priority Code Point encoding' of IEEE 802.1Q.";

+    }

+    typedef vlan-type {

+        type enumeration {

+            enum C_Tag {

+                description "0x8100";

+            }

+            enum S_Tag {

+                description "0x88a8";

+            }

+            enum I_Tag {

+                description "88-e7";

+            }

+        }

+        description "This enumeration contains the Ethertypes defined in IEEE 802.1Q.";

+    }

+    typedef repetition-period {

+        type enumeration {

+            enum 1MIN {

+                description "none";

+            }

+            enum 1S {

+                description "none";

+            }

+            enum 10S {

+                description "none";

+            }

+            enum 0 {

+                description "none";

+            }

+        }

+        description "This enumeration defines the allowed values for the repetition period in on-demand measurements.

+            Note: The value 0 means that the value is not relevant.";

+    }

+    typedef message-period {

+        type enumeration {

+            enum 10MS {

+                description "none";

+            }

+            enum 100MS {

+                description "none";

+            }

+            enum 1S {

+                description "none";

+            }

+            enum 10S {

+                description "none";

+            }

+            enum 0 {

+                description "none";

+            }

+        }

+        description "This enumeration defines the allowed values for the message period in on-demand measurements.

+            Notes:

+            The value 10ms is only used in synthetic loss measurements.

+            The value 0 means that the value is not relevant.";

+    }

+    typedef oam-pdu-generation-type {

+        type enumeration {

+            enum SINGLE_INSTANCE {

+                description "none";

+            }

+            enum REPETITIVE_INSTANCE {

+                description "none";

+            }

+            enum SINGLE_SERIES {

+                description "none";

+            }

+            enum REPETITIVE_SERIES {

+                description "none";

+            }

+        }

+        description "This enumeration defines the generation pattern of the on-demand OAM PDUs (messages). ";

+    }

+    grouping on-demand-dm-performance-parameters {

+        leaf number-of-samples {

+            type uint64;

+            description "This attribute contains the number of received DM frames (successful samples) used for this frame delay measurement.

+                range of type : non-negative";

+        }

+        leaf-list frame-delay-list {

+            type uint64;

+            description "This attribute contains the frame delays measured in ns (nano second, 1x10e-9 seconds). The multiplicity is defined by the numberOfSamples attribute.";

+        }

+        leaf-list frame-delay-variation-list {

+            type uint64;

+            description "This attribute contains the frame delay variations measured in ns (nano second).  The multiplicity is defined by (numberOfSamples - 1, for numberOfSamples > 0).";

+        }

+        description "This data type contains the results of an on-demand delay measurement job.";

+    }

+    grouping on-demand-lm-performance-parameters {

+        leaf total-transmitted-frames {

+            type uint64;

+            description "This attribute contains the total number of frames transmitted.";

+        }

+        leaf total-lost-frames {

+            type uint64;

+            description "This attribute contains the total number of frames lost.";

+        }

+        leaf total-frame-loss-ratio {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "This attribute contains the frame loss ratio (number of lost frames divided by the number of total frames (N_LF / N_TF)).

+                The accuracy of the value is for further study.";

+        }

+        description "This data type contains the results of an on-demand loss measurement job.";

+    }

+    grouping statistical-dm-performance-parameters {

+        leaf minimum-frame-delay {

+            type uint64;

+            description "This attribute contains the minimum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

+        }

+        leaf average-frame-delay {

+            type uint64;

+            description "This attribute contains the average frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

+        }

+        leaf maximum-frame-delay {

+            type uint64;

+            description "This attribute contains the maximum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

+        }

+        leaf minimum-frame-delay-variation {

+            type uint64;

+            description "This attribute contains the minimum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

+        }

+        leaf average-frame-delay-variation {

+            type uint64;

+            description "This attribute contains the average frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

+        }

+        leaf maximum-frame-delay-variation {

+            type uint64;

+            description "This attribute contains the maximum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

+        }

+        description "This data type contains the statistical delay measurement performance parameters.";

+    }

+    grouping statistical-lm-performance-parameters {

+        leaf minimum-frame-loss-ratio {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "This attribute contains the minimum frame loss ratio calculated over a period of time.

+                The accuracy of the value is for further study.";

+        }

+        leaf average-frame-loss-ratio {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "This attribute contains the average frame loss ratio calculated over a period of time.

+                The accuracy of the value is for further study.";

+        }

+        leaf maximum-frame-loss-ratio {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "This attribute contains the maximum frame loss ratio calculated over a period of time.

+                The accuracy of the value is for further study.";

+        }

+        leaf ses {

+            type uint64;

+            description "This attribute contains the SES detected in the monitoring interval.

+                range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

+        }

+        leaf uas {

+            type uint64;

+            description "This attribute contains UAS (unavailable seconds) detected in the monitoring interval.

+                range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

+        }

+        description "This data type contains the statistical loss measurement performance parameters.";

+    }

+    typedef eth-oam-job-type {

+        type identityref {

+            base ETH_OAM_JOB_TYPE;

+        }

+        description "none";

+    }

+    grouping link-trace-result {

+        leaf source-address {

+            type mac-address;

+            description "G.8052: This attribute contains the source MAC Address of an individual LTR frame result.";

+        }

+        leaf time-to-live {

+            type uint64;

+            description "G.8052: This attribute contains the Time To Live (TTL) value of an individual LTR frame result.";

+        }

+        leaf data-tlv-length {

+            type uint64;

+            description "G.8052: This attribute contains the length (in number of octets) of the Data TLV of an individual LTR frame result.";

+        }

+        description "G.8052: This data type contains the result from an individual LTR frame.";

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang b/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
old mode 100644
new mode 100755
index f79a376..2885abc
--- a/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
@@ -29,28 +29,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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" {

@@ -60,18 +60,461 @@
         }

         description "Augments the base TAPI Context with NotificationService information";

     }

-    /***********************

+

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

     * package object-classes

-    **********************/ 

-        grouping notification-subscription-service {

-            list notification {

-                key 'uuid';

-                config false;

-                uses notification;

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

+    grouping notification-subscription-service {

+        list notification {

+            key 'uuid';

+            config false;

+            uses notification;

+            description "none";

+        }

+        container notification-channel {

+            uses notification-channel;

+            description "none";

+        }

+        container subscription-filter {

+            uses subscription-filter;

+            description "none";

+        }

+        leaf subscription-state {

+            type subscription-state;

+            description "none";

+        }

+        leaf-list supported-notification-types {

+            type notification-type;

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        leaf-list supported-object-types {

+            type object-type;

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        uses tapi-common:service-spec;

+        description "none";

+    }

+    grouping subscription-filter {

+        leaf-list requested-notification-types {

+            type notification-type;

+            config false;

+            description "none";

+        }

+        leaf-list requested-object-types {

+            type object-type;

+            config false;

+            description "none";

+        }

+        leaf-list requested-layer-protocols {

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

+            config false;

+            description "none";

+        }

+        leaf-list requested-object-identifier {

+            type tapi-common:uuid;

+            config false;

+            description "none";

+        }

+        leaf include-content {

+            type boolean;

+            config false;

+            description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    notification notification {

+        uses notification;

+        description "none";

+    }

+    grouping notification {

+        leaf notification-type {

+            type notification-type;

+            description "none";

+        }

+        leaf target-object-type {

+            type object-type;

+            description "none";

+        }

+        leaf target-object-identifier {

+            type tapi-common:uuid;

+            description "none";

+        }

+        list target-object-name {

+            key 'value-name';

+            min-elements 1;

+            uses tapi-common:name-and-value;

+            description "none";

+        }

+        leaf event-time-stamp {

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

+            description "none";

+        }

+        leaf sequence-number {

+            type uint64;

+            config false;

+            description "A monotonous increasing sequence number associated with the notification.

+                The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";

+        }

+        leaf source-indicator {

+            type source-indicator;

+            description "none";

+        }

+        leaf layer-protocol-name {

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

+            description "none";

+        }

+        list changed-attributes {

+            key 'value-name';

+            uses name-and-value-change;

+            description "none";

+        }

+        list additional-info {

+            key 'value-name';

+            uses tapi-common:name-and-value;

+            description "none";

+        }

+        leaf additional-text {

+            type string;

+            description "none";

+        }

+        container tca-info {

+            uses tca-info;

+            description "none";

+        }

+        container alarm-info {

+            uses alarm-info;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

+        description "none";

+    }

+    grouping notification-channel {

+        leaf stream-address {

+            type string;

+            config false;

+            description "The address/location/URI of the channel/stream to which the subscribed notifications are published.

+                This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";

+        }

+        leaf next-sequence-no {

+            type uint64;

+            config false;

+            description "The sequence number of the next notification that will be published on the channel";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    grouping notification-context {

+        list notif-subscription {

+            key 'uuid';

+            uses notification-subscription-service;

+            description "none";

+        }

+        list notification {

+            key 'uuid';

+            config false;

+            uses notification;

+            description "none";

+        }

+        description "none";

+    }

+    grouping alarm-info {

+        leaf is-transient {

+            type boolean;

+            config false;

+            description "none";

+        }

+        leaf perceived-severity {

+            type perceived-severity-type;

+            config false;

+            description "none";

+        }

+        leaf probable-cause {

+            type string;

+            config false;

+            description "none";

+        }

+        leaf service-affecting {

+            type service-affecting;

+            description "none";

+        }

+        description "none";

+    }

+    grouping tca-info {

+        leaf is-transient {

+            type boolean;

+            config false;

+            description "none";

+        }

+        leaf threshold-crossing {

+            type threshold-crossing-type;

+            description "none";

+        }

+        leaf threshold-parameter {

+            type string;

+            config false;

+            description "none";

+        }

+        leaf threshold-value {

+            type uint64;

+            config false;

+            description "none";

+        }

+        leaf perceived-severity {

+            type perceived-tca-severity;

+            description "none";

+        }

+        leaf measurement-interval {

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

+            description "none";

+        }

+        leaf suspect-interval-flag {

+            type boolean;

+            description "none";

+        }

+        description "none";

+    }

+

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

+    * package type-definitions

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

+    grouping name-and-value-change {

+        leaf value-name {

+            type string;

+            description "The name of the value. The value need not have a name.";

+        }

+        leaf old-value {

+            type string;

+            description "The value";

+        }

+        leaf new-value {

+            type string;

+            description "The value";

+        }

+        description "A scoped name-value triple, including old value and new value";

+    }

+    typedef notification-type {

+        type enumeration {

+            enum OBJECT_CREATION {

+                description "Not a normal state. The system is unable to determine the correct value.";

+            }

+            enum OBJECT_DELETION {

                 description "none";

             }

-            container notification-channel {

-                uses notification-channel;

+            enum ATTRIBUTE_VALUE_CHANGE {

+                description "none";

+            }

+            enum ALARM_EVENT {

+                description "none";

+            }

+            enum THRESHOLD_CROSSING_ALERT {

+                description "none";

+            }

+        }

+        description "List of supported Notifications types.";

+    }

+    typedef object-type {

+        type enumeration {

+            enum TOPOLOGY {

+                description "none";

+            }

+            enum NODE {

+                description "none";

+            }

+            enum LINK {

+                description "none";

+            }

+            enum CONNECTION {

+                description "none";

+            }

+            enum PATH {

+                description "none";

+            }

+            enum CONNECTIVITY_SERVICE {

+                description "none";

+            }

+            enum VIRTUAL_NETWORK_SERVICE {

+                description "none";

+            }

+            enum PATH_COMPUTATION_SERVICE {

+                description "none";

+            }

+            enum NODE_EDGE_POINT {

+                description "none";

+            }

+            enum SERVICE_INTERFACE_POINT {

+                description "none";

+            }

+            enum CONNECTION_END_POINT {

+                description "none";

+            }

+            enum MAINTENANCE_ENTITY_GROUP {

+                description "none";

+            }

+            enum MAINTENANCE_ENTITY {

+                description "none";

+            }

+            enum MEG_END_POINT {

+                description "none";

+            }

+            enum MEG_INTERMEDIATE_POINT {

+                description "none";

+            }

+            enum SWITCH_CONTROL {

+                description "none";

+            }

+            enum SWITCH {

+                description "none";

+            }

+            enum ROUTE {

+                description "none";

+            }

+            enum NODE_RULE_GROUP {

+                description "none";

+            }

+            enum INTER_RULE_GROUP {

+                description "none";

+            }

+            enum RULE {

+                description "none";

+            }

+            enum OAM_JOB {

+                description "none";

+            }

+        }

+        description "The list of TAPI Global Object Class types on which Notifications can be raised.";

+    }

+    typedef source-indicator {

+        type enumeration {

+            enum RESOURCE_OPERATION {

+                description "none";

+            }

+            enum MANAGEMENT_OPERATION {

+                description "none";

+            }

+            enum UNKNOWN {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef subscription-state {

+        type enumeration {

+            enum SUSPENDED {

+                description "none";

+            }

+            enum ACTIVE {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef perceived-severity-type {

+        type enumeration {

+            enum CRITICAL {

+                description "none";

+            }

+            enum MAJOR {

+                description "none";

+            }

+            enum MINOR {

+                description "none";

+            }

+            enum WARNING {

+                description "none";

+            }

+            enum CLEARED {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef threshold-crossing-type {

+        type enumeration {

+            enum THRESHOLD_ABOVE {

+                description "none";

+            }

+            enum THRESHOLD_BELOW {

+                description "none";

+            }

+            enum CLEARED {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef service-affecting {

+        type enumeration {

+            enum SERVICE_AFFECTING {

+                description "none";

+            }

+            enum NOT_SERVICE_AFFECTING {

+                description "none";

+            }

+            enum UNKNOWN {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef perceived-tca-severity {

+        type enumeration {

+            enum WARNING {

+                description "none";

+            }

+            enum CLEAR {

+                description "none";

+            }

+        }

+        description "none";

+    }

+

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

+    * package interfaces

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

+    rpc get-supported-notification-types {

+        description "none";

+        output {

+            leaf-list supported-notification-types {

+                type notification-type;

+                min-elements 1;

+                description "none";

+            }

+            leaf-list supported-object-types {

+                type object-type;

+                min-elements 1;

+                description "none";

+            }

+        }

+    }

+    rpc create-notification-subscription-service {

+        description "none";

+        input {

+            container subscription-filter {

+                uses subscription-filter;

+                description "none";

+            }

+            leaf subscription-state {

+                type subscription-state;

+                description "none";

+            }

+        }

+        output {

+            container subscription-service {

+                uses notification-subscription-service;

+                description "none";

+            }

+        }

+    }

+    rpc update-notification-subscription-service {

+        description "none";

+        input {

+            leaf subscription-id-or-name {

+                type string;

                 description "none";

             }

             container subscription-filter {

@@ -82,515 +525,72 @@
                 type subscription-state;

                 description "none";

             }

-            leaf-list supported-notification-types {

-                type notification-type;

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            leaf-list supported-object-types {

-                type object-type;

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            uses tapi-common:service-spec;

-            description "none";

         }

-        grouping subscription-filter {

-            leaf-list requested-notification-types {

-                type notification-type;

-                config false;

+        output {

+            container subscription-service {

+                uses notification-subscription-service;

                 description "none";

             }

-            leaf-list requested-object-types {

-                type object-type;

-                config false;

-                description "none";

-            }

-            leaf-list requested-layer-protocols {

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

-                config false;

-                description "none";

-            }

-            leaf-list requested-object-identifier {

-                type tapi-common:uuid;

-                config false;

-                description "none";

-            }

-            leaf include-content {

-                type boolean;

-                config false;

-                description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";

-            }

-            uses tapi-common:local-class;

-            description "none";

         }

-        notification notification {

-            uses notification;

-            description "none";

-        }

-        grouping notification {

-            leaf notification-type {

-                type notification-type;

-                description "none";

-            }

-            leaf target-object-type {

-                type object-type;

-                description "none";

-            }

-            leaf target-object-identifier {

-                type tapi-common:uuid;

-                description "none";

-            }

-            list target-object-name {

-                key 'value-name';

-                min-elements 1;

-                uses tapi-common:name-and-value;

-                description "none";

-            }

-            leaf event-time-stamp {

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

-                description "none";

-            }

-            leaf sequence-number {

-                type uint64;

-                config false;

-                description "A monotonous increasing sequence number associated with the notification.

-                    The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";

-            }

-            leaf source-indicator {

-                type source-indicator;

-                description "none";

-            }

-            leaf layer-protocol-name {

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

-                description "none";

-            }

-            list changed-attributes {

-                key 'value-name';

-                uses name-and-value-change;

-                description "none";

-            }

-            list additional-info {

-                key 'value-name';

-                uses tapi-common:name-and-value;

-                description "none";

-            }

-            leaf additional-text {

+    }

+    rpc delete-notification-subscription-service {

+        description "none";

+        input {

+            leaf subscription-id-or-name {

                 type string;

                 description "none";

             }

-            container tca-info {

-                uses tca-info;

-                description "none";

-            }

-            container alarm-info {

-                uses alarm-info;

-                description "none";

-            }

-            uses tapi-common:resource-spec;

-            description "none";

         }

-        grouping notification-channel {

-            leaf stream-address {

+        output {

+            container subscription-service {

+                uses notification-subscription-service;

+                description "none";

+            }

+        }

+    }

+    rpc get-notification-subscription-service-details {

+        description "none";

+        input {

+            leaf subscription-id-or-name {

                 type string;

-                config false;

-                description "The address/location/URI of the channel/stream to which the subscribed notifications are published.

-                    This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";

+                description "none";

             }

-            leaf next-sequence-no {

-                type uint64;

-                config false;

-                description "The sequence number of the next notification that will be published on the channel";

-            }

-            uses tapi-common:local-class;

-            description "none";

         }

-        grouping notification-context {

-            list notif-subscription {

+        output {

+            container subscription-service {

+                uses notification-subscription-service;

+                description "none";

+            }

+        }

+    }

+    rpc get-notification-subscription-service-list {

+        description "none";

+        output {

+            list subscription-service {

                 key 'uuid';

                 uses notification-subscription-service;

                 description "none";

             }

+        }

+    }

+    rpc get-notification-list {

+        description "none";

+        input {

+            leaf subscription-id-or-name {

+                type string;

+                description "none";

+            }

+            leaf time-period {

+                type string;

+                description "none";

+            }

+        }

+        output {

             list notification {

                 key 'uuid';

-                config false;

                 uses notification;

                 description "none";

             }

-            description "none";

         }

-        grouping alarm-info {

-            leaf is-transient {

-                type boolean;

-                config false;

-                description "none";

-            }

-            leaf perceived-severity {

-                type perceived-severity-type;

-                config false;

-                description "none";

-            }

-            leaf probable-cause {

-                type string;

-                config false;

-                description "none";

-            }

-            leaf service-affecting {

-                type service-affecting;

-                description "none";

-            }

-            description "none";

-        }

-        grouping tca-info {

-            leaf is-transient {

-                type boolean;

-                config false;

-                description "none";

-            }

-            leaf threshold-crossing {

-                type threshold-crossing-type;

-                description "none";

-            }

-            leaf threshold-parameter {

-                type string;

-                config false;

-                description "none";

-            }

-            leaf threshold-value {

-                type uint64;

-                config false;

-                description "none";

-            }

-            leaf perceived-severity {

-                type perceived-tca-severity;

-                description "none";

-            }

-            leaf measurement-interval {

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

-                description "none";

-            }

-            leaf suspect-interval-flag {

-                type boolean;

-                description "none";

-            }

-            description "none";

-        }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        grouping name-and-value-change {

-            leaf value-name {

-                type string;

-                description "The name of the value. The value need not have a name.";

-            }

-            leaf old-value {

-                type string;

-                description "The value";

-            }

-            leaf new-value {

-                type string;

-                description "The value";

-            }

-            description "A scoped name-value triple, including old value and new value";

-        }

-        typedef notification-type {

-            type enumeration {

-                enum OBJECT_CREATION {

-                    description "Not a normal state. The system is unable to determine the correct value.";

-                }

-                enum OBJECT_DELETION {

-                    description "none";

-                }

-                enum ATTRIBUTE_VALUE_CHANGE {

-                    description "none";

-                }

-                enum ALARM_EVENT {

-                    description "none";

-                }

-                enum THRESHOLD_CROSSING_ALERT {

-                    description "none";

-                }

-            }

-            description "List of supported Notifications types.";

-        }

-        typedef object-type {

-            type enumeration {

-                enum TOPOLOGY {

-                    description "none";

-                }

-                enum NODE {

-                    description "none";

-                }

-                enum LINK {

-                    description "none";

-                }

-                enum CONNECTION {

-                    description "none";

-                }

-                enum PATH {

-                    description "none";

-                }

-                enum CONNECTIVITY_SERVICE {

-                    description "none";

-                }

-                enum VIRTUAL_NETWORK_SERVICE {

-                    description "none";

-                }

-                enum PATH_COMPUTATION_SERVICE {

-                    description "none";

-                }

-                enum NODE_EDGE_POINT {

-                    description "none";

-                }

-                enum SERVICE_INTERFACE_POINT {

-                    description "none";

-                }

-                enum CONNECTION_END_POINT {

-                    description "none";

-                }

-                enum MAINTENANCE_ENTITY_GROUP {

-                    description "none";

-                }

-                enum MAINTENANCE_ENTITY {

-                    description "none";

-                }

-                enum MEG_END_POINT {

-                    description "none";

-                }

-                enum MEG_INTERMEDIATE_POINT {

-                    description "none";

-                }

-                enum SWITCH_CONTROL {

-                    description "none";

-                }

-                enum SWITCH {

-                    description "none";

-                }

-                enum ROUTE {

-                    description "none";

-                }

-                enum NODE_RULE_GROUP {

-                    description "none";

-                }

-                enum INTER_RULE_GROUP {

-                    description "none";

-                }

-                enum RULE {

-                    description "none";

-                }

-                enum OAM_JOB {

-                    description "none";

-                }

-            }

-            description "The list of TAPI Global Object Class types on which Notifications can be raised.";

-        }

-        typedef source-indicator {

-            type enumeration {

-                enum RESOURCE_OPERATION {

-                    description "none";

-                }

-                enum MANAGEMENT_OPERATION {

-                    description "none";

-                }

-                enum UNKNOWN {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef subscription-state {

-            type enumeration {

-                enum SUSPENDED {

-                    description "none";

-                }

-                enum ACTIVE {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef perceived-severity-type {

-            type enumeration {

-                enum CRITICAL {

-                    description "none";

-                }

-                enum MAJOR {

-                    description "none";

-                }

-                enum MINOR {

-                    description "none";

-                }

-                enum WARNING {

-                    description "none";

-                }

-                enum CLEARED {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef threshold-crossing-type {

-            type enumeration {

-                enum THRESHOLD_ABOVE {

-                    description "none";

-                }

-                enum THRESHOLD_BELOW {

-                    description "none";

-                }

-                enum CLEARED {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef service-affecting {

-            type enumeration {

-                enum SERVICE_AFFECTING {

-                    description "none";

-                }

-                enum NOT_SERVICE_AFFECTING {

-                    description "none";

-                }

-                enum UNKNOWN {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef perceived-tca-severity {

-            type enumeration {

-                enum WARNING {

-                    description "none";

-                }

-                enum CLEAR {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-

-    /***********************

-    * package interfaces

-    **********************/ 

-        rpc get-supported-notification-types {

-            description "none";

-            output {

-                leaf-list supported-notification-types {

-                    type notification-type;

-                    min-elements 1;

-                    description "none";

-                }

-                leaf-list supported-object-types {

-                    type object-type;

-                    min-elements 1;

-                    description "none";

-                }

-            }

-        }

-        rpc create-notification-subscription-service {

-            description "none";

-            input {

-                container subscription-filter {

-                    uses subscription-filter;

-                    description "none";

-                }

-                leaf subscription-state {

-                    type subscription-state;

-                    description "none";

-                }

-            }

-            output {

-                container subscription-service {

-                    uses notification-subscription-service;

-                    description "none";

-                }

-            }

-        }

-        rpc update-notification-subscription-service {

-            description "none";

-            input {

-                leaf subscription-id-or-name {

-                    type string;

-                    description "none";

-                }

-                container subscription-filter {

-                    uses subscription-filter;

-                    description "none";

-                }

-                leaf subscription-state {

-                    type subscription-state;

-                    description "none";

-                }

-            }

-            output {

-                container subscription-service {

-                    uses notification-subscription-service;

-                    description "none";

-                }

-            }

-        }

-        rpc delete-notification-subscription-service {

-            description "none";

-            input {

-                leaf subscription-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container subscription-service {

-                    uses notification-subscription-service;

-                    description "none";

-                }

-            }

-        }

-        rpc get-notification-subscription-service-details {

-            description "none";

-            input {

-                leaf subscription-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container subscription-service {

-                    uses notification-subscription-service;

-                    description "none";

-                }

-            }

-        }

-        rpc get-notification-subscription-service-list {

-            description "none";

-            output {

-                list subscription-service {

-                	key 'uuid';

-                    uses notification-subscription-service;

-                    description "none";

-                }

-            }

-        }

-        rpc get-notification-list {

-            description "none";

-            input {

-                leaf subscription-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf time-period {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                list notification {

-                	key 'uuid';

-                    uses notification;

-                    description "none";

-                }

-            }

-        }

-

+    }    

 }

diff --git a/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang b/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
old mode 100644
new mode 100755
index 467779e..143b790
--- a/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
@@ -35,28 +35,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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" {

@@ -67,16 +67,16 @@
         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 {

+        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 {

@@ -86,18 +86,16 @@
         }

         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";

+        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 {

@@ -107,40 +105,36 @@
         }

         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";

+        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";

+        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";

+        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 {

@@ -150,29 +144,26 @@
         }

         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";

+        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";

+        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 {

@@ -182,649 +173,646 @@
         }

         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";

+        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";

+        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;

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

+    grouping mep {

+        leaf layer-protocol-name {

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

+            config false;

             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;

+        leaf direction {

+            type tapi-common:termination-direction;

+            config false;

             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;

+        leaf mep-identifier {

+            type string;

+            config false;

             description "none";

         }

-        grouping mip {

-            leaf layer-protocol-name {

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

-                config false;

-                description "none";

-            }

-            uses tapi-common:local-class;

+        leaf-list peer-mep-identifier {

+            type string;

+            config false;

+            min-elements 1;

             description "none";

         }

-        grouping oam-service {

+        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 meg {

-                uses meg-ref;

-                config false;

+            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-ref;

+                uses oam-profile;

                 description "none";

             }

-            uses tapi-common:service-spec;

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

-            uses oam-constraint;

-            description "none";

+            leaf state {

+                type string;

+                description "none";

+            }

+            leaf schedule {

+                type string;

+                description "none";

+            }

         }

-        grouping oam-context {

-            list oam-service {

+        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";

             }

-            list meg {

-                key 'uuid';

-                config false;

+        }

+    }

+    rpc get-meg {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container meg {

                 uses meg;

                 description "none";

             }

-            list oam-job {

-                key 'uuid';

-                uses oam-job;

+        }

+    }

+    rpc update-oam-service {

+        description "none";

+        input {

+            leaf service-id {

+                type string;

                 description "none";

             }

-            list oam-profile {

-                key 'uuid';

+            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";

             }

-            description "none";

+            leaf state {

+                type string;

+                description "none";

+            }

+            leaf schedule {

+                type string;

+                description "none";

+            }

         }

-        grouping oam-service-end-point {

-            container service-interface-point {

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

+        output {

+            container oam-job {

+                uses oam-job;

                 description "none";

             }

-            container connectivity-service-end-point {

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

+        }

+    }

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

+        description "none";

+        input {

+            leaf service-id {

+                type string;

                 description "none";

             }

-            container mep {

-                uses mep-ref;

-                config false;

+            leaf sip-id {

+                type string;

                 description "none";

             }

-            container mip {

-                uses mip-ref;

-                config false;

+            leaf c-sep-id {

+                type string;

                 description "none";

             }

-            leaf layer-protocol-name {

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

+            leaf layer {

+                type string;

                 description "none";

             }

             leaf direction {

-                type tapi-common:port-direction;

+                type string;

+                description "none";

+            }

+            leaf state {

+                type string;

                 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.

-                    ";

+                description "none";

             }

             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';

+        }

+        output {

+            container end-point {

+                uses oam-service-end-point;

                 description "none";

             }

-            description "none";

         }

-        grouping oam-constraint {

-            leaf layer-protocol-name {

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

+    }

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

+        description "none";

+        input {

+            leaf service-id {

+                type string;

                 description "none";

             }

-            leaf direction {

-                type tapi-common:forwarding-direction;

+            leaf o-sep-id {

+                type string;

                 description "none";

             }

-            leaf meg-level {

-                type uint64;

+        }

+    }

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

+        description "none";

+        input {

+            leaf service-id {

+                type string;

                 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;

+            leaf o-sep-id {

+                type string;

                 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;

+            leaf state {

+                type string;

                 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;

+        output {

+            container end-point {

+                uses oam-service-end-point;

                 description "none";

             }

-            leaf period-end-time {

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

+        }

+    }

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

+        description "none";

+        input {

+            leaf service-id {

+                type string;

                 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;

+            leaf o-sep-id {

+                type string;

                 description "none";

             }

-            list pm-bin-data {

-                key 'local-id';

-                min-elements 1;

-                uses pm-bin-data;

+        }

+        output {

+            container end-point {

+                uses oam-service-end-point;

                 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";

-                }

-            }

-        }

-

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang b/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
old mode 100644
new mode 100755
index 68d5dea..d927fdd
--- a/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
@@ -41,28 +41,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

@@ -93,617 +93,617 @@
         }

         description "none";

     }

-    /***********************

+

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

     * package object-classes

-    **********************/ 

-        grouping odu-termination-and-client-adaptation-pac {

-            leaf opu-tributary-slot-size {

-                type odu-slot-size;

-                config false;

-                description "This attribute is applicable for ODU2 and ODU3 CTP only. It indicates the slot size of the ODU CTP.";

-            }

-            leaf auto-payload-type {

-                type boolean;

-                config false;

-                description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Source at the client layer of the ODUP/ODUj-21 adaptation function. The value of true of this attribute configures that the adaptation source function shall fall back to the payload type PT=20 if the conditions specified in 14.3.10.1/G.798 are satisfied. ";

-            }

-            leaf configured-client-type {

-                type tapi-dsr:digital-signal-type;

-                config false;

-                description "This attribute configures the type of the client CTP of the server ODU TTP.";

-            }

-            leaf configured-mapping-type {

-                type mapping-type;

-                config false;

-                description "This attributes indicates the configured mapping type.";

-            }

-            container accepted-payload-type {

-                config false;

-                uses odu-payload-type;

-                description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Sink at the client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation function. 

-                    This attribute is a 2-digit Hex code that indicates the new accepted payload type.

-                    Valid values are defined in Table 15-8 of ITU-T Recommendation G.709 with one additional value UN_INTERPRETABLE.";

-            }

-            description "This Pac contains the attributes associated with the client adaptation function of the server layer TTP

-                It is present only if the CEP contains a TTP";

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

+    grouping odu-termination-and-client-adaptation-pac {

+        leaf opu-tributary-slot-size {

+            type odu-slot-size;

+            config false;

+            description "This attribute is applicable for ODU2 and ODU3 CTP only. It indicates the slot size of the ODU CTP.";

         }

-        grouping odu-connection-end-point-spec {

-            container odu-common {

-                uses odu-common-pac;

-                description "none";

-            }

-            container odu-term-and-adapter {

-                config false;

-                uses odu-termination-and-client-adaptation-pac;

-                description "none";

-            }

-            container odu-ctp {

-                config false;

-                uses odu-ctp-pac;

-                description "none";

-            }

-            container odu-protection {

-                config false;

-                uses odu-protection-pac;

-                description "none";

-            }

+        leaf auto-payload-type {

+            type boolean;

+            config false;

+            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Source at the client layer of the ODUP/ODUj-21 adaptation function. The value of true of this attribute configures that the adaptation source function shall fall back to the payload type PT=20 if the conditions specified in 14.3.10.1/G.798 are satisfied. ";

+        }

+        leaf configured-client-type {

+            type tapi-dsr:digital-signal-type;

+            config false;

+            description "This attribute configures the type of the client CTP of the server ODU TTP.";

+        }

+        leaf configured-mapping-type {

+            type mapping-type;

+            config false;

+            description "This attributes indicates the configured mapping type.";

+        }

+        container accepted-payload-type {

+            config false;

+            uses odu-payload-type;

+            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Sink at the client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation function.

+                This attribute is a 2-digit Hex code that indicates the new accepted payload type.

+                Valid values are defined in Table 15-8 of ITU-T Recommendation G.709 with one additional value UN_INTERPRETABLE.";

+        }

+        description "This Pac contains the attributes associated with the client adaptation function of the server layer TTP

+            It is present only if the CEP contains a TTP";

+    }

+    grouping odu-connection-end-point-spec {

+        container odu-common {

+            uses odu-common-pac;

             description "none";

         }

-        grouping odu-pool-pac {

-            leaf client-capacity {

-                type uint64;

-                description "none";

-            }

-            leaf max-client-instances {

-                type uint64;

-                config false;

-                description "none";

-            }

-            leaf max-client-size {

-                type uint64;

-                config false;

-                description "none";

-            }

+        container odu-term-and-adapter {

+            config false;

+            uses odu-termination-and-client-adaptation-pac;

             description "none";

         }

-        grouping odu-node-edge-point-spec {

-            container odu-pool {

-                config false;

-                uses odu-pool-pac;

-                description "none";

-            }

+        container odu-ctp {

+            config false;

+            uses odu-ctp-pac;

             description "none";

         }

-        grouping odu-ctp-pac {

-            leaf-list tributary-slot-list {

-                type uint64;

-                config false;

-                description "This attribute contains a set of distinct (i.e. unique) integers (e.g. 2, 3, 5, 9, 15 representing the tributary slots TS2, TS3, TS5, TS9 and TS15) which represents the resources occupied by the Low Order ODU Link Connection (e.g. carrying an ODUflex with a bit rate of 6.25G). 

-                    This attribute applies when the LO ODU_ ConnectionTerminationPoint connects with an HO ODU_TrailTerminationPoint object. 

-                    It will not apply if this ODU_ ConnectionTerminationPoint object directly connects to an OTU_TrailTerminationPoint object (i.e. OTU has no trib slots). 

-                    The upper bound of the integer allowed in this set is a function of the HO-ODU server layer to which the ODU connection has been mapped (adapted). 

-                    Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server layers (respectively). Note that the value of this attribute can be changed only in the case of ODUflex and has to be through specific operations (i.e. not be changing the attribute tributarySlotList directly).";

-            }

-            leaf tributary-port-number {

-                type uint64;

-                config false;

-                description "This attribute identifies the tributary port number that is associated with the ODU CTP.

-                    range of type : The value range depends on the size of the Tributary Port Number (TPN) field used which depends on th server-layer ODU or OTU.

-                    In case of ODUk mapping into OTUk, there is no TPN field, so the tributaryPortNumber shall be zero.

-                    In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN is encoded in a 6-bit field so the value range is 0-63. See clause 14.4.1/G.709-2016.

-                    In case of LO ODUj mapping over ODU4, the TPN is encoded in a 7-bit field so the value range is 0-127. See clause 14.4.1.4/G.709-2016.

-                    In case of ODUk mapping over ODUCn, the TPN is encoded in a 14-bit field so the value range is 0-16383. See clause 20.4.1.1/G.709-2016.

-                    ";

-            }

-            leaf accepted-msi {

-                type string;

-                config false;

-                description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU1 or ODU2 CTP Sink at the client layer of the ODU3P/ODU12 adaptation function or represents a lower order ODUj CTP Sink at the client layer of the ODUP/ODUj-21 adaptation function. This attribute is a 1-byte field that represents the accepted multiplex structure of the adaptation function. ";

-            }

-            description "This Pac contains the attributes associated with the CTP

-                It is present only if the CEP contains a CTP";

-        }

-        grouping odu-mep-spec {

-            container odu-mep {

-                uses odu-mep-pac;

-                description "none";

-            }

-            container odu-ncm {

-                config false;

-                uses odu-ncm-pac;

-                description "none";

-            }

-            container odu-tcm {

-                config false;

-                uses odu-tcm-mep-pac;

-                description "none";

-            }

-            container odu-defect {

-                uses odu-defect-pac;

-                description "none";

-            }

-            container odu-pm {

-                uses odu-pm-pac;

-                description "none";

-            }

+        container odu-protection {

+            config false;

+            uses odu-protection-pac;

             description "none";

         }

-        grouping odu-protection-pac {

-            leaf aps-enable {

-                type boolean;

-                default "true";

-                description "This attribute is for enabling/disabling the automatic protection switching (APS) capability at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_EN signal to the transport adaptation function.";

-            }

-            leaf aps-level {

-                type uint64;

-                description "This attribute is for configuring the automatic protection switching (APS) level that should operate at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_LVL signal to the transport adaptation function. The value 0 means path and the values 1 through 6 mean TCM level 1 through 6 respectively.";

-            }

+        description "none";

+    }

+    grouping odu-pool-pac {

+        leaf client-capacity {

+            type uint64;

             description "none";

         }

-        grouping odu-ncm-pac {

-            leaf-list tcm-fields-in-use {

-                type uint64;

-                config false;

-                description "This attribute indicates the used TCM fields of the ODU OH.";

-            }

+        leaf max-client-instances {

+            type uint64;

+            config false;

             description "none";

         }

-        grouping odu-tcm-mep-pac {

-            leaf tcm-extension {

-                type tcm-extension;

-                description "none";

-            }

-            leaf tcm-mode {

-                type tcm-mode;

-                description "This attribute specifies the TCM mode at the entity. Valid values are: Operational, Monitor, and Transparent.";

-            }

-            leaf codirectional {

-                type boolean;

-                config false;

-                description "This attribute specifies the directionality of the ODUT MEP with respect to the associated ODU CEP. The value of TRUE means that the sink part of the ODUT MEP terminates the same signal direction as the sink part of the ODU CEP. The Source part behaves similarly. This attribute is meaningful only on objects instantiated under ODU CEP, and at least one among ODU CEP and the subordinate object is bidirectional.";

-            }

-            leaf ac-status-source {

-                type tcm-status;

-                config false;

-                description "This attribute indicates the status of the accepted TCM. ";

-            }

-            leaf ac-status-sink {

-                type tcm-status;

-                config false;

-                description "This attribute indicates the status of the accepted TCM. ";

-            }

-            leaf admin-state-source {

-                type tapi-common:administrative-state;

-                description "This attribute provides the capability to provision the LOCK signal at the source, which is one of the ODU maintenance signals.  When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the source direction.";

-            }

-            leaf admin-state-sink {

-                type tapi-common:administrative-state;

-                description "This attribute provides the capability to provision the LOCK signal at the sink, which is one of the ODU maintenance signals. When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the downstream direction.";

-            }

-            uses odu-tcm-mip-pac;

+        leaf max-client-size {

+            type uint64;

+            config false;

             description "none";

         }

-        grouping odu-mip-spec {

-            container odu-mip {

-                config false;

-                uses odu-mip-pac;

-                description "none";

-            }

-            container odu-ncm {

-                config false;

-                uses odu-ncm-pac;

-                description "none";

-            }

-            container odu-tcm {

-                config false;

-                uses odu-tcm-mip-pac;

-                description "none";

-            }

-            container odu-pm {

-                uses odu-pm-pac;

-                description "none";

-            }

-            container odu-defect {

-                uses odu-defect-pac;

-                description "none";

-            }

+        description "none";

+    }

+    grouping odu-node-edge-point-spec {

+        container odu-pool {

+            config false;

+            uses odu-pool-pac;

             description "none";

         }

-        grouping odu-mip-pac {

-            leaf acti {

-                type string;

-                config false;

-                description "The Trail Trace Identifier (TTI) information recovered (Accepted) from the TTI overhead position at the sink of a trail.";

-            }

-            leaf ex-dapi {

-                type string;

-                description "The Expected Destination Access Point Identifier (ExDAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.";

-            }

-            leaf ex-sapi {

-                type string;

-                description "The Expected Source Access Point Identifier (ExSAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.

-                    ";

-            }

-            leaf tim-act-disabled {

-                type boolean;

-                default "true";

-                description "This attribute provides the control capability for the managing system to enable or disable the Consequent Action function when detecting Trace Identifier Mismatch (TIM) at the trail termination sink.";

-            }

-            leaf tim-det-mode {

-                type tim-det-mo;

-                description "This attribute indicates the mode of the Trace Identifier Mismatch (TIM) Detection function allowed values: OFF, SAPIonly, DAPIonly, SAPIandDAPI";

-            }

-            leaf deg-m {

-                type uint64;

-                description "This attribute indicates the threshold level for declaring a Degraded Signal defect (dDEG). A dDEG shall be declared if DegM consecutive bad PM Seconds are detected.";

-            }

-            container deg-thr {

-                uses deg-thr;

-                description "This attribute indicates the threshold level for declaring a performance monitoring (PM) Second to be bad. The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";

-            }

+        description "none";

+    }

+    grouping odu-ctp-pac {

+        leaf-list tributary-slot-list {

+            type uint64;

+            config false;

+            description "This attribute contains a set of distinct (i.e. unique) integers (e.g. 2, 3, 5, 9, 15 representing the tributary slots TS2, TS3, TS5, TS9 and TS15) which represents the resources occupied by the Low Order ODU Link Connection (e.g. carrying an ODUflex with a bit rate of 6.25G).

+                This attribute applies when the LO ODU_ ConnectionTerminationPoint connects with an HO ODU_TrailTerminationPoint object.

+                It will not apply if this ODU_ ConnectionTerminationPoint object directly connects to an OTU_TrailTerminationPoint object (i.e. OTU has no trib slots).

+                The upper bound of the integer allowed in this set is a function of the HO-ODU server layer to which the ODU connection has been mapped (adapted).

+                Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server layers (respectively). Note that the value of this attribute can be changed only in the case of ODUflex and has to be through specific operations (i.e. not be changing the attribute tributarySlotList directly).";

+        }

+        leaf tributary-port-number {

+            type uint64;

+            config false;

+            description "This attribute identifies the tributary port number that is associated with the ODU CTP.

+                range of type : The value range depends on the size of the Tributary Port Number (TPN) field used which depends on th server-layer ODU or OTU.

+                In case of ODUk mapping into OTUk, there is no TPN field, so the tributaryPortNumber shall be zero.

+                In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN is encoded in a 6-bit field so the value range is 0-63. See clause 14.4.1/G.709-2016.

+                In case of LO ODUj mapping over ODU4, the TPN is encoded in a 7-bit field so the value range is 0-127. See clause 14.4.1.4/G.709-2016.

+                In case of ODUk mapping over ODUCn, the TPN is encoded in a 14-bit field so the value range is 0-16383. See clause 20.4.1.1/G.709-2016.

+                ";

+        }

+        leaf accepted-msi {

+            type string;

+            config false;

+            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU1 or ODU2 CTP Sink at the client layer of the ODU3P/ODU12 adaptation function or represents a lower order ODUj CTP Sink at the client layer of the ODUP/ODUj-21 adaptation function. This attribute is a 1-byte field that represents the accepted multiplex structure of the adaptation function. ";

+        }

+        description "This Pac contains the attributes associated with the CTP

+            It is present only if the CEP contains a CTP";

+    }

+    grouping odu-mep-spec {

+        container odu-mep {

+            uses odu-mep-pac;

             description "none";

         }

-        grouping odu-tcm-mip-pac {

-            leaf tcm-field {

-                type uint64;

-                config false;

-                description "This attribute indicates the tandem connection monitoring field of the ODU OH.";

-            }

+        container odu-ncm {

+            config false;

+            uses odu-ncm-pac;

             description "none";

         }

-        grouping odu-mep-pac {

-            leaf dm-source {

-                type boolean;

-                description "This attribute is for configuring the delay measurement process at the trail termination function represented by the subject TTP object class. It models the MI_DM_Source MI signal. If MI_DM_Source is false, then the value of the DMp bit is determined by the RI_DM. If MI_DM_Source is true, then the value of the DMp bit is set to MI_DMValue.";

-            }

-            leaf dm-value {

-                type boolean;

-                description "This attribute is for setting the DMp and DMti bits of the delay measurement process. The value of 'true' sets the DMp and DMti bits to 0 and the value of 'false' to 1.";

-            }

-            leaf txti {

-                type string;

-                description "The Trail Trace Identifier (TTI) information, provisioned by the managing system at the termination source, to be placed in the TTI overhead position of the source of a trail for transmission.

-                    ";

-            }

+        container odu-tcm {

+            config false;

+            uses odu-tcm-mep-pac;

+            description "none";

+        }

+        container odu-defect {

+            uses odu-defect-pac;

+            description "none";

+        }

+        container odu-pm {

+            uses odu-pm-pac;

+            description "none";

+        }

+        description "none";

+    }

+    grouping odu-protection-pac {

+        leaf aps-enable {

+            type boolean;

+            default "true";

+            description "This attribute is for enabling/disabling the automatic protection switching (APS) capability at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_EN signal to the transport adaptation function.";

+        }

+        leaf aps-level {

+            type uint64;

+            description "This attribute is for configuring the automatic protection switching (APS) level that should operate at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_LVL signal to the transport adaptation function. The value 0 means path and the values 1 through 6 mean TCM level 1 through 6 respectively.";

+        }

+        description "none";

+    }

+    grouping odu-ncm-pac {

+        leaf-list tcm-fields-in-use {

+            type uint64;

+            config false;

+            description "This attribute indicates the used TCM fields of the ODU OH.";

+        }

+        description "none";

+    }

+    grouping odu-tcm-mep-pac {

+        leaf tcm-extension {

+            type tcm-extension;

+            description "none";

+        }

+        leaf tcm-mode {

+            type tcm-mode;

+            description "This attribute specifies the TCM mode at the entity. Valid values are: Operational, Monitor, and Transparent.";

+        }

+        leaf codirectional {

+            type boolean;

+            config false;

+            description "This attribute specifies the directionality of the ODUT MEP with respect to the associated ODU CEP. The value of TRUE means that the sink part of the ODUT MEP terminates the same signal direction as the sink part of the ODU CEP. The Source part behaves similarly. This attribute is meaningful only on objects instantiated under ODU CEP, and at least one among ODU CEP and the subordinate object is bidirectional.";

+        }

+        leaf ac-status-source {

+            type tcm-status;

+            config false;

+            description "This attribute indicates the status of the accepted TCM. ";

+        }

+        leaf ac-status-sink {

+            type tcm-status;

+            config false;

+            description "This attribute indicates the status of the accepted TCM. ";

+        }

+        leaf admin-state-source {

+            type tapi-common:administrative-state;

+            description "This attribute provides the capability to provision the LOCK signal at the source, which is one of the ODU maintenance signals.  When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the source direction.";

+        }

+        leaf admin-state-sink {

+            type tapi-common:administrative-state;

+            description "This attribute provides the capability to provision the LOCK signal at the sink, which is one of the ODU maintenance signals. When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the downstream direction.";

+        }

+        uses odu-tcm-mip-pac;

+        description "none";

+    }

+    grouping odu-mip-spec {

+        container odu-mip {

+            config false;

             uses odu-mip-pac;

             description "none";

         }

-        grouping odu-common-pac {

-            leaf odu-type {

-                type odu-type;

-                config false;

-                description "This attribute specifies the type of the ODU termination point.";

-            }

-            leaf odu-rate {

-                type uint64;

-                config false;

-                description "This attribute indicates the rate of the ODU terminatino point. 

-                    This attribute is Set at create; i.e., once created it cannot be changed directly. 

-                    In case of resizable ODU flex, its value can be changed via HAO (not directly on the attribute). 

-                    ";

-            }

-            leaf odu-rate-tolerance {

-                type uint64;

-                config false;

-                description "This attribute indicates the rate tolerance of the ODU termination point. 

-                    Valid values are real value in the unit of ppm. 

-                    Standardized values are defined in Table 7-2/G.709.";

-            }

+        container odu-ncm {

+            config false;

+            uses odu-ncm-pac;

             description "none";

         }

-        grouping odu-pm-pac {

-            leaf n-bbe {

-                type uint64;

-                description "Near-end Background Block Error";

-            }

-            leaf f-bbe {

-                type uint64;

-                config false;

-                description "Far-end Background Block Error";

-            }

-            leaf n-ses {

-                type uint64;

-                description "Near-end Severely Errored Second";

-            }

-            leaf f-ses {

-                type uint64;

-                description "Far-end Severely Errored Second";

-            }

-            container uas {

-                uses uas-choice;

-                description "UnAvailable Second";

-            }

-            description "Instance of this object class contains the ODUP layer-specific Current Data. This object class is a subclass of the OTN_CurrentData object class.

-                PM data attributes: fBbe, fSes, nBbe, nSes. uas";

+        container odu-tcm {

+            config false;

+            uses odu-tcm-mip-pac;

+            description "none";

         }

-        grouping odu-defect-pac {

-            leaf bdi {

-                type boolean;

-                config false;

-                description "Backward Defect Indication";

-            }

-            leaf deg {

-                type boolean;

-                config false;

-                description "Signal Degraded";

-            }

-            leaf lck {

-                type boolean;

-                config false;

-                description "Locked";

-            }

-            leaf oci {

-                type boolean;

-                config false;

-                description "Open Connection Indicator";

-            }

-            leaf ssf {

-                type boolean;

-                config false;

-                description "Server Signal Failure";

-            }

-            leaf tim {

-                type boolean;

-                config false;

-                description "Trail Trace Identifier Mismatch";

-            }

-            description "The valid list of defects raised on the entity. If the value of any attribute is true, then the corresponding defect is raised.";

+        container odu-pm {

+            uses odu-pm-pac;

+            description "none";

         }

+        container odu-defect {

+            uses odu-defect-pac;

+            description "none";

+        }

+        description "none";

+    }

+    grouping odu-mip-pac {

+        leaf acti {

+            type string;

+            config false;

+            description "The Trail Trace Identifier (TTI) information recovered (Accepted) from the TTI overhead position at the sink of a trail.";

+        }

+        leaf ex-dapi {

+            type string;

+            description "The Expected Destination Access Point Identifier (ExDAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.";

+        }

+        leaf ex-sapi {

+            type string;

+            description "The Expected Source Access Point Identifier (ExSAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.

+                ";

+        }

+        leaf tim-act-disabled {

+            type boolean;

+            default "true";

+            description "This attribute provides the control capability for the managing system to enable or disable the Consequent Action function when detecting Trace Identifier Mismatch (TIM) at the trail termination sink.";

+        }

+        leaf tim-det-mode {

+            type tim-det-mo;

+            description "This attribute indicates the mode of the Trace Identifier Mismatch (TIM) Detection function allowed values: OFF, SAPIonly, DAPIonly, SAPIandDAPI";

+        }

+        leaf deg-m {

+            type uint64;

+            description "This attribute indicates the threshold level for declaring a Degraded Signal defect (dDEG). A dDEG shall be declared if DegM consecutive bad PM Seconds are detected.";

+        }

+        container deg-thr {

+            uses deg-thr;

+            description "This attribute indicates the threshold level for declaring a performance monitoring (PM) Second to be bad. The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";

+        }

+        description "none";

+    }

+    grouping odu-tcm-mip-pac {

+        leaf tcm-field {

+            type uint64;

+            config false;

+            description "This attribute indicates the tandem connection monitoring field of the ODU OH.";

+        }

+        description "none";

+    }

+    grouping odu-mep-pac {

+        leaf dm-source {

+            type boolean;

+            description "This attribute is for configuring the delay measurement process at the trail termination function represented by the subject TTP object class. It models the MI_DM_Source MI signal. If MI_DM_Source is false, then the value of the DMp bit is determined by the RI_DM. If MI_DM_Source is true, then the value of the DMp bit is set to MI_DMValue.";

+        }

+        leaf dm-value {

+            type boolean;

+            description "This attribute is for setting the DMp and DMti bits of the delay measurement process. The value of 'true' sets the DMp and DMti bits to 0 and the value of 'false' to 1.";

+        }

+        leaf txti {

+            type string;

+            description "The Trail Trace Identifier (TTI) information, provisioned by the managing system at the termination source, to be placed in the TTI overhead position of the source of a trail for transmission.

+                ";

+        }

+        uses odu-mip-pac;

+        description "none";

+    }

+    grouping odu-common-pac {

+        leaf odu-type {

+            type odu-type;

+            config false;

+            description "This attribute specifies the type of the ODU termination point.";

+        }

+        leaf odu-rate {

+            type uint64;

+            config false;

+            description "This attribute indicates the rate of the ODU terminatino point.

+                This attribute is Set at create; i.e., once created it cannot be changed directly.

+                In case of resizable ODU flex, its value can be changed via HAO (not directly on the attribute).

+                ";

+        }

+        leaf odu-rate-tolerance {

+            type uint64;

+            config false;

+            description "This attribute indicates the rate tolerance of the ODU termination point.

+                Valid values are real value in the unit of ppm.

+                Standardized values are defined in Table 7-2/G.709.";

+        }

+        description "none";

+    }

+    grouping odu-pm-pac {

+        leaf n-bbe {

+            type uint64;

+            description "Near-end Background Block Error";

+        }

+        leaf f-bbe {

+            type uint64;

+            config false;

+            description "Far-end Background Block Error";

+        }

+        leaf n-ses {

+            type uint64;

+            description "Near-end Severely Errored Second";

+        }

+        leaf f-ses {

+            type uint64;

+            description "Far-end Severely Errored Second";

+        }

+        container uas {

+            uses uas-choice;

+            description "UnAvailable Second";

+        }

+        description "Instance of this object class contains the ODUP layer-specific Current Data. This object class is a subclass of the OTN_CurrentData object class.

+            PM data attributes: fBbe, fSes, nBbe, nSes. uas";

+    }

+    grouping odu-defect-pac {

+        leaf bdi {

+            type boolean;

+            config false;

+            description "Backward Defect Indication";

+        }

+        leaf deg {

+            type boolean;

+            config false;

+            description "Signal Degraded";

+        }

+        leaf lck {

+            type boolean;

+            config false;

+            description "Locked";

+        }

+        leaf oci {

+            type boolean;

+            config false;

+            description "Open Connection Indicator";

+        }

+        leaf ssf {

+            type boolean;

+            config false;

+            description "Server Signal Failure";

+        }

+        leaf tim {

+            type boolean;

+            config false;

+            description "Trail Trace Identifier Mismatch";

+        }

+        description "The valid list of defects raised on the entity. If the value of any attribute is true, then the corresponding defect is raised.";

+    }

 

-    /***********************

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

     * package type-definitions

-    **********************/ 

-        identity ODU_TYPE {

-        	base tapi-common:LAYER_PROTOCOL_QUALIFIER;

-            description "none";

-        }

-        identity ODU_TYPE_ODU0 {

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

+    identity ODU_TYPE {

+        base tapi-common:LAYER_PROTOCOL_QUALIFIER;

+        description "none";

+    }

+    identity ODU_TYPE_ODU0 {

+        base ODU_TYPE;

+        description "none";

+    }

+    identity ODU_TYPE_ODU1 {

+        base ODU_TYPE;

+        description "none";

+    }

+    identity ODU_TYPE_ODU2 {

+        base ODU_TYPE;

+        description "none";

+    }

+    identity ODU_TYPE_ODU2E {

+        base ODU_TYPE;

+        description "none";

+    }

+    identity ODU_TYPE_ODU3 {

+        base ODU_TYPE;

+        description "none";

+    }

+    identity ODU_TYPE_ODU4 {

+        base ODU_TYPE;

+        description "none";

+    }

+    identity ODU_TYPE_ODU_FLEX {

+        base ODU_TYPE;

+        description "none";

+    }

+    identity ODU_TYPE_ODU_CN {

+        base ODU_TYPE;

+        description "none";

+    }

+    typedef odu-type {

+        type identityref {

             base ODU_TYPE;

-            description "none";

         }

-        identity ODU_TYPE_ODU1 {

-            base ODU_TYPE;

-            description "none";

-        }

-        identity ODU_TYPE_ODU2 {

-            base ODU_TYPE;

-            description "none";

-        }

-        identity ODU_TYPE_ODU2E {

-            base ODU_TYPE;

-            description "none";

-        }

-        identity ODU_TYPE_ODU3 {

-            base ODU_TYPE;

-            description "none";

-        }

-        identity ODU_TYPE_ODU4 {

-            base ODU_TYPE;

-            description "none";

-        }

-        identity ODU_TYPE_ODU_FLEX {

-            base ODU_TYPE;

-            description "none";

-        }

-        identity ODU_TYPE_ODU_CN {

-            base ODU_TYPE;

-            description "none";

-        }

-        typedef odu-type {

-            type identityref {

-                base ODU_TYPE;

-            }

-            description "none";

-        }

-        typedef mapping-type {

-            type enumeration {

-                enum AMP {

-                    description "none";

-                }

-                enum BMP {

-                    description "none";

-                }

-                enum GFP-F {

-                    description "none";

-                }

-                enum GMP {

-                    description "none";

-                }

-                enum TTP_GFP_BMP {

-                    description "none";

-                }

-                enum NULL {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef tim-det-mo {

-            type enumeration {

-                enum DAPI {

-                    description "none";

-                }

-                enum SAPI {

-                    description "none";

-                }

-                enum BOTH {

-                    description "none";

-                }

-                enum OFF {

-                    description "none";

-                }

-            }

-            description "List of modes for trace identifier mismatch detection.";

-        }

-        typedef odu-slot-size {

-            type enumeration {

-                enum 1G25 {

-                    description "none";

-                }

-                enum 2G5 {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        grouping odu-payload-type {

-            leaf named-payload-type {

-                type odu-named-payload-type;

+        description "none";

+    }

+    typedef mapping-type {

+        type enumeration {

+            enum AMP {

                 description "none";

             }

-            leaf hex-payload-type {

-                type uint64;

+            enum BMP {

                 description "none";

             }

+            enum GFP-F {

+                description "none";

+            }

+            enum GMP {

+                description "none";

+            }

+            enum TTP_GFP_BMP {

+                description "none";

+            }

+            enum NULL {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef tim-det-mo {

+        type enumeration {

+            enum DAPI {

+                description "none";

+            }

+            enum SAPI {

+                description "none";

+            }

+            enum BOTH {

+                description "none";

+            }

+            enum OFF {

+                description "none";

+            }

+        }

+        description "List of modes for trace identifier mismatch detection.";

+    }

+    typedef odu-slot-size {

+        type enumeration {

+            enum 1G25 {

+                description "none";

+            }

+            enum 2G5 {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    grouping odu-payload-type {

+        leaf named-payload-type {

+            type odu-named-payload-type;

             description "none";

         }

-        typedef odu-named-payload-type {

-            type enumeration {

-                enum UNKNOWN {

-                    description "none";

-                }

-                enum UNINTERPRETABLE {

-                    description "none";

-                }

-            }

+        leaf hex-payload-type {

+            type uint64;

             description "none";

         }

-        grouping deg-thr {

-            leaf deg-thr-value {

-                type uint64;

-                description "Percentage of detected errored blocks";

-            }

-            leaf deg-thr-type {

-                type deg-thr-type;

-                description "Number of errored blocks";

-            }

-            leaf percentage-granularity {

-                type percentage-granularity;

+        description "none";

+    }

+    typedef odu-named-payload-type {

+        type enumeration {

+            enum UNKNOWN {

                 description "none";

             }

-            description "Degraded Threshold, specify either the percentage or the number of Errored Blocks in the defined interval. 

-                degThrValue when type is PERCENTAGE:

-                percentageGranularity is used to indicate the number of decimal points

-                So if percentageGranularity is ones, a value of 1 in degThrValue would indicate 1%, a value of 10 = 10%, a value of 100 = 100%

-                So if percentageGranularity is thousandths a value of 1 in degThrValue would indicate 0.001%, a value of 1000 = 1%, a value of 1000000 = 100%

-                degThrValue when type is NUMBER_ERROR_BLOCKS:

-                Number of Errored Blocks is captured in an integer value.";

-        }

-        typedef deg-thr-type {

-            type enumeration {

-                enum PERCENTAGE {

-                    description "Choice of % or Number of errored blocks";

-                }

-                enum NUMBER_ERRORED_BLOCKS {

-                    description "Number of % or blocks";

-                }

+            enum UNINTERPRETABLE {

+                description "none";

             }

-            description "The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";

         }

-        typedef tcm-status {

-            type enumeration {

-                enum NO_SOURCE_TC {

-                    description "TCM byte 3 (bits 6 7 8) -- 0 0 0, No source Tandem Connection";

-                }

-                enum IN_USE_WITHOUT_IAE {

-                    description "TCM byte 3 (bits 6 7 8) -- 0 0 1,  In use without IAE (Incoming Alignment Error)";

-                }

-                enum IN_USE_WITH_IAE {

-                    description "TCM byte 3 (bits 6 7 8) -- 0 1 0, In use with IAE (Incoming Alignment Error)";

-                }

-                enum RESERVED_1 {

-                    description "TCM byte 3 (bits 6 7 8) -- 0 1 1, Reserved for future international standardization";

-                }

-                enum RESERVED_2 {

-                    description "TCM byte 3 (bits 6 7 8) -- 1 0 0, Reserved for future international standardization";

-                }

-                enum LCK {

-                    description "TCM byte 3 (bits 6 7 8) -- 1 0 1, Maintenance signal: ODU-LCK";

-                }

-                enum OCI {

-                    description "TCM byte 3 (bits 6 7 8) -- 1 1 0, Maintenance signal: ODU-OCI";

-                }

-                enum AIS {

-                    description "TCM byte 3 (bits 6 7 8) -- 1 1 1, Maintenance signal: ODU-AIS";

-                }

-            }

-            description "See Table 15-5/G.709/Y.1331 ";

+        description "none";

+    }

+    grouping deg-thr {

+        leaf deg-thr-value {

+            type uint64;

+            description "Percentage of detected errored blocks";

         }

-        typedef tcm-mode {

-            type enumeration {

-                enum OPERATIONAL {

-                    description "none";

-                }

-                enum TRANSPARENT {

-                    description "none";

-                }

-                enum MONITOR {

-                    description "none";

-                }

-            }

-            description "List of value modes for the sink side of the tandem connection monitoring function.";

+        leaf deg-thr-type {

+            type deg-thr-type;

+            description "Number of errored blocks";

         }

-        typedef tcm-monitoring {

-            type enumeration {

-                enum INTRUSIVE {

-                    description "none";

-                }

-                enum NON-INTRUSIVE {

-                    description "none";

-                }

-            }

-            description "Monitoring types for the tandem connection monitoring function.";

-        }

-        typedef tcm-extension {

-            type enumeration {

-                enum NORMAL {

-                    description "none";

-                }

-                enum PASS-THROUGH {

-                    description "none";

-                }

-                enum ERASE {

-                    description "none";

-                }

-            }

+        leaf percentage-granularity {

+            type percentage-granularity;

             description "none";

         }

-        typedef percentage-granularity {

-            type enumeration {

-                enum ONES {

-                    description "none";

-                }

-                enum ONE_TENTHS {

-                    description "value * (1/10)";

-                }

-                enum ONE_HUNDREDTHS {

-                    description "value * (1/100)";

-                }

-                enum ONE_THOUSANDTHS {

-                    description "value * (1/1000)";

-                }

+        description "Degraded Threshold, specify either the percentage or the number of Errored Blocks in the defined interval.

+            degThrValue when type is PERCENTAGE:

+            percentageGranularity is used to indicate the number of decimal points

+            So if percentageGranularity is ones, a value of 1 in degThrValue would indicate 1%, a value of 10 = 10%, a value of 100 = 100%

+            So if percentageGranularity is thousandths a value of 1 in degThrValue would indicate 0.001%, a value of 1000 = 1%, a value of 1000000 = 100%

+            degThrValue when type is NUMBER_ERROR_BLOCKS:

+            Number of Errored Blocks is captured in an integer value.";

+    }

+    typedef deg-thr-type {

+        type enumeration {

+            enum PERCENTAGE {

+                description "Choice of % or Number of errored blocks";

             }

+            enum NUMBER_ERRORED_BLOCKS {

+                description "Number of % or blocks";

+            }

+        }

+        description "The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";

+    }

+    typedef tcm-status {

+        type enumeration {

+            enum NO_SOURCE_TC {

+                description "TCM byte 3 (bits 6 7 8) -- 0 0 0, No source Tandem Connection";

+            }

+            enum IN_USE_WITHOUT_IAE {

+                description "TCM byte 3 (bits 6 7 8) -- 0 0 1,  In use without IAE (Incoming Alignment Error)";

+            }

+            enum IN_USE_WITH_IAE {

+                description "TCM byte 3 (bits 6 7 8) -- 0 1 0, In use with IAE (Incoming Alignment Error)";

+            }

+            enum RESERVED_1 {

+                description "TCM byte 3 (bits 6 7 8) -- 0 1 1, Reserved for future international standardization";

+            }

+            enum RESERVED_2 {

+                description "TCM byte 3 (bits 6 7 8) -- 1 0 0, Reserved for future international standardization";

+            }

+            enum LCK {

+                description "TCM byte 3 (bits 6 7 8) -- 1 0 1, Maintenance signal: ODU-LCK";

+            }

+            enum OCI {

+                description "TCM byte 3 (bits 6 7 8) -- 1 1 0, Maintenance signal: ODU-OCI";

+            }

+            enum AIS {

+                description "TCM byte 3 (bits 6 7 8) -- 1 1 1, Maintenance signal: ODU-AIS";

+            }

+        }

+        description "See Table 15-5/G.709/Y.1331 ";

+    }

+    typedef tcm-mode {

+        type enumeration {

+            enum OPERATIONAL {

+                description "none";

+            }

+            enum TRANSPARENT {

+                description "none";

+            }

+            enum MONITOR {

+                description "none";

+            }

+        }

+        description "List of value modes for the sink side of the tandem connection monitoring function.";

+    }

+    typedef tcm-monitoring {

+        type enumeration {

+            enum INTRUSIVE {

+                description "none";

+            }

+            enum NON-INTRUSIVE {

+                description "none";

+            }

+        }

+        description "Monitoring types for the tandem connection monitoring function.";

+    }

+    typedef tcm-extension {

+        type enumeration {

+            enum NORMAL {

+                description "none";

+            }

+            enum PASS-THROUGH {

+                description "none";

+            }

+            enum ERASE {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef percentage-granularity {

+        type enumeration {

+            enum ONES {

+                description "none";

+            }

+            enum ONE_TENTHS {

+                description "value * (1/10)";

+            }

+            enum ONE_HUNDREDTHS {

+                description "value * (1/100)";

+            }

+            enum ONE_THOUSANDTHS {

+                description "value * (1/1000)";

+            }

+        }

+        description "none";

+    }

+    grouping uas-choice {

+        leaf bidirectional {

+            type boolean;

+            default "true";

             description "none";

         }

-        grouping uas-choice {

-            leaf bidirectional {

-                type boolean;

-                default "true";

-                description "none";

-            }

-            leaf uas {

-                type uint64;

-                description "none";

-            }

-            leaf nuas {

-                type uint64;

-                description "none";

-            }

-            leaf fuas {

-                type uint64;

-                description "none";

-            }

-            description "If bidirectional is TRUE then use the uas attribute, if bidirectional is FALSE use the nuas, and fuas attributes";

+        leaf uas {

+            type uint64;

+            description "none";

         }

-

+        leaf nuas {

+            type uint64;

+            description "none";

+        }

+        leaf fuas {

+            type uint64;

+            description "none";

+        }

+        description "If bidirectional is TRUE then use the uas attribute, if bidirectional is FALSE use the nuas, and fuas attributes";

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang b/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
old mode 100644
new mode 100755
index 56982df..ba6173d
--- a/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
@@ -32,28 +32,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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" {

@@ -64,9 +64,9 @@
         description "Augments the base TAPI Context with PathComputationService information";

     }

 

-    /*************************

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

     * definitions of refrences

-    *************************/

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

     grouping path-ref {

         leaf path-uuid {

             type leafref {

@@ -77,81 +77,307 @@
         description "none";

     }

 

-    /***********************

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

     * package object-classes

-    **********************/ 

-        grouping path {

-            list link {

-                uses tapi-topology:link-ref;

-                key 'topology-uuid link-uuid';

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            container routing-constraint {

-                config false;

-                uses routing-constraint;

-                description "none";

-            }

-            leaf direction {

-                type tapi-common:forwarding-direction;

-                description "none";

-            }

-            leaf layer-protocol-name {

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

-                config false;

-                description "none";

-            }

-            uses tapi-common:resource-spec;

-            description "Path is described by an ordered list of TE Links. A TE Link is defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by concatenating link resources (associated with a Link) and the lower-level connections (cross-connections) in the different nodes";

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

+    grouping path {

+        list link {

+            uses tapi-topology:link-ref;

+            key 'topology-uuid link-uuid';

+            config false;

+            min-elements 1;

+            description "none";

         }

-        grouping path-service-end-point {

-            container service-interface-point {

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

-                config false;

-                description "none";

-            }

-            leaf layer-protocol-name {

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

-                config false;

-                description "none";

-            }

-            leaf layer-protocol-qualifier {

-                type tapi-common:layer-protocol-qualifier;

-                description "none";

-            }

-            container capacity {

-                uses tapi-common:capacity;

-                description "none";

-            }

-            leaf role {

-                type tapi-common:port-role;

-                config false;

-                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";

-            }

-            leaf direction {

-                type tapi-common:port-direction;

-                config false;

-                description "The orientation of defined flow at the EndPoint.";

-            }

-            uses tapi-common:local-class;

-            description "The association of the FC to LTPs is made via EndPoints.

-                The EndPoint (EP) object class models the access to the FC function. 

-                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  

-                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 

-                It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.

-                The EP replaces the Protection Unit of a traditional protection model. 

-                The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";

+        container routing-constraint {

+            config false;

+            uses routing-constraint;

+            description "none";

         }

-        grouping path-computation-service {

-            list path {

-                uses path-ref;

-                key 'path-uuid';

-                config false;

-                min-elements 1;

+        leaf direction {

+            type tapi-common:forwarding-direction;

+            description "none";

+        }

+        leaf layer-protocol-name {

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

+            config false;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

+        description "Path is described by an ordered list of TE Links. A TE Link is defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by concatenating link resources (associated with a Link) and the lower-level connections (cross-connections) in the different nodes";

+    }

+    grouping path-service-end-point {

+        container service-interface-point {

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

+            config false;

+            description "none";

+        }

+        leaf layer-protocol-name {

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

+            config false;

+            description "none";

+        }

+        leaf layer-protocol-qualifier {

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

+            description "none";

+        }

+        container capacity {

+            uses tapi-common:capacity;

+            description "none";

+        }

+        leaf role {

+            type tapi-common:port-role;

+            config false;

+            description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";

+        }

+        leaf direction {

+            type tapi-common:port-direction;

+            config false;

+            description "The orientation of defined flow at the EndPoint.";

+        }

+        uses tapi-common:local-class;

+        description "The association of the FC to LTPs is made via EndPoints.

+            The EndPoint (EP) object class models the access to the FC function.

+            The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.

+            In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.

+            It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.

+            The EP replaces the Protection Unit of a traditional protection model.

+            The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";

+    }

+    grouping path-computation-service {

+        list path {

+            uses path-ref;

+            key 'path-uuid';

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        list end-point {

+            key 'local-id';

+            min-elements 2;

+            max-elements 2;

+            uses path-service-end-point;

+            description "none";

+        }

+        container routing-constraint {

+            uses routing-constraint;

+            description "none";

+        }

+        container topology-constraint {

+            uses topology-constraint;

+            description "none";

+        }

+        container objective-function {

+            uses path-objective-function;

+            description "none";

+        }

+        container optimization-constraint {

+            uses path-optimization-constraint;

+            description "none";

+        }

+        uses tapi-common:service-spec;

+        description "none";

+    }

+    grouping path-objective-function {

+        leaf bandwidth-optimization {

+            type tapi-common:directive-value;

+            config false;

+            description "none";

+        }

+        leaf concurrent-paths {

+            type tapi-common:directive-value;

+            config false;

+            description "none";

+        }

+        leaf cost-optimization {

+            type tapi-common:directive-value;

+            config false;

+            description "none";

+        }

+        leaf link-utilization {

+            type tapi-common:directive-value;

+            config false;

+            description "none";

+        }

+        leaf resource-sharing {

+            type tapi-common:directive-value;

+            config false;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    grouping path-optimization-constraint {

+        leaf traffic-interruption {

+            type tapi-common:directive-value;

+            config false;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+    grouping routing-constraint {

+        list cost-characteristic {

+            key 'cost-name';

+            uses tapi-topology:cost-characteristic;

+            description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";

+        }

+        list latency-characteristic {

+            key 'traffic-property-name';

+            uses tapi-topology:latency-characteristic;

+            description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";

+        }

+        list risk-diversity-characteristic {

+            key 'risk-characteristic-name';

+            uses tapi-topology:risk-characteristic;

+            description "none";

+        }

+        leaf diversity-policy {

+            type diversity-policy;

+            description "none";

+        }

+        leaf route-objective-function {

+            type route-objective-function;

+            description "none";

+        }

+        leaf route-direction {

+            type tapi-common:forwarding-direction;

+            description "none";

+        }

+        leaf is-exclusive {

+            type boolean;

+            default "true";

+            description "To distinguish if the resources are to be exclusive to the service";

+        }

+        description "none";

+    }

+    grouping path-computation-context {

+        list path-comp-service {

+            key 'uuid';

+            uses path-computation-service;

+            description "none";

+        }

+        list path {

+            key 'uuid';

+            config false;

+            uses path;

+            description "none";

+        }

+        description "none";

+    }

+    grouping topology-constraint {

+        list include-topology {

+            uses tapi-topology:topology-ref;

+            key 'topology-uuid';

+            config false;

+            description "none";

+        }

+        list avoid-topology {

+            uses tapi-topology:topology-ref;

+            key 'topology-uuid';

+            config false;

+            description "none";

+        }

+        list include-path {

+            uses tapi-path-computation:path-ref;

+            key 'path-uuid';

+            config false;

+            description "none";

+        }

+        list exclude-path {

+            uses tapi-path-computation:path-ref;

+            key 'path-uuid';

+            config false;

+            description "none";

+        }

+        list include-link {

+            uses tapi-topology:link-ref;

+            key 'topology-uuid link-uuid';

+            config false;

+            description "This is a loose constraint - that is it is unordered and could be a partial list ";

+        }

+        list exclude-link {

+            uses tapi-topology:link-ref;

+            key 'topology-uuid link-uuid';

+            config false;

+            description "none";

+        }

+        list include-node {

+            uses tapi-topology:node-ref;

+            key 'topology-uuid node-uuid';

+            config false;

+            description "This is a loose constraint - that is it is unordered and could be a partial list";

+        }

+        list exclude-node {

+            uses tapi-topology:node-ref;

+            key 'topology-uuid node-uuid';

+            config false;

+            description "none";

+        }

+        leaf-list preferred-transport-layer {

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

+            config false;

+            description "soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers";

+        }

+        description "none";

+    }

+

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

+    * package type-definitions

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

+    typedef route-objective-function {

+        type enumeration {

+            enum MIN_WORK_ROUTE_HOP {

                 description "none";

             }

-            list end-point {

+            enum MIN_WORK_ROUTE_COST {

+                description "none";

+            }

+            enum MIN_WORK_ROUTE_LATENCY {

+                description "none";

+            }

+            enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {

+                description "none";

+            }

+            enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {

+                description "none";

+            }

+            enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {

+                description "none";

+            }

+            enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef diversity-policy {

+        type enumeration {

+            enum SRLG {

+                description "none";

+            }

+            enum SRNG {

+                description "none";

+            }

+            enum SNG {

+                description "none";

+            }

+            enum NODE {

+                description "none";

+            }

+            enum LINK {

+                description "none";

+            }

+        }

+        description "none";

+    }

+

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

+    * package interfaces

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

+    rpc compute-p-2-p-path {

+        description "none";

+        input {

+            list sep {

                 key 'local-id';

                 min-elements 2;

                 max-elements 2;

@@ -170,281 +396,54 @@
                 uses path-objective-function;

                 description "none";

             }

+        }

+        output {

+            container service {

+                uses path-computation-service;

+                description "none";

+            }

+        }

+    }

+    rpc optimize-p-2-p-path {

+        description "none";

+        input {

+            leaf path-id-or-name {

+                type string;

+                description "none";

+            }

+            container routing-constraint {

+                uses routing-constraint;

+                description "none";

+            }

             container optimization-constraint {

                 uses path-optimization-constraint;

                 description "none";

             }

-            uses tapi-common:service-spec;

-            description "none";

+            container objective-function {

+                uses path-objective-function;

+                description "none";

+            }

         }

-        grouping path-objective-function {

-            leaf bandwidth-optimization {

-                type tapi-common:directive-value;

-                config false;

-                description "none";

-            }

-            leaf concurrent-paths {

-                type tapi-common:directive-value;

-                config false;

-                description "none";

-            }

-            leaf cost-optimization {

-                type tapi-common:directive-value;

-                config false;

-                description "none";

-            }

-            leaf link-utilization {

-                type tapi-common:directive-value;

-                config false;

-                description "none";

-            }

-            leaf resource-sharing {

-                type tapi-common:directive-value;

-                config false;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "none";

-        }

-        grouping path-optimization-constraint {

-            leaf traffic-interruption {

-                type tapi-common:directive-value;

-                config false;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "none";

-        }

-        grouping routing-constraint {

-            list cost-characteristic {

-                key 'cost-name';

-                uses tapi-topology:cost-characteristic;

-                description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";

-            }

-            list latency-characteristic {

-                key 'traffic-property-name';

-                uses tapi-topology:latency-characteristic;

-                description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";

-            }

-            list risk-diversity-characteristic {

-                key 'risk-characteristic-name';

-                uses tapi-topology:risk-characteristic;

-                description "none";

-            }

-            leaf diversity-policy {

-                type diversity-policy;

-                description "none";

-            }

-            leaf route-objective-function {

-                type route-objective-function;

-                description "none";

-            }

-            leaf route-direction {

-                type tapi-common:forwarding-direction;

-                description "none";

-            }

-            leaf is-exclusive {

-                type boolean;

-                default "true";

-                description "To distinguish if the resources are to be exclusive to the service";

-            }

-            description "none";

-        }

-        grouping path-computation-context {

-            list path-comp-service {

-                key 'uuid';

+        output {

+            container service {

                 uses path-computation-service;

                 description "none";

             }

-            list path {

-                key 'uuid';

-                config false;

-                uses path;

+        }

+    }

+    rpc delete-p-2-p-path {

+        description "none";

+        input {

+            leaf path-id-or-name {

+                type string;

                 description "none";

             }

-            description "none";

         }

-        grouping topology-constraint {

-            list include-topology {

-                uses tapi-topology:topology-ref;

-                key 'topology-uuid';

-                config false;

+        output {

+            container service {

+                uses path-computation-service;

                 description "none";

             }

-            list avoid-topology {

-                uses tapi-topology:topology-ref;

-                key 'topology-uuid';

-                config false;

-                description "none";

-            }

-            list include-path {

-                uses tapi-path-computation:path-ref;

-                key 'path-uuid';

-                config false;

-                description "none";

-            }

-            list exclude-path {

-                uses tapi-path-computation:path-ref;

-                key 'path-uuid';

-                config false;

-                description "none";

-            }

-            list include-link {

-                uses tapi-topology:link-ref;

-                key 'topology-uuid link-uuid';

-                config false;

-                description "This is a loose constraint - that is it is unordered and could be a partial list ";

-            }

-            list exclude-link {

-                uses tapi-topology:link-ref;

-                key 'topology-uuid link-uuid';

-                config false;

-                description "none";

-            }

-            list include-node {

-                uses tapi-topology:node-ref;

-                key 'topology-uuid node-uuid';

-                config false;

-                description "This is a loose constraint - that is it is unordered and could be a partial list";

-            }

-            list exclude-node {

-                uses tapi-topology:node-ref;

-                key 'topology-uuid node-uuid';

-                config false;

-                description "none";

-            }

-            leaf-list preferred-transport-layer {

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

-                config false;

-                description "soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers";

-            }

-            description "none";

         }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        typedef route-objective-function {

-            type enumeration {

-                enum MIN_WORK_ROUTE_HOP {

-                    description "none";

-                }

-                enum MIN_WORK_ROUTE_COST {

-                    description "none";

-                }

-                enum MIN_WORK_ROUTE_LATENCY {

-                    description "none";

-                }

-                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {

-                    description "none";

-                }

-                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {

-                    description "none";

-                }

-                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {

-                    description "none";

-                }

-                enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef diversity-policy {

-            type enumeration {

-                enum SRLG {

-                    description "none";

-                }

-                enum SRNG {

-                    description "none";

-                }

-                enum SNG {

-                    description "none";

-                }

-                enum NODE {

-                    description "none";

-                }

-                enum LINK {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-

-    /***********************

-    * package interfaces

-    **********************/ 

-        rpc compute-p-2-p-path {

-            description "none";

-            input {

-                list sep {

-                	key 'local-id';

-                    min-elements 2;

-                    max-elements 2;

-                    uses path-service-end-point;

-                    description "none";

-                }

-                container routing-constraint {

-                    uses routing-constraint;

-                    description "none";

-                }

-                container topology-constraint {

-                    uses topology-constraint;

-                    description "none";

-                }

-                container objective-function {

-                    uses path-objective-function;

-                    description "none";

-                }

-            }

-            output {

-                container service {

-                    uses path-computation-service;

-                    description "none";

-                }

-            }

-        }

-        rpc optimize-p-2-p-path {

-            description "none";

-            input {

-                leaf path-id-or-name {

-                    type string;

-                    description "none";

-                }

-                container routing-constraint {

-                    uses routing-constraint;

-                    description "none";

-                }

-                container optimization-constraint {

-                    uses path-optimization-constraint;

-                    description "none";

-                }

-                container objective-function {

-                    uses path-objective-function;

-                    description "none";

-                }

-            }

-            output {

-                container service {

-                    uses path-computation-service;

-                    description "none";

-                }

-            }

-        }

-        rpc delete-p-2-p-path {

-            description "none";

-            input {

-                leaf path-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container service {

-                    uses path-computation-service;

-                    description "none";

-                }

-            }

-        }

-

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-photonic-media@2018-10-16.yang b/models/tapi/src/main/yang/tapi-photonic-media@2018-10-16.yang
old mode 100644
new mode 100755
index 9a53635..5ae8fe1
--- a/models/tapi/src/main/yang/tapi-photonic-media@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-photonic-media@2018-10-16.yang
@@ -35,28 +35,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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/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" {

@@ -269,649 +269,649 @@
         }

         description "none";

     }

-    /***********************

+

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

     * package object-classes

-    **********************/ 

-        grouping otsi-gserver-adaptation-pac {

-            leaf number-of-otsi {

-                type uint64;

-                config false;

-                description "none";

-            }

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

+    grouping otsi-gserver-adaptation-pac {

+        leaf number-of-otsi {

+            type uint64;

+            config false;

             description "none";

         }

-        grouping otsi-connection-end-point-spec {

-            container otsi-termination {

-                config false;

-                uses otsi-termination-pac;

-                description "none";

-            }

+        description "none";

+    }

+    grouping otsi-connection-end-point-spec {

+        container otsi-termination {

+            config false;

+            uses otsi-termination-pac;

             description "none";

         }

-        grouping otsi-termination-pac {

-            container selected-central-frequency {

-                config false;

-                uses central-frequency;

-                description "none";

-            }

-            container selected-application-identifier {

-                config false;

-                uses application-identifier;

-                description "This attribute indicates the selected Application Identifier that is used by the OCh trail termination function. The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";

-            }

-            leaf selected-modulation {

-                type modulation-technique;

-                default "UNDEFINED";

-                config false;

-                description "This parameter defines the modulation used at the source";

-            }

-            container selected-spectrum {

-                config false;

-                uses spectrum-band;

-                description "none";

-            }

-            container transmited-power {

-                config false;

-                uses power-properties-pac;

-                description "Measured power at the Transmitter.";

-            }

-            container received-power {

-                uses power-properties-pac;

-                description "none";

-            }

-            container laser-properties {

-                config false;

-                uses laser-properties-pac;

-                description "Laser properties.";

-            }

-            description "Provides status information only.";

-        }

-        grouping media-channel-pool-capability-pac {

-            list supportable-spectrum {

-                key 'upper-frequency lower-frequency';

-                config false;

-                uses spectrum-band;

-                description "none";

-            }

-            list available-spectrum {

-                key 'upper-frequency lower-frequency';

-                config false;

-                uses spectrum-band;

-                description "none";

-            }

-            list occupied-spectrum {

-                key 'upper-frequency lower-frequency';

-                config false;

-                uses spectrum-band;

-                description "none";

-            }

+        description "none";

+    }

+    grouping otsi-termination-pac {

+        container selected-central-frequency {

+            config false;

+            uses central-frequency;

             description "none";

         }

-        grouping media-channel-node-edge-point-spec {

-            container mc-pool {

-                config false;

-                uses media-channel-pool-capability-pac;

-                description "none";

-            }

+        container selected-application-identifier {

+            config false;

+            uses application-identifier;

+            description "This attribute indicates the selected Application Identifier that is used by the OCh trail termination function. The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";

+        }

+        leaf selected-modulation {

+            type modulation-technique;

+            default "UNDEFINED";

+            config false;

+            description "This parameter defines the modulation used at the source";

+        }

+        container selected-spectrum {

+            config false;

+            uses spectrum-band;

             description "none";

         }

-        grouping otsi-routing-spec {

-            leaf optical-routing-strategy {

-                type optical-routing-strategy;

-                description "none";

-            }

+        container transmited-power {

+            config false;

+            uses power-properties-pac;

+            description "Measured power at the Transmitter.";

+        }

+        container received-power {

+            uses power-properties-pac;

             description "none";

         }

-        grouping media-channel-properties-pac {

-            container occupied-spectrum {

-                config false;

-                uses spectrum-band;

-                description "none";

-            }

-            container measured-power-ingress {

-                config false;

-                uses power-properties-pac;

-                description "none";

-            }

-            container measured-power-egress {

-                uses power-properties-pac;

-                description "none";

-            }

+        container laser-properties {

+            config false;

+            uses laser-properties-pac;

+            description "Laser properties.";

+        }

+        description "Provides status information only.";

+    }

+    grouping media-channel-pool-capability-pac {

+        list supportable-spectrum {

+            key 'upper-frequency lower-frequency';

+            config false;

+            uses spectrum-band;

             description "none";

         }

-        grouping otsi-assembly-connection-end-point-spec {

-            container otsi-adapter {

-                config false;

-                uses otsi-gserver-adaptation-pac;

-                description "none";

-            }

-            container fec-parameters {

-                config false;

-                uses fec-properties-pac;

-                description "none";

-            }

+        list available-spectrum {

+            key 'upper-frequency lower-frequency';

+            config false;

+            uses spectrum-band;

             description "none";

         }

-        grouping otsi-capability-pac {

-            list supportable-lower-central-frequency {

-                key 'central-frequency';

-                config false;

-                uses central-frequency;

-                description "The lower frequency of the channel spectrum";

-            }

-            list supportable-upper-central-frequency {

-                key 'central-frequency';

-                config false;

-                uses central-frequency;

-                description "The Upper frequency of the channel spectrum";

-            }

-            list supportable-application-identifier {

-                key 'application-code';

-                config false;

-                uses application-identifier;

-                description "The list of supportable ApplicationIdentifiers.";

-            }

-            leaf-list supportable-modulation {

-                type modulation-technique;

-                config false;

-                description "This parameter defines the modulation used at the source";

-            }

-            container total-power-warn-threshold {

-                config false;

-                uses total-power-threshold-pac;

-                description "none";

-            }

-            description "Can read the status of the warning for the upper value that the power can reach.";

-        }

-        grouping otsi-service-interface-point-spec {

-            container otsi-capability {

-                config false;

-                uses otsi-capability-pac;

-                description "none";

-            }

+        list occupied-spectrum {

+            key 'upper-frequency lower-frequency';

+            config false;

+            uses spectrum-band;

             description "none";

         }

-        grouping otsi-connectivity-service-end-point-spec {

-            container otsi-config {

-                uses otsi-termination-config-pac;

-                description "none";

-            }

+        description "none";

+    }

+    grouping media-channel-node-edge-point-spec {

+        container mc-pool {

+            config false;

+            uses media-channel-pool-capability-pac;

             description "none";

         }

-        grouping otsi-termination-config-pac {

-            container central-frequency {

-                uses central-frequency;

-                description "The central frequency of the laser. It is the oscillation frequency of the corresponding electromagnetic wave";

-            }

-            container spectrum {

-                uses spectrum-band;

-                description "none";

-            }

-            container application-identifier {

-                uses application-identifier;

-                description "This attribute indicates the selected Application Identifier.";

-            }

-            leaf modulation {

-                type modulation-technique;

-                description "The modulation techniqu selected at the source.";

-            }

-            leaf laser-control {

-                type laser-control-type;

-                description "Laser control can be FORCED-ON, FORCED-OFF or LASER-SHUTDOWN";

-            }

-            container transmit-power {

-                uses power-properties-pac;

-                description "Transmit power as requested.";

-            }

-            leaf total-power-warn-threshold-upper {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Allows to configure the Upper power threshold which is expected to be different from Default, but within the Min and Max values specified as OTSi SIP capability.";

-            }

-            leaf total-power-warn-threshold-lower {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Allows to configure the Lowerpower threshold which is expected to be different from Default, but within the Min and Max values specified as OTSi SIP capability.";

-            }

+        description "none";

+    }

+    grouping otsi-routing-spec {

+        leaf optical-routing-strategy {

+            type optical-routing-strategy;

             description "none";

         }

-        grouping fec-properties-pac {

-            leaf pre-fec-ber {

-                type uint64;

-                config false;

-                description "counter: bit error rate before correction by FEC";

-            }

-            leaf post-fec-ber {

-                type uint64;

-                config false;

-                description "counter: bit error rate after correction by FEC";

-            }

-            leaf corrected-bytes {

-                type uint64;

-                config false;

-                description "Bytes corrected between those that were received corrupted";

-            }

-            leaf corrected-bits {

-                type uint64;

-                config false;

-                description "Bits corrected between those that were received corrupted";

-            }

-            leaf uncorrectable-bytes {

-                type uint64;

-                config false;

-                description "Bytes that could not be corrected by FEC";

-            }

-            leaf uncorrectable-bits {

-                type uint64;

-                config false;

-                description "Bits that could not be corrected by FEC";

-            }

+        description "none";

+    }

+    grouping media-channel-properties-pac {

+        container occupied-spectrum {

+            config false;

+            uses spectrum-band;

             description "none";

         }

-        grouping media-channel-service-interface-point-spec {

-            container mc-pool {

-                config false;

-                uses media-channel-pool-capability-pac;

-                description "none";

-            }

+        container measured-power-ingress {

+            config false;

+            uses power-properties-pac;

             description "none";

         }

-        grouping media-channel-connectivity-service-end-point-spec {

-            container mc-config {

-                uses media-channel-config-pac;

-                description "none";

-            }

+        container measured-power-egress {

+            uses power-properties-pac;

             description "none";

         }

-        grouping media-channel-config-pac {

-            container spectrum {

-                uses spectrum-band;

-                description "none";

-            }

+        description "none";

+    }

+    grouping otsi-assembly-connection-end-point-spec {

+        container otsi-adapter {

+            config false;

+            uses otsi-gserver-adaptation-pac;

             description "none";

         }

-        grouping media-channel-connection-end-point-spec {

-            container media-channel {

-                config false;

-                uses media-channel-properties-pac;

-                description "none";

-            }

+        container fec-parameters {

+            config false;

+            uses fec-properties-pac;

             description "none";

         }

-        grouping ots-connection-end-point-spec {

-            container ots-media-channel {

-                config false;

-                uses media-channel-properties-pac;

-                description "none";

-            }

+        description "none";

+    }

+    grouping otsi-capability-pac {

+        list supportable-lower-central-frequency {

+            key 'central-frequency';

+            config false;

+            uses central-frequency;

+            description "The lower frequency of the channel spectrum";

+        }

+        list supportable-upper-central-frequency {

+            key 'central-frequency';

+            config false;

+            uses central-frequency;

+            description "The Upper frequency of the channel spectrum";

+        }

+        list supportable-application-identifier {

+            key 'application-code';

+            config false;

+            uses application-identifier;

+            description "The list of supportable ApplicationIdentifiers.";

+        }

+        leaf-list supportable-modulation {

+            type modulation-technique;

+            config false;

+            description "This parameter defines the modulation used at the source";

+        }

+        container total-power-warn-threshold {

+            config false;

+            uses total-power-threshold-pac;

             description "none";

         }

-        grouping media-channel-assembly-spec {

+        description "Can read the status of the warning for the upper value that the power can reach.";

+    }

+    grouping otsi-service-interface-point-spec {

+        container otsi-capability {

+            config false;

+            uses otsi-capability-pac;

             description "none";

         }

-        grouping laser-properties-pac {

-            leaf laser-status {

-                type laser-control-status-type;

-                config false;

-                description "none";

-            }

-            leaf laser-application-type {

-                type laser-type;

-                config false;

-                description "The type of laser, its operational wavelengths, and its applications. String size 255.";

-            }

-            leaf laser-bias-current {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                config false;

-                description "The Bias current of the laser that is the medium polarization current of the laser.";

-            }

-            leaf laser-temperature {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                config false;

-                description "The temperature of the laser";

-            }

+        description "none";

+    }

+    grouping otsi-connectivity-service-end-point-spec {

+        container otsi-config {

+            uses otsi-termination-config-pac;

             description "none";

         }

-        grouping power-properties-pac {

-            leaf total-power {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "The total power at any point in a channel specified in dBm.";

-            }

-            leaf power-spectral-density {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                config false;

-                description "This describes how power of a signal  is distributed over frequency specified in nW/MHz";

-            }

-            description "Indication with severity warning raised when a total power value measured is above the threshold.";

+        description "none";

+    }

+    grouping otsi-termination-config-pac {

+        container central-frequency {

+            uses central-frequency;

+            description "The central frequency of the laser. It is the oscillation frequency of the corresponding electromagnetic wave";

         }

-        grouping total-power-threshold-pac {

-            leaf total-power-upper-warn-threshold-default {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Can read the value of the default  threshold that was set";

-            }

-            leaf total-power-upper-warn-threshold-min {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Can read the value of the lower threshold that was set";

-            }

-            leaf total-power-upper-warn-threshold-max {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Can  read the value of the upper threshold that was set";

-            }

-            leaf total-power-lower-warn-threshold-default {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Can read the value of the default  threshold that was set";

-            }

-            leaf total-power-lower-warn-threshold-max {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Can  read the value of the upper threshold that was set";

-            }

-            leaf total-power-lower-warn-threshold-min {

-                type decimal64 {

-                    fraction-digits 7;

-                }

-                description "Can read the value of the lower threshold that was set";

-            }

+        container spectrum {

+            uses spectrum-band;

             description "none";

         }

+        container application-identifier {

+            uses application-identifier;

+            description "This attribute indicates the selected Application Identifier.";

+        }

+        leaf modulation {

+            type modulation-technique;

+            description "The modulation techniqu selected at the source.";

+        }

+        leaf laser-control {

+            type laser-control-type;

+            description "Laser control can be FORCED-ON, FORCED-OFF or LASER-SHUTDOWN";

+        }

+        container transmit-power {

+            uses power-properties-pac;

+            description "Transmit power as requested.";

+        }

+        leaf total-power-warn-threshold-upper {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Allows to configure the Upper power threshold which is expected to be different from Default, but within the Min and Max values specified as OTSi SIP capability.";

+        }

+        leaf total-power-warn-threshold-lower {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Allows to configure the Lowerpower threshold which is expected to be different from Default, but within the Min and Max values specified as OTSi SIP capability.";

+        }

+        description "none";

+    }

+    grouping fec-properties-pac {

+        leaf pre-fec-ber {

+            type uint64;

+            config false;

+            description "counter: bit error rate before correction by FEC";

+        }

+        leaf post-fec-ber {

+            type uint64;

+            config false;

+            description "counter: bit error rate after correction by FEC";

+        }

+        leaf corrected-bytes {

+            type uint64;

+            config false;

+            description "Bytes corrected between those that were received corrupted";

+        }

+        leaf corrected-bits {

+            type uint64;

+            config false;

+            description "Bits corrected between those that were received corrupted";

+        }

+        leaf uncorrectable-bytes {

+            type uint64;

+            config false;

+            description "Bytes that could not be corrected by FEC";

+        }

+        leaf uncorrectable-bits {

+            type uint64;

+            config false;

+            description "Bits that could not be corrected by FEC";

+        }

+        description "none";

+    }

+    grouping media-channel-service-interface-point-spec {

+        container mc-pool {

+            config false;

+            uses media-channel-pool-capability-pac;

+            description "none";

+        }

+        description "none";

+    }

+    grouping media-channel-connectivity-service-end-point-spec {

+        container mc-config {

+            uses media-channel-config-pac;

+            description "none";

+        }

+        description "none";

+    }

+    grouping media-channel-config-pac {

+        container spectrum {

+            uses spectrum-band;

+            description "none";

+        }

+        description "none";

+    }

+    grouping media-channel-connection-end-point-spec {

+        container media-channel {

+            config false;

+            uses media-channel-properties-pac;

+            description "none";

+        }

+        description "none";

+    }

+    grouping ots-connection-end-point-spec {

+        container ots-media-channel {

+            config false;

+            uses media-channel-properties-pac;

+            description "none";

+        }

+        description "none";

+    }

+    grouping media-channel-assembly-spec {

+        description "none";

+    }

+    grouping laser-properties-pac {

+        leaf laser-status {

+            type laser-control-status-type;

+            config false;

+            description "none";

+        }

+        leaf laser-application-type {

+            type laser-type;

+            config false;

+            description "The type of laser, its operational wavelengths, and its applications. String size 255.";

+        }

+        leaf laser-bias-current {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            config false;

+            description "The Bias current of the laser that is the medium polarization current of the laser.";

+        }

+        leaf laser-temperature {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            config false;

+            description "The temperature of the laser";

+        }

+        description "none";

+    }

+    grouping power-properties-pac {

+        leaf total-power {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "The total power at any point in a channel specified in dBm.";

+        }

+        leaf power-spectral-density {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            config false;

+            description "This describes how power of a signal  is distributed over frequency specified in nW/MHz";

+        }

+        description "Indication with severity warning raised when a total power value measured is above the threshold.";

+    }

+    grouping total-power-threshold-pac {

+        leaf total-power-upper-warn-threshold-default {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Can read the value of the default  threshold that was set";

+        }

+        leaf total-power-upper-warn-threshold-min {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Can read the value of the lower threshold that was set";

+        }

+        leaf total-power-upper-warn-threshold-max {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Can  read the value of the upper threshold that was set";

+        }

+        leaf total-power-lower-warn-threshold-default {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Can read the value of the default  threshold that was set";

+        }

+        leaf total-power-lower-warn-threshold-max {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Can  read the value of the upper threshold that was set";

+        }

+        leaf total-power-lower-warn-threshold-min {

+            type decimal64 {

+                fraction-digits 7;

+            }

+            description "Can read the value of the lower threshold that was set";

+        }

+        description "none";

+    }

 

-    /***********************

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

     * package type-definitions

-    **********************/ 

-        identity PHOTONIC_LAYER_QUALIFIER {

-        	base tapi-common:LAYER_PROTOCOL_QUALIFIER;

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

+    identity PHOTONIC_LAYER_QUALIFIER {

+        base tapi-common:LAYER_PROTOCOL_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_OTSi {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_OTSiA {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_OTSiG {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_NMC {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_NMCA {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_SMC {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_SMCA {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_OCH {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_OMS {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    identity PHOTONIC_LAYER_QUALIFIER_OTS {

+        base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    grouping application-identifier {

+        leaf application-identifier-type {

+            type application-identifier-type;

+            description "The ITU-T recommendation which defines the application code format.";

+        }

+        leaf application-code {

+            type string;

             description "none";

         }

-        identity PHOTONIC_LAYER_QUALIFIER_OTSi {

-            base PHOTONIC_LAYER_QUALIFIER;

+        description "The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";

+    }

+    grouping central-frequency {

+        container frequency-constraint {

+            uses frequency-constraint;

             description "none";

         }

-        identity PHOTONIC_LAYER_QUALIFIER_OTSiA {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

+        leaf central-frequency {

+            type uint64;

+            description "The central frequency of the laser specified in MHz. It is the oscillation frequency of the corresponding electromagnetic wave. ";

         }

-        identity PHOTONIC_LAYER_QUALIFIER_OTSiG {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        identity PHOTONIC_LAYER_QUALIFIER_NMC {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        identity PHOTONIC_LAYER_QUALIFIER_NMCA {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        identity PHOTONIC_LAYER_QUALIFIER_SMC {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        identity PHOTONIC_LAYER_QUALIFIER_SMCA {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        identity PHOTONIC_LAYER_QUALIFIER_OCH {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        identity PHOTONIC_LAYER_QUALIFIER_OMS {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        identity PHOTONIC_LAYER_QUALIFIER_OTS {

-            base PHOTONIC_LAYER_QUALIFIER;

-            description "none";

-        }

-        grouping application-identifier {

-            leaf application-identifier-type {

-                type application-identifier-type;

-                description "The ITU-T recommendation which defines the application code format.";

-            }

-            leaf application-code {

-                type string;

+        description "This data-type holds the central frequency information as well frequency constraints in terms of GridType ( FIXED grid (DWDM or CWDM) or FLEX grid) and AdjustmentGranularity.";

+    }

+    typedef optical-routing-strategy {

+        type enumeration {

+            enum OPTIMAL_OSNR {

                 description "none";

             }

-            description "The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";

-        }

-        grouping central-frequency {

-            container frequency-constraint {

-                uses frequency-constraint;

+            enum NO_RELAY {

                 description "none";

             }

-            leaf central-frequency {

-                type uint64;

-                description "The central frequency of the laser specified in MHz. It is the oscillation frequency of the corresponding electromagnetic wave. ";

-            }

-            description "This data-type holds the central frequency information as well frequency constraints in terms of GridType ( FIXED grid (DWDM or CWDM) or FLEX grid) and AdjustmentGranularity.";

-        }

-        typedef optical-routing-strategy {

-            type enumeration {

-                enum OPTIMAL_OSNR {

-                    description "none";

-                }

-                enum NO_RELAY {

-                    description "none";

-                }

-                enum MIN_RELAY {

-                    description "none";

-                }

-                enum PREFERRED_NO_CHANGE_WAVELENGTH_AS_RESTORE {

-                    description "none";

-                }

-                enum PREFERRED_NO_SKIPPING_WAVELENGTH {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef application-identifier-type {

-            type enumeration {

-                enum PROPRIETARY {

-                    description "none";

-                }

-                enum ITUT_G959_1 {

-                    description "none";

-                }

-                enum ITUT_G698_1 {

-                    description "none";

-                }

-                enum ITUT_G698_2 {

-                    description "none";

-                }

-                enum ITUT_G696_1 {

-                    description "none";

-                }

-                enum ITUT_G695 {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef grid-type {

-            type enumeration {

-                enum DWDM {

-                    description "Fixed frequency grid in C & L bands as specified in ITU-T G.694.1

-                        ";

-                }

-                enum CWDM {

-                    description "Fixed frequency grid as specified in ITU-T G.694.2";

-                }

-                enum FLEX {

-                    description "Flexible frequency grid as specified in ITU-T G.694.1. In this case,

-                        - the allowed frequency slots have a nominal central frequency (in THz) defined by:

-                        193.1 + n × 0.00625 where n is a positive or negative integer including 0 and 0.00625 is the nominal central frequency granularity in THz

-                        - and a slot width defined by:

-                        12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.

-                        Any combination of frequency slots is allowed as long as no two frequency slots overlap.";

-                }

-                enum GRIDLESS {

-                    description "none";

-                }

-                enum UNSPECIFIED {

-                    description "Unspecified/proprietary frequency grid";

-                }

-            }

-            description "The frequency grid standard that specify reference set of frequencies used to denote allowed nominal central frequencies that may be used for defining applications.";

-        }

-        typedef adjustment-granularity {

-            type enumeration {

-                enum G_100GHZ {

-                    description "100000 MHz";

-                }

-                enum G_50GHZ {

-                    description "50000 MHz";

-                }

-                enum G_25GHZ {

-                    description "25000 MHz";

-                }

-                enum G_12_5GHZ {

-                    description "12500 MHz";

-                }

-                enum G_6_25GHZ {

-                    description "6250 MHz";

-                }

-                enum G_3_125GHZ {

-                    description "3125 MHz";

-                }

-                enum UNCONSTRAINED {

-                    description "none";

-                }

-            }

-            description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency";

-        }

-        grouping spectrum-band {

-            leaf upper-frequency {

-                type uint64;

-                description "The upper frequency bound of the media channel spectrum specified in MHz";

-            }

-            leaf lower-frequency {

-                type uint64;

-                description "The lower frequency bound of the media channel spectrum specified in MHz";

-            }

-            container frequency-constraint {

-                uses frequency-constraint;

+            enum MIN_RELAY {

                 description "none";

             }

-            description "This data-type holds the spectrum information in termsof upper/lower frequency directly or optionally the information to determin this in terms of the nominal central frequency and spectral width for a FIXED grid (DWDM or CWDM) and FLEX grid type systems.";

-        }

-        typedef modulation-technique {

-            type enumeration {

-                enum RZ {

-                    description "none";

-                }

-                enum NRZ {

-                    description "none";

-                }

-                enum BPSK {

-                    description "none";

-                }

-                enum DPSK {

-                    description "none";

-                }

-                enum QPSK {

-                    description "none";

-                }

-                enum 8QAM {

-                    description "none";

-                }

-                enum 16QAM {

-                    description "none";

-                }

-                enum PAM4 {

-                    description "none";

-                }

-                enum PAM8 {

-                    description "none";

-                }

-                enum UNDEFINED {

-                    description "none";

-                }

+            enum PREFERRED_NO_CHANGE_WAVELENGTH_AS_RESTORE {

+                description "none";

             }

+            enum PREFERRED_NO_SKIPPING_WAVELENGTH {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef application-identifier-type {

+        type enumeration {

+            enum PROPRIETARY {

+                description "none";

+            }

+            enum ITUT_G959_1 {

+                description "none";

+            }

+            enum ITUT_G698_1 {

+                description "none";

+            }

+            enum ITUT_G698_2 {

+                description "none";

+            }

+            enum ITUT_G696_1 {

+                description "none";

+            }

+            enum ITUT_G695 {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef grid-type {

+        type enumeration {

+            enum DWDM {

+                description "Fixed frequency grid in C & L bands as specified in ITU-T G.694.1

+                    ";

+            }

+            enum CWDM {

+                description "Fixed frequency grid as specified in ITU-T G.694.2";

+            }

+            enum FLEX {

+                description "Flexible frequency grid as specified in ITU-T G.694.1. In this case,

+                    - the allowed frequency slots have a nominal central frequency (in THz) defined by:

+                    193.1 + n × 0.00625 where n is a positive or negative integer including 0 and 0.00625 is the nominal central frequency granularity in THz

+                    - and a slot width defined by:

+                    12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.

+                    Any combination of frequency slots is allowed as long as no two frequency slots overlap.";

+            }

+            enum GRIDLESS {

+                description "none";

+            }

+            enum UNSPECIFIED {

+                description "Unspecified/proprietary frequency grid";

+            }

+        }

+        description "The frequency grid standard that specify reference set of frequencies used to denote allowed nominal central frequencies that may be used for defining applications.";

+    }

+    typedef adjustment-granularity {

+        type enumeration {

+            enum G_100GHZ {

+                description "100000 MHz";

+            }

+            enum G_50GHZ {

+                description "50000 MHz";

+            }

+            enum G_25GHZ {

+                description "25000 MHz";

+            }

+            enum G_12_5GHZ {

+                description "12500 MHz";

+            }

+            enum G_6_25GHZ {

+                description "6250 MHz";

+            }

+            enum G_3_125GHZ {

+                description "3125 MHz";

+            }

+            enum UNCONSTRAINED {

+                description "none";

+            }

+        }

+        description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency";

+    }

+    grouping spectrum-band {

+        leaf upper-frequency {

+            type uint64;

+            description "The upper frequency bound of the media channel spectrum specified in MHz";

+        }

+        leaf lower-frequency {

+            type uint64;

+            description "The lower frequency bound of the media channel spectrum specified in MHz";

+        }

+        container frequency-constraint {

+            uses frequency-constraint;

             description "none";

         }

-        typedef laser-type {

-            type enumeration {

-                enum PUMP {

-                    description "none";

-                }

-                enum MODULATED {

-                    description "none";

-                }

-                enum PULSE {

-                    description "none";

-                }

+        description "This data-type holds the spectrum information in termsof upper/lower frequency directly or optionally the information to determin this in terms of the nominal central frequency and spectral width for a FIXED grid (DWDM or CWDM) and FLEX grid type systems.";

+    }

+    typedef modulation-technique {

+        type enumeration {

+            enum RZ {

+                description "none";

             }

-            description "none";

+            enum NRZ {

+                description "none";

+            }

+            enum BPSK {

+                description "none";

+            }

+            enum DPSK {

+                description "none";

+            }

+            enum QPSK {

+                description "none";

+            }

+            enum 8QAM {

+                description "none";

+            }

+            enum 16QAM {

+                description "none";

+            }

+            enum PAM4 {

+                description "none";

+            }

+            enum PAM8 {

+                description "none";

+            }

+            enum UNDEFINED {

+                description "none";

+            }

         }

-        typedef photonic-layer-qualifier {

-            type identityref {

-                base PHOTONIC_LAYER_QUALIFIER;

+        description "none";

+    }

+    typedef laser-type {

+        type enumeration {

+            enum PUMP {

+                description "none";

             }

-            description "none";

+            enum MODULATED {

+                description "none";

+            }

+            enum PULSE {

+                description "none";

+            }

         }

-        typedef laser-control-type {

-            type enumeration {

-                enum FORCED-ON {

-                    description "none";

-                }

-                enum FORCED-OFF {

-                    description "none";

-                }

-                enum AUTOMATIC-LASER-SHUTDOWN {

-                    description "none";

-                }

-                enum UNDEFINED {

-                    description "none";

-                }

-            }

-            description "none";

+        description "none";

+    }

+    typedef photonic-layer-qualifier {

+        type identityref {

+            base PHOTONIC_LAYER_QUALIFIER;

         }

-        typedef laser-control-status-type {

-            type enumeration {

-                enum ON {

-                    description "none";

-                }

-                enum OFF {

-                    description "none";

-                }

-                enum PULSING {

-                    description "none";

-                }

-                enum UNDEFINED {

-                    description "none";

-                }

+        description "none";

+    }

+    typedef laser-control-type {

+        type enumeration {

+            enum FORCED-ON {

+                description "none";

             }

-            description "none";

+            enum FORCED-OFF {

+                description "none";

+            }

+            enum AUTOMATIC-LASER-SHUTDOWN {

+                description "none";

+            }

+            enum UNDEFINED {

+                description "none";

+            }

         }

-        grouping frequency-constraint {

-            leaf adjustment-granularity {

-                type adjustment-granularity;

-                description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";

+        description "none";

+    }

+    typedef laser-control-status-type {

+        type enumeration {

+            enum ON {

+                description "none";

             }

-            leaf grid-type {

-                type grid-type;

-                description "Specifies the frequency grid standard used to determine the nominal central frequency and frequency slot width";

+            enum OFF {

+                description "none";

             }

-            description "This data-type holds the frequency constraint information in terms of GridType ( FIXED grid (DWDM or CWDM) or FLEX grid) and AdjustmentGranularity.";

+            enum PULSING {

+                description "none";

+            }

+            enum UNDEFINED {

+                description "none";

+            }

         }

-

+        description "none";

+    }

+    grouping frequency-constraint {

+        leaf adjustment-granularity {

+            type adjustment-granularity;

+            description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";

+        }

+        leaf grid-type {

+            type grid-type;

+            description "Specifies the frequency grid standard used to determine the nominal central frequency and frequency slot width";

+        }

+        description "This data-type holds the frequency constraint information in terms of GridType ( FIXED grid (DWDM or CWDM) or FLEX grid) and AdjustmentGranularity.";

+    }

 }

diff --git a/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang b/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
old mode 100644
new mode 100755
index adf6ba0..df459aa
--- a/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
@@ -29,28 +29,28 @@
             YANG models included in this release are not backward compatible with previous TAPI releases.

           - 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
+        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.
+        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
+        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.
+        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
+        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.
+        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
+        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" {

@@ -61,10 +61,9 @@
         description "Augments the base TAPI Context with TopologyService information";

     }

 

-    /*************************

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

     * definitions of refrences

-    *************************/

-

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

     grouping topology-ref {

         leaf topology-uuid {

             type leafref {

@@ -74,7 +73,6 @@
         }

         description "none";

     }

-

     grouping link-ref {

         uses topology-ref;

         leaf link-uuid {

@@ -85,7 +83,6 @@
         }

         description "none";

     }

-

     grouping node-ref {

         uses topology-ref;

         leaf node-uuid {

@@ -96,7 +93,6 @@
         }

         description "none";

     }

-

     grouping node-edge-point-ref {

         uses node-ref;

         leaf node-edge-point-uuid {

@@ -107,7 +103,6 @@
         }

         description "none";

     }

-

     grouping node-rule-group-ref {

         uses node-ref;

         leaf node-rule-group-uuid {

@@ -119,597 +114,596 @@
         description "none";

     }

 

-    /***********************

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

     * package object-classes

-    **********************/ 

-        grouping link {

-            list node-edge-point {

-                uses node-edge-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid';

-                config false;

-                min-elements 2;

-                description "none";

-            }

-            leaf-list layer-protocol-name {

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

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            leaf direction {

-                type tapi-common:forwarding-direction;

-                config false;

-                description "The directionality of the Link. 

-                    Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL). 

-                    Is not present in more complex cases.";

-            }

-            container resilience-type {

-                uses resilience-type;

-                description "none";

-            }

-            uses tapi-common:resource-spec;

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

-            uses tapi-common:capacity-pac;

-            uses transfer-cost-pac;

-            uses transfer-integrity-pac;

-            uses transfer-timing-pac;

-            uses risk-parameter-pac;

-            uses validation-pac;

-            uses layer-protocol-transition-pac;

-            description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";

-        }

-        grouping node {

-            list owned-node-edge-point {

-                key 'uuid';

-                config false;

-                uses node-edge-point;

-                description "none";

-            }

-            list aggregated-node-edge-point {

-            	uses node-edge-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid';

-                config false;

-                description "none";

-            }

-            list node-rule-group {

-                key 'uuid';

-                uses node-rule-group;

-                description "none";

-            }

-            container encap-topology {

-                uses topology-ref;

-                config false;

-                description "none";

-            }

-            leaf-list layer-protocol-name {

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

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            uses tapi-common:resource-spec;

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

-            uses tapi-common:capacity-pac;

-            uses transfer-cost-pac;

-            uses transfer-integrity-pac;

-            uses transfer-timing-pac;

-            description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding. 

-                At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";

-        }

-        grouping topology {

-            list node {

-                key 'uuid';

-                config false;

-                uses node;

-                description "none";

-            }

-            list link {

-                key 'uuid';

-                config false;

-                uses link;

-                description "none";

-            }

-            leaf-list layer-protocol-name {

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

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            uses tapi-common:resource-spec;

-            description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding. 

-                At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";

-        }

-        grouping layer-protocol-transition-pac {

-            leaf-list transitioned-layer-protocol-name {

-                type string;

-                min-elements 2;

-                description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";

-            }

-            description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation. 

-                This abstraction is relevant when considering multi-layer routing. 

-                The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.

-                This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.

-                Links that included details in this Pac are often referred to as Transitional Links.";

-        }

-        grouping node-edge-point {

-            leaf layer-protocol-name {

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

-                config false;

-                description "none";

-            }

-            leaf-list supported-cep-layer-protocol-qualifier {

-                type tapi-common:layer-protocol-qualifier;

-                min-elements 1;

-                description "none";

-            }

-            list aggregated-node-edge-point {

-            	uses node-edge-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid';

-                config false;

-                description "none";

-            }

-            list mapped-service-interface-point {

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

-                key 'service-interface-point-uuid';

-                config false;

-                description "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental";

-            }

-            leaf link-port-direction {

-                type tapi-common:port-direction;

-                config false;

-                description "The orientation of defined flow at the LinkEnd.";

-            }

-            leaf link-port-role {

-                type tapi-common:port-role;

-                config false;

-                description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root)  in the context of the Link with respect to the Link function. ";

-            }

-            uses tapi-common:resource-spec;

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

-            uses tapi-common:termination-pac;

-            uses tapi-common:capacity-pac;

-            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 

-                The structure of LTP supports all transport protocols including circuit and packet forms.";

-        }

-        grouping risk-parameter-pac {

-            list risk-characteristic {

-                key 'risk-characteristic-name';

-                config false;

-                min-elements 1;

-                uses risk-characteristic;

-                description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";

-            }

-            description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization. 

-                The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.

-                A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.

-                The realization can be partitioned into segments which have some relevant common failure modes.

-                There is a risk of failure/degradation of each segment of the underlying realization.

-                Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).

-                Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.

-                Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.

-                The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.

-                A segment has one or more risk characteristic.

-                Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.

-                Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";

-        }

-        grouping transfer-cost-pac {

-            list cost-characteristic {

-                key 'cost-name';

-                config false;

-                min-elements 1;

-                uses cost-characteristic;

-                description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";

-            }

-            description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization. 

-                They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity

-                There may be many perspectives from which cost may be considered  for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms. 

-                Using an entity will incur a cost. ";

-        }

-        grouping transfer-integrity-pac {

-            leaf error-characteristic {

-                type string;

-                config false;

-                description "Describes the degree to which the signal propagated can be errored. 

-                    Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";

-            }

-            leaf loss-characteristic {

-                type string;

-                config false;

-                description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.

-                    Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";

-            }

-            leaf repeat-delivery-characteristic {

-                type string;

-                config false;

-                description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). 

-                    It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";

-            }

-            leaf delivery-order-characteristic {

-                type string;

-                config false;

-                description "Describes the degree to which packets will be delivered out of sequence.

-                    Does not apply to TDM as the TDM protocols maintain strict order.";

-            }

-            leaf unavailable-time-characteristic {

-                type string;

-                config false;

-                description "Describes the duration for which there may be no valid signal propagated.";

-            }

-            leaf server-integrity-process-characteristic {

-                type string;

-                config false;

-                description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";

-            }

-            description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.

-                It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.

-                Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";

-        }

-        grouping transfer-timing-pac {

-            list latency-characteristic {

-                key 'traffic-property-name';

-                config false;

-                min-elements 1;

-                uses latency-characteristic;

-                description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";

-            }

-            description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";

-        }

-        grouping validation-pac {

-            list validation-mechanism {

-                key 'validation-mechanism';

-                config false;

-                min-elements 1;

-                uses validation-mechanism;

-                description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";

-            }

-            description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";

-        }

-        grouping network-topology-service {

-            list topology {

-                uses topology-ref;

-                key 'topology-uuid';

-                config false;

-                description "none";

-            }

-            uses tapi-common:service-spec;

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

+    grouping link {

+        list node-edge-point {

+            uses node-edge-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid';

+            config false;

+            min-elements 2;

             description "none";

         }

-        grouping topology-context {

-            container nw-topology-service {

-                config false;

-                uses network-topology-service;

+        leaf-list layer-protocol-name {

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

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        leaf direction {

+            type tapi-common:forwarding-direction;

+            config false;

+            description "The directionality of the Link.

+                Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL).

+                Is not present in more complex cases.";

+        }

+        container resilience-type {

+            uses resilience-type;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

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

+        uses tapi-common:capacity-pac;

+        uses transfer-cost-pac;

+        uses transfer-integrity-pac;

+        uses transfer-timing-pac;

+        uses risk-parameter-pac;

+        uses validation-pac;

+        uses layer-protocol-transition-pac;

+        description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";

+    }

+    grouping node {

+        list owned-node-edge-point {

+            key 'uuid';

+            config false;

+            uses node-edge-point;

+            description "none";

+        }

+        list aggregated-node-edge-point {

+            uses node-edge-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid';

+            config false;

+            description "none";

+        }

+        list node-rule-group {

+            key 'uuid';

+            uses node-rule-group;

+            description "none";

+        }

+        container encap-topology {

+            uses topology-ref;

+            config false;

+            description "none";

+        }

+        leaf-list layer-protocol-name {

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

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

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

+        uses tapi-common:capacity-pac;

+        uses transfer-cost-pac;

+        uses transfer-integrity-pac;

+        uses transfer-timing-pac;

+        description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.

+            At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";

+    }

+    grouping topology {

+        list node {

+            key 'uuid';

+            config false;

+            uses node;

+            description "none";

+        }

+        list link {

+            key 'uuid';

+            config false;

+            uses link;

+            description "none";

+        }

+        leaf-list layer-protocol-name {

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

+            config false;

+            min-elements 1;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

+        description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.

+            At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";

+    }

+    grouping layer-protocol-transition-pac {

+        leaf-list transitioned-layer-protocol-name {

+            type string;

+            min-elements 2;

+            description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";

+        }

+        description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation.

+            This abstraction is relevant when considering multi-layer routing. 

+            The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.

+            This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.

+            Links that included details in this Pac are often referred to as Transitional Links.";

+    }

+    grouping node-edge-point {

+        leaf layer-protocol-name {

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

+            config false;

+            description "none";

+        }

+        leaf-list supported-cep-layer-protocol-qualifier {

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

+            min-elements 1;

+            description "none";

+        }

+        list aggregated-node-edge-point {

+            uses node-edge-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid';

+            config false;

+            description "none";

+        }

+        list mapped-service-interface-point {

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

+            key 'service-interface-point-uuid';

+            config false;

+            description "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental";

+        }

+        leaf link-port-direction {

+            type tapi-common:port-direction;

+            config false;

+            description "The orientation of defined flow at the LinkEnd.";

+        }

+        leaf link-port-role {

+            type tapi-common:port-role;

+            config false;

+            description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root)  in the context of the Link with respect to the Link function. ";

+        }

+        uses tapi-common:resource-spec;

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

+        uses tapi-common:termination-pac;

+        uses tapi-common:capacity-pac;

+        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.

+            The structure of LTP supports all transport protocols including circuit and packet forms.";

+    }

+    grouping risk-parameter-pac {

+        list risk-characteristic {

+            key 'risk-characteristic-name';

+            config false;

+            min-elements 1;

+            uses risk-characteristic;

+            description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";

+        }

+        description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization.

+            The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.

+            A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.

+            The realization can be partitioned into segments which have some relevant common failure modes.

+            There is a risk of failure/degradation of each segment of the underlying realization.

+            Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).

+            Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.

+            Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.

+            The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.

+            A segment has one or more risk characteristic.

+            Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.

+            Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";

+    }

+    grouping transfer-cost-pac {

+        list cost-characteristic {

+            key 'cost-name';

+            config false;

+            min-elements 1;

+            uses cost-characteristic;

+            description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";

+        }

+        description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization.

+            They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity

+            There may be many perspectives from which cost may be considered  for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms.

+            Using an entity will incur a cost. ";

+    }

+    grouping transfer-integrity-pac {

+        leaf error-characteristic {

+            type string;

+            config false;

+            description "Describes the degree to which the signal propagated can be errored.

+                Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";

+        }

+        leaf loss-characteristic {

+            type string;

+            config false;

+            description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.

+                Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";

+        }

+        leaf repeat-delivery-characteristic {

+            type string;

+            config false;

+            description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example).

+                It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";

+        }

+        leaf delivery-order-characteristic {

+            type string;

+            config false;

+            description "Describes the degree to which packets will be delivered out of sequence.

+                Does not apply to TDM as the TDM protocols maintain strict order.";

+        }

+        leaf unavailable-time-characteristic {

+            type string;

+            config false;

+            description "Describes the duration for which there may be no valid signal propagated.";

+        }

+        leaf server-integrity-process-characteristic {

+            type string;

+            config false;

+            description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";

+        }

+        description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.

+            It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.

+            Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";

+    }

+    grouping transfer-timing-pac {

+        list latency-characteristic {

+            key 'traffic-property-name';

+            config false;

+            min-elements 1;

+            uses latency-characteristic;

+            description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";

+        }

+        description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";

+    }

+    grouping validation-pac {

+        list validation-mechanism {

+            key 'validation-mechanism';

+            config false;

+            min-elements 1;

+            uses validation-mechanism;

+            description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";

+        }

+        description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";

+    }

+    grouping network-topology-service {

+        list topology {

+            uses topology-ref;

+            key 'topology-uuid';

+            config false;

+            description "none";

+        }

+        uses tapi-common:service-spec;

+        description "none";

+    }

+    grouping topology-context {

+        container nw-topology-service {

+            config false;

+            uses network-topology-service;

+            description "none";

+        }

+        list topology {

+            key 'uuid';

+            config false;

+            uses topology;

+            description "none";

+        }

+        description "none";

+    }

+    grouping inter-rule-group {

+        list rule {

+            key 'local-id';

+            min-elements 1;

+            uses rule;

+            description "none";

+        }

+        list associated-node-rule-group {

+            uses node-rule-group-ref;

+            key 'topology-uuid node-uuid node-rule-group-uuid';

+            min-elements 2;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

+        uses tapi-common:capacity-pac;

+        uses transfer-cost-pac;

+        uses transfer-timing-pac;

+        uses risk-parameter-pac;

+        description "none";

+    }

+    grouping node-rule-group {

+        list rule {

+            key 'local-id';

+            min-elements 1;

+            uses rule;

+            description "none";

+        }

+        list node-edge-point {

+            uses node-edge-point-ref;

+            key 'topology-uuid node-uuid node-edge-point-uuid';

+            min-elements 1;

+            description "none";

+        }

+        list composed-rule-group {

+            uses node-rule-group-ref;

+            key 'topology-uuid node-uuid node-rule-group-uuid';

+            description "none";

+        }

+        list inter-rule-group {

+            key 'uuid';

+            uses inter-rule-group;

+            description "none";

+        }

+        uses tapi-common:resource-spec;

+        uses tapi-common:capacity-pac;

+        uses transfer-cost-pac;

+        uses transfer-timing-pac;

+        uses risk-parameter-pac;

+        description "none";

+    }

+    grouping rule {

+        leaf rule-type {

+            type rule-type;

+            description "none";

+        }

+        leaf forwarding-rule {

+            type forwarding-rule;

+            description "none";

+        }

+        leaf override-priority {

+            type uint64;

+            description "none";

+        }

+        uses tapi-common:local-class;

+        description "none";

+    }

+

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

+    * package type-definitions

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

+    grouping cost-characteristic {

+        leaf cost-name {

+            type string;

+            description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";

+        }

+        leaf cost-value {

+            type string;

+            description "The specific cost.";

+        }

+        leaf cost-algorithm {

+            type string;

+            description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";

+        }

+        description "The information for a particular cost characteristic.";

+    }

+    grouping latency-characteristic {

+        leaf traffic-property-name {

+            type string;

+            description "The identifier of the specific traffic property to which the queuing latency applies.";

+        }

+        leaf fixed-latency-characteristic {

+            type string;

+            config false;

+            description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";

+        }

+        leaf queing-latency-characteristic {

+            type string;

+            description "The specific queuing latency for the traffic property.";

+        }

+        leaf jitter-characteristic {

+            type string;

+            config false;

+            description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.

+                Applies to TDM systems (and not packet).";

+        }

+        leaf wander-characteristic {

+            type string;

+            config false;

+            description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.

+                Applies to TDM systems (and not packet).";

+        }

+        description "Provides information on latency characteristic for a particular stated trafficProperty.";

+    }

+    grouping risk-characteristic {

+        leaf risk-characteristic-name {

+            type string;

+            description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness.

+                For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).

+                Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";

+        }

+        leaf-list risk-identifier-list {

+            type string;

+            min-elements 1;

+            description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";

+        }

+        description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";

+    }

+    grouping validation-mechanism {

+        leaf validation-mechanism {

+            type string;

+            description "Name of mechanism used to validate adjacency";

+        }

+        leaf layer-protocol-adjacency-validated {

+            type string;

+            description "State of validatiion";

+        }

+        leaf validation-robustness {

+            type string;

+            description "Quality of validation (i.e. how likely is the stated validation to be invalid)";

+        }

+        description "Identifies the validation mechanism and describes the characteristics of that mechanism";

+    }

+    typedef forwarding-rule {

+        type enumeration {

+            enum MAY_FORWARD_ACROSS_GROUP {

                 description "none";

             }

-            list topology {

-                key 'uuid';

-                config false;

+            enum MUST_FORWARD_ACROSS_GROUP {

+                description "none";

+            }

+            enum CANNOT_FORWARD_ACROSS_GROUP {

+                description "none";

+            }

+            enum NO_STATEMENT_ON_FORWARDING {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef rule-type {

+        type enumeration {

+            enum FORWARDING {

+                description "none";

+            }

+            enum CAPACITY {

+                description "none";

+            }

+            enum COST {

+                description "none";

+            }

+            enum TIMING {

+                description "none";

+            }

+            enum RISK {

+                description "none";

+            }

+            enum GROUPING {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    grouping resilience-type {

+        leaf restoration-policy {

+            type restoration-policy;

+            description "none";

+        }

+        leaf protection-type {

+            type protection-type;

+            description "none";

+        }

+        description "none";

+    }

+    typedef restoration-policy {

+        type enumeration {

+            enum PER_DOMAIN_RESTORATION {

+                description "none";

+            }

+            enum END_TO_END_RESTORATION {

+                description "none";

+            }

+            enum NA {

+                description "none";

+            }

+        }

+        description "none";

+    }

+    typedef protection-type {

+        type enumeration {

+            enum NO_PROTECTON {

+                description "none";

+            }

+            enum ONE_PLUS_ONE_PROTECTION {

+                description "none";

+            }

+            enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {

+                description "none";

+            }

+            enum PERMANENT_ONE_PLUS_ONE_PROTECTION {

+                description "none";

+            }

+            enum ONE_FOR_ONE_PROTECTION {

+                description "none";

+            }

+            enum DYNAMIC_RESTORATION {

+                description "none";

+            }

+            enum PRE_COMPUTED_RESTORATION {

+                description "none";

+            }

+        }

+        description "none";

+    }

+

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

+    * package interfaces

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

+    rpc get-topology-details {

+        description "none";

+        input {

+            leaf topology-id-or-name {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container topology {

                 uses topology;

                 description "none";

             }

-            description "none";

         }

-        grouping inter-rule-group {

-            list rule {

-                key 'local-id';

-                min-elements 1;

-                uses rule;

+    }

+    rpc get-node-details {

+        description "none";

+        input {

+            leaf topology-id-or-name {

+                type string;

                 description "none";

             }

-            list associated-node-rule-group {

-                uses node-rule-group-ref;

-                key 'topology-uuid node-uuid node-rule-group-uuid';

-                min-elements 2;

+            leaf node-id-or-name {

+                type string;

                 description "none";

             }

-            uses tapi-common:resource-spec;

-            uses tapi-common:capacity-pac;

-            uses transfer-cost-pac;

-            uses transfer-timing-pac;

-            uses risk-parameter-pac;

-            description "none";

         }

-        grouping node-rule-group {

-            list rule {

-                key 'local-id';

-                min-elements 1;

-                uses rule;

+        output {

+            container node {

+                uses node;

                 description "none";

             }

-            list node-edge-point {

-            	uses node-edge-point-ref;

-                key 'topology-uuid node-uuid node-edge-point-uuid';

-                min-elements 1;

+        }

+    }

+    rpc get-node-edge-point-details {

+        description "none";

+        input {

+            leaf topology-id-or-name {

+                type string;

                 description "none";

             }

-            list composed-rule-group {

-                uses node-rule-group-ref;

-                key 'topology-uuid node-uuid node-rule-group-uuid';

+            leaf node-id-or-name {

+                type string;

                 description "none";

             }

-            list inter-rule-group {

+            leaf ep-id-or-name {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container node-edge-point {

+                uses node-edge-point;

+                description "none";

+            }

+        }

+    }

+    rpc get-link-details {

+        description "none";

+        input {

+            leaf topology-id-or-name {

+                type string;

+                description "none";

+            }

+            leaf link-id-or-name {

+                type string;

+                description "none";

+            }

+        }

+        output {

+            container link {

+                uses link;

+                description "none";

+            }

+        }

+    }

+    rpc get-topology-list {

+        description "none";

+        output {

+            list topology {

                 key 'uuid';

-                uses inter-rule-group;

+                uses topology;

                 description "none";

             }

-            uses tapi-common:resource-spec;

-            uses tapi-common:capacity-pac;

-            uses transfer-cost-pac;

-            uses transfer-timing-pac;

-            uses risk-parameter-pac;

-            description "none";

         }

-        grouping rule {

-            leaf rule-type {

-                type rule-type;

-                description "none";

-            }

-            leaf forwarding-rule {

-                type forwarding-rule;

-                description "none";

-            }

-            leaf override-priority {

-                type uint64;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "none";

-        }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        grouping cost-characteristic {

-            leaf cost-name {

-                type string;

-                description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";

-            }

-            leaf cost-value {

-                type string;

-                description "The specific cost.";

-            }

-            leaf cost-algorithm {

-                type string;

-                description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";

-            }

-            description "The information for a particular cost characteristic.";

-        }

-        grouping latency-characteristic {

-            leaf traffic-property-name {

-                type string;

-                description "The identifier of the specific traffic property to which the queuing latency applies.";

-            }

-            leaf fixed-latency-characteristic {

-                type string;

-                config false;

-                description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";

-            }

-            leaf queing-latency-characteristic {

-                type string;

-                description "The specific queuing latency for the traffic property.";

-            }

-            leaf jitter-characteristic {

-                type string;

-                config false;

-                description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.

-                    Applies to TDM systems (and not packet).";

-            }

-            leaf wander-characteristic {

-                type string;

-                config false;

-                description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.

-                    Applies to TDM systems (and not packet).";

-            }

-            description "Provides information on latency characteristic for a particular stated trafficProperty.";

-        }

-        grouping risk-characteristic {

-            leaf risk-characteristic-name {

-                type string;

-                description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness. 

-                    For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).

-                    Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";

-            }

-            leaf-list risk-identifier-list {

-                type string;

-                min-elements 1;

-                description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";

-            }

-            description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";

-        }

-        grouping validation-mechanism {

-            leaf validation-mechanism {

-                type string;

-                description "Name of mechanism used to validate adjacency";

-            }

-            leaf layer-protocol-adjacency-validated {

-                type string;

-                description "State of validatiion";

-            }

-            leaf validation-robustness {

-                type string;

-                description "Quality of validation (i.e. how likely is the stated validation to be invalid)";

-            }

-            description "Identifies the validation mechanism and describes the characteristics of that mechanism";

-        }

-        typedef forwarding-rule {

-            type enumeration {

-                enum MAY_FORWARD_ACROSS_GROUP {

-                    description "none";

-                }

-                enum MUST_FORWARD_ACROSS_GROUP {

-                    description "none";

-                }

-                enum CANNOT_FORWARD_ACROSS_GROUP {

-                    description "none";

-                }

-                enum NO_STATEMENT_ON_FORWARDING {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef rule-type {

-            type enumeration {

-                enum FORWARDING {

-                    description "none";

-                }

-                enum CAPACITY {

-                    description "none";

-                }

-                enum COST {

-                    description "none";

-                }

-                enum TIMING {

-                    description "none";

-                }

-                enum RISK {

-                    description "none";

-                }

-                enum GROUPING {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        grouping resilience-type {

-            leaf restoration-policy {

-                type restoration-policy;

-                description "none";

-            }

-            leaf protection-type {

-                type protection-type;

-                description "none";

-            }

-            description "none";

-        }

-        typedef restoration-policy {

-            type enumeration {

-                enum PER_DOMAIN_RESTORATION {

-                    description "none";

-                }

-                enum END_TO_END_RESTORATION {

-                    description "none";

-                }

-                enum NA {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef protection-type {

-            type enumeration {

-                enum NO_PROTECTON {

-                    description "none";

-                }

-                enum ONE_PLUS_ONE_PROTECTION {

-                    description "none";

-                }

-                enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {

-                    description "none";

-                }

-                enum PERMANENT_ONE_PLUS_ONE_PROTECTION {

-                    description "none";

-                }

-                enum ONE_FOR_ONE_PROTECTION {

-                    description "none";

-                }

-                enum DYNAMIC_RESTORATION {

-                    description "none";

-                }

-                enum PRE_COMPUTED_RESTORATION {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-

-    /***********************

-    * package interfaces

-    **********************/ 

-        rpc get-topology-details {

-            description "none";

-            input {

-                leaf topology-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container topology {

-                    uses topology;

-                    description "none";

-                }

-            }

-        }

-        rpc get-node-details {

-            description "none";

-            input {

-                leaf topology-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf node-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container node {

-                    uses node;

-                    description "none";

-                }

-            }

-        }

-        rpc get-node-edge-point-details {

-            description "none";

-            input {

-                leaf topology-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf node-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf ep-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container node-edge-point {

-                    uses node-edge-point;

-                    description "none";

-                }

-            }

-        }

-        rpc get-link-details {

-            description "none";

-            input {

-                leaf topology-id-or-name {

-                    type string;

-                    description "none";

-                }

-                leaf link-id-or-name {

-                    type string;

-                    description "none";

-                }

-            }

-            output {

-                container link {

-                    uses link;

-                    description "none";

-                }

-            }

-        }

-        rpc get-topology-list {

-            description "none";

-            output {

-