blob: cf6266958b68a5f5e5e10fad30401b2bef8ee4e0 [file] [log] [blame]
Toru Furusawa28988892017-10-30 17:28:40 -07001module tapi-path-computation {
2 namespace "urn:onf:params:xml:ns:yang:tapi-path-computation";
3 prefix tapi-path-computation;
4 import tapi-topology {
5 prefix tapi-topology;
6 }
7 import tapi-common {
8 prefix tapi-common;
9 }
10 organization "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
11 contact "
12 WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
13 WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
14 WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
15 Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
16 description "none";
17 revision 2017-05-31 {
18 description "TAPI SDK 2.0-alpha";
19 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
20 }
21 augment "/tapi-common:context" {
22 uses path-computation-context;
23 description "Augments the base TAPI Context with PathComputationService information";
24 }
25 /***********************
26 * package object-classes
27 **********************/
28 grouping path {
29 leaf-list link {
30 type leafref {
31 path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
32 }
33 config false;
34 min-elements 1;
35 description "none";
36 }
37 container routing-constraint {
38 config false;
39 uses routing-constraint;
40 description "none";
41 }
42 uses tapi-common:resource-spec;
43 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";
44 }
45 grouping path-service-end-point {
46 leaf service-interface-point {
47 type leafref {
48 path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';
49 }
50 config false;
51 description "none";
52 }
53 leaf role {
54 type tapi-common:port-role;
55 config false;
56 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. ";
57 }
58 leaf direction {
59 type tapi-common:port-direction;
60 config false;
61 description "The orientation of defined flow at the EndPoint.";
62 }
63 leaf service-layer {
64 type tapi-common:layer-protocol-name;
65 config false;
66 description "none";
67 }
68 uses tapi-common:local-class;
69 description "The association of the FC to LTPs is made via EndPoints.
70 The EndPoint (EP) object class models the access to the FC function.
71 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
72 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
73 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
74 The EP replaces the Protection Unit of a traditional protection model.
75 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
76 }
77 grouping path-computation-service {
78 leaf-list path {
79 type leafref {
80 path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';
81 }
82 config false;
83 min-elements 1;
84 description "none";
85 }
86 list end-point {
87 key 'local-id';
88 min-elements 2;
89 max-elements 2;
90 uses path-service-end-point;
91 description "none";
92 }
93 container routing-constraint {
94 uses routing-constraint;
95 description "none";
96 }
97 container objective-function {
98 uses path-objective-function;
99 description "none";
100 }
101 container optimization-constraint {
102 uses path-optimization-constraint;
103 description "none";
104 }
105 uses tapi-common:service-spec;
106 description "none";
107 }
108 grouping path-objective-function {
109 leaf bandwidth-optimization {
110 type tapi-common:directive-value;
111 config false;
112 description "none";
113 }
114 leaf concurrent-paths {
115 type tapi-common:directive-value;
116 config false;
117 description "none";
118 }
119 leaf cost-optimization {
120 type tapi-common:directive-value;
121 config false;
122 description "none";
123 }
124 leaf link-utilization {
125 type tapi-common:directive-value;
126 config false;
127 description "none";
128 }
129 leaf resource-sharing {
130 type tapi-common:directive-value;
131 config false;
132 description "none";
133 }
134 uses tapi-common:local-class;
135 description "none";
136 }
137 grouping path-optimization-constraint {
138 leaf traffic-interruption {
139 type tapi-common:directive-value;
140 config false;
141 description "none";
142 }
143 uses tapi-common:local-class;
144 description "none";
145 }
146 grouping routing-constraint {
147 container requested-capacity {
148 config false;
149 uses tapi-common:capacity;
150 description "none";
151 }
152 leaf service-level {
153 type string;
154 config false;
155 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
156 }
157 leaf-list path-layer {
158 type tapi-common:layer-protocol-name;
159 config false;
160 description "none";
161 }
162 list cost-characteristic {
163 key 'cost-name';
164 config false;
165 uses tapi-topology:cost-characteristic;
166 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
167 }
168 list latency-characteristic {
169 key 'traffic-property-name';
170 config false;
171 uses tapi-topology:latency-characteristic;
172 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
173 }
174 leaf-list include-topology {
175 type leafref {
176 path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
177 }
178 config false;
179 description "none";
180 }
181 leaf-list avoid-topology {
182 type leafref {
183 path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
184 }
185 config false;
186 description "none";
187 }
188 uses tapi-common:local-class;
189 description "none";
190 }
191 grouping path-computation-context {
192 list path-comp-service {
193 key 'uuid';
194 uses path-computation-service;
195 description "none";
196 }
197 list path {
198 key 'uuid';
199 config false;
200 uses path;
201 description "none";
202 }
203 description "none";
204 }
205
206 /***********************
207 * package interfaces
208 **********************/
209 rpc compute-p-2-p-path {
210 description "none";
211 input {
212 list sep {
213 min-elements 2;
214 max-elements 2;
215 uses path-service-end-point;
216 description "none";
217 }
218 container routing-constraint {
219 uses routing-constraint;
220 description "none";
221 }
222 container objective-function {
223 uses path-objective-function;
224 description "none";
225 }
226 }
227 output {
228 container service {
229 uses path-computation-service;
230 description "none";
231 }
232 }
233 }
234 rpc optimize-p-2-p-path {
235 description "none";
236 input {
237 leaf path-id-or-name {
238 type string;
239 description "none";
240 }
241 container routing-constraint {
242 uses routing-constraint;
243 description "none";
244 }
245 container optimization-constraint {
246 uses path-optimization-constraint;
247 description "none";
248 }
249 container objective-function {
250 uses path-objective-function;
251 description "none";
252 }
253 }
254 output {
255 container service {
256 uses path-computation-service;
257 description "none";
258 }
259 }
260 }
261 rpc delete-p-2-p-path {
262 description "none";
263 input {
264 leaf path-id-or-name {
265 type string;
266 description "none";
267 }
268 }
269 output {
270 container service {
271 uses path-computation-service;
272 description "none";
273 }
274 }
275 }
276
277}