ONOS-7419 Compare and update TAPI yang currently in ONOS with TAPI 2.0 release

Change-Id: I009d4b9da4eea359a4ce164fd425769f68743c6b
diff --git a/models/tapi/src/main/yang/tapi-common@2017-05-31.yang b/models/tapi/src/main/yang/tapi-common@2017-05-31.yang
index fa7145e..b52896e 100644
--- a/models/tapi/src/main/yang/tapi-common@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-common@2017-05-31.yang
@@ -47,27 +47,6 @@
             }

             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 layer-protocol {

-            leaf layer-protocol-name {

-                type layer-protocol-name;

-                description "Indicate the specific layer-protocol described by the LayerProtocol entity.";

-            }

-            leaf termination-direction {

-                type termination-direction;

-                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;

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

-            }

-            uses local-class;

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

-        }

         grouping lifecycle-state-pac {

             leaf lifecycle-state {

                 type lifecycle-state;

@@ -125,21 +104,15 @@
             description "none";

         }

         grouping service-interface-point {

-            list layer-protocol {

-                key 'local-id';

+            leaf-list layer-protocol-name {

+                type layer-protocol-name;

+                config false;

                 min-elements 1;

-                uses layer-protocol;

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

-            }

-            container state {

-                uses admin-state-pac;

-                description "none";

-            }

-            container capacity {

-                uses capacity-pac;

-                description "none";

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

             }

             uses resource-spec;

+            uses tapi-common:admin-state-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.";

         }

@@ -161,39 +134,34 @@
                 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-name {

-            description "none";

-        }

-        identity otsi-a {

-            base layer-protocol-name;

-            description "none";

-        }

-        identity otu {

-            base layer-protocol-name;

-            description "none";

-        }

-        identity odu {

-            base layer-protocol-name;

-            description "none";

-        }

-        identity eth {

-            base layer-protocol-name;

-            description "none";

-        }

-        identity ety {

-            base layer-protocol-name;

-            description "none";

-        }

         typedef administrative-state {

             type enumeration {

-                enum locked {

+                enum LOCKED {

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

                 }

-                enum unlocked {

+                enum UNLOCKED {

                     description "Users are allowed to use the resource";

                 }

             }

@@ -217,19 +185,19 @@
         }

         typedef directive-value {

             type enumeration {

-                enum minimize {

+                enum MINIMIZE {

                     description "none";

                 }

-                enum maximize {

+                enum MAXIMIZE {

                     description "none";

                 }

-                enum allow {

+                enum ALLOW {

                     description "none";

                 }

-                enum disallow {

+                enum DISALLOW {

                     description "none";

                 }

-                enum dont-care {

+                enum DONT_CARE {

                     description "none";

                 }

             }

@@ -237,21 +205,38 @@
         }

         typedef forwarding-direction {

             type enumeration {

-                enum bidirectional {

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

+                enum UNIDIRECTIONAL {

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

                 }

-                enum undefined-or-unknown {

+                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 identityref {

-                base layer-protocol-name;

+            type enumeration {

+                enum OTSiA {

+                    description "Models the OTSiA layer as per ITU-T G.872 (2017) version 4";

+                }

+                enum OCH {

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

+                }

+                enum OTU {

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

+                }

+                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 ETY {

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

+                }

             }

             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.

@@ -262,18 +247,23 @@
         }

         typedef lifecycle-state {

             type enumeration {

-                enum planned {

+                enum PLANNED {

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

                 }

-                enum potential {

+                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 installed {

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

+                enum PENDING_REMOVAL {

                     description "The resource has been marked for removal";

                 }

             }

@@ -292,10 +282,10 @@
         }

         typedef operational-state {

             type enumeration {

-                enum disabled {

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

+                enum ENABLED {

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

                 }

             }

@@ -303,16 +293,16 @@
         }

         typedef port-direction {

             type enumeration {

-                enum bidirectional {

+                enum BIDIRECTIONAL {

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

                 }

-                enum input {

+                enum INPUT {

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

                 }

-                enum output {

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

+                enum UNIDENTIFIED_OR_UNKNOWN {

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

                 }

             }

@@ -320,19 +310,19 @@
         }

         typedef port-role {

             type enumeration {

-                enum symmetric {

+                enum SYMMETRIC {

                     description "none";

                 }

-                enum root {

+                enum ROOT {

                     description "none";

                 }

-                enum leaf {

+                enum LEAF {

                     description "none";

                 }

-                enum trunk {

+                enum TRUNK {

                     description "none";

                 }

-                enum unknown {

+                enum UNKNOWN {

                     description "none";

                 }

             }

@@ -340,10 +330,10 @@
         }

         typedef termination-direction {

             type enumeration {

-                enum bidirectional {

+                enum BIDIRECTIONAL {

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

                 }

-                enum sink {

+                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

@@ -352,7 +342,7 @@
                         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 {

+                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

@@ -361,7 +351,7 @@
                         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 {

+                enum UNDEFINED_OR_UNKNOWN {

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

                 }

             }

@@ -369,25 +359,25 @@
         }

         typedef termination-state {

             type enumeration {

-                enum lp-can-never-terminate {

+                enum LP_CAN_NEVER_TERMINATE {

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

                 }

-                enum lt-not-terminated {

+                enum LT_NOT_TERMINATED {

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

                 }

-                enum terminated-server-to-client-flow {

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

+                enum TERMINATED_CLIENT_TO_SERVER_FLOW {

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

                 }

-                enum terminated-bidirectional {

+                enum TERMINATED_BIDIRECTIONAL {

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

                 }

-                enum lt-permenantly-terminated {

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

+                enum TERMINATION_STATE_UNKNOWN {

                     description "There TerminationState cannot be determined.";

                 }

             }

@@ -456,13 +446,28 @@
         }

         typedef capacity-unit {

             type enumeration {

-                enum gbps {

+                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 mbps {

+                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 kbps {

+                enum KB {

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

+                }

+                enum KBPS {

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

                 }

             }

@@ -470,16 +475,16 @@
         }

         typedef bandwidth-profile-type {

             type enumeration {

-                enum mef-10.x {

+                enum MEF_10.x {

                     description "none";

                 }

-                enum rfc-2697 {

+                enum RFC_2697 {

                     description "none";

                 }

-                enum rfc-2698 {

+                enum RFC_2698 {

                     description "none";

                 }

-                enum rfc-4115 {

+                enum RFC_4115 {

                     description "none";

                 }

             }

diff --git a/models/tapi/src/main/yang/tapi-connectivity@2017-05-31.yang b/models/tapi/src/main/yang/tapi-connectivity@2017-05-31.yang
index 3957f0d..8f223d0 100644
--- a/models/tapi/src/main/yang/tapi-connectivity@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-connectivity@2017-05-31.yang
@@ -50,19 +50,6 @@
                     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.";

             }

-            leaf-list supported-link {

-                type leafref {

-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';

-                }

-                description "An Connection that spans between CEPs that terminate the LayerProtocol usually supports one or more links in the client layer.";

-            }

-            leaf container-node {

-                type leafref {

-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';

-                }

-                config false;

-                description "none";

-            }

             list route {

                 key 'local-id';

                 config false;

@@ -75,11 +62,6 @@
                 uses switch-control;

                 description "none";

             }

-            container state {

-                config false;

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

-                description "none";

-            }

             leaf direction {

                 type tapi-common:forwarding-direction;

                 config false;

@@ -91,15 +73,28 @@
                 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 {

-            list layer-protocol {

-                key 'local-id';

+            leaf layer-protocol-name {

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

+                config false;

+                description "none";

+            }

+            leaf connectivity-service-end-point {

+                type leafref {

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

+                }

+                description "none";

+            }

+            leaf-list parent-node-edge-point {

+                type leafref {

+                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';

+                }

                 config false;

                 min-elements 1;

-                uses tapi-common:layer-protocol;

                 description "none";

             }

             leaf-list client-node-edge-point {

@@ -109,31 +104,6 @@
                 config false;

                 description "none";

             }

-            leaf server-node-edge-point {

-                type leafref {

-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';

-                }

-                config false;

-                description "none";

-            }

-            leaf peer-connection-end-point {

-                type leafref {

-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';

-                }

-                config false;

-                description "none";

-            }

-            leaf-list associated-route {

-                type leafref {

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

-                }

-                description "none";

-            }

-            container state {

-                config false;

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

-                description "none";

-            }

             leaf connection-port-direction {

                 type tapi-common:port-direction;

                 config false;

@@ -145,6 +115,8 @@
                 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.";

         }

@@ -185,10 +157,6 @@
                 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.";

             }

-            container route-compute-policy {

-                uses route-compute-policy;

-                description "none";

-            }

             leaf coroute-inclusion {

                 type leafref {

                     path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';

@@ -203,7 +171,7 @@
                 config false;

                 description "none";

             }

-            uses tapi-common:local-class;

+            uses tapi-connectivity:route-compute-policy;

             description "none";

         }

         grouping connectivity-service {

@@ -220,18 +188,6 @@
                 config false;

                 description "none";

             }

-            container conn-constraint {

-                uses connectivity-constraint;

-                description "none";

-            }

-            container topo-constraint {

-                uses topology-constraint;

-                description "none";

-            }

-            container state {

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

-                description "none";

-            }

             leaf direction {

                 type tapi-common:forwarding-direction;

                 description "none";

@@ -240,39 +196,25 @@
                 type tapi-common:layer-protocol-name;

                 description "none";

             }

-            list resilience-constraint {

-                key 'local-id';

-                uses resilience-constraint;

-                description "none";

-            }

             uses tapi-common:service-spec;

+            uses tapi-connectivity:connectivity-constraint;

+            uses tapi-connectivity:topology-constraint;

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

+            uses tapi-connectivity:resilience-constraint;

             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 service-interface-point {

                 type leafref {

                     path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';

                 }

                 description "none";

             }

-            leaf-list connection-end-point {

-                type leafref {

-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';

-                }

-                config false;

-                description "none";

-            }

-            list layer-protocol {

-                key 'local-id';

-                min-elements 1;

-                uses tapi-common:layer-protocol;

-                description "none";

-            }

-            container state {

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

-                description "none";

-            }

             container capacity {

                 uses tapi-common:capacity-pac;

                 description "none";

@@ -290,6 +232,7 @@
                 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.  

@@ -380,11 +323,8 @@
                 uses switch;

                 description "none";

             }

-            container control-parameters {

-                uses resilience-constraint;

-                description "none";

-            }

             uses tapi-common:local-class;

+            uses tapi-connectivity: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 {

@@ -438,7 +378,6 @@
                 type tapi-common:layer-protocol-name;

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

             }

-            uses tapi-common:local-class;

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

         }

         grouping topology-constraint {

@@ -503,7 +442,6 @@
                 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";

             }

-            uses tapi-common:local-class;

             description "none";

         }

         grouping cep-list {

@@ -531,16 +469,16 @@
     **********************/ 

         typedef service-type {

             type enumeration {

-                enum point-to-point-connectivity {

+                enum POINT_TO_POINT_CONNECTIVITY {

                     description "none";

                 }

-                enum point-to-multipoint-connectivity {

+                enum POINT_TO_MULTIPOINT_CONNECTIVITY {

                     description "none";

                 }

-                enum multipoint-connectivity {

+                enum MULTIPOINT_CONNECTIVITY {

                     description "none";

                 }

-                enum rooted-multipoint-connectivity {

+                enum ROOTED_MULTIPOINT_CONNECTIVITY {

                     description "none";

                 }

             }

@@ -548,10 +486,10 @@
         }

         typedef reversion-mode {

             type enumeration {

-                enum revertive {

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

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

                 }

             }

@@ -559,19 +497,19 @@
         }

         typedef selection-control {

             type enumeration {

-                enum lock-out {

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

+                enum NORMAL {

                     description "none";

                 }

-                enum manual {

+                enum MANUAL {

                     description "none";

                 }

-                enum forced {

+                enum FORCED {

                     description "none";

                 }

             }

@@ -579,25 +517,25 @@
         }

         typedef selection-reason {

             type enumeration {

-                enum lockout {

+                enum LOCKOUT {

                     description "none";

                 }

-                enum normal {

+                enum NORMAL {

                     description "none";

                 }

-                enum manual {

+                enum MANUAL {

                     description "none";

                 }

-                enum forced {

+                enum FORCED {

                     description "none";

                 }

-                enum wait-to-revert {

+                enum WAIT_TO_REVERT {

                     description "none";

                 }

-                enum signal-degrade {

+                enum SIGNAL_DEGRADE {

                     description "none";

                 }

-                enum signal-fail {

+                enum SIGNAL_FAIL {

                     description "none";

                 }

             }

@@ -605,13 +543,13 @@
         }

         typedef coordinate-type {

             type enumeration {

-                enum no-coordinate {

+                enum NO_COORDINATE {

                     description "none";

                 }

-                enum hold-off-time {

+                enum HOLD_OFF_TIME {

                     description "none";

                 }

-                enum wait-for-notification {

+                enum WAIT_FOR_NOTIFICATION {

                     description "none";

                 }

             }

@@ -619,25 +557,25 @@
         }

         typedef route-objective-function {

             type enumeration {

-                enum min-work-route-hop {

+                enum MIN_WORK_ROUTE_HOP {

                     description "none";

                 }

-                enum min-work-route-cost {

+                enum MIN_WORK_ROUTE_COST {

                     description "none";

                 }

-                enum min-work-route-latency {

+                enum MIN_WORK_ROUTE_LATENCY {

                     description "none";

                 }

-                enum min-sum-of-work-and-protection-route-hop {

+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {

                     description "none";

                 }

-                enum min-sum-of-work-and-protection-route-cost {

+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {

                     description "none";

                 }

-                enum min-sum-of-work-and-protection-route-latency {

+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {

                     description "none";

                 }

-                enum load-balance-max-unused-capacity {

+                enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {

                     description "none";

                 }

             }

@@ -645,19 +583,19 @@
         }

         typedef diversity-policy {

             type enumeration {

-                enum srlg {

+                enum SRLG {

                     description "none";

                 }

-                enum srng {

+                enum SRNG {

                     description "none";

                 }

-                enum sng {

+                enum SNG {

                     description "none";

                 }

-                enum node {

+                enum NODE {

                     description "none";

                 }

-                enum link {

+                enum LINK {

                     description "none";

                 }

             }

@@ -665,22 +603,22 @@
         }

         typedef protection-role {

             type enumeration {

-                enum work {

+                enum WORK {

                     description "none";

                 }

-                enum protect {

+                enum PROTECT {

                     description "none";

                 }

-                enum protected {

+                enum PROTECTED {

                     description "none";

                 }

-                enum na {

+                enum NA {

                     description "none";

                 }

-                enum work-restore {

+                enum WORK_RESTORE {

                     description "none";

                 }

-                enum protect-restore {

+                enum PROTECT_RESTORE {

                     description "none";

                 }

             }

diff --git a/models/tapi/src/main/yang/tapi-eth@2017-05-31.yang b/models/tapi/src/main/yang/tapi-eth@2017-05-31.yang
index 500430f..d4509e1 100644
--- a/models/tapi/src/main/yang/tapi-eth@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-eth@2017-05-31.yang
@@ -21,18 +21,18 @@
         description "TAPI SDK 2.0-alpha";

         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";

     }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:layer-protocol" {

-        uses connection-end-point-lp-spec;

-        description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";

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

+        uses eth-node-edge-point-spec;

+        description "Augments the base LayerProtocol information in NodeEndPoint with ETH-specific information";

     }

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

-        uses node-edge-point-lp-spec;

-        description "Augments the base LayerProtocol information in NodeEdgePoint with ETH-specific information";

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

+        uses eth-connection-end-point-spec;

+        description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";

     }

     /***********************

     * package object-classes

     **********************/ 

-        grouping connection-point-and-adapter-pac {

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

@@ -143,25 +143,13 @@
                 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";

-            }

+            uses tapi-eth:traffic-shaping-pac;

+            uses tapi-eth:traffic-conditioning-pac;

             description "none";

         }

-        grouping connection-end-point-lp-spec {

-            container termination-spec {

-                uses eth-termination-pac;

-                description "none";

-            }

-            container adapter-spec {

-                uses connection-point-and-adapter-pac;

-                description "none";

-            }

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

+            uses tapi-eth:eth-termination-pac;

+            uses tapi-eth:eth-ctp-pac;

             description "none";

         }

         grouping eth-termination-pac {

@@ -173,7 +161,7 @@
                 type vlan-type;

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

             }

-            leaf-list filter-config {

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

@@ -232,7 +220,7 @@
             description "none";

         }

         grouping traffic-conditioning-pac {

-            list prio-config-list {

+            list prio-config-list-1 {

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

@@ -249,7 +237,7 @@
                     - Coupling flag (CF): 0 or 1

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

             }

-            leaf codirectional {

+            leaf codirectional-1 {

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

@@ -283,11 +271,8 @@
             description "This object class models the ETH traffic shaping function as defined in G.8021.

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

         }

-        grouping node-edge-point-lp-spec {

-            container termination-spec {

-                uses ety-termination-pac;

-                description "none";

-            }

+        grouping eth-node-edge-point-spec {

+            uses tapi-eth:ety-termination-pac;

             description "none";

         }

 

@@ -600,10 +585,10 @@
         }

         typedef admin-state {

             type enumeration {

-                enum lock {

+                enum LOCK {

                     description "none";

                 }

-                enum normal {

+                enum NORMAL {

                     description "none";

                 }

             }

@@ -611,10 +596,10 @@
         }

         typedef colour-mode {

             type enumeration {

-                enum colour-blind {

+                enum COLOUR_BLIND {

                     description "none";

                 }

-                enum colour-aware {

+                enum COLOUR_AWARE {

                     description "none";

                 }

             }

@@ -622,31 +607,31 @@
         }

         typedef csf-config {

             type enumeration {

-                enum disabled {

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

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

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

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

+                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

@@ -657,46 +642,46 @@
         }

         typedef ety-phy-type {

             type enumeration {

-                enum other {

+                enum OTHER {

                     description "none";

                 }

-                enum unknown {

+                enum UNKNOWN {

                     description "none";

                 }

-                enum none {

+                enum NONE {

                     description "none";

                 }

-                enum 2-base-tl {

+                enum 2BASE_TL {

                     description "none";

                 }

-                enum 10-mbit-s {

+                enum 10MBIT_S {

                     description "none";

                 }

-                enum 10-pass-ts {

+                enum 10PASS_TS {

                     description "none";

                 }

-                enum 100-base-t-4 {

+                enum 100BASE_T4 {

                     description "none";

                 }

-                enum 100-base-x {

+                enum 100BASE_X {

                     description "none";

                 }

-                enum 100-base-t-2 {

+                enum 100BASE_T2 {

                     description "none";

                 }

-                enum 1000-base-x {

+                enum 1000BASE_X {

                     description "none";

                 }

-                enum 1000-base-t {

+                enum 1000BASE_T {

                     description "none";

                 }

-                enum 10-gbase-x {

+                enum 10GBASE-X {

                     description "none";

                 }

-                enum 10-gbase-r {

+                enum 10GBASE_R {

                     description "none";

                 }

-                enum 10-gbase-w {

+                enum 10GBASE_W {

                     description "none";

                 }

             }

@@ -704,13 +689,13 @@
         }

         typedef frame-type {

             type enumeration {

-                enum admit-only-vlan-tagged-frames {

+                enum ADMIT_ONLY_VLAN_TAGGED_FRAMES {

                     description "none";

                 }

-                enum admit-only-untagged-and-priority-tagged-frames {

+                enum ADMIT_ONLY_UNTAGGED_AND_PRIORITY_TAGGED_FRAMES {

                     description "none";

                 }

-                enum admit-all-frames {

+                enum ADMIT_ALL_FRAMES {

                     description "none";

                 }

             }

@@ -718,25 +703,25 @@
         }

         typedef oam-period {

             type enumeration {

-                enum 3-33-ms {

+                enum 3_33MS {

                     description "Default for protection.";

                 }

-                enum 10-ms {

+                enum 10MS {

                     description "none";

                 }

-                enum 100-ms {

+                enum 100MS {

                     description "none";

                 }

-                enum 1-s {

+                enum 1S {

                     description "none";

                 }

-                enum 10-s {

+                enum 10S {

                     description "none";

                 }

-                enum 1-min {

+                enum 1MIN {

                     description "none";

                 }

-                enum 10-min {

+                enum 10MIN {

                     description "none";

                 }

             }

@@ -744,19 +729,19 @@
         }

         typedef pcp-coding {

             type enumeration {

-                enum 8-p-0-d {

+                enum 8P0D {

                     description "none";

                 }

-                enum 7-p-1-d {

+                enum 7P1D {

                     description "none";

                 }

-                enum 6-p-2-d {

+                enum 6P2D {

                     description "none";

                 }

-                enum 5-p-3-d {

+                enum 5P3D {

                     description "none";

                 }

-                enum dei {

+                enum DEI {

                     description "This enumeration value means that all priorities should be drop eligible.

                         DEI = Drop Eligibility Indicator";

                 }

@@ -765,13 +750,13 @@
         }

         typedef vlan-type {

             type enumeration {

-                enum c-tag {

+                enum C_Tag {

                     description "0x8100";

                 }

-                enum s-tag {

+                enum S_Tag {

                     description "0x88a8";

                 }

-                enum i-tag {

+                enum I_Tag {

                     description "88-e7";

                 }

             }

diff --git a/models/tapi/src/main/yang/tapi-notification@2017-05-31.yang b/models/tapi/src/main/yang/tapi-notification@2017-05-31.yang
index 1ca3f52..2b4e526 100644
--- a/models/tapi/src/main/yang/tapi-notification@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-notification@2017-05-31.yang
@@ -245,71 +245,71 @@
         }

         typedef notification-type {

             type enumeration {

-                enum object-creation {

+                enum OBJECT_CREATION {

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

                 }

-                enum object-deletion {

+                enum OBJECT_DELETION {

                     description "none";

                 }

-                enum attribute-value-change {

+                enum ATTRIBUTE_VALUE_CHANGE {

                     description "none";

                 }

-                enum alarm-event {

+                enum ALARM_EVENT {

                     description "none";

                 }

-                enum threshold-crossing-alert {

+                enum THRESHOLD_CROSSING_ALERT {

                     description "none";

                 }

             }

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

+            description "List of supported Notifications types.";

         }

         typedef object-type {

             type enumeration {

-                enum topology {

+                enum TOPOLOGY {

                     description "none";

                 }

-                enum node {

+                enum NODE {

                     description "none";

                 }

-                enum link {

+                enum LINK {

                     description "none";

                 }

-                enum connection {

+                enum CONNECTION {

                     description "none";

                 }

-                enum path {

+                enum PATH {

                     description "none";

                 }

-                enum connectivity-service {

+                enum CONNECTIVITY_SERVICE {

                     description "none";

                 }

-                enum virtual-network-service {

+                enum VIRTUAL_NETWORK_SERVICE {

                     description "none";

                 }

-                enum path-computation-service {

+                enum PATH_COMPUTATION_SERVICE {

                     description "none";

                 }

-                enum node-edge-point {

+                enum NODE_EDGE_POINT {

                     description "none";

                 }

-                enum service-interface-point {

+                enum SERVICE_INTERFACE_POINT {

                     description "none";

                 }

-                enum connection-end-point {

+                enum CONNECTION_END_POINT {

                     description "none";

                 }

             }

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

+            description "The list of TAPI Global Object Class types on which Notifications can be raised.";

         }

         typedef source-indicator {

             type enumeration {

-                enum resource-operation {

+                enum RESOURCE_OPERATION {

                     description "none";

                 }

-                enum management-operation {

+                enum MANAGEMENT_OPERATION {

                     description "none";

                 }

-                enum unknown {

+                enum UNKNOWN {

                     description "none";

                 }

             }

@@ -317,10 +317,10 @@
         }

         typedef subscription-state {

             type enumeration {

-                enum suspended {

+                enum SUSPENDED {

                     description "none";

                 }

-                enum active {

+                enum ACTIVE {

                     description "none";

                 }

             }

@@ -328,19 +328,19 @@
         }

         typedef perceived-serverity-type {

             type enumeration {

-                enum critical {

+                enum CRITICAL {

                     description "none";

                 }

-                enum major {

+                enum MAJOR {

                     description "none";

                 }

-                enum minor {

+                enum MINOR {

                     description "none";

                 }

-                enum warning {

+                enum WARNING {

                     description "none";

                 }

-                enum cleared {

+                enum CLEARED {

                     description "none";

                 }

             }

@@ -348,13 +348,13 @@
         }

         typedef threshold-crossing-type {

             type enumeration {

-                enum threshold-above {

+                enum THRESHOLD_ABOVE {

                     description "none";

                 }

-                enum threshold-below {

+                enum THRESHOLD_BELOW {

                     description "none";

                 }

-                enum cleared {

+                enum CLEARED {

                     description "none";

                 }

             }

@@ -362,13 +362,13 @@
         }

         typedef service-affecting {

             type enumeration {

-                enum service-affecting {

+                enum SERVICE_AFFECTING {

                     description "none";

                 }

-                enum not-service-affecting {

+                enum NOT_SERVICE_AFFECTING {

                     description "none";

                 }

-                enum unknown {

+                enum UNKNOWN {

                     description "none";

                 }

             }

diff --git a/models/tapi/src/main/yang/tapi-oam@2017-05-31.yang b/models/tapi/src/main/yang/tapi-oam@2017-05-31.yang
index da16273..506eec9 100644
--- a/models/tapi/src/main/yang/tapi-oam@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-oam@2017-05-31.yang
@@ -80,19 +80,13 @@
             description "none";

         }

         grouping on-demand-measurement-job {

-            container state {

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

-                description "none";

-            }

             uses tapi-common:local-class;

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

             description "none";

         }

         grouping pro-active-measurement-job {

-            container state {

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

-                description "none";

-            }

             uses tapi-common:local-class;

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

             description "none";

         }

         grouping meg {

diff --git a/models/tapi/src/main/yang/tapi-odu@2017-05-31.yang b/models/tapi/src/main/yang/tapi-odu@2017-05-31.yang
index 2d5496b..00a5bc9 100644
--- a/models/tapi/src/main/yang/tapi-odu@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-odu@2017-05-31.yang
@@ -75,25 +75,10 @@
                 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";

-            }

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

-            }

+            uses tapi-odu:odu-common-pac;

+            uses tapi-odu:odu-termination-and-client-adaptation-pac;

+            uses tapi-odu:odu-ctp-pac;

+            uses tapi-odu:odu-protection-pac;

             description "none";

         }

         grouping odu-pool-pac {

@@ -114,11 +99,7 @@
             description "none";

         }

         grouping odu-node-edge-point-spec {

-            container odu-pool {

-                config false;

-                uses odu-pool-pac;

-                description "none";

-            }

+            uses tapi-odu:odu-pool-pac;

             description "none";

         }

         grouping odu-ctp-pac {

@@ -151,28 +132,11 @@
                 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";

-            }

+            uses tapi-odu:odu-mep-pac;

+            uses tapi-odu:odu-ncm-pac;

+            uses tapi-odu:odu-tcm-mep-pac;

+            uses tapi-odu:odu-defect-pac;

+            uses tapi-odu:odu-pm-pac;

             description "none";

         }

         grouping odu-protection-pac {

@@ -231,29 +195,11 @@
             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";

-            }

+            uses tapi-odu:odu-mip-pac;

+            uses tapi-odu:odu-ncm-pac;

+            uses tapi-odu:odu-tcm-mip-pac;

+            uses tapi-odu:odu-pm-pac;

+            uses tapi-odu:odu-defect-pac;

             description "none";

         }

         grouping odu-mip-pac {

@@ -403,136 +349,30 @@
     /***********************

     * package type-definitions

     **********************/ 

-        identity deg-thr-type {

-            description "none";

-        }

-        identity percentage {

-            base deg-thr-type;

-            description "Choice of % or Number of errored blocks";

-        }

-        identity number-errored-blocks {

-            base deg-thr-type;

-            description "Number of % or blocks";

-        }

-        identity tcm-status {

-            description "none";

-        }

-        identity no-source-tc {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 0 0 0, No source Tandem Connection";

-        }

-        identity in-use-without-iae {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 0 0 1,  In use without IAE (Incoming Alignment Error)";

-        }

-        identity in-use-with-iae {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 0 1 0, In use with IAE (Incoming Alignment Error)";

-        }

-        identity reserved-1 {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 0 1 1, Reserved for future international standardization";

-        }

-        identity reserved-2 {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 1 0 0, Reserved for future international standardization";

-        }

-        identity lck {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 1 0 1, Maintenance signal: ODU-LCK";

-        }

-        identity oci {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 1 1 0, Maintenance signal: ODU-OCI";

-        }

-        identity ais {

-            base tcm-status;

-            description "TCM byte 3 (bits 6 7 8) -- 1 1 1, Maintenance signal: ODU-AIS";

-        }

-        identity tcm-mode {

-            description "none";

-        }

-        identity operational {

-            base tcm-mode;

-            description "none";

-        }

-        identity transparent {

-            base tcm-mode;

-            description "none";

-        }

-        identity monitor {

-            base tcm-mode;

-            description "none";

-        }

-        identity tcm-monitoring {

-            description "none";

-        }

-        identity intrusive {

-            base tcm-monitoring;

-            description "none";

-        }

-        identity non-intrusive {

-            base tcm-monitoring;

-            description "none";

-        }

-        identity tcm-extension {

-            description "none";

-        }

-        identity normal {

-            base tcm-extension;

-            description "none";

-        }

-        identity pass-through {

-            base tcm-extension;

-            description "none";

-        }

-        identity erase {

-            base tcm-extension;

-            description "none";

-        }

-        identity percentage-granularity {

-            description "none";

-        }

-        identity ones {

-            base percentage-granularity;

-            description "none";

-        }

-        identity one-tenths {

-            base percentage-granularity;

-            description "value * (1/10)";

-        }

-        identity one-hundredths {

-            base percentage-granularity;

-            description "value * (1/100)";

-        }

-        identity one-thousandths {

-            base percentage-granularity;

-            description "value * (1/1000)";

-        }

         typedef odu-type {

             type enumeration {

-                enum odu-0 {

+                enum ODU0 {

                     description "none";

                 }

-                enum odu-1 {

+                enum ODU1 {

                     description "none";

                 }

-                enum odu-2 {

+                enum ODU2 {

                     description "none";

                 }

-                enum odu-2-e {

+                enum ODU2E {

                     description "none";

                 }

-                enum odu-3 {

+                enum ODU3 {

                     description "none";

                 }

-                enum odu-4 {

+                enum ODU4 {

                     description "none";

                 }

-                enum odu-flex {

+                enum ODU_FLEX {

                     description "none";

                 }

-                enum odu-cn {

+                enum ODU_CN {

                     description "none";

                 }

             }

@@ -540,22 +380,22 @@
         }

         typedef mapping-type {

             type enumeration {

-                enum amp {

+                enum AMP {

                     description "none";

                 }

-                enum bmp {

+                enum BMP {

                     description "none";

                 }

-                enum gfp-f {

+                enum GFP-F {

                     description "none";

                 }

-                enum gmp {

+                enum GMP {

                     description "none";

                 }

-                enum ttp-gfp-bmp {

+                enum TTP_GFP_BMP {

                     description "none";

                 }

-                enum null {

+                enum NULL {

                     description "none";

                 }

             }

@@ -563,16 +403,16 @@
         }

         typedef tim-det-mo {

             type enumeration {

-                enum dapi {

+                enum DAPI {

                     description "none";

                 }

-                enum sapi {

+                enum SAPI {

                     description "none";

                 }

-                enum both {

+                enum BOTH {

                     description "none";

                 }

-                enum off {

+                enum OFF {

                     description "none";

                 }

             }

@@ -580,10 +420,10 @@
         }

         typedef odu-slot-size {

             type enumeration {

-                enum 1-g-25 {

+                enum 1G25 {

                     description "none";

                 }

-                enum 2-g-5 {

+                enum 2G5 {

                     description "none";

                 }

             }

@@ -602,10 +442,10 @@
         }

         typedef odu-named-payload-type {

             type enumeration {

-                enum unknown {

+                enum UNKNOWN {

                     description "none";

                 }

-                enum uninterpretable {

+                enum UNINTERPRETABLE {

                     description "none";

                 }

             }

@@ -633,38 +473,98 @@
                 Number of Errored Blocks is captured in an integer value.";

         }

         typedef deg-thr-type {

-            type identityref {

-                base 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 identityref {

-                base 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 identityref {

-                base 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 identityref {

-                base 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 identityref {

-                base tcm-extension;

+            type enumeration {

+                enum NORMAL {

+                    description "none";

+                }

+                enum PASS-THROUGH {

+                    description "none";

+                }

+                enum ERASE {

+                    description "none";

+                }

             }

             description "none";

         }

         typedef percentage-granularity {

-            type identityref {

-                base 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";

         }

diff --git a/models/tapi/src/main/yang/tapi-otsi@2017-05-31.yang b/models/tapi/src/main/yang/tapi-otsi@2017-05-31.yang
index 13c95c8..861daff 100644
--- a/models/tapi/src/main/yang/tapi-otsi@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-otsi@2017-05-31.yang
@@ -36,45 +36,35 @@
             description "none";

         }

         grouping otsi-connection-end-point-spec {

-            container otsi-adapter {

-                config false;

-                uses otsi-a-client-adaptation-pac;

-                description "none";

-            }

-            list otsi-termination {

-                config false;

-                uses otsi-termination-pac;

-                description "none";

-            }

-            container otsi-ctp {

-                config false;

-                uses otsi-g-ctp-pac;

-                description "none";

-            }

+            uses tapi-otsi:otsi-a-client-adaptation-pac;

+            uses tapi-otsi:otsi-termination-pac;

+            uses tapi-otsi:otsi-g-ctp-pac;

             description "none";

         }

         grouping otsi-termination-pac {

-            container selected-nominal-central-frequency {

+            list selected-nominal-central-frequency {

+                config false;

                 uses nominal-central-frequency-or-wavelength;

                 description "This attribute indicates the nominal central frequency or wavelength of the optical channel associated with the OCh Trail Termination function. The value of this attribute is a pair {LinkType, Integer}, in which LinkType is DWDM, or CWDM, or NO_WDM. When LinkType is DWDM, the integer represents the nominal central frequency in unit of MHz. When LinkType is CWDM, the integer represents the nominal central wavelength in unit of pm (picometer). When LinkType is NO_WDM, the Integer field is null. For frequency and wavelength, the value shall be within the range of the maximum and minimum central frequencies or wavelengths specified for the corresponding application code used at the OCh Trail Termination.

                     This attribute is required for the OCh Trial Termination Point Source at the transmitter.  For the OCh Trail Termination Point Sink at the receiver, this attribute may not be needed since the receiver is required to operate at any frequency/wavelength between the maximum and minimum range for the standard application code.

                     ";

             }

-            container supportable-lower-nominal-central-frequency {

+            list supportable-lower-nominal-central-frequency {

                 config false;

                 uses nominal-central-frequency-or-wavelength;

                 description "none";

             }

-            container supportable-upper-nominal-central-frequency {

+            list supportable-upper-nominal-central-frequency {

                 config false;

                 uses nominal-central-frequency-or-wavelength;

                 description "none";

             }

-            container selected-application-identifier {

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

             }

-            container supportable-application-identifier {

+            list supportable-application-identifier {

                 config false;

                 uses application-identifier;

                 description "none";

@@ -95,11 +85,7 @@
             description "none";

         }

         grouping otsi-node-edge-point-spec {

-            container otsi-pool {

-                config false;

-                uses otsi-a-pool-pac;

-                description "none";

-            }

+            uses tapi-otsi:otsi-a-pool-pac;

             description "none";

         }

         grouping otsi-routing-spec {

@@ -111,6 +97,7 @@
         }

         grouping otsi-g-ctp-pac {

             list selected-frequency-slot {

+                config false;

                 uses frequency-slot;

                 description "none";

             }

@@ -123,81 +110,6 @@
     /***********************

     * package type-definitions

     **********************/ 

-        identity application-identifier-type {

-            description "none";

-        }

-        identity proprietary {

-            base application-identifier-type;

-            description "none";

-        }

-        identity itut-g-959-1 {

-            base application-identifier-type;

-            description "none";

-        }

-        identity itut-g-698-1 {

-            base application-identifier-type;

-            description "none";

-        }

-        identity itut-g-698-2 {

-            base application-identifier-type;

-            description "none";

-        }

-        identity itut-g-696-1 {

-            base application-identifier-type;

-            description "none";

-        }

-        identity itut-g-695 {

-            base application-identifier-type;

-            description "none";

-        }

-        identity grid-type {

-            description "none";

-        }

-        identity dwdm {

-            base grid-type;

-            description "Fixed frequency grid in C & L bands as specified in ITU-T G.694.1

-                ";

-        }

-        identity cwdm {

-            base grid-type;

-            description "Fixed frequency grid as specified in ITU-T G.694.2";

-        }

-        identity flex {

-            base grid-type;

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

-        }

-        identity unspecified {

-            base grid-type;

-            description "Unspecified/proprietary frequency grid";

-        }

-        identity adjustment-granularity {

-            description "none";

-        }

-        identity g-100-ghz {

-            base adjustment-granularity;

-            description "0.1 THz";

-        }

-        identity g-50-ghz {

-            base adjustment-granularity;

-            description "0.05 THz";

-        }

-        identity g-25-ghz {

-            base adjustment-granularity;

-            description "0.025 THz";

-        }

-        identity g-12-5-ghz {

-            base adjustment-granularity;

-            description "0.0125 THz";

-        }

-        identity g-6-25-ghz {

-            base adjustment-granularity;

-            description "0.00625 THz";

-        }

         grouping application-identifier {

             leaf application-identifier-type {

                 type application-identifier-type;

@@ -231,39 +143,87 @@
         }

         typedef optical-routing-strategy {

             type enumeration {

-                enum optimal-osnr {

+                enum OPTIMAL_OSNR {

                     description "none";

                 }

-                enum no-relay {

+                enum NO_RELAY {

                     description "none";

                 }

-                enum min-relay {

+                enum MIN_RELAY {

                     description "none";

                 }

-                enum preferred-no-change-wavelength-as-restore {

+                enum PREFERRED_NO_CHANGE_WAVELENGTH_AS_RESTORE {

                     description "none";

                 }

-                enum preferred-no-skipping-wavelength {

+                enum PREFERRED_NO_SKIPPING_WAVELENGTH {

                     description "none";

                 }

             }

             description "none";

         }

         typedef application-identifier-type {

-            type identityref {

-                base 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 identityref {

-                base 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 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 identityref {

-                base adjustment-granularity;

+            type enumeration {

+                enum G_100GHZ {

+                    description "0.1 THz";

+                }

+                enum G_50GHZ {

+                    description "0.05 THz";

+                }

+                enum G_25GHZ {

+                    description "0.025 THz";

+                }

+                enum G_12_5GHZ {

+                    description "0.0125 THz";

+                }

+                enum G_6_25GHZ {

+                    description "0.00625 THz";

+                }

             }

             description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";

         }

diff --git a/models/tapi/src/main/yang/tapi-topology@2017-05-31.yang b/models/tapi/src/main/yang/tapi-topology@2017-05-31.yang
index a5b6c3e..5134883 100644
--- a/models/tapi/src/main/yang/tapi-topology@2017-05-31.yang
+++ b/models/tapi/src/main/yang/tapi-topology@2017-05-31.yang
@@ -31,54 +31,6 @@
                 min-elements 2;

                 description "none";

             }

-            leaf-list node {

-                type leafref {

-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';

-                }

-                config false;

-                min-elements 2;

-                description "none";

-            }

-            container state {

-                config false;

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

-                description "none";

-            }

-            container transfer-capacity {

-                config false;

-                uses tapi-common:capacity-pac;

-                description "none";

-            }

-            container transfer-cost {

-                config false;

-                uses transfer-cost-pac;

-                description "none";

-            }

-            container transfer-integrity {

-                config false;

-                uses transfer-integrity-pac;

-                description "none";

-            }

-            container transfer-timing {

-                config false;

-                uses transfer-timing-pac;

-                description "none";

-            }

-            container risk-parameter {

-                config false;

-                uses risk-parameter-pac;

-                description "none";

-            }

-            container validation {

-                config false;

-                uses validation-pac;

-                description "none";

-            }

-            container lp-transition {

-                config false;

-                uses layer-protocol-transition-pac;

-                description "none";

-            }

             leaf-list layer-protocol-name {

                 type tapi-common:layer-protocol-name;

                 config false;

@@ -97,6 +49,14 @@
                 description "none";

             }

             uses tapi-common:resource-spec;

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

+            uses tapi-common:capacity-pac;

+            uses tapi-topology:transfer-cost-pac;

+            uses tapi-topology:transfer-integrity-pac;

+            uses tapi-topology:transfer-timing-pac;

+            uses tapi-topology:risk-parameter-pac;

+            uses tapi-topology:validation-pac;

+            uses tapi-topology:layer-protocol-transition-pac;

             description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";

         }

         grouping node {

@@ -125,31 +85,6 @@
                 config false;

                 description "none";

             }

-            container state {

-                config false;

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

-                description "none";

-            }

-            container transfer-capacity {

-                config false;

-                uses tapi-common:capacity-pac;

-                description "none";

-            }

-            container transfer-cost {

-                config false;

-                uses transfer-cost-pac;

-                description "none";

-            }

-            container transfer-integrity {

-                config false;

-                uses transfer-integrity-pac;

-                description "none";

-            }

-            container transfer-timing {

-                config false;

-                uses transfer-timing-pac;

-                description "none";

-            }

             leaf-list layer-protocol-name {

                 type tapi-common:layer-protocol-name;

                 config false;

@@ -157,6 +92,11 @@
                 description "none";

             }

             uses tapi-common:resource-spec;

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

+            uses tapi-common:capacity-pac;

+            uses tapi-topology:transfer-cost-pac;

+            uses tapi-topology:transfer-integrity-pac;

+            uses tapi-topology: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). ";

         }

@@ -196,11 +136,9 @@
                 Links that included details in this Pac are often referred to as Transitional Links.";

         }

         grouping node-edge-point {

-            list layer-protocol {

-                key 'local-id';

+            leaf layer-protocol-name {

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

                 config false;

-                min-elements 1;

-                uses tapi-common:layer-protocol;

                 description "none";

             }

             leaf-list aggregated-node-edge-point {

@@ -216,11 +154,6 @@
                 }

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

             }

-            container state {

-                config false;

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

-                description "none";

-            }

             leaf link-port-direction {

                 type tapi-common:port-direction;

                 config false;

@@ -232,6 +165,8 @@
                 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;

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

         }

@@ -367,23 +302,11 @@
                 min-elements 2;

                 description "none";

             }

-            container transfer-capacity {

-                uses tapi-common:capacity-pac;

-                description "none";

-            }

-            container transfer-cost {

-                uses transfer-cost-pac;

-                description "none";

-            }

-            container transfer-timing {

-                uses transfer-timing-pac;

-                description "none";

-            }

-            container risk-parameter {

-                uses risk-parameter-pac;

-                description "none";

-            }

             uses tapi-common:resource-spec;

+            uses tapi-common:capacity-pac;

+            uses tapi-topology:transfer-cost-pac;

+            uses tapi-topology:transfer-timing-pac;

+            uses tapi-topology:risk-parameter-pac;

             description "none";

         }

         grouping node-rule-group {

@@ -411,23 +334,11 @@
                 uses inter-rule-group;

                 description "none";

             }

-            container transfer-capacity {

-                uses tapi-common:capacity-pac;

-                description "none";

-            }

-            container transfer-cost {

-                uses transfer-cost-pac;

-                description "none";

-            }

-            container transfer-timing {

-                uses transfer-timing-pac;

-                description "none";

-            }

-            container risk-parameter {

-                uses risk-parameter-pac;

-                description "none";

-            }

             uses tapi-common:resource-spec;

+            uses tapi-common:capacity-pac;

+            uses tapi-topology:transfer-cost-pac;

+            uses tapi-topology:transfer-timing-pac;

+            uses tapi-topology:risk-parameter-pac;

             description "none";

         }

         grouping rule {

@@ -524,16 +435,16 @@
         }

         typedef forwarding-rule {

             type enumeration {

-                enum may-forward-across-group {

+                enum MAY_FORWARD_ACROSS_GROUP {

                     description "none";

                 }

-                enum must-forward-across-group {

+                enum MUST_FORWARD_ACROSS_GROUP {

                     description "none";

                 }

-                enum cannot-forward-across-group {

+                enum CANNOT_FORWARD_ACROSS_GROUP {

                     description "none";

                 }

-                enum no-statement-on-forwarding {

+                enum NO_STATEMENT_ON_FORWARDING {

                     description "none";

                 }

             }

@@ -541,22 +452,22 @@
         }

         typedef rule-type {

             type enumeration {

-                enum forwarding {

+                enum FORWARDING {

                     description "none";

                 }

-                enum capacity {

+                enum CAPACITY {

                     description "none";

                 }

-                enum cost {

+                enum COST {

                     description "none";

                 }

-                enum timing {

+                enum TIMING {

                     description "none";

                 }

-                enum risk {

+                enum RISK {

                     description "none";

                 }

-                enum grouping {

+                enum GROUPING {

                     description "none";

                 }

             }

@@ -575,13 +486,13 @@
         }

         typedef restoration-policy {

             type enumeration {

-                enum per-domain-restoration {

+                enum PER_DOMAIN_RESTORATION {

                     description "none";

                 }

-                enum end-to-end-restoration {

+                enum END_TO_END_RESTORATION {

                     description "none";

                 }

-                enum na {

+                enum NA {

                     description "none";

                 }

             }

@@ -589,25 +500,25 @@
         }

         typedef protection-type {

             type enumeration {

-                enum no-protecton {

+                enum NO_PROTECTON {

                     description "none";

                 }

-                enum one-plus-one-protection {

+                enum ONE_PLUS_ONE_PROTECTION {

                     description "none";

                 }

-                enum one-plus-one-protection-with-dynamic-restoration {

+                enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {

                     description "none";

                 }

-                enum permanent-one-plus-one-protection {

+                enum PERMANENT_ONE_PLUS_ONE_PROTECTION {

                     description "none";

                 }

-                enum one-for-one-protection {

+                enum ONE_FOR_ONE_PROTECTION {

                     description "none";

                 }

-                enum dynamic-restoration {

+                enum DYNAMIC_RESTORATION {

                     description "none";

                 }

-                enum pre-computed-restoration {

+                enum PRE_COMPUTED_RESTORATION {

                     description "none";

                 }

             }