blob: 7c6867c05b68342ae0ef975a2c239b372c43510a [file] [log] [blame]
Toru Furusawa28988892017-10-30 17:28:40 -07001module tapi-connectivity {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -08002 namespace "urn:onf:otcc:yang:tapi-connectivity";
Toru Furusawa28988892017-10-30 17:28:40 -07003 prefix tapi-connectivity;
4 import tapi-common {
5 prefix tapi-common;
6 }
7 import tapi-topology {
8 prefix tapi-topology;
9 }
10 import tapi-path-computation {
11 prefix tapi-path-computation;
12 }
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080013 organization "ONF OTCC (Open Transport Configuration & Control) Project";
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070014 contact "
15 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
16 Project List: <mailto:transport-api@opennetworking.org>
17 Editor: Karthik Sethuraman
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080018 <mailto:karthik.sethuraman@necam.com>";
19 description "
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";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080024 revision 2018-03-07 {
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070025 description "ONF Transport API version 2.0.2
26 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool version .
27 <https://wiki.opennetworking.org/display/OIMT/IISOMI>
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080028 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/change-log.md>";
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070029 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080030 <https://github.com/OpenNetworkingFoundation/TAPI/tree/develop/UML>";
Toru Furusawa28988892017-10-30 17:28:40 -070031 }
32 augment "/tapi-common:context" {
33 uses connectivity-context;
34 description "Augments the base TAPI Context with ConnectivityService information";
35 }
36 augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
37 uses cep-list;
38 description "none";
39 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080040
41 /*************************
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070042 * definitions of references
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080043 *************************/
44 grouping connectivity-service-ref {
45 leaf connectivity-service-id {
46 type leafref {
47 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
48 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070049 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080050 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070051 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080052 }
53
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070054 grouping connectivity-service-end-point-ref {
55 uses connectivity-service-ref;
56 leaf connectivity-service-end-point-id {
57 type leafref {
58 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
59 }
60 description "none";
61 }
62 description "none";
63 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080064 grouping connection-end-point-ref {
65 uses tapi-topology:owned-node-edge-point-ref;
66 leaf connection-end-point-id {
67 type leafref {
68 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
69 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070070 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080071 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070072 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080073 }
74
75 grouping connection-ref {
76 leaf connection-id {
77 type leafref {
78 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
79 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070080 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080081 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070082 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080083 }
84
85 grouping switch-control-ref {
86 uses connection-ref;
87 leaf switch-control-id {
88 type leafref {
89 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
90 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070091 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080092 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070093 description "none";
94 }
95
96 grouping route-ref {
97 uses connection-ref;
98 leaf route-id {
99 type leafref {
100 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
101 }
102 description "none";
103 }
104 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800105 }
106
Toru Furusawa28988892017-10-30 17:28:40 -0700107 /***********************
108 * package object-classes
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700109 **********************/
Toru Furusawa28988892017-10-30 17:28:40 -0700110 grouping connection {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800111 list connection-end-point {
112 uses connection-end-point-ref;
113 key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700114 config false;
115 min-elements 2;
116 description "none";
117 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700118 list lower-connection {
119 uses connection-ref;
120 key 'connection-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700121 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).
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700122 Aggregation is used as for the Node/Topology to allow changes in hierarchy.
123 Connection aggregation reflects Node/Topology aggregation.
Toru Furusawa28988892017-10-30 17:28:40 -0700124 The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
125 }
Toru Furusawa28988892017-10-30 17:28:40 -0700126 list route {
127 key 'local-id';
128 config false;
129 uses route;
130 description "none";
131 }
132 list switch-control {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800133 key 'uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700134 config false;
135 uses switch-control;
136 description "none";
137 }
Toru Furusawa28988892017-10-30 17:28:40 -0700138 leaf direction {
139 type tapi-common:forwarding-direction;
140 config false;
141 description "none";
142 }
143 leaf layer-protocol-name {
144 type tapi-common:layer-protocol-name;
145 config false;
146 description "none";
147 }
148 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500149 uses tapi-common:operational-state-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700150 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.
151 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
152 }
153 grouping connection-end-point {
wu6a418d22018-02-02 01:49:21 -0500154 leaf layer-protocol-name {
155 type tapi-common:layer-protocol-name;
156 config false;
157 description "none";
158 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700159 container connectivity-service-end-point {
160 uses connectivity-service-end-point-ref;
wu6a418d22018-02-02 01:49:21 -0500161 description "none";
162 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800163 list parent-node-edge-point {
164 uses tapi-topology:owned-node-edge-point-ref;
165 key 'topology-id node-id owned-node-edge-point-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700166 config false;
167 min-elements 1;
Toru Furusawa28988892017-10-30 17:28:40 -0700168 description "none";
169 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800170 list client-node-edge-point {
171 uses tapi-topology:owned-node-edge-point-ref;
172 key 'topology-id node-id owned-node-edge-point-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700173 config false;
174 description "none";
175 }
Toru Furusawa28988892017-10-30 17:28:40 -0700176 leaf connection-port-direction {
177 type tapi-common:port-direction;
178 config false;
179 description "The orientation of defined flow at the EndPoint.";
180 }
181 leaf connection-port-role {
182 type tapi-common:port-role;
183 config false;
184 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. ";
185 }
186 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500187 uses tapi-common:operational-state-pac;
188 uses tapi-common:termination-pac;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700189 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
Toru Furusawa28988892017-10-30 17:28:40 -0700190 The structure of LTP supports all transport protocols including circuit and packet forms.";
191 }
192 grouping connectivity-constraint {
193 leaf service-type {
194 type service-type;
Toru Furusawa28988892017-10-30 17:28:40 -0700195 description "none";
196 }
197 leaf service-level {
198 type string;
Toru Furusawa28988892017-10-30 17:28:40 -0700199 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
200 }
201 leaf is-exclusive {
202 type boolean;
203 default "true";
204 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)";
205 }
206 container requested-capacity {
Toru Furusawa28988892017-10-30 17:28:40 -0700207 uses tapi-common:capacity;
208 description "none";
209 }
210 container schedule {
211 uses tapi-common:time-range;
212 description "none";
213 }
214 list cost-characteristic {
215 key 'cost-name';
Toru Furusawa28988892017-10-30 17:28:40 -0700216 uses tapi-topology:cost-characteristic;
217 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
218 }
219 list latency-characteristic {
220 key 'traffic-property-name';
Toru Furusawa28988892017-10-30 17:28:40 -0700221 uses tapi-topology:latency-characteristic;
222 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
223 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700224 container coroute-inclusion {
225 uses connectivity-service-ref;
Toru Furusawa28988892017-10-30 17:28:40 -0700226 description "none";
227 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800228 list diversity-exclusion {
229 uses connectivity-service-ref;
230 key 'connectivity-service-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700231 description "none";
232 }
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800233 uses route-compute-policy;
Toru Furusawa28988892017-10-30 17:28:40 -0700234 description "none";
235 }
236 grouping connectivity-service {
237 list end-point {
238 key 'local-id';
239 min-elements 2;
240 uses connectivity-service-end-point;
241 description "none";
242 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700243 list connection {
244 uses connection-ref;
245 key 'connection-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700246 config false;
247 description "none";
248 }
Toru Furusawa28988892017-10-30 17:28:40 -0700249 leaf direction {
250 type tapi-common:forwarding-direction;
251 description "none";
252 }
253 leaf layer-protocol-name {
254 type tapi-common:layer-protocol-name;
255 description "none";
256 }
Toru Furusawa28988892017-10-30 17:28:40 -0700257 uses tapi-common:service-spec;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800258 uses connectivity-constraint;
259 uses topology-constraint;
wu6a418d22018-02-02 01:49:21 -0500260 uses tapi-common:admin-state-pac;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800261 uses resilience-constraint;
Toru Furusawa28988892017-10-30 17:28:40 -0700262 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.
263 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
264 }
265 grouping connectivity-service-end-point {
wu6a418d22018-02-02 01:49:21 -0500266 leaf layer-protocol-name {
267 type tapi-common:layer-protocol-name;
268 description "none";
269 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800270 container service-interface-point {
271 uses tapi-common:service-interface-point-ref;
Toru Furusawa28988892017-10-30 17:28:40 -0700272 description "none";
273 }
Toru Furusawa28988892017-10-30 17:28:40 -0700274 container capacity {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800275 uses tapi-common:capacity;
Toru Furusawa28988892017-10-30 17:28:40 -0700276 description "none";
277 }
278 leaf direction {
279 type tapi-common:port-direction;
280 description "The orientation of defined flow at the EndPoint.";
281 }
282 leaf role {
283 type tapi-common:port-role;
284 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. ";
285 }
286 leaf protection-role {
287 type protection-role;
288 description "To specify the protection role of this Port when create or update ConnectivityService.";
289 }
290 uses tapi-common:local-class;
wu6a418d22018-02-02 01:49:21 -0500291 uses tapi-common:admin-state-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700292 description "The association of the FC to LTPs is made via EndPoints.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700293 The EndPoint (EP) object class models the access to the FC function.
294 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
295 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
Toru Furusawa28988892017-10-30 17:28:40 -0700296 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700297 The EP replaces the Protection Unit of a traditional protection model.
Toru Furusawa28988892017-10-30 17:28:40 -0700298 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
299 }
300 grouping route {
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700301 list connection-end-point {
302 uses connection-end-point-ref;
303 key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700304 config false;
305 min-elements 2;
306 description "none";
307 }
308 uses tapi-common:local-class;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700309 description "The FC Route (FcRoute) object class models the individual routes of an FC.
310 The route of an FC object is represented by a list of FCs at a lower level.
Toru Furusawa28988892017-10-30 17:28:40 -0700311 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
312 }
313 grouping connectivity-context {
314 list connectivity-service {
315 key 'uuid';
316 uses connectivity-service;
317 description "none";
318 }
319 list connection {
320 key 'uuid';
321 config false;
322 uses connection;
323 description "none";
324 }
325 description "none";
326 }
327 grouping switch {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800328 list selected-connection-end-point {
329 uses connection-end-point-ref;
330 key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700331 min-elements 1;
332 description "none";
333 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700334 list selected-route {
335 uses route-ref;
336 key 'connection-id route-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700337 min-elements 1;
338 description "none";
339 }
340 leaf selection-control {
341 type selection-control;
342 description "Degree of administrative control applied to the switch selection.";
343 }
344 leaf selection-reason {
345 type selection-reason;
346 config false;
347 description "The reason for the current switch selection.";
348 }
349 leaf switch-direction {
350 type tapi-common:port-direction;
351 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
352 }
353 uses tapi-common:local-class;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700354 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).
Toru Furusawa28988892017-10-30 17:28:40 -0700355 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.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700356 The FC switch represents and defines a protection switch structure encapsulated in the FC.
357 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.
Toru Furusawa28988892017-10-30 17:28:40 -0700358 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.
359 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
360 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).
361 It may be locked out (prevented from switching), force switched or manual switched.
362 It will indicate switch state and change of state.
363 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').
364 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.
365 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
366 }
367 grouping switch-control {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800368 list sub-switch-control {
369 uses switch-control-ref;
370 key 'connection-id switch-control-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700371 description "none";
372 }
373 list switch {
374 key 'local-id';
375 uses switch;
376 description "none";
377 }
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800378 uses tapi-common:resource-spec;
379 uses resilience-constraint;
Toru Furusawa28988892017-10-30 17:28:40 -0700380 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.";
381 }
382 grouping resilience-constraint {
383 container resilience-type {
384 uses tapi-topology:resilience-type;
385 description "none";
386 }
387 leaf restoration-coordinate-type {
388 type coordinate-type;
389 description " The coordination mechanism between multi-layers.";
390 }
391 leaf restore-priority {
392 type uint64;
393 description "none";
394 }
395 leaf reversion-mode {
396 type reversion-mode;
397 description "Indcates whether the protection scheme is revertive or non-revertive.";
398 }
399 leaf wait-to-revert-time {
400 type uint64;
401 default "15";
402 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.";
403 }
404 leaf hold-off-time {
405 type uint64;
406 description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
407 }
408 leaf is-lock-out {
409 type boolean;
410 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
411 This overrides all other protection control states including forced.
412 If the item is locked out then it cannot be used under any circumstances.
413 Note: Only relevant when part of a protection scheme.";
414 }
415 leaf is-frozen {
416 type boolean;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700417 description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
Toru Furusawa28988892017-10-30 17:28:40 -0700418 Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
419 All administrative controls of any aspect of protection are rejected.";
420 }
421 leaf is-coordinated-switching-both-ends {
422 type boolean;
423 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
424 }
425 leaf max-switch-times {
426 type uint64;
427 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
428 }
429 leaf layer-protocol {
430 type tapi-common:layer-protocol-name;
431 description "Indicate which layer this resilience parameters package configured for.";
432 }
Toru Furusawa28988892017-10-30 17:28:40 -0700433 description "A list of control parameters to apply to a switch.";
434 }
435 grouping topology-constraint {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800436 list include-topology {
437 uses tapi-topology:topology-ref;
438 key 'topology-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700439 config false;
440 description "none";
441 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800442 list avoid-topology {
443 uses tapi-topology:topology-ref;
444 key 'topology-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700445 config false;
446 description "none";
447 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800448 list include-path {
449 uses tapi-path-computation:path-ref;
450 key 'path-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700451 config false;
452 description "none";
453 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800454 list exclude-path {
455 uses tapi-path-computation:path-ref;
456 key 'path-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700457 config false;
458 description "none";
459 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800460 list include-link {
461 uses tapi-topology:link-ref;
462 key 'topology-id link-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700463 config false;
464 description "This is a loose constraint - that is it is unordered and could be a partial list ";
465 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800466 list exclude-link {
467 uses tapi-topology:link-ref;
468 key 'topology-id link-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700469 config false;
470 description "none";
471 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800472 list include-node {
473 uses tapi-topology:node-ref;
474 key 'topology-id node-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700475 config false;
476 description "This is a loose constraint - that is it is unordered and could be a partial list";
477 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800478 list exclude-node {
479 uses tapi-topology:node-ref;
480 key 'topology-id node-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700481 config false;
482 description "none";
483 }
484 leaf-list preferred-transport-layer {
485 type tapi-common:layer-protocol-name;
486 config false;
487 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";
488 }
Toru Furusawa28988892017-10-30 17:28:40 -0700489 description "none";
490 }
491 grouping cep-list {
492 list connection-end-point {
493 key 'uuid';
494 uses connection-end-point;
495 description "none";
496 }
497 description "none";
498 }
499 grouping route-compute-policy {
500 leaf route-objective-function {
501 type route-objective-function;
502 description "none";
503 }
504 leaf diversity-policy {
505 type diversity-policy;
506 description "none";
507 }
508 description "none";
509 }
510
511 /***********************
512 * package type-definitions
513 **********************/
514 typedef service-type {
515 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500516 enum POINT_TO_POINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700517 description "none";
518 }
wu6a418d22018-02-02 01:49:21 -0500519 enum POINT_TO_MULTIPOINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700520 description "none";
521 }
wu6a418d22018-02-02 01:49:21 -0500522 enum MULTIPOINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700523 description "none";
524 }
wu6a418d22018-02-02 01:49:21 -0500525 enum ROOTED_MULTIPOINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700526 description "none";
527 }
528 }
529 description "none";
530 }
531 typedef reversion-mode {
532 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500533 enum REVERTIVE {
Toru Furusawa28988892017-10-30 17:28:40 -0700534 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).";
535 }
wu6a418d22018-02-02 01:49:21 -0500536 enum NON-REVERTIVE {
Toru Furusawa28988892017-10-30 17:28:40 -0700537 description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
538 }
539 }
540 description "The reversion mode associated with protection.";
541 }
542 typedef selection-control {
543 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500544 enum LOCK_OUT {
Toru Furusawa28988892017-10-30 17:28:40 -0700545 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
546 This overrides all other protection control states including forced.
547 If the item is locked out then it cannot be used under any circumstances.
548 Note: Only relevant when part of a protection scheme.";
549 }
wu6a418d22018-02-02 01:49:21 -0500550 enum NORMAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700551 description "none";
552 }
wu6a418d22018-02-02 01:49:21 -0500553 enum MANUAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700554 description "none";
555 }
wu6a418d22018-02-02 01:49:21 -0500556 enum FORCED {
Toru Furusawa28988892017-10-30 17:28:40 -0700557 description "none";
558 }
559 }
560 description "Possible degrees of administrative control applied to the Route selection.";
561 }
562 typedef selection-reason {
563 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500564 enum LOCKOUT {
Toru Furusawa28988892017-10-30 17:28:40 -0700565 description "none";
566 }
wu6a418d22018-02-02 01:49:21 -0500567 enum NORMAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700568 description "none";
569 }
wu6a418d22018-02-02 01:49:21 -0500570 enum MANUAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700571 description "none";
572 }
wu6a418d22018-02-02 01:49:21 -0500573 enum FORCED {
Toru Furusawa28988892017-10-30 17:28:40 -0700574 description "none";
575 }
wu6a418d22018-02-02 01:49:21 -0500576 enum WAIT_TO_REVERT {
Toru Furusawa28988892017-10-30 17:28:40 -0700577 description "none";
578 }
wu6a418d22018-02-02 01:49:21 -0500579 enum SIGNAL_DEGRADE {
Toru Furusawa28988892017-10-30 17:28:40 -0700580 description "none";
581 }
wu6a418d22018-02-02 01:49:21 -0500582 enum SIGNAL_FAIL {
Toru Furusawa28988892017-10-30 17:28:40 -0700583 description "none";
584 }
585 }
586 description "The cause of the current route selection.";
587 }
588 typedef coordinate-type {
589 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500590 enum NO_COORDINATE {
Toru Furusawa28988892017-10-30 17:28:40 -0700591 description "none";
592 }
wu6a418d22018-02-02 01:49:21 -0500593 enum HOLD_OFF_TIME {
Toru Furusawa28988892017-10-30 17:28:40 -0700594 description "none";
595 }
wu6a418d22018-02-02 01:49:21 -0500596 enum WAIT_FOR_NOTIFICATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700597 description "none";
598 }
599 }
600 description "none";
601 }
602 typedef route-objective-function {
603 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500604 enum MIN_WORK_ROUTE_HOP {
Toru Furusawa28988892017-10-30 17:28:40 -0700605 description "none";
606 }
wu6a418d22018-02-02 01:49:21 -0500607 enum MIN_WORK_ROUTE_COST {
Toru Furusawa28988892017-10-30 17:28:40 -0700608 description "none";
609 }
wu6a418d22018-02-02 01:49:21 -0500610 enum MIN_WORK_ROUTE_LATENCY {
Toru Furusawa28988892017-10-30 17:28:40 -0700611 description "none";
612 }
wu6a418d22018-02-02 01:49:21 -0500613 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {
Toru Furusawa28988892017-10-30 17:28:40 -0700614 description "none";
615 }
wu6a418d22018-02-02 01:49:21 -0500616 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {
Toru Furusawa28988892017-10-30 17:28:40 -0700617 description "none";
618 }
wu6a418d22018-02-02 01:49:21 -0500619 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {
Toru Furusawa28988892017-10-30 17:28:40 -0700620 description "none";
621 }
wu6a418d22018-02-02 01:49:21 -0500622 enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700623 description "none";
624 }
625 }
626 description "none";
627 }
628 typedef diversity-policy {
629 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500630 enum SRLG {
Toru Furusawa28988892017-10-30 17:28:40 -0700631 description "none";
632 }
wu6a418d22018-02-02 01:49:21 -0500633 enum SRNG {
Toru Furusawa28988892017-10-30 17:28:40 -0700634 description "none";
635 }
wu6a418d22018-02-02 01:49:21 -0500636 enum SNG {
Toru Furusawa28988892017-10-30 17:28:40 -0700637 description "none";
638 }
wu6a418d22018-02-02 01:49:21 -0500639 enum NODE {
Toru Furusawa28988892017-10-30 17:28:40 -0700640 description "none";
641 }
wu6a418d22018-02-02 01:49:21 -0500642 enum LINK {
Toru Furusawa28988892017-10-30 17:28:40 -0700643 description "none";
644 }
645 }
646 description "none";
647 }
648 typedef protection-role {
649 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500650 enum WORK {
Toru Furusawa28988892017-10-30 17:28:40 -0700651 description "none";
652 }
wu6a418d22018-02-02 01:49:21 -0500653 enum PROTECT {
Toru Furusawa28988892017-10-30 17:28:40 -0700654 description "none";
655 }
wu6a418d22018-02-02 01:49:21 -0500656 enum PROTECTED {
Toru Furusawa28988892017-10-30 17:28:40 -0700657 description "none";
658 }
wu6a418d22018-02-02 01:49:21 -0500659 enum NA {
Toru Furusawa28988892017-10-30 17:28:40 -0700660 description "none";
661 }
wu6a418d22018-02-02 01:49:21 -0500662 enum WORK_RESTORE {
Toru Furusawa28988892017-10-30 17:28:40 -0700663 description "none";
664 }
wu6a418d22018-02-02 01:49:21 -0500665 enum PROTECT_RESTORE {
Toru Furusawa28988892017-10-30 17:28:40 -0700666 description "none";
667 }
668 }
669 description "none";
670 }
671
672 /***********************
673 * package interfaces
674 **********************/
675 rpc get-connection-details {
676 description "none";
677 input {
678 leaf service-id-or-name {
679 type string;
680 description "none";
681 }
682 leaf connection-id-or-name {
683 type string;
684 description "none";
685 }
686 }
687 output {
688 container connection {
689 uses connection;
690 description "none";
691 }
692 }
693 }
694 rpc get-connectivity-service-list {
695 description "none";
696 output {
697 list service {
698 uses connectivity-service;
699 description "none";
700 }
701 }
702 }
703 rpc get-connectivity-service-details {
704 description "none";
705 input {
706 leaf service-id-or-name {
707 type string;
708 description "none";
709 }
710 }
711 output {
712 container service {
713 uses connectivity-service;
714 description "none";
715 }
716 }
717 }
718 rpc create-connectivity-service {
719 description "none";
720 input {
721 list end-point {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800722 key 'local-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700723 min-elements 2;
724 uses connectivity-service-end-point;
725 description "none";
726 }
727 container conn-constraint {
728 uses connectivity-constraint;
729 description "none";
730 }
731 container topo-constraint {
732 uses topology-constraint;
733 description "none";
734 }
735 list resilience-constraint {
736 uses resilience-constraint;
737 description "none";
738 }
739 leaf state {
740 type string;
741 description "none";
742 }
743 }
744 output {
745 container service {
746 uses connectivity-service;
747 description "none";
748 }
749 }
750 }
751 rpc update-connectivity-service {
752 description "none";
753 input {
754 leaf service-id-or-name {
755 type string;
756 description "none";
757 }
758 container end-point {
759 uses connectivity-service-end-point;
760 description "none";
761 }
762 container conn-constraint {
763 uses connectivity-constraint;
764 description "none";
765 }
766 container topo-constraint {
767 uses topology-constraint;
768 description "none";
769 }
770 list resilience-constraint {
771 uses resilience-constraint;
772 description "none";
773 }
774 leaf state {
775 type string;
776 description "none";
777 }
778 }
779 output {
780 container service {
781 uses connectivity-service;
782 description "none";
783 }
784 }
785 }
786 rpc delete-connectivity-service {
787 description "none";
788 input {
789 leaf service-id-or-name {
790 type string;
791 description "none";
792 }
793 }
794 output {
795 container service {
796 uses connectivity-service;
797 description "none";
798 }
799 }
800 }
801
802}