blob: eeae3e27564f26924c8c5540bb3e44772681a4cc [file] [log] [blame]
Toru Furusawa28988892017-10-30 17:28:40 -07001module tapi-path-computation {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -08002 namespace "urn:onf:otcc:yang:tapi-path-computation";
Toru Furusawa28988892017-10-30 17:28:40 -07003 prefix tapi-path-computation;
4 import tapi-topology {
5 prefix tapi-topology;
6 }
7 import tapi-common {
8 prefix tapi-common;
9 }
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080010 organization "ONF OTCC (Open Transport Configuration & Control) Project";
hirokid8fd7862018-10-09 15:24:24 +090011 contact "
12 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
13 Project List: <mailto:transport-api@opennetworking.org>
14 Editor: Karthik Sethuraman
15 <mailto:karthik.sethuraman@necam.com>";
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080016 description "
17 This module contains TAPI Path Computation Model definitions.
18 Source: TapiPathComputation.uml
hiroki96ab3c22018-12-11 14:10:52 -080019 - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
20 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
21 <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
22 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
23 <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
24 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
25 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
26 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
27 The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
28 YANG models included in this release may not be backward compatible with previous TAPI releases.
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080029 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
30 License: This module is distributed under the Apache License 2.0";
hiroki96ab3c22018-12-11 14:10:52 -080031 revision 2018-12-10 {
32 description "ONF Transport API version 2.1.1.
33 Changes included in this TAPI release (v2.1.1) are listed in
34 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
35 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
36 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
37 }
hirokid8fd7862018-10-09 15:24:24 +090038 revision 2018-10-16 {
39 description "ONF Transport API version 2.1.0.
hiroki96ab3c22018-12-11 14:10:52 -080040 Changes included in this TAPI release (v2.1.0) are listed in
41 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
Ai Hamano06163902018-12-06 09:18:20 +090042 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
hirokid8fd7862018-10-09 15:24:24 +090043 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
44 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080045 revision 2018-03-07 {
Ai Hamano06163902018-12-06 09:18:20 +090046 description "ONF Transport API version 2.0.2
47 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
Yuta HIGUCHIe1ca23f2018-04-06 10:05:45 -070048 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
Ai Hamano06163902018-12-06 09:18:20 +090049 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
Yuta HIGUCHIe1ca23f2018-04-06 10:05:45 -070050 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
51 }
52 revision 2018-02-16 {
Ai Hamano06163902018-12-06 09:18:20 +090053 description "ONF Transport API version 2.0.1
54 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
Yuta HIGUCHIe1ca23f2018-04-06 10:05:45 -070055 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
Ai Hamano06163902018-12-06 09:18:20 +090056 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
Yuta HIGUCHIe1ca23f2018-04-06 10:05:45 -070057 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
58 }
59 revision 2018-01-02 {
Ai Hamano06163902018-12-06 09:18:20 +090060 description "ONF Transport API version 2.0.0
61 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
Yuta HIGUCHIe1ca23f2018-04-06 10:05:45 -070062 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
Ai Hamano06163902018-12-06 09:18:20 +090063 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
Yuta HIGUCHIe1ca23f2018-04-06 10:05:45 -070064 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
Toru Furusawa28988892017-10-30 17:28:40 -070065 }
66 augment "/tapi-common:context" {
hirokid8fd7862018-10-09 15:24:24 +090067 container path-computation-context {
68 uses path-computation-context;
69 description "Augments the base TAPI Context with PathComputationService information";
70 }
Toru Furusawa28988892017-10-30 17:28:40 -070071 description "Augments the base TAPI Context with PathComputationService information";
72 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080073
Ai Hamano06163902018-12-06 09:18:20 +090074 /**************************
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080075 * definitions of refrences
Ai Hamano06163902018-12-06 09:18:20 +090076 **************************/
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080077 grouping path-ref {
hirokid8fd7862018-10-09 15:24:24 +090078 leaf path-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080079 type leafref {
hirokid8fd7862018-10-09 15:24:24 +090080 path '/tapi-common:context/tapi-path-computation:path-computation-context/tapi-path-computation:path/tapi-path-computation:uuid';
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 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070084 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080085 }
86
Ai Hamano06163902018-12-06 09:18:20 +090087 /**************************
Toru Furusawa28988892017-10-30 17:28:40 -070088 * package object-classes
Ai Hamano06163902018-12-06 09:18:20 +090089 **************************/
90 grouping path {
91 list link {
92 uses tapi-topology:link-ref;
93 key 'topology-uuid link-uuid';
94 config false;
95 min-elements 1;
96 description "none";
Toru Furusawa28988892017-10-30 17:28:40 -070097 }
Ai Hamano06163902018-12-06 09:18:20 +090098 container routing-constraint {
99 config false;
100 uses routing-constraint;
101 description "none";
Toru Furusawa28988892017-10-30 17:28:40 -0700102 }
Ai Hamano06163902018-12-06 09:18:20 +0900103 leaf direction {
104 type tapi-common:forwarding-direction;
105 description "none";
106 }
107 leaf layer-protocol-name {
108 type tapi-common:layer-protocol-name;
109 config false;
110 description "none";
111 }
112 uses tapi-common:resource-spec;
113 description "Path is described by an ordered list of TE Links. A TE Link is defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by concatenating link resources (associated with a Link) and the lower-level connections (cross-connections) in the different nodes";
114 }
115 grouping path-service-end-point {
116 container service-interface-point {
117 uses tapi-common:service-interface-point-ref;
118 config false;
119 description "none";
120 }
121 leaf layer-protocol-name {
122 type tapi-common:layer-protocol-name;
123 config false;
124 description "none";
125 }
126 leaf layer-protocol-qualifier {
127 type tapi-common:layer-protocol-qualifier;
128 description "none";
129 }
130 container capacity {
131 uses tapi-common:capacity;
132 description "none";
133 }
134 leaf role {
135 type tapi-common:port-role;
136 config false;
137 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. ";
138 }
139 leaf direction {
140 type tapi-common:port-direction;
141 config false;
142 description "The orientation of defined flow at the EndPoint.";
143 }
144 uses tapi-common:local-class;
145 description "The association of the FC to LTPs is made via EndPoints.
146 The EndPoint (EP) object class models the access to the FC function.
147 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
148 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
149 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
150 The EP replaces the Protection Unit of a traditional protection model.
151 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
152 }
153 grouping path-computation-service {
154 list path {
155 uses path-ref;
156 key 'path-uuid';
157 config false;
158 min-elements 1;
159 description "none";
160 }
161 list end-point {
162 key 'local-id';
163 min-elements 2;
164 max-elements 2;
165 uses path-service-end-point;
166 description "none";
167 }
168 container routing-constraint {
169 uses routing-constraint;
170 description "none";
171 }
172 container topology-constraint {
173 uses topology-constraint;
174 description "none";
175 }
176 container objective-function {
177 uses path-objective-function;
178 description "none";
179 }
180 container optimization-constraint {
181 uses path-optimization-constraint;
182 description "none";
183 }
184 uses tapi-common:service-spec;
185 description "none";
186 }
187 grouping path-objective-function {
188 leaf bandwidth-optimization {
189 type tapi-common:directive-value;
190 config false;
191 description "none";
192 }
193 leaf concurrent-paths {
194 type tapi-common:directive-value;
195 config false;
196 description "none";
197 }
198 leaf cost-optimization {
199 type tapi-common:directive-value;
200 config false;
201 description "none";
202 }
203 leaf link-utilization {
204 type tapi-common:directive-value;
205 config false;
206 description "none";
207 }
208 leaf resource-sharing {
209 type tapi-common:directive-value;
210 config false;
211 description "none";
212 }
213 uses tapi-common:local-class;
214 description "none";
215 }
216 grouping path-optimization-constraint {
217 leaf traffic-interruption {
218 type tapi-common:directive-value;
219 config false;
220 description "none";
221 }
222 uses tapi-common:local-class;
223 description "none";
224 }
225 grouping routing-constraint {
226 list cost-characteristic {
227 key 'cost-name';
228 uses tapi-topology:cost-characteristic;
229 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
230 }
231 list latency-characteristic {
232 key 'traffic-property-name';
233 uses tapi-topology:latency-characteristic;
234 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
235 }
236 list risk-diversity-characteristic {
237 key 'risk-characteristic-name';
238 uses tapi-topology:risk-characteristic;
239 description "none";
240 }
241 leaf diversity-policy {
242 type diversity-policy;
243 description "none";
244 }
245 leaf route-objective-function {
246 type route-objective-function;
247 description "none";
248 }
249 leaf route-direction {
250 type tapi-common:forwarding-direction;
251 description "none";
252 }
253 leaf is-exclusive {
254 type boolean;
255 default "true";
256 description "To distinguish if the resources are to be exclusive to the service";
257 }
258 description "none";
259 }
260 grouping path-computation-context {
261 list path-comp-service {
262 key 'uuid';
263 uses path-computation-service;
264 description "none";
265 }
266 list path {
267 key 'uuid';
268 config false;
269 uses path;
270 description "none";
271 }
272 description "none";
273 }
274 grouping topology-constraint {
275 list include-topology {
276 uses tapi-topology:topology-ref;
277 key 'topology-uuid';
278 config false;
279 description "none";
280 }
281 list avoid-topology {
282 uses tapi-topology:topology-ref;
283 key 'topology-uuid';
284 config false;
285 description "none";
286 }
287 list include-path {
288 uses tapi-path-computation:path-ref;
289 key 'path-uuid';
290 config false;
291 description "none";
292 }
293 list exclude-path {
294 uses tapi-path-computation:path-ref;
295 key 'path-uuid';
296 config false;
297 description "none";
298 }
299 list include-link {
300 uses tapi-topology:link-ref;
301 key 'topology-uuid link-uuid';
302 config false;
303 description "This is a loose constraint - that is it is unordered and could be a partial list ";
304 }
305 list exclude-link {
306 uses tapi-topology:link-ref;
307 key 'topology-uuid link-uuid';
308 config false;
309 description "none";
310 }
311 list include-node {
312 uses tapi-topology:node-ref;
313 key 'topology-uuid node-uuid';
314 config false;
315 description "This is a loose constraint - that is it is unordered and could be a partial list";
316 }
317 list exclude-node {
318 uses tapi-topology:node-ref;
319 key 'topology-uuid node-uuid';
320 config false;
321 description "none";
322 }
323 leaf-list preferred-transport-layer {
324 type tapi-common:layer-protocol-name;
325 config false;
326 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";
327 }
328 description "none";
329 }
330
331 /**************************
332 * package type-definitions
333 **************************/
334 typedef route-objective-function {
335 type enumeration {
336 enum MIN_WORK_ROUTE_HOP {
Toru Furusawa28988892017-10-30 17:28:40 -0700337 description "none";
338 }
Ai Hamano06163902018-12-06 09:18:20 +0900339 enum MIN_WORK_ROUTE_COST {
340 description "none";
341 }
342 enum MIN_WORK_ROUTE_LATENCY {
343 description "none";
344 }
345 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {
346 description "none";
347 }
348 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {
349 description "none";
350 }
351 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {
352 description "none";
353 }
354 enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {
355 description "none";
356 }
357 }
358 description "none";
359 }
360 typedef diversity-policy {
361 type enumeration {
362 enum SRLG {
363 description "none";
364 }
365 enum SRNG {
366 description "none";
367 }
368 enum SNG {
369 description "none";
370 }
371 enum NODE {
372 description "none";
373 }
374 enum LINK {
375 description "none";
376 }
377 }
378 description "none";
379 }
380
381 /**************************
382 * package interfaces
383 **************************/
384 rpc compute-p-2-p-path {
385 description "none";
386 input {
387 list sep {
Toru Furusawa28988892017-10-30 17:28:40 -0700388 key 'local-id';
389 min-elements 2;
390 max-elements 2;
391 uses path-service-end-point;
392 description "none";
393 }
394 container routing-constraint {
395 uses routing-constraint;
396 description "none";
397 }
hirokid8fd7862018-10-09 15:24:24 +0900398 container topology-constraint {
399 uses topology-constraint;
400 description "none";
401 }
Toru Furusawa28988892017-10-30 17:28:40 -0700402 container objective-function {
403 uses path-objective-function;
404 description "none";
405 }
Ai Hamano06163902018-12-06 09:18:20 +0900406 }
407 output {
408 container service {
409 uses path-computation-service;
410 description "none";
411 }
412 }
413 }
414 rpc optimize-p-2-p-path {
415 description "none";
416 input {
417 leaf path-id-or-name {
418 type string;
419 description "none";
420 }
421 container routing-constraint {
422 uses routing-constraint;
423 description "none";
424 }
Toru Furusawa28988892017-10-30 17:28:40 -0700425 container optimization-constraint {
426 uses path-optimization-constraint;
427 description "none";
428 }
Ai Hamano06163902018-12-06 09:18:20 +0900429 container objective-function {
430 uses path-objective-function;
431 description "none";
432 }
Toru Furusawa28988892017-10-30 17:28:40 -0700433 }
Ai Hamano06163902018-12-06 09:18:20 +0900434 output {
435 container service {
Toru Furusawa28988892017-10-30 17:28:40 -0700436 uses path-computation-service;
437 description "none";
438 }
Ai Hamano06163902018-12-06 09:18:20 +0900439 }
440 }
441 rpc delete-p-2-p-path {
442 description "none";
443 input {
444 leaf path-id-or-name {
445 type string;
Toru Furusawa28988892017-10-30 17:28:40 -0700446 description "none";
447 }
Toru Furusawa28988892017-10-30 17:28:40 -0700448 }
Ai Hamano06163902018-12-06 09:18:20 +0900449 output {
450 container service {
451 uses path-computation-service;
hirokid8fd7862018-10-09 15:24:24 +0900452 description "none";
453 }
hirokid8fd7862018-10-09 15:24:24 +0900454 }
Ai Hamano06163902018-12-06 09:18:20 +0900455 }
Toru Furusawa28988892017-10-30 17:28:40 -0700456}