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 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
23 License: This module is distributed under the Apache License 2.0";
25 description "ONF Transport API version 2.1.0
26 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
27 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
28 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
29 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
32 description "ONF Transport API version 2.0.2
33 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
34 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
35 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
36 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
39 description "ONF Transport API version 2.0.1
40 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
41 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
42 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
43 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
46 description "ONF Transport API version 2.0.0
47 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
48 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
49 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
50 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
52 augment "/tapi-common:context" {
53 uses connectivity-context-g;
54 description "Augments the base TAPI Context with ConnectivityService information";
56 augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
61 /*************************
62 * definitions of references
63 *************************/
64 grouping connectivity-service-ref-g {
65 leaf connectivity-service-uuid {
67 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
74 grouping connectivity-service-end-point-ref-g {
75 uses connectivity-service-ref-g;
76 leaf connectivity-service-end-point-local-id {
78 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
84 grouping connection-end-point-ref-g {
85 uses tapi-topology:node-edge-point-ref-g;
86 leaf connection-end-point-uuid {
88 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
95 grouping connection-ref-g {
96 leaf connection-uuid {
98 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
105 grouping switch-control-ref-g {
106 uses connection-ref-g;
107 leaf switch-control-uuid {
109 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
116 grouping route-ref-g {
117 uses connection-ref-g;
118 leaf route-local-id {
120 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
127 /***********************
128 * package object-classes
129 **********************/
130 grouping connection-g {
131 list connection-end-point {
132 uses connection-end-point-ref-g;
133 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
138 list lower-connection {
139 uses connection-ref-g;
140 key 'connection-uuid';
142 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).
143 Aggregation is used as for the Node/Topology to allow changes in hierarchy.
144 Connection aggregation reflects Node/Topology aggregation.
145 The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
147 list supported-client-link {
148 uses tapi-topology:link-ref-g;
149 key 'topology-uuid link-uuid';
159 list switch-control {
162 uses switch-control-g;
166 type tapi-common:forwarding-direction;
170 leaf layer-protocol-name {
171 type tapi-common:layer-protocol-name;
175 uses tapi-common:resource-spec-g;
176 uses tapi-common:operational-state-pac-g;
177 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.
178 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
180 grouping connection-end-point-g {
181 leaf layer-protocol-name {
182 type tapi-common:layer-protocol-name;
186 leaf layer-protocol-qualifier {
187 type tapi-common:layer-protocol-qualifier;
191 container parent-node-edge-point {
192 uses tapi-topology:node-edge-point-ref-g;
196 list client-node-edge-point {
197 uses tapi-topology:node-edge-point-ref-g;
198 key 'topology-uuid node-uuid node-edge-point-uuid';
202 list aggregated-connection-end-point {
203 uses connection-end-point-ref-g;
204 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
208 leaf connection-port-direction {
209 type tapi-common:port-direction;
211 description "The orientation of defined flow at the EndPoint.";
213 leaf connection-port-role {
214 type tapi-common:port-role;
216 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. ";
218 uses tapi-common:resource-spec-g;
219 uses tapi-common:operational-state-pac-g;
220 uses tapi-common:termination-pac-g;
221 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
222 The structure of LTP supports all transport protocols including circuit and packet forms.";
224 grouping connectivity-constraint-g {
226 type tapi-common:layer-protocol-name;
235 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
237 container requested-capacity {
238 uses tapi-common:capacity-g;
241 leaf connectivity-direction {
242 type tapi-common:forwarding-direction;
246 uses tapi-common:time-range-g;
249 container coroute-inclusion {
250 uses connectivity-service-ref-g;
253 list diversity-exclusion {
254 uses connectivity-service-ref-g;
255 key 'connectivity-service-uuid';
260 grouping connectivity-service-g {
264 uses connectivity-service-end-point-g;
268 uses connection-ref-g;
269 key 'connection-uuid';
273 uses tapi-common:service-spec-g;
274 uses connectivity-constraint-g;
275 uses tapi-path-computation:routing-constraint-g;
276 uses tapi-path-computation:topology-constraint-g;
277 uses resilience-constraint-g;
278 uses tapi-common:admin-state-pac-g;
279 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.
280 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
282 grouping connectivity-service-end-point-g {
283 leaf layer-protocol-name {
284 type tapi-common:layer-protocol-name;
287 leaf layer-protocol-qualifier {
288 type tapi-common:layer-protocol-qualifier;
291 container service-interface-point {
292 uses tapi-common:service-interface-point-ref-g;
295 list connection-end-point {
296 uses connection-end-point-ref-g;
297 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
302 uses tapi-common:capacity-g;
306 type tapi-common:port-direction;
307 description "The orientation of defined flow at the EndPoint.";
310 type tapi-common:port-role;
311 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. ";
313 leaf protection-role {
314 type protection-role;
315 description "To specify the protection role of this Port when create or update ConnectivityService.";
317 uses tapi-common:local-class-g;
318 uses tapi-common:admin-state-pac-g;
319 description "The association of the FC to LTPs is made via EndPoints.
320 The EndPoint (EP) object class models the access to the FC function.
321 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
322 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
323 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
324 The EP replaces the Protection Unit of a traditional protection model.
325 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
328 list connection-end-point {
329 uses connection-end-point-ref-g;
330 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
335 uses tapi-common:local-class-g;
336 description "The FC Route (FcRoute) object class models the individual routes of an FC.
337 The route of an FC object is represented by a list of FCs at a lower level.
338 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
340 grouping connectivity-context-g {
341 list connectivity-service {
343 uses connectivity-service-g;
355 list selected-connection-end-point {
356 uses connection-end-point-ref-g;
357 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
361 list selected-route {
363 key 'connection-uuid route-local-id';
367 leaf selection-control {
368 type selection-control;
369 description "Degree of administrative control applied to the switch selection.";
371 leaf selection-reason {
372 type selection-reason;
374 description "The reason for the current switch selection.";
376 leaf switch-direction {
377 type tapi-common:port-direction;
378 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
380 uses tapi-common:local-class-g;
381 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).
382 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.
383 The FC switch represents and defines a protection switch structure encapsulated in the FC.
384 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.
385 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.
386 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
387 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).
388 It may be locked out (prevented from switching), force switched or manual switched.
389 It will indicate switch state and change of state.
390 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').
391 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.
392 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
394 grouping switch-control-g {
395 list sub-switch-control {
396 uses switch-control-ref-g;
397 key 'connection-uuid switch-control-uuid';
405 uses tapi-common:resource-spec-g;
406 uses resilience-constraint-g;
407 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.";
409 grouping resilience-constraint-g {
410 container resilience-type {
411 uses tapi-topology:resilience-type-g;
414 leaf restoration-coordinate-type {
415 type coordinate-type;
416 description " The coordination mechanism between multi-layers.";
418 leaf restore-priority {
422 leaf reversion-mode {
424 description "Indcates whether the protection scheme is revertive or non-revertive.";
426 leaf wait-to-revert-time {
429 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.";
433 description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
437 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
438 This overrides all other protection control states including forced.
439 If the item is locked out then it cannot be used under any circumstances.
440 Note: Only relevant when part of a protection scheme.";
444 description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
445 Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
446 All administrative controls of any aspect of protection are rejected.";
448 leaf is-coordinated-switching-both-ends {
450 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
452 leaf max-switch-times {
454 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
456 leaf-list preferred-restoration-layer {
457 type tapi-common:layer-protocol-name;
458 description "Indicate which layer this resilience parameters package configured for.";
460 description "A list of control parameters to apply to a switch.";
462 grouping cep-list-g {
463 list connection-end-point {
465 uses connection-end-point-g;
471 /***********************
472 * package type-definitions
473 **********************/
474 typedef service-type {
476 enum POINT_TO_POINT_CONNECTIVITY {
479 enum POINT_TO_MULTIPOINT_CONNECTIVITY {
482 enum MULTIPOINT_CONNECTIVITY {
485 enum ROOTED_MULTIPOINT_CONNECTIVITY {
491 typedef reversion-mode {
494 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).";
497 description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
500 description "The reversion mode associated with protection.";
502 typedef selection-control {
505 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
506 This overrides all other protection control states including forced.
507 If the item is locked out then it cannot be used under any circumstances.
508 Note: Only relevant when part of a protection scheme.";
520 description "Possible degrees of administrative control applied to the Route selection.";
522 typedef selection-reason {
536 enum WAIT_TO_REVERT {
539 enum SIGNAL_DEGRADE {
546 description "The cause of the current route selection.";
548 typedef coordinate-type {
556 enum WAIT_FOR_NOTIFICATION {
562 typedef protection-role {
579 enum PROTECT_RESTORE {
586 /***********************
588 **********************/
589 rpc get-connection-details {
592 leaf service-id-or-name {
596 leaf connection-id-or-name {
602 container connection {
608 rpc get-connectivity-service-list {
612 uses connectivity-service-g;
617 rpc get-connectivity-service-details {
620 leaf service-id-or-name {
627 uses connectivity-service-g;
632 rpc create-connectivity-service {
638 uses connectivity-service-end-point-g;
641 container connectivity-constraint {
642 uses connectivity-constraint-g;
645 container routing-constraint {
646 uses tapi-path-computation:routing-constraint-g;
649 container topology-constraint {
650 uses tapi-path-computation:topology-constraint-g;
653 list resilience-constraint {
654 uses resilience-constraint-g;
664 uses connectivity-service-g;
669 rpc update-connectivity-service {
672 leaf service-id-or-name {
676 container end-point {
677 uses connectivity-service-end-point-g;
680 container connectivity-constraint {
681 uses connectivity-constraint-g;
684 container routing-constraint {
685 uses tapi-path-computation:routing-constraint-g;
688 container topology-constraint {
689 uses tapi-path-computation:topology-constraint-g;
692 list resilience-constraint {
693 uses resilience-constraint-g;
703 uses connectivity-service-g;
708 rpc delete-connectivity-service {
711 leaf service-id-or-name {