blob: ba6173d309400e211169d618fa766483a839c07c [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>";
Ai Hamano06163902018-12-06 09:18:20 +090035 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 +090036 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
37 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080038 revision 2018-03-07 {
Ai Hamano06163902018-12-06 09:18:20 +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>";
Ai Hamano06163902018-12-06 09:18:20 +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 {
Ai Hamano06163902018-12-06 09:18:20 +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>";
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.1/UML>";
51 }
52 revision 2018-01-02 {
Ai Hamano06163902018-12-06 09:18:20 +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>";
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.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
Ai Hamano06163902018-12-06 09:18:20 +090067 /**************************
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080068 * definitions of refrences
Ai Hamano06163902018-12-06 09:18:20 +090069 **************************/
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080070 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
Ai Hamano06163902018-12-06 09:18:20 +090080 /**************************
Toru Furusawa28988892017-10-30 17:28:40 -070081 * package object-classes
Ai Hamano06163902018-12-06 09:18:20 +090082 **************************/
83 grouping path {
84 list link {
85 uses tapi-topology:link-ref;
86 key 'topology-uuid link-uuid';
87 config false;
88 min-elements 1;
89 description "none";
Toru Furusawa28988892017-10-30 17:28:40 -070090 }
Ai Hamano06163902018-12-06 09:18:20 +090091 container routing-constraint {
92 config false;
93 uses routing-constraint;
94 description "none";
Toru Furusawa28988892017-10-30 17:28:40 -070095 }
Ai Hamano06163902018-12-06 09:18:20 +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 }
105 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 {
109 container service-interface-point {
110 uses tapi-common:service-interface-point-ref;
111 config false;
112 description "none";
113 }
114 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 }
127 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 }
137 uses tapi-common:local-class;
138 description "The association of the FC to LTPs is made via EndPoints.
139 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.
142 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
143 The EP replaces the Protection Unit of a traditional protection model.
144 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
145 }
146 grouping path-computation-service {
147 list path {
148 uses path-ref;
149 key 'path-uuid';
150 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 }
165 container topology-constraint {
166 uses topology-constraint;
167 description "none";
168 }
169 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 {
219 list cost-characteristic {
220 key 'cost-name';
221 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';
226 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 }
229 list risk-diversity-characteristic {
230 key 'risk-characteristic-name';
231 uses tapi-topology:risk-characteristic;
232 description "none";
233 }
234 leaf diversity-policy {
235 type diversity-policy;
236 description "none";
237 }
238 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 }
251 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 }
267 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 {
Toru Furusawa28988892017-10-30 17:28:40 -0700330 description "none";
331 }
Ai Hamano06163902018-12-06 09:18:20 +0900332 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 }
373
374 /**************************
375 * package interfaces
376 **************************/
377 rpc compute-p-2-p-path {
378 description "none";
379 input {
380 list sep {
Toru Furusawa28988892017-10-30 17:28:40 -0700381 key 'local-id';
382 min-elements 2;
383 max-elements 2;
384 uses path-service-end-point;
385 description "none";
386 }
387 container routing-constraint {
388 uses routing-constraint;
389 description "none";
390 }
hirokid8fd7862018-10-09 15:24:24 +0900391 container topology-constraint {
392 uses topology-constraint;
393 description "none";
394 }
Toru Furusawa28988892017-10-30 17:28:40 -0700395 container objective-function {
396 uses path-objective-function;
397 description "none";
398 }
Ai Hamano06163902018-12-06 09:18:20 +0900399 }
400 output {
401 container service {
402 uses path-computation-service;
403 description "none";
404 }
405 }
406 }
407 rpc optimize-p-2-p-path {
408 description "none";
409 input {
410 leaf path-id-or-name {
411 type string;
412 description "none";
413 }
414 container routing-constraint {
415 uses routing-constraint;
416 description "none";
417 }
Toru Furusawa28988892017-10-30 17:28:40 -0700418 container optimization-constraint {
419 uses path-optimization-constraint;
420 description "none";
421 }
Ai Hamano06163902018-12-06 09:18:20 +0900422 container objective-function {
423 uses path-objective-function;
424 description "none";
425 }
Toru Furusawa28988892017-10-30 17:28:40 -0700426 }
Ai Hamano06163902018-12-06 09:18:20 +0900427 output {
428 container service {
Toru Furusawa28988892017-10-30 17:28:40 -0700429 uses path-computation-service;
430 description "none";
431 }
Ai Hamano06163902018-12-06 09:18:20 +0900432 }
433 }
434 rpc delete-p-2-p-path {
435 description "none";
436 input {
437 leaf path-id-or-name {
438 type string;
Toru Furusawa28988892017-10-30 17:28:40 -0700439 description "none";
440 }
Toru Furusawa28988892017-10-30 17:28:40 -0700441 }
Ai Hamano06163902018-12-06 09:18:20 +0900442 output {
443 container service {
444 uses path-computation-service;
hirokid8fd7862018-10-09 15:24:24 +0900445 description "none";
446 }
hirokid8fd7862018-10-09 15:24:24 +0900447 }
Ai Hamano06163902018-12-06 09:18:20 +0900448 }
Toru Furusawa28988892017-10-30 17:28:40 -0700449}