blob: d85aff56ad86fe2ec112c1eefd1a899457edc505 [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
19 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
20 License: This module is distributed under the Apache License 2.0";
hirokid8fd7862018-10-09 15:24:24 +090021 revision 2018-10-16 {
22 description "ONF Transport API version 2.1.0.
23 - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.
24 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
25 <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
26 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
27 <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
28 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
29 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
30 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
31 The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
32 YANG models included in this release are not backward compatible with previous TAPI releases.
33 - Changes included in this TAPI release (v2.1.0) are listed in
34 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.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 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080038 revision 2018-03-07 {
hirokid8fd7862018-10-09 15:24:24 +090039 description "ONF Transport API version 2.0.2
40 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 -070041 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
hirokid8fd7862018-10-09 15:24:24 +090042 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 -070043 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
44 }
45 revision 2018-02-16 {
hirokid8fd7862018-10-09 15:24:24 +090046 description "ONF Transport API version 2.0.1
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.1.md>";
hirokid8fd7862018-10-09 15:24:24 +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.1/UML>";
51 }
52 revision 2018-01-02 {
hirokid8fd7862018-10-09 15:24:24 +090053 description "ONF Transport API version 2.0.0
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.0.md>";
hirokid8fd7862018-10-09 15:24:24 +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.0/UML>";
Toru Furusawa28988892017-10-30 17:28:40 -070058 }
59 augment "/tapi-common:context" {
hirokid8fd7862018-10-09 15:24:24 +090060 container path-computation-context {
61 uses path-computation-context;
62 description "Augments the base TAPI Context with PathComputationService information";
63 }
Toru Furusawa28988892017-10-30 17:28:40 -070064 description "Augments the base TAPI Context with PathComputationService information";
65 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080066
67 /*************************
68 * definitions of refrences
69 *************************/
70 grouping path-ref {
hirokid8fd7862018-10-09 15:24:24 +090071 leaf path-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080072 type leafref {
hirokid8fd7862018-10-09 15:24:24 +090073 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 -080074 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070075 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080076 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070077 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080078 }
79
Toru Furusawa28988892017-10-30 17:28:40 -070080 /***********************
81 * package object-classes
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070082 **********************/
Toru Furusawa28988892017-10-30 17:28:40 -070083 grouping path {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080084 list link {
85 uses tapi-topology:link-ref;
hirokid8fd7862018-10-09 15:24:24 +090086 key 'topology-uuid link-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -070087 config false;
88 min-elements 1;
89 description "none";
90 }
91 container routing-constraint {
92 config false;
93 uses routing-constraint;
94 description "none";
95 }
hirokid8fd7862018-10-09 15:24:24 +090096 leaf direction {
97 type tapi-common:forwarding-direction;
98 description "none";
99 }
100 leaf layer-protocol-name {
101 type tapi-common:layer-protocol-name;
102 config false;
103 description "none";
104 }
Toru Furusawa28988892017-10-30 17:28:40 -0700105 uses tapi-common:resource-spec;
106 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";
107 }
108 grouping path-service-end-point {
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700109 container service-interface-point {
110 uses tapi-common:service-interface-point-ref;
Toru Furusawa28988892017-10-30 17:28:40 -0700111 config false;
112 description "none";
113 }
hirokid8fd7862018-10-09 15:24:24 +0900114 leaf layer-protocol-name {
115 type tapi-common:layer-protocol-name;
116 config false;
117 description "none";
118 }
119 leaf layer-protocol-qualifier {
120 type tapi-common:layer-protocol-qualifier;
121 description "none";
122 }
123 container capacity {
124 uses tapi-common:capacity;
125 description "none";
126 }
Toru Furusawa28988892017-10-30 17:28:40 -0700127 leaf role {
128 type tapi-common:port-role;
129 config false;
130 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. ";
131 }
132 leaf direction {
133 type tapi-common:port-direction;
134 config false;
135 description "The orientation of defined flow at the EndPoint.";
136 }
Toru Furusawa28988892017-10-30 17:28:40 -0700137 uses tapi-common:local-class;
138 description "The association of the FC to LTPs is made via EndPoints.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700139 The EndPoint (EP) object class models the access to the FC function.
140 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
141 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 -0700142 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700143 The EP replaces the Protection Unit of a traditional protection model.
Toru Furusawa28988892017-10-30 17:28:40 -0700144 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
145 }
146 grouping path-computation-service {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800147 list path {
148 uses path-ref;
hirokid8fd7862018-10-09 15:24:24 +0900149 key 'path-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700150 config false;
151 min-elements 1;
152 description "none";
153 }
154 list end-point {
155 key 'local-id';
156 min-elements 2;
157 max-elements 2;
158 uses path-service-end-point;
159 description "none";
160 }
161 container routing-constraint {
162 uses routing-constraint;
163 description "none";
164 }
hirokid8fd7862018-10-09 15:24:24 +0900165 container topology-constraint {
166 uses topology-constraint;
167 description "none";
168 }
Toru Furusawa28988892017-10-30 17:28:40 -0700169 container objective-function {
170 uses path-objective-function;
171 description "none";
172 }
173 container optimization-constraint {
174 uses path-optimization-constraint;
175 description "none";
176 }
177 uses tapi-common:service-spec;
178 description "none";
179 }
180 grouping path-objective-function {
181 leaf bandwidth-optimization {
182 type tapi-common:directive-value;
183 config false;
184 description "none";
185 }
186 leaf concurrent-paths {
187 type tapi-common:directive-value;
188 config false;
189 description "none";
190 }
191 leaf cost-optimization {
192 type tapi-common:directive-value;
193 config false;
194 description "none";
195 }
196 leaf link-utilization {
197 type tapi-common:directive-value;
198 config false;
199 description "none";
200 }
201 leaf resource-sharing {
202 type tapi-common:directive-value;
203 config false;
204 description "none";
205 }
206 uses tapi-common:local-class;
207 description "none";
208 }
209 grouping path-optimization-constraint {
210 leaf traffic-interruption {
211 type tapi-common:directive-value;
212 config false;
213 description "none";
214 }
215 uses tapi-common:local-class;
216 description "none";
217 }
218 grouping routing-constraint {
Toru Furusawa28988892017-10-30 17:28:40 -0700219 list cost-characteristic {
220 key 'cost-name';
Toru Furusawa28988892017-10-30 17:28:40 -0700221 uses tapi-topology:cost-characteristic;
222 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
223 }
224 list latency-characteristic {
225 key 'traffic-property-name';
Toru Furusawa28988892017-10-30 17:28:40 -0700226 uses tapi-topology:latency-characteristic;
227 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
228 }
hirokid8fd7862018-10-09 15:24:24 +0900229 list risk-diversity-characteristic {
230 key 'risk-characteristic-name';
231 uses tapi-topology:risk-characteristic;
Toru Furusawa28988892017-10-30 17:28:40 -0700232 description "none";
233 }
hirokid8fd7862018-10-09 15:24:24 +0900234 leaf diversity-policy {
235 type diversity-policy;
Toru Furusawa28988892017-10-30 17:28:40 -0700236 description "none";
237 }
hirokid8fd7862018-10-09 15:24:24 +0900238 leaf route-objective-function {
239 type route-objective-function;
240 description "none";
241 }
242 leaf route-direction {
243 type tapi-common:forwarding-direction;
244 description "none";
245 }
246 leaf is-exclusive {
247 type boolean;
248 default "true";
249 description "To distinguish if the resources are to be exclusive to the service";
250 }
Toru Furusawa28988892017-10-30 17:28:40 -0700251 description "none";
252 }
253 grouping path-computation-context {
254 list path-comp-service {
255 key 'uuid';
256 uses path-computation-service;
257 description "none";
258 }
259 list path {
260 key 'uuid';
261 config false;
262 uses path;
263 description "none";
264 }
265 description "none";
266 }
hirokid8fd7862018-10-09 15:24:24 +0900267 grouping topology-constraint {
268 list include-topology {
269 uses tapi-topology:topology-ref;
270 key 'topology-uuid';
271 config false;
272 description "none";
273 }
274 list avoid-topology {
275 uses tapi-topology:topology-ref;
276 key 'topology-uuid';
277 config false;
278 description "none";
279 }
280 list include-path {
281 uses tapi-path-computation:path-ref;
282 key 'path-uuid';
283 config false;
284 description "none";
285 }
286 list exclude-path {
287 uses tapi-path-computation:path-ref;
288 key 'path-uuid';
289 config false;
290 description "none";
291 }
292 list include-link {
293 uses tapi-topology:link-ref;
294 key 'topology-uuid link-uuid';
295 config false;
296 description "This is a loose constraint - that is it is unordered and could be a partial list ";
297 }
298 list exclude-link {
299 uses tapi-topology:link-ref;
300 key 'topology-uuid link-uuid';
301 config false;
302 description "none";
303 }
304 list include-node {
305 uses tapi-topology:node-ref;
306 key 'topology-uuid node-uuid';
307 config false;
308 description "This is a loose constraint - that is it is unordered and could be a partial list";
309 }
310 list exclude-node {
311 uses tapi-topology:node-ref;
312 key 'topology-uuid node-uuid';
313 config false;
314 description "none";
315 }
316 leaf-list preferred-transport-layer {
317 type tapi-common:layer-protocol-name;
318 config false;
319 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";
320 }
321 description "none";
322 }
323
324 /***********************
325 * package type-definitions
326 **********************/
327 typedef route-objective-function {
328 type enumeration {
329 enum MIN_WORK_ROUTE_HOP {
330 description "none";
331 }
332 enum MIN_WORK_ROUTE_COST {
333 description "none";
334 }
335 enum MIN_WORK_ROUTE_LATENCY {
336 description "none";
337 }
338 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {
339 description "none";
340 }
341 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {
342 description "none";
343 }
344 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {
345 description "none";
346 }
347 enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {
348 description "none";
349 }
350 }
351 description "none";
352 }
353 typedef diversity-policy {
354 type enumeration {
355 enum SRLG {
356 description "none";
357 }
358 enum SRNG {
359 description "none";
360 }
361 enum SNG {
362 description "none";
363 }
364 enum NODE {
365 description "none";
366 }
367 enum LINK {
368 description "none";
369 }
370 }
371 description "none";
372 }
Toru Furusawa28988892017-10-30 17:28:40 -0700373
374 /***********************
375 * package interfaces
376 **********************/
377 rpc compute-p-2-p-path {
378 description "none";
379 input {
380 list sep {
381 min-elements 2;
382 max-elements 2;
383 uses path-service-end-point;
384 description "none";
385 }
386 container routing-constraint {
387 uses routing-constraint;
388 description "none";
389 }
hirokid8fd7862018-10-09 15:24:24 +0900390 container topology-constraint {
391 uses topology-constraint;
392 description "none";
393 }
Toru Furusawa28988892017-10-30 17:28:40 -0700394 container objective-function {
395 uses path-objective-function;
396 description "none";
397 }
398 }
399 output {
400 container service {
401 uses path-computation-service;
402 description "none";
403 }
404 }
405 }
406 rpc optimize-p-2-p-path {
407 description "none";
408 input {
409 leaf path-id-or-name {
410 type string;
411 description "none";
412 }
413 container routing-constraint {
414 uses routing-constraint;
415 description "none";
416 }
417 container optimization-constraint {
418 uses path-optimization-constraint;
419 description "none";
420 }
421 container objective-function {
422 uses path-objective-function;
423 description "none";
424 }
425 }
426 output {
427 container service {
428 uses path-computation-service;
429 description "none";
430 }
431 }
432 }
433 rpc delete-p-2-p-path {
434 description "none";
435 input {
436 leaf path-id-or-name {
437 type string;
438 description "none";
439 }
440 }
441 output {
442 container service {
443 uses path-computation-service;
444 description "none";
445 }
446 }
447 }
448
449}