Merge dev/fluorine work across to master
[unimgr.git] / nrp-api / src / main / yang / tapi-connectivity@2018-03-07.yang
similarity index 69%
rename from nrp-api/src/main/yang/tapi-connectivity.yang
rename to nrp-api/src/main/yang/tapi-connectivity@2018-03-07.yang
index e972364997842024ff56968dbfc36bb450326e60..fae1a36a2187fd17075ac9f881f4b2548fa1769b 100644 (file)
@@ -1,5 +1,5 @@
 module tapi-connectivity {
-    namespace "urn:onf:params:xml:ns:yang:tapi-connectivity";
+    namespace "urn:onf:otcc:yang:tapi-connectivity";
     prefix tapi-connectivity;
     import tapi-common {
         prefix tapi-common;
@@ -10,29 +10,80 @@ module tapi-connectivity {
     import tapi-path-computation {
         prefix tapi-path-computation;
     }
-    organization "ONF (Open Networking Foundation) IMP Working Group";
-    contact "WG Web: <https://www.open{[]}networking.org/technical-communities/areas/services/> 
- WG List: mailto: <wg list name>@opennetworking.org>, 
-.WG Chair: your-WG-chair<mailto:your-WG-chair@example.com> 
-Editor: your-name<mailto:your-email@example.com>";
-    description "none";
-    revision 2017-11-13 {
-        description "TAPI SDK 2.0-alpha";
-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
+    organization "ONF OTCC (Open Transport Configuration & Control) Project";
+    contact "
+        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
+        Project List: <mailto:transport-api@opennetworking.org>
+        Editor: Karthik Sethuraman
+                <mailto:karthik.sethuraman@necam.com>";
+    description "
+        This module contains TAPI Connectivity Model definitions.
+        Source: TapiConnectivity.uml
+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
+        License: This module is distributed under the Apache License 2.0";
+    revision 2018-03-07 {
+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool version .
+        <https://wiki.opennetworking.org/display/OIMT/IISOMI>
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/change-log.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/develop/UML>";
     }
     augment "/tapi-common:context" {
         uses connectivity-context;
         description "Augments the base TAPI Context with ConnectivityService information";
     }
+    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
+        uses cep-list;
+        description "none";
+    }
+
+    /*************************
+    * definitions of refrences
+    *************************/
+    grouping connectivity-service-ref {
+        leaf connectivity-service-id {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
+            }
+        }
+    }
+
+    grouping connection-end-point-ref {
+        uses tapi-topology:owned-node-edge-point-ref;
+        leaf connection-end-point-id {
+            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';
+            }
+        }
+    }
+
+    grouping connection-ref {
+        leaf connection-id {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
+            }
+        }
+    }
+
+    grouping switch-control-ref {
+        uses connection-ref;
+        leaf switch-control-id {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
+            }
+        }
+    }
+
     /***********************
     * package object-classes
-    **********************/ 
+    **********************/
         grouping connection {
             list connection-end-point {
-                key 'uuid';
+                uses connection-end-point-ref;
+                key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
                 config false;
                 min-elements 2;
-                uses connection-end-point;
                 description "none";
             }
             leaf-list lower-connection {
@@ -40,23 +91,10 @@ Editor: your-name<mailto:your-email@example.com>";
                     path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
                 }
                 description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).
-                    Aggregation is used as for the Node/Topology  to allow changes in hierarchy. 
-                    Connection aggregation reflects Node/Topology aggregation. 
+                    Aggregation is used as for the Node/Topology  to allow changes in hierarchy.
+                    Connection aggregation reflects Node/Topology aggregation.
                     The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
             }
-            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;
@@ -64,16 +102,11 @@ Editor: your-name<mailto:your-email@example.com>";
                 description "none";
             }
             list switch-control {
-                key 'local-id';
+                key 'uuid';
                 config false;
                 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;
@@ -85,41 +118,33 @@ Editor: your-name<mailto:your-email@example.com>";
                 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';
-                config false;
-                min-elements 1;
-                uses tapi-common:layer-protocol;
-                description "none";
-            }
-            leaf-list client-node-edge-point {
-                type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
-                }
+            leaf layer-protocol-name {
+                type tapi-common:layer-protocol-name;
                 config false;
                 description "none";
             }
-            leaf server-node-edge-point {
+            leaf connectivity-service-end-point {
                 type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
+                    path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
                 }
-                config false;
                 description "none";
             }
-            leaf peer-connection-end-point {
-                type leafref {
-                    path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
-                }
+            list parent-node-edge-point {
+                uses tapi-topology:owned-node-edge-point-ref;
+                key 'topology-id node-id owned-node-edge-point-id';
                 config false;
+                min-elements 1;
                 description "none";
             }
-            container state {
+            list client-node-edge-point {
+                uses tapi-topology:owned-node-edge-point-ref;
+                key 'topology-id node-id owned-node-edge-point-id';
                 config false;
-                uses tapi-common:operational-state-pac;
                 description "none";
             }
             leaf connection-port-direction {
@@ -133,34 +158,40 @@ Editor: your-name<mailto:your-email@example.com>";
                 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;
-            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 
+            uses tapi-common:operational-state-pac;
+            uses tapi-common:termination-pac;
+            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
                 The structure of LTP supports all transport protocols including circuit and packet forms.";
         }
         grouping connectivity-constraint {
             leaf service-type {
                 type service-type;
-                config false;
                 description "none";
             }
             leaf service-level {
                 type string;
-                config false;
                 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
             }
+            leaf is-exclusive {
+                type boolean;
+                default "true";
+                description "To distinguish if the resources are exclusive to the service  - for example between EPL(isExclusive=true) and EVPL (isExclusive=false), or between EPLAN (isExclusive=true) and EVPLAN (isExclusive=false)";
+            }
             container requested-capacity {
-                config false;
                 uses tapi-common:capacity;
                 description "none";
             }
+            container schedule {
+                uses tapi-common:time-range;
+                description "none";
+            }
             list cost-characteristic {
-                key 'cost-name cost-value cost-algorithm';
-                config false;
+                key 'cost-name';
                 uses tapi-topology:cost-characteristic;
                 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
             }
             list latency-characteristic {
-                key 'traffic-property-name traffic-property-queing-latency';
-                config false;
+                key 'traffic-property-name';
                 uses tapi-topology:latency-characteristic;
                 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
             }
@@ -168,21 +199,14 @@ Editor: your-name<mailto:your-email@example.com>";
                 type leafref {
                     path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
                 }
-                config false;
-                description "none";
-            }
-            leaf-list diversity-exclusion {
-                type leafref {
-                    path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
-                }
-                config false;
                 description "none";
             }
-            container schedule {
-                uses tapi-common:time-range;
+            list diversity-exclusion {
+                uses connectivity-service-ref;
+                key 'connectivity-service-id';
                 description "none";
             }
-            uses tapi-common:local-class;
+            uses route-compute-policy;
             description "none";
         }
         grouping connectivity-service {
@@ -199,18 +223,6 @@ Editor: your-name<mailto:your-email@example.com>";
                 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";
@@ -220,28 +232,24 @@ Editor: your-name<mailto:your-email@example.com>";
                 description "none";
             }
             uses tapi-common:service-spec;
+            uses connectivity-constraint;
+            uses topology-constraint;
+            uses tapi-common:admin-state-pac;
+            uses 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 service-interface-point {
-                type leafref {
-                    path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';
-                }
-                description "none";
-            }
-            list layer-protocol {
-                key 'local-id';
-                min-elements 1;
-                uses tapi-common:layer-protocol;
+            leaf layer-protocol-name {
+                type tapi-common:layer-protocol-name;
                 description "none";
             }
-            container state {
-                uses tapi-common:admin-state-pac;
+            container service-interface-point {
+                uses tapi-common:service-interface-point-ref;
                 description "none";
             }
             container capacity {
-                uses tapi-common:capacity-pac;
+                uses tapi-common:capacity;
                 description "none";
             }
             leaf direction {
@@ -252,27 +260,32 @@ Editor: your-name<mailto:your-email@example.com>";
                 type tapi-common:port-role;
                 description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
             }
+            leaf protection-role {
+                type protection-role;
+                description "To specify the protection role of this Port when create or update ConnectivityService.";
+            }
             uses tapi-common:local-class;
+            uses tapi-common:admin-state-pac;
             description "The association of the FC to LTPs is made via EndPoints.
-                The EndPoint (EP) object class models the access to the FC function. 
-                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  
-                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 
+                The EndPoint (EP) object class models the access to the FC function.
+                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
+                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
                 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
-                The EP replaces the Protection Unit of a traditional protection model. 
+                The EP replaces the Protection Unit of a traditional protection model.
                 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
         }
         grouping route {
             leaf-list connection-end-point {
                 type leafref {
-                    path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
+                    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;
-                min-elements 1;
+                min-elements 2;
                 description "none";
             }
             uses tapi-common:local-class;
-            description "The FC Route (FcRoute) object class models the individual routes of an FC. 
-                The route of an FC object is represented by a list of FCs at a lower level. 
+            description "The FC Route (FcRoute) object class models the individual routes of an FC.
+                The route of an FC object is represented by a list of FCs at a lower level.
                 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
         }
         grouping connectivity-context {
@@ -290,10 +303,9 @@ Editor: your-name<mailto:your-email@example.com>";
             description "none";
         }
         grouping switch {
-            leaf-list selected-connection-end-point {
-                type leafref {
-                    path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
-                }
+            list selected-connection-end-point {
+                uses connection-end-point-ref;
+                key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
                 min-elements 1;
                 description "none";
             }
@@ -318,10 +330,10 @@ Editor: your-name<mailto:your-email@example.com>";
                 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
             }
             uses tapi-common:local-class;
-            description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection). 
+            description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection).
                 If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
-                The FC switch represents and defines a protection switch structure encapsulated in the FC. 
-                Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit. 
+                The FC switch represents and defines a protection switch structure encapsulated in the FC.
+                Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit.
                 One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
                 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
                 It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
@@ -332,10 +344,9 @@ Editor: your-name<mailto:your-email@example.com>";
                 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
         }
         grouping switch-control {
-            leaf-list sub-switch-control {
-                type leafref {
-                    path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:local-id';
-                }
+            list sub-switch-control {
+                uses switch-control-ref;
+                key 'connection-id switch-control-id';
                 description "none";
             }
             list switch {
@@ -343,17 +354,22 @@ Editor: your-name<mailto:your-email@example.com>";
                 uses switch;
                 description "none";
             }
-            container control-parameters {
-                uses control-parameters-pac;
-                description "none";
-            }
-            uses tapi-common:local-class;
+            uses tapi-common:resource-spec;
+            uses resilience-constraint;
             description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
         }
-        grouping control-parameters-pac {
-            leaf switch-type {
-                type switch-type;
-                description "Indicates the protection scheme that is used for the ProtectionGroup.";
+        grouping resilience-constraint {
+            container resilience-type {
+                uses tapi-topology:resilience-type;
+                description "none";
+            }
+            leaf restoration-coordinate-type {
+                type coordinate-type;
+                description " The coordination mechanism between multi-layers.";
+            }
+            leaf restore-priority {
+                type uint64;
+                description "none";
             }
             leaf reversion-mode {
                 type reversion-mode;
@@ -377,7 +393,7 @@ Editor: your-name<mailto:your-email@example.com>";
             }
             leaf is-frozen {
                 type boolean;
-                description "Temporarily prevents any switch action to be taken and, as such, freezes the current state. 
+                description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
                     Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
                     All administrative controls of any aspect of protection are rejected.";
             }
@@ -385,62 +401,62 @@ Editor: your-name<mailto:your-email@example.com>";
                 type boolean;
                 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
             }
+            leaf max-switch-times {
+                type uint64;
+                description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
+            }
+            leaf layer-protocol {
+                type tapi-common:layer-protocol-name;
+                description "Indicate which layer this resilience parameters package configured for.";
+            }
             description "A list of control parameters to apply to a switch.";
         }
         grouping topology-constraint {
-            leaf-list include-topology {
-                type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
-                }
+            list include-topology {
+                uses tapi-topology:topology-ref;
+                key 'topology-id';
                 config false;
                 description "none";
             }
-            leaf-list avoid-topology {
-                type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
-                }
+            list avoid-topology {
+                uses tapi-topology:topology-ref;
+                key 'topology-id';
                 config false;
                 description "none";
             }
-            leaf-list include-path {
-                type leafref {
-                    path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';
-                }
+            list include-path {
+                uses tapi-path-computation:path-ref;
+                key 'path-id';
                 config false;
                 description "none";
             }
-            leaf-list exclude-path {
-                type leafref {
-                    path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';
-                }
+            list exclude-path {
+                uses tapi-path-computation:path-ref;
+                key 'path-id';
                 config false;
                 description "none";
             }
-            leaf-list include-link {
-                type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
-                }
+            list include-link {
+                uses tapi-topology:link-ref;
+                key 'topology-id link-id';
                 config false;
                 description "This is a loose constraint - that is it is unordered and could be a partial list ";
             }
-            leaf-list exclude-link {
-                type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
-                }
+            list exclude-link {
+                uses tapi-topology:link-ref;
+                key 'topology-id link-id';
                 config false;
                 description "none";
             }
-            leaf-list include-node {
-                type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
-                }
+            list include-node {
+                uses tapi-topology:node-ref;
+                key 'topology-id node-id';
                 config false;
                 description "This is a loose constraint - that is it is unordered and could be a partial list";
             }
-            leaf-list exlude-node {
-                type leafref {
-                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
-                }
+            list exclude-node {
+                uses tapi-topology:node-ref;
+                key 'topology-id node-id';
                 config false;
                 description "none";
             }
@@ -449,7 +465,25 @@ Editor: your-name<mailto:your-email@example.com>";
                 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 {
+            list connection-end-point {
+                key 'uuid';
+                uses connection-end-point;
+                description "none";
+            }
+            description "none";
+        }
+        grouping route-compute-policy {
+            leaf route-objective-function {
+                type route-objective-function;
+                description "none";
+            }
+            leaf diversity-policy {
+                type diversity-policy;
+                description "none";
+            }
             description "none";
         }
 
@@ -461,7 +495,7 @@ Editor: your-name<mailto:your-email@example.com>";
                 enum POINT_TO_POINT_CONNECTIVITY {
                     description "none";
                 }
-                enum POINT_TO_MULTIPOINT_CONNECTIVTY {
+                enum POINT_TO_MULTIPOINT_CONNECTIVITY {
                     description "none";
                 }
                 enum MULTIPOINT_CONNECTIVITY {
@@ -530,12 +564,84 @@ Editor: your-name<mailto:your-email@example.com>";
             }
             description "The cause of the current route selection.";
         }
-        typedef switch-type {
+        typedef coordinate-type {
             type enumeration {
-                enum LINEAR_1_PLUS_1 {
+                enum NO_COORDINATE {
                     description "none";
                 }
-                enum LINEAR_1_FOR_1 {
+                enum HOLD_OFF_TIME {
+                    description "none";
+                }
+                enum WAIT_FOR_NOTIFICATION {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef route-objective-function {
+            type enumeration {
+                enum MIN_WORK_ROUTE_HOP {
+                    description "none";
+                }
+                enum MIN_WORK_ROUTE_COST {
+                    description "none";
+                }
+                enum MIN_WORK_ROUTE_LATENCY {
+                    description "none";
+                }
+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {
+                    description "none";
+                }
+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {
+                    description "none";
+                }
+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {
+                    description "none";
+                }
+                enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef diversity-policy {
+            type enumeration {
+                enum SRLG {
+                    description "none";
+                }
+                enum SRNG {
+                    description "none";
+                }
+                enum SNG {
+                    description "none";
+                }
+                enum NODE {
+                    description "none";
+                }
+                enum LINK {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef protection-role {
+            type enumeration {
+                enum WORK {
+                    description "none";
+                }
+                enum PROTECT {
+                    description "none";
+                }
+                enum PROTECTED {
+                    description "none";
+                }
+                enum NA {
+                    description "none";
+                }
+                enum WORK_RESTORE {
+                    description "none";
+                }
+                enum PROTECT_RESTORE {
                     description "none";
                 }
             }
@@ -604,6 +710,10 @@ Editor: your-name<mailto:your-email@example.com>";
                     uses topology-constraint;
                     description "none";
                 }
+                list resilience-constraint {
+                    uses resilience-constraint;
+                    description "none";
+                }
                 leaf state {
                     type string;
                     description "none";
@@ -635,6 +745,10 @@ Editor: your-name<mailto:your-email@example.com>";
                     uses topology-constraint;
                     description "none";
                 }
+                list resilience-constraint {
+                    uses resilience-constraint;
+                    description "none";
+                }
                 leaf state {
                     type string;
                     description "none";