blob: 4b7c9f287b6a9ffb5c48c0723aef8ca581ba3781 [file] [log] [blame]
Toru Furusawa28988892017-10-30 17:28:40 -07001module tapi-topology {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -08002 namespace "urn:onf:otcc:yang:tapi-topology";
Toru Furusawa28988892017-10-30 17:28:40 -07003 prefix tapi-topology;
4 import tapi-common {
5 prefix tapi-common;
6 }
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -08007 organization "ONF OTCC (Open Transport Configuration & Control) Project";
hirokid8fd7862018-10-09 15:24:24 +09008 contact "
9 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
10 Project List: <mailto:transport-api@opennetworking.org>
11 Editor: Karthik Sethuraman
12 <mailto:karthik.sethuraman@necam.com>";
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080013 description "
14 This module contains TAPI Topology Model definitions.
15 Source: TapiTopology.uml
16 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
17 License: This module is distributed under the Apache License 2.0";
hirokid8fd7862018-10-09 15:24:24 +090018 revision 2018-10-16 {
19 description "ONF Transport API version 2.1.0.
20 - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.
21 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
22 <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
23 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
24 <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
25 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
26 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
27 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
28 The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
29 YANG models included in this release are not backward compatible with previous TAPI releases.
30 - Changes included in this TAPI release (v2.1.0) are listed in
31 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
32 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
33 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
34 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080035 revision 2018-03-07 {
hirokid8fd7862018-10-09 15:24:24 +090036 description "ONF Transport API version 2.0.2
37 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 -070038 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 +090039 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 -070040 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
41 }
42 revision 2018-02-16 {
hirokid8fd7862018-10-09 15:24:24 +090043 description "ONF Transport API version 2.0.1
44 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 -070045 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 +090046 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 -070047 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
48 }
49 revision 2018-01-02 {
hirokid8fd7862018-10-09 15:24:24 +090050 description "ONF Transport API version 2.0.0
51 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 -070052 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 +090053 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 -070054 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
Toru Furusawa28988892017-10-30 17:28:40 -070055 }
56 augment "/tapi-common:context" {
hirokid8fd7862018-10-09 15:24:24 +090057 container topology-context {
58 uses topology-context;
59 description "Augments the base TAPI Context with TopologyService information";
60 }
Toru Furusawa28988892017-10-30 17:28:40 -070061 description "Augments the base TAPI Context with TopologyService information";
62 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080063
64 /*************************
65 * definitions of refrences
66 *************************/
67
68 grouping topology-ref {
hirokid8fd7862018-10-09 15:24:24 +090069 leaf topology-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080070 type leafref {
hirokid8fd7862018-10-09 15:24:24 +090071 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:uuid';
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080072 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070073 description "none";
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 }
77
78 grouping link-ref {
79 uses topology-ref;
hirokid8fd7862018-10-09 15:24:24 +090080 leaf link-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080081 type leafref {
hirokid8fd7862018-10-09 15:24:24 +090082 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
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 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070086 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080087 }
88
89 grouping node-ref {
90 uses topology-ref;
hirokid8fd7862018-10-09 15:24:24 +090091 leaf node-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080092 type leafref {
hirokid8fd7862018-10-09 15:24:24 +090093 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080094 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070095 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080096 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070097 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080098 }
99
hirokid8fd7862018-10-09 15:24:24 +0900100 grouping node-edge-point-ref {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800101 uses node-ref;
hirokid8fd7862018-10-09 15:24:24 +0900102 leaf node-edge-point-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800103 type leafref {
hirokid8fd7862018-10-09 15:24:24 +0900104 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800105 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700106 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800107 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700108 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800109 }
110
111 grouping node-rule-group-ref {
112 uses node-ref;
hirokid8fd7862018-10-09 15:24:24 +0900113 leaf node-rule-group-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800114 type leafref {
hirokid8fd7862018-10-09 15:24:24 +0900115 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid';
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800116 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700117 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800118 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700119 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800120 }
121
Toru Furusawa28988892017-10-30 17:28:40 -0700122 /***********************
123 * package object-classes
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700124 **********************/
Toru Furusawa28988892017-10-30 17:28:40 -0700125 grouping link {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800126 list node-edge-point {
hirokid8fd7862018-10-09 15:24:24 +0900127 uses node-edge-point-ref;
128 key 'topology-uuid node-uuid node-edge-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700129 config false;
130 min-elements 2;
131 description "none";
132 }
Toru Furusawa28988892017-10-30 17:28:40 -0700133 leaf-list layer-protocol-name {
134 type tapi-common:layer-protocol-name;
135 config false;
136 min-elements 1;
137 description "none";
138 }
139 leaf direction {
140 type tapi-common:forwarding-direction;
141 config false;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700142 description "The directionality of the Link.
143 Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL).
Toru Furusawa28988892017-10-30 17:28:40 -0700144 Is not present in more complex cases.";
145 }
146 container resilience-type {
147 uses resilience-type;
148 description "none";
149 }
150 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500151 uses tapi-common:admin-state-pac;
152 uses tapi-common:capacity-pac;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800153 uses transfer-cost-pac;
154 uses transfer-integrity-pac;
155 uses transfer-timing-pac;
156 uses risk-parameter-pac;
157 uses validation-pac;
158 uses layer-protocol-transition-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700159 description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";
160 }
161 grouping node {
162 list owned-node-edge-point {
163 key 'uuid';
164 config false;
165 uses node-edge-point;
166 description "none";
167 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700168 list aggregated-node-edge-point {
hirokid8fd7862018-10-09 15:24:24 +0900169 uses node-edge-point-ref;
170 key 'topology-uuid node-uuid node-edge-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700171 config false;
172 description "none";
173 }
174 list node-rule-group {
175 key 'uuid';
176 uses node-rule-group;
177 description "none";
178 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800179 container encap-topology {
180 uses topology-ref;
Toru Furusawa28988892017-10-30 17:28:40 -0700181 config false;
182 description "none";
183 }
Toru Furusawa28988892017-10-30 17:28:40 -0700184 leaf-list layer-protocol-name {
185 type tapi-common:layer-protocol-name;
186 config false;
187 min-elements 1;
188 description "none";
189 }
190 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500191 uses tapi-common:admin-state-pac;
192 uses tapi-common:capacity-pac;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800193 uses transfer-cost-pac;
194 uses transfer-integrity-pac;
195 uses transfer-timing-pac;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700196 description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
Toru Furusawa28988892017-10-30 17:28:40 -0700197 At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
198 }
199 grouping topology {
200 list node {
201 key 'uuid';
202 config false;
203 uses node;
204 description "none";
205 }
206 list link {
207 key 'uuid';
208 config false;
209 uses link;
210 description "none";
211 }
212 leaf-list layer-protocol-name {
213 type tapi-common:layer-protocol-name;
214 config false;
215 min-elements 1;
216 description "none";
217 }
218 uses tapi-common:resource-spec;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700219 description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
Toru Furusawa28988892017-10-30 17:28:40 -0700220 At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
221 }
222 grouping layer-protocol-transition-pac {
223 leaf-list transitioned-layer-protocol-name {
224 type string;
225 min-elements 2;
226 description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";
227 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700228 description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation.
229 This abstraction is relevant when considering multi-layer routing.
Toru Furusawa28988892017-10-30 17:28:40 -0700230 The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.
231 This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.
232 Links that included details in this Pac are often referred to as Transitional Links.";
233 }
234 grouping node-edge-point {
wu6a418d22018-02-02 01:49:21 -0500235 leaf layer-protocol-name {
236 type tapi-common:layer-protocol-name;
Toru Furusawa28988892017-10-30 17:28:40 -0700237 config false;
Toru Furusawa28988892017-10-30 17:28:40 -0700238 description "none";
239 }
hirokid8fd7862018-10-09 15:24:24 +0900240 leaf-list supported-cep-layer-protocol-qualifier {
241 type tapi-common:layer-protocol-qualifier;
242 min-elements 1;
243 description "none";
244 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700245 list aggregated-node-edge-point {
hirokid8fd7862018-10-09 15:24:24 +0900246 uses node-edge-point-ref;
247 key 'topology-uuid node-uuid node-edge-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700248 config false;
249 description "none";
250 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800251 list mapped-service-interface-point {
252 uses tapi-common:service-interface-point-ref;
hirokid8fd7862018-10-09 15:24:24 +0900253 key 'service-interface-point-uuid';
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800254 config false;
Toru Furusawa28988892017-10-30 17:28:40 -0700255 description "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental";
256 }
Toru Furusawa28988892017-10-30 17:28:40 -0700257 leaf link-port-direction {
258 type tapi-common:port-direction;
259 config false;
260 description "The orientation of defined flow at the LinkEnd.";
261 }
262 leaf link-port-role {
263 type tapi-common:port-role;
264 config false;
265 description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root) in the context of the Link with respect to the Link function. ";
266 }
267 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500268 uses tapi-common:admin-state-pac;
269 uses tapi-common:termination-pac;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800270 uses tapi-common:capacity-pac;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700271 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 -0700272 The structure of LTP supports all transport protocols including circuit and packet forms.";
273 }
274 grouping risk-parameter-pac {
275 list risk-characteristic {
276 key 'risk-characteristic-name';
277 config false;
278 min-elements 1;
279 uses risk-characteristic;
280 description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";
281 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700282 description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization.
Toru Furusawa28988892017-10-30 17:28:40 -0700283 The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.
284 A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.
285 The realization can be partitioned into segments which have some relevant common failure modes.
286 There is a risk of failure/degradation of each segment of the underlying realization.
287 Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).
288 Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.
289 Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.
290 The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.
291 A segment has one or more risk characteristic.
292 Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.
293 Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";
294 }
295 grouping transfer-cost-pac {
296 list cost-characteristic {
297 key 'cost-name';
298 config false;
299 min-elements 1;
300 uses cost-characteristic;
301 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
302 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700303 description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization.
Toru Furusawa28988892017-10-30 17:28:40 -0700304 They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700305 There may be many perspectives from which cost may be considered for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms.
Toru Furusawa28988892017-10-30 17:28:40 -0700306 Using an entity will incur a cost. ";
307 }
308 grouping transfer-integrity-pac {
309 leaf error-characteristic {
310 type string;
311 config false;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700312 description "Describes the degree to which the signal propagated can be errored.
Toru Furusawa28988892017-10-30 17:28:40 -0700313 Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";
314 }
315 leaf loss-characteristic {
316 type string;
317 config false;
318 description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.
319 Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";
320 }
321 leaf repeat-delivery-characteristic {
322 type string;
323 config false;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700324 description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example).
Toru Furusawa28988892017-10-30 17:28:40 -0700325 It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";
326 }
327 leaf delivery-order-characteristic {
328 type string;
329 config false;
330 description "Describes the degree to which packets will be delivered out of sequence.
331 Does not apply to TDM as the TDM protocols maintain strict order.";
332 }
333 leaf unavailable-time-characteristic {
334 type string;
335 config false;
336 description "Describes the duration for which there may be no valid signal propagated.";
337 }
338 leaf server-integrity-process-characteristic {
339 type string;
340 config false;
341 description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";
342 }
343 description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.
344 It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.
345 Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";
346 }
347 grouping transfer-timing-pac {
348 list latency-characteristic {
349 key 'traffic-property-name';
350 config false;
351 min-elements 1;
352 uses latency-characteristic;
353 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
354 }
355 description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";
356 }
357 grouping validation-pac {
358 list validation-mechanism {
359 key 'validation-mechanism';
360 config false;
361 min-elements 1;
362 uses validation-mechanism;
363 description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";
364 }
365 description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";
366 }
367 grouping network-topology-service {
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700368 list topology {
369 uses topology-ref;
hirokid8fd7862018-10-09 15:24:24 +0900370 key 'topology-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700371 config false;
372 description "none";
373 }
374 uses tapi-common:service-spec;
375 description "none";
376 }
377 grouping topology-context {
378 container nw-topology-service {
379 config false;
380 uses network-topology-service;
381 description "none";
382 }
383 list topology {
384 key 'uuid';
385 config false;
386 uses topology;
387 description "none";
388 }
389 description "none";
390 }
391 grouping inter-rule-group {
392 list rule {
393 key 'local-id';
394 min-elements 1;
395 uses rule;
396 description "none";
397 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800398 list associated-node-rule-group {
399 uses node-rule-group-ref;
hirokid8fd7862018-10-09 15:24:24 +0900400 key 'topology-uuid node-uuid node-rule-group-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700401 min-elements 2;
402 description "none";
403 }
Toru Furusawa28988892017-10-30 17:28:40 -0700404 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500405 uses tapi-common:capacity-pac;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800406 uses transfer-cost-pac;
407 uses transfer-timing-pac;
408 uses risk-parameter-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700409 description "none";
410 }
411 grouping node-rule-group {
412 list rule {
413 key 'local-id';
414 min-elements 1;
415 uses rule;
416 description "none";
417 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700418 list node-edge-point {
hirokid8fd7862018-10-09 15:24:24 +0900419 uses node-edge-point-ref;
420 key 'topology-uuid node-uuid node-edge-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700421 min-elements 1;
422 description "none";
423 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800424 list composed-rule-group {
425 uses node-rule-group-ref;
hirokid8fd7862018-10-09 15:24:24 +0900426 key 'topology-uuid node-uuid node-rule-group-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700427 description "none";
428 }
429 list inter-rule-group {
430 key 'uuid';
431 uses inter-rule-group;
432 description "none";
433 }
Toru Furusawa28988892017-10-30 17:28:40 -0700434 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500435 uses tapi-common:capacity-pac;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800436 uses transfer-cost-pac;
437 uses transfer-timing-pac;
438 uses risk-parameter-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700439 description "none";
440 }
441 grouping rule {
442 leaf rule-type {
443 type rule-type;
444 description "none";
445 }
446 leaf forwarding-rule {
447 type forwarding-rule;
448 description "none";
449 }
450 leaf override-priority {
451 type uint64;
452 description "none";
453 }
454 uses tapi-common:local-class;
455 description "none";
456 }
457
458 /***********************
459 * package type-definitions
460 **********************/
461 grouping cost-characteristic {
462 leaf cost-name {
463 type string;
464 description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";
465 }
466 leaf cost-value {
467 type string;
468 description "The specific cost.";
469 }
470 leaf cost-algorithm {
471 type string;
472 description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";
473 }
474 description "The information for a particular cost characteristic.";
475 }
476 grouping latency-characteristic {
477 leaf traffic-property-name {
478 type string;
479 description "The identifier of the specific traffic property to which the queuing latency applies.";
480 }
481 leaf fixed-latency-characteristic {
482 type string;
483 config false;
484 description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";
485 }
486 leaf queing-latency-characteristic {
487 type string;
488 description "The specific queuing latency for the traffic property.";
489 }
490 leaf jitter-characteristic {
491 type string;
492 config false;
493 description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.
494 Applies to TDM systems (and not packet).";
495 }
496 leaf wander-characteristic {
497 type string;
498 config false;
499 description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.
500 Applies to TDM systems (and not packet).";
501 }
502 description "Provides information on latency characteristic for a particular stated trafficProperty.";
503 }
504 grouping risk-characteristic {
505 leaf risk-characteristic-name {
506 type string;
507 description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness.
508 For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).
509 Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";
510 }
511 leaf-list risk-identifier-list {
512 type string;
513 min-elements 1;
514 description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";
515 }
516 description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";
517 }
518 grouping validation-mechanism {
519 leaf validation-mechanism {
520 type string;
521 description "Name of mechanism used to validate adjacency";
522 }
523 leaf layer-protocol-adjacency-validated {
524 type string;
525 description "State of validatiion";
526 }
527 leaf validation-robustness {
528 type string;
529 description "Quality of validation (i.e. how likely is the stated validation to be invalid)";
530 }
531 description "Identifies the validation mechanism and describes the characteristics of that mechanism";
532 }
533 typedef forwarding-rule {
534 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500535 enum MAY_FORWARD_ACROSS_GROUP {
Toru Furusawa28988892017-10-30 17:28:40 -0700536 description "none";
537 }
wu6a418d22018-02-02 01:49:21 -0500538 enum MUST_FORWARD_ACROSS_GROUP {
Toru Furusawa28988892017-10-30 17:28:40 -0700539 description "none";
540 }
wu6a418d22018-02-02 01:49:21 -0500541 enum CANNOT_FORWARD_ACROSS_GROUP {
Toru Furusawa28988892017-10-30 17:28:40 -0700542 description "none";
543 }
wu6a418d22018-02-02 01:49:21 -0500544 enum NO_STATEMENT_ON_FORWARDING {
Toru Furusawa28988892017-10-30 17:28:40 -0700545 description "none";
546 }
547 }
548 description "none";
549 }
550 typedef rule-type {
551 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500552 enum FORWARDING {
Toru Furusawa28988892017-10-30 17:28:40 -0700553 description "none";
554 }
wu6a418d22018-02-02 01:49:21 -0500555 enum CAPACITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700556 description "none";
557 }
wu6a418d22018-02-02 01:49:21 -0500558 enum COST {
Toru Furusawa28988892017-10-30 17:28:40 -0700559 description "none";
560 }
wu6a418d22018-02-02 01:49:21 -0500561 enum TIMING {
Toru Furusawa28988892017-10-30 17:28:40 -0700562 description "none";
563 }
wu6a418d22018-02-02 01:49:21 -0500564 enum RISK {
Toru Furusawa28988892017-10-30 17:28:40 -0700565 description "none";
566 }
wu6a418d22018-02-02 01:49:21 -0500567 enum GROUPING {
Toru Furusawa28988892017-10-30 17:28:40 -0700568 description "none";
569 }
570 }
571 description "none";
572 }
573 grouping resilience-type {
574 leaf restoration-policy {
575 type restoration-policy;
576 description "none";
577 }
578 leaf protection-type {
579 type protection-type;
580 description "none";
581 }
582 description "none";
583 }
584 typedef restoration-policy {
585 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500586 enum PER_DOMAIN_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700587 description "none";
588 }
wu6a418d22018-02-02 01:49:21 -0500589 enum END_TO_END_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700590 description "none";
591 }
wu6a418d22018-02-02 01:49:21 -0500592 enum NA {
Toru Furusawa28988892017-10-30 17:28:40 -0700593 description "none";
594 }
595 }
596 description "none";
597 }
598 typedef protection-type {
599 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500600 enum NO_PROTECTON {
Toru Furusawa28988892017-10-30 17:28:40 -0700601 description "none";
602 }
wu6a418d22018-02-02 01:49:21 -0500603 enum ONE_PLUS_ONE_PROTECTION {
Toru Furusawa28988892017-10-30 17:28:40 -0700604 description "none";
605 }
wu6a418d22018-02-02 01:49:21 -0500606 enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700607 description "none";
608 }
wu6a418d22018-02-02 01:49:21 -0500609 enum PERMANENT_ONE_PLUS_ONE_PROTECTION {
Toru Furusawa28988892017-10-30 17:28:40 -0700610 description "none";
611 }
wu6a418d22018-02-02 01:49:21 -0500612 enum ONE_FOR_ONE_PROTECTION {
Toru Furusawa28988892017-10-30 17:28:40 -0700613 description "none";
614 }
wu6a418d22018-02-02 01:49:21 -0500615 enum DYNAMIC_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700616 description "none";
617 }
wu6a418d22018-02-02 01:49:21 -0500618 enum PRE_COMPUTED_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700619 description "none";
620 }
621 }
622 description "none";
623 }
624
625 /***********************
626 * package interfaces
627 **********************/
628 rpc get-topology-details {
629 description "none";
630 input {
631 leaf topology-id-or-name {
632 type string;
633 description "none";
634 }
635 }
636 output {
637 container topology {
638 uses topology;
639 description "none";
640 }
641 }
642 }
643 rpc get-node-details {
644 description "none";
645 input {
646 leaf topology-id-or-name {
647 type string;
648 description "none";
649 }
650 leaf node-id-or-name {
651 type string;
652 description "none";
653 }
654 }
655 output {
656 container node {
657 uses node;
658 description "none";
659 }
660 }
661 }
662 rpc get-node-edge-point-details {
663 description "none";
664 input {
665 leaf topology-id-or-name {
666 type string;
667 description "none";
668 }
669 leaf node-id-or-name {
670 type string;
671 description "none";
672 }
673 leaf ep-id-or-name {
674 type string;
675 description "none";
676 }
677 }
678 output {
679 container node-edge-point {
680 uses node-edge-point;
681 description "none";
682 }
683 }
684 }
685 rpc get-link-details {
686 description "none";
687 input {
688 leaf topology-id-or-name {
689 type string;
690 description "none";
691 }
692 leaf link-id-or-name {
693 type string;
694 description "none";
695 }
696 }
697 output {
698 container link {
699 uses link;
700 description "none";
701 }
702 }
703 }
704 rpc get-topology-list {
705 description "none";
706 output {
707 list topology {
708 uses topology;
709 description "none";
710 }
711 }
712 }
713
714}