1 module tapi-connectivity {
2 namespace "urn:onf:otcc:yang:tapi-connectivity";
3 prefix tapi-connectivity;
10 import tapi-path-computation {
11 prefix tapi-path-computation;
13 organization "ONF OTCC (Open Transport Configuration & Control) Project";
15 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
16 Project List: <mailto:transport-api@opennetworking.org>
17 Editor: Karthik Sethuraman
18 <mailto:karthik.sethuraman@necam.com>";
20 This module contains TAPI Connectivity Model definitions.
21 Source: TapiConnectivity.uml
22 - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
23 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
24 <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
25 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
26 <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
27 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
28 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
29 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
30 The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
31 YANG models included in this release may not be backward compatible with previous TAPI releases.
32 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
33 License: This module is distributed under the Apache License 2.0";
35 description "ONF Transport API version 2.1.1.
36 Changes included in this TAPI release (v2.1.1) are listed in
37 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
38 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
39 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
42 description "ONF Transport API version 2.1.0.
43 Changes included in this TAPI release (v2.1.0) are listed in
44 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
45 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
46 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
49 description "ONF Transport API version 2.0.2
50 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
51 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
52 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
53 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
56 description "ONF Transport API version 2.0.1
57 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
58 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
59 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
60 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
63 description "ONF Transport API version 2.0.0
64 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
65 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
66 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
67 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
69 augment "/tapi-common:context" {
70 container connectivity-context {
71 uses connectivity-context;
72 description "Augments the base TAPI Context with ConnectivityService information";
74 description "Augments the base TAPI Context with ConnectivityService information";
76 augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
84 /**************************
85 * definitions of references
86 **************************/
87 grouping connectivity-service-ref {
88 leaf connectivity-service-uuid {
90 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
96 grouping connectivity-service-end-point-ref {
97 uses connectivity-service-ref;
98 leaf connectivity-service-end-point-local-id {
100 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
106 grouping connection-end-point-ref {
107 uses tapi-topology:node-edge-point-ref;
108 leaf connection-end-point-uuid {
110 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
116 grouping connection-ref {
117 leaf connection-uuid {
119 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:uuid';
125 grouping switch-control-ref {
127 leaf switch-control-uuid {
129 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
137 leaf route-local-id {
139 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
146 /**************************
147 * package object-classes
148 **************************/
149 grouping connection {
150 list connection-end-point {
151 uses connection-end-point-ref;
152 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
157 list lower-connection {
159 key 'connection-uuid';
161 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).
162 Aggregation is used as for the Node/Topology to allow changes in hierarchy.
163 Connection aggregation reflects Node/Topology aggregation.
164 The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
166 list supported-client-link {
167 uses tapi-topology:link-ref;
168 key 'topology-uuid link-uuid';
178 list switch-control {
185 type tapi-common:forwarding-direction;
189 leaf layer-protocol-name {
190 type tapi-common:layer-protocol-name;
194 uses tapi-common:resource-spec;
195 uses tapi-common:operational-state-pac;
196 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.
197 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
199 grouping connection-end-point {
200 leaf layer-protocol-name {
201 type tapi-common:layer-protocol-name;
205 leaf layer-protocol-qualifier {
206 type tapi-common:layer-protocol-qualifier;
210 container parent-node-edge-point {
211 uses tapi-topology:node-edge-point-ref;
215 list client-node-edge-point {
216 uses tapi-topology:node-edge-point-ref;
217 key 'topology-uuid node-uuid node-edge-point-uuid';
221 list aggregated-connection-end-point {
222 uses connection-end-point-ref;
223 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
227 leaf connection-port-direction {
228 type tapi-common:port-direction;
230 description "The orientation of defined flow at the EndPoint.";
232 leaf connection-port-role {
233 type tapi-common:port-role;
235 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. ";
237 uses tapi-common:resource-spec;
238 uses tapi-common:operational-state-pac;
239 uses tapi-common:termination-pac;
240 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
241 The structure of LTP supports all transport protocols including circuit and packet forms.";
243 grouping connectivity-constraint {
245 type tapi-common:layer-protocol-name;
254 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
256 container requested-capacity {
257 uses tapi-common:capacity;
260 leaf connectivity-direction {
261 type tapi-common:forwarding-direction;
265 uses tapi-common:time-range;
268 container coroute-inclusion {
269 uses connectivity-service-ref;
272 list diversity-exclusion {
273 uses connectivity-service-ref;
274 key 'connectivity-service-uuid';
279 grouping connectivity-service {
283 uses connectivity-service-end-point;
288 key 'connection-uuid';
292 uses tapi-common:service-spec;
293 uses connectivity-constraint;
294 uses tapi-path-computation:routing-constraint;
295 uses tapi-path-computation:topology-constraint;
296 uses resilience-constraint;
297 uses tapi-common:admin-state-pac;
298 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.
299 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
301 grouping connectivity-service-end-point {
302 leaf layer-protocol-name {
303 type tapi-common:layer-protocol-name;
306 leaf layer-protocol-qualifier {
307 type tapi-common:layer-protocol-qualifier;
310 container service-interface-point {
311 uses tapi-common:service-interface-point-ref;
314 list connection-end-point {
315 uses connection-end-point-ref;
316 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
321 uses tapi-common:capacity;
325 type tapi-common:port-direction;
326 description "The orientation of defined flow at the EndPoint.";
329 type tapi-common:port-role;
330 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. ";
332 leaf protection-role {
333 type protection-role;
334 description "To specify the protection role of this Port when create or update ConnectivityService.";
336 uses tapi-common:local-class;
337 uses tapi-common:admin-state-pac;
338 description "The association of the FC to LTPs is made via EndPoints.
339 The EndPoint (EP) object class models the access to the FC function.
340 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
341 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
342 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
343 The EP replaces the Protection Unit of a traditional protection model.
344 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
347 list connection-end-point {
348 uses connection-end-point-ref;
349 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
354 uses tapi-common:local-class;
355 description "The FC Route (FcRoute) object class models the individual routes of an FC.
356 The route of an FC object is represented by a list of FCs at a lower level.
357 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
359 grouping connectivity-context {
360 list connectivity-service {
362 uses connectivity-service;
374 list selected-connection-end-point {
375 uses connection-end-point-ref;
376 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
380 list selected-route {
382 key 'connection-uuid route-local-id';
386 leaf selection-control {
387 type selection-control;
388 description "Degree of administrative control applied to the switch selection.";
390 leaf selection-reason {
391 type selection-reason;
393 description "The reason for the current switch selection.";
395 leaf switch-direction {
396 type tapi-common:port-direction;
397 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
399 uses tapi-common:local-class;
400 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).
401 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.
402 The FC switch represents and defines a protection switch structure encapsulated in the FC.
403 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.
404 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.
405 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
406 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).
407 It may be locked out (prevented from switching), force switched or manual switched.
408 It will indicate switch state and change of state.
409 The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
410 The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
411 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
413 grouping switch-control {
414 list sub-switch-control {
415 uses switch-control-ref;
416 key 'connection-uuid switch-control-uuid';
424 uses tapi-common:resource-spec;
425 uses resilience-constraint;
426 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.";
428 grouping resilience-constraint {
429 container resilience-type {
430 uses tapi-topology:resilience-type;
433 leaf restoration-coordinate-type {
434 type coordinate-type;
435 description " The coordination mechanism between multi-layers.";
437 leaf restore-priority {
441 leaf reversion-mode {
443 description "Indcates whether the protection scheme is revertive or non-revertive.";
445 leaf wait-to-revert-time {
448 description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
452 description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
456 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
457 This overrides all other protection control states including forced.
458 If the item is locked out then it cannot be used under any circumstances.
459 Note: Only relevant when part of a protection scheme.";
463 description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
464 Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
465 All administrative controls of any aspect of protection are rejected.";
467 leaf is-coordinated-switching-both-ends {
469 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
471 leaf max-switch-times {
473 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
475 leaf-list preferred-restoration-layer {
476 type tapi-common:layer-protocol-name;
477 description "Indicate which layer this resilience parameters package configured for.";
479 description "A list of control parameters to apply to a switch.";
482 list connection-end-point {
484 uses connection-end-point;
490 /**************************
491 * package type-definitions
492 **************************/
493 typedef service-type {
495 enum POINT_TO_POINT_CONNECTIVITY {
498 enum POINT_TO_MULTIPOINT_CONNECTIVITY {
501 enum MULTIPOINT_CONNECTIVITY {
504 enum ROOTED_MULTIPOINT_CONNECTIVITY {
510 typedef reversion-mode {
513 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).";
516 description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
519 description "The reversion mode associated with protection.";
521 typedef selection-control {
524 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
525 This overrides all other protection control states including forced.
526 If the item is locked out then it cannot be used under any circumstances.
527 Note: Only relevant when part of a protection scheme.";
539 description "Possible degrees of administrative control applied to the Route selection.";
541 typedef selection-reason {
555 enum WAIT_TO_REVERT {
558 enum SIGNAL_DEGRADE {
565 description "The cause of the current route selection.";
567 typedef coordinate-type {
575 enum WAIT_FOR_NOTIFICATION {
581 typedef protection-role {
598 enum PROTECT_RESTORE {
605 /**************************
607 **************************/
608 rpc get-connection-details {
611 leaf connection-id-or-name {
617 container connection {
623 rpc get-connectivity-service-list {
628 uses connectivity-service;
633 rpc get-connectivity-service-details {
636 leaf service-id-or-name {
643 uses connectivity-service;
648 rpc create-connectivity-service {
654 uses connectivity-service-end-point;
657 container connectivity-constraint {
658 uses connectivity-constraint;
661 container routing-constraint {
662 uses tapi-path-computation:routing-constraint;
665 container topology-constraint {
666 uses tapi-path-computation:topology-constraint;
669 container resilience-constraint {
670 uses resilience-constraint;
680 uses connectivity-service;
685 rpc update-connectivity-service {
688 leaf service-id-or-name {
694 uses connectivity-service-end-point;
697 container connectivity-constraint {
698 uses connectivity-constraint;
701 container routing-constraint {
702 uses tapi-path-computation:routing-constraint;
705 container topology-constraint {
706 uses tapi-path-computation:topology-constraint;
709 container resilience-constraint {
710 uses resilience-constraint;
720 uses connectivity-service;
725 rpc delete-connectivity-service {
728 leaf service-id-or-name {
734 rpc get-connection-end-point-details {
737 leaf topology-id-or-name {
741 leaf node-id-or-name {
745 leaf nep-id-or-name {
749 leaf cep-id-or-name {
755 container connection-end-point {
756 uses connection-end-point;