blob: f4c060627ecd28903a6be3107a708bfc14fe7563 [file] [log] [blame]
Toru Furusawa28988892017-10-30 17:28:40 -07001module tapi-connectivity {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -08002 namespace "urn:onf:otcc:yang:tapi-connectivity";
Toru Furusawa28988892017-10-30 17:28:40 -07003 prefix tapi-connectivity;
4 import tapi-common {
5 prefix tapi-common;
6 }
7 import tapi-topology {
8 prefix tapi-topology;
9 }
10 import tapi-path-computation {
11 prefix tapi-path-computation;
12 }
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080013 organization "ONF OTCC (Open Transport Configuration & Control) Project";
hirokid8fd7862018-10-09 15:24:24 +090014 contact "
15 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
16 Project List: <mailto:transport-api@opennetworking.org>
17 Editor: Karthik Sethuraman
18 <mailto:karthik.sethuraman@necam.com>";
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -080019 description "
20 This module contains TAPI Connectivity Model definitions.
21 Source: TapiConnectivity.uml
22 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
23 License: This module is distributed under the Apache License 2.0";
hirokid8fd7862018-10-09 15:24:24 +090024 revision 2018-10-16 {
25 description "ONF Transport API version 2.1.0.
26 - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.
27 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
28 <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
29 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
30 <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
31 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
32 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
33 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
34 The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
35 YANG models included in this release are not backward compatible with previous TAPI releases.
36 - Changes included in this TAPI release (v2.1.0) are listed in
37 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
38 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
39 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
40 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080041 revision 2018-03-07 {
hirokid8fd7862018-10-09 15:24:24 +090042 description "ONF Transport API version 2.0.2
43 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 -070044 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 +090045 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 -070046 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
47 }
48 revision 2018-02-16 {
hirokid8fd7862018-10-09 15:24:24 +090049 description "ONF Transport API version 2.0.1
50 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 -070051 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 +090052 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 -070053 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
54 }
55 revision 2018-01-02 {
hirokid8fd7862018-10-09 15:24:24 +090056 description "ONF Transport API version 2.0.0
57 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 -070058 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 +090059 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 -070060 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
Toru Furusawa28988892017-10-30 17:28:40 -070061 }
62 augment "/tapi-common:context" {
hirokid8fd7862018-10-09 15:24:24 +090063 container connectivity-context {
64 uses connectivity-context;
65 description "Augments the base TAPI Context with ConnectivityService information";
66 }
Toru Furusawa28988892017-10-30 17:28:40 -070067 description "Augments the base TAPI Context with ConnectivityService information";
68 }
hirokid8fd7862018-10-09 15:24:24 +090069 augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
70 container cep-list {
71 uses cep-list;
72 description "none";
73 }
Toru Furusawa28988892017-10-30 17:28:40 -070074 description "none";
75 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080076
77 /*************************
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070078 * definitions of references
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080079 *************************/
80 grouping connectivity-service-ref {
hirokid8fd7862018-10-09 15:24:24 +090081 leaf connectivity-service-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080082 type leafref {
hirokid8fd7862018-10-09 15:24:24 +090083 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080084 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070085 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080086 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070087 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -080088 }
89
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070090 grouping connectivity-service-end-point-ref {
91 uses connectivity-service-ref;
hirokid8fd7862018-10-09 15:24:24 +090092 leaf connectivity-service-end-point-local-id {
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070093 type leafref {
hirokid8fd7862018-10-09 15:24:24 +090094 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -070095 }
96 description "none";
97 }
98 description "none";
99 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800100 grouping connection-end-point-ref {
hirokid8fd7862018-10-09 15:24:24 +0900101 uses tapi-topology:node-edge-point-ref;
102 leaf connection-end-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-connectivity:cep-list/tapi-connectivity:connection-end-point/tapi-connectivity: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 connection-ref {
hirokid8fd7862018-10-09 15:24:24 +0900112 leaf connection-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800113 type leafref {
hirokid8fd7862018-10-09 15:24:24 +0900114 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:uuid';
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800115 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700116 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800117 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700118 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800119 }
120
121 grouping switch-control-ref {
122 uses connection-ref;
hirokid8fd7862018-10-09 15:24:24 +0900123 leaf switch-control-uuid {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800124 type leafref {
hirokid8fd7862018-10-09 15:24:24 +0900125 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800126 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700127 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800128 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700129 description "none";
130 }
131
132 grouping route-ref {
133 uses connection-ref;
hirokid8fd7862018-10-09 15:24:24 +0900134 leaf route-local-id {
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700135 type leafref {
hirokid8fd7862018-10-09 15:24:24 +0900136 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700137 }
138 description "none";
139 }
140 description "none";
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800141 }
142
Toru Furusawa28988892017-10-30 17:28:40 -0700143 /***********************
144 * package object-classes
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700145 **********************/
Toru Furusawa28988892017-10-30 17:28:40 -0700146 grouping connection {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800147 list connection-end-point {
148 uses connection-end-point-ref;
hirokid8fd7862018-10-09 15:24:24 +0900149 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700150 config false;
151 min-elements 2;
152 description "none";
153 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700154 list lower-connection {
155 uses connection-ref;
hirokid8fd7862018-10-09 15:24:24 +0900156 key 'connection-uuid';
157 config false;
Toru Furusawa28988892017-10-30 17:28:40 -0700158 description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700159 Aggregation is used as for the Node/Topology to allow changes in hierarchy.
160 Connection aggregation reflects Node/Topology aggregation.
Toru Furusawa28988892017-10-30 17:28:40 -0700161 The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
162 }
hirokid8fd7862018-10-09 15:24:24 +0900163 list supported-client-link {
164 uses tapi-topology:link-ref;
165 key 'topology-uuid link-uuid';
166 config false;
167 description "none";
168 }
Toru Furusawa28988892017-10-30 17:28:40 -0700169 list route {
170 key 'local-id';
171 config false;
172 uses route;
173 description "none";
174 }
175 list switch-control {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800176 key 'uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700177 config false;
178 uses switch-control;
179 description "none";
180 }
Toru Furusawa28988892017-10-30 17:28:40 -0700181 leaf direction {
182 type tapi-common:forwarding-direction;
183 config false;
184 description "none";
185 }
186 leaf layer-protocol-name {
187 type tapi-common:layer-protocol-name;
188 config false;
189 description "none";
190 }
191 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500192 uses tapi-common:operational-state-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700193 description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
194 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
195 }
196 grouping connection-end-point {
wu6a418d22018-02-02 01:49:21 -0500197 leaf layer-protocol-name {
198 type tapi-common:layer-protocol-name;
199 config false;
200 description "none";
201 }
hirokid8fd7862018-10-09 15:24:24 +0900202 leaf layer-protocol-qualifier {
203 type tapi-common:layer-protocol-qualifier;
204 config false;
wu6a418d22018-02-02 01:49:21 -0500205 description "none";
206 }
hirokid8fd7862018-10-09 15:24:24 +0900207 container parent-node-edge-point {
208 uses tapi-topology:node-edge-point-ref;
Toru Furusawa28988892017-10-30 17:28:40 -0700209 config false;
Toru Furusawa28988892017-10-30 17:28:40 -0700210 description "none";
211 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800212 list client-node-edge-point {
hirokid8fd7862018-10-09 15:24:24 +0900213 uses tapi-topology:node-edge-point-ref;
214 key 'topology-uuid node-uuid node-edge-point-uuid';
215 config false;
216 description "none";
217 }
218 list aggregated-connection-end-point {
219 uses connection-end-point-ref;
220 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700221 config false;
222 description "none";
223 }
Toru Furusawa28988892017-10-30 17:28:40 -0700224 leaf connection-port-direction {
225 type tapi-common:port-direction;
226 config false;
227 description "The orientation of defined flow at the EndPoint.";
228 }
229 leaf connection-port-role {
230 type tapi-common:port-role;
231 config false;
232 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. ";
233 }
234 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500235 uses tapi-common:operational-state-pac;
236 uses tapi-common:termination-pac;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700237 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 -0700238 The structure of LTP supports all transport protocols including circuit and packet forms.";
239 }
240 grouping connectivity-constraint {
hirokid8fd7862018-10-09 15:24:24 +0900241 leaf service-layer {
242 type tapi-common:layer-protocol-name;
243 description "none";
244 }
Toru Furusawa28988892017-10-30 17:28:40 -0700245 leaf service-type {
246 type service-type;
Toru Furusawa28988892017-10-30 17:28:40 -0700247 description "none";
248 }
249 leaf service-level {
250 type string;
Toru Furusawa28988892017-10-30 17:28:40 -0700251 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
252 }
Toru Furusawa28988892017-10-30 17:28:40 -0700253 container requested-capacity {
Toru Furusawa28988892017-10-30 17:28:40 -0700254 uses tapi-common:capacity;
255 description "none";
256 }
hirokid8fd7862018-10-09 15:24:24 +0900257 leaf connectivity-direction {
258 type tapi-common:forwarding-direction;
259 description "none";
260 }
Toru Furusawa28988892017-10-30 17:28:40 -0700261 container schedule {
262 uses tapi-common:time-range;
263 description "none";
264 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700265 container coroute-inclusion {
hirokid8fd7862018-10-09 15:24:24 +0900266 uses connectivity-service-ref;
Toru Furusawa28988892017-10-30 17:28:40 -0700267 description "none";
268 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800269 list diversity-exclusion {
hirokid8fd7862018-10-09 15:24:24 +0900270 uses connectivity-service-ref;
271 key 'connectivity-service-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700272 description "none";
273 }
Toru Furusawa28988892017-10-30 17:28:40 -0700274 description "none";
275 }
276 grouping connectivity-service {
277 list end-point {
278 key 'local-id';
279 min-elements 2;
280 uses connectivity-service-end-point;
281 description "none";
282 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700283 list connection {
284 uses connection-ref;
hirokid8fd7862018-10-09 15:24:24 +0900285 key 'connection-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700286 config false;
287 description "none";
288 }
Toru Furusawa28988892017-10-30 17:28:40 -0700289 uses tapi-common:service-spec;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800290 uses connectivity-constraint;
hirokid8fd7862018-10-09 15:24:24 +0900291 uses tapi-path-computation:routing-constraint;
292 uses tapi-path-computation:topology-constraint;
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800293 uses resilience-constraint;
hirokid8fd7862018-10-09 15:24:24 +0900294 uses tapi-common:admin-state-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700295 description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
296 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
297 }
298 grouping connectivity-service-end-point {
wu6a418d22018-02-02 01:49:21 -0500299 leaf layer-protocol-name {
300 type tapi-common:layer-protocol-name;
301 description "none";
302 }
hirokid8fd7862018-10-09 15:24:24 +0900303 leaf layer-protocol-qualifier {
304 type tapi-common:layer-protocol-qualifier;
305 description "none";
306 }
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800307 container service-interface-point {
308 uses tapi-common:service-interface-point-ref;
Toru Furusawa28988892017-10-30 17:28:40 -0700309 description "none";
310 }
hirokid8fd7862018-10-09 15:24:24 +0900311 list connection-end-point {
312 uses connection-end-point-ref;
313 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
314 config false;
315 description "none";
316 }
Toru Furusawa28988892017-10-30 17:28:40 -0700317 container capacity {
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800318 uses tapi-common:capacity;
Toru Furusawa28988892017-10-30 17:28:40 -0700319 description "none";
320 }
321 leaf direction {
322 type tapi-common:port-direction;
323 description "The orientation of defined flow at the EndPoint.";
324 }
325 leaf role {
326 type tapi-common:port-role;
327 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. ";
328 }
329 leaf protection-role {
330 type protection-role;
331 description "To specify the protection role of this Port when create or update ConnectivityService.";
332 }
333 uses tapi-common:local-class;
wu6a418d22018-02-02 01:49:21 -0500334 uses tapi-common:admin-state-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700335 description "The association of the FC to LTPs is made via EndPoints.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700336 The EndPoint (EP) object class models the access to the FC function.
337 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
338 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 -0700339 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700340 The EP replaces the Protection Unit of a traditional protection model.
Toru Furusawa28988892017-10-30 17:28:40 -0700341 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
342 }
343 grouping route {
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700344 list connection-end-point {
345 uses connection-end-point-ref;
hirokid8fd7862018-10-09 15:24:24 +0900346 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700347 config false;
348 min-elements 2;
349 description "none";
350 }
351 uses tapi-common:local-class;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700352 description "The FC Route (FcRoute) object class models the individual routes of an FC.
353 The route of an FC object is represented by a list of FCs at a lower level.
Toru Furusawa28988892017-10-30 17:28:40 -0700354 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
355 }
356 grouping connectivity-context {
357 list connectivity-service {
358 key 'uuid';
359 uses connectivity-service;
360 description "none";
361 }
362 list connection {
363 key 'uuid';
364 config false;
365 uses connection;
366 description "none";
367 }
368 description "none";
369 }
370 grouping switch {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800371 list selected-connection-end-point {
372 uses connection-end-point-ref;
hirokid8fd7862018-10-09 15:24:24 +0900373 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700374 min-elements 1;
375 description "none";
376 }
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700377 list selected-route {
378 uses route-ref;
hirokid8fd7862018-10-09 15:24:24 +0900379 key 'connection-uuid route-local-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700380 min-elements 1;
381 description "none";
382 }
383 leaf selection-control {
384 type selection-control;
385 description "Degree of administrative control applied to the switch selection.";
386 }
387 leaf selection-reason {
388 type selection-reason;
389 config false;
390 description "The reason for the current switch selection.";
391 }
392 leaf switch-direction {
393 type tapi-common:port-direction;
394 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
395 }
396 uses tapi-common:local-class;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700397 description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection).
Toru Furusawa28988892017-10-30 17:28:40 -0700398 If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700399 The FC switch represents and defines a protection switch structure encapsulated in the FC.
400 Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit.
Toru Furusawa28988892017-10-30 17:28:40 -0700401 One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
402 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
403 It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
404 It may be locked out (prevented from switching), force switched or manual switched.
405 It will indicate switch state and change of state.
406 The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
407 The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
408 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
409 }
410 grouping switch-control {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800411 list sub-switch-control {
412 uses switch-control-ref;
hirokid8fd7862018-10-09 15:24:24 +0900413 key 'connection-uuid switch-control-uuid';
Toru Furusawa28988892017-10-30 17:28:40 -0700414 description "none";
415 }
416 list switch {
417 key 'local-id';
418 uses switch;
419 description "none";
420 }
Yuta HIGUCHI80d0bbd2018-02-28 11:13:11 -0800421 uses tapi-common:resource-spec;
422 uses resilience-constraint;
Toru Furusawa28988892017-10-30 17:28:40 -0700423 description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
424 }
425 grouping resilience-constraint {
426 container resilience-type {
427 uses tapi-topology:resilience-type;
428 description "none";
429 }
430 leaf restoration-coordinate-type {
431 type coordinate-type;
432 description " The coordination mechanism between multi-layers.";
433 }
434 leaf restore-priority {
435 type uint64;
436 description "none";
437 }
438 leaf reversion-mode {
439 type reversion-mode;
440 description "Indcates whether the protection scheme is revertive or non-revertive.";
441 }
442 leaf wait-to-revert-time {
443 type uint64;
444 default "15";
445 description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
446 }
447 leaf hold-off-time {
448 type uint64;
449 description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
450 }
451 leaf is-lock-out {
452 type boolean;
453 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
454 This overrides all other protection control states including forced.
455 If the item is locked out then it cannot be used under any circumstances.
456 Note: Only relevant when part of a protection scheme.";
457 }
458 leaf is-frozen {
459 type boolean;
Yuta HIGUCHI7f165b12018-03-25 19:05:29 -0700460 description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
Toru Furusawa28988892017-10-30 17:28:40 -0700461 Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
462 All administrative controls of any aspect of protection are rejected.";
463 }
464 leaf is-coordinated-switching-both-ends {
465 type boolean;
466 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
467 }
468 leaf max-switch-times {
469 type uint64;
470 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
471 }
hirokid8fd7862018-10-09 15:24:24 +0900472 leaf-list preferred-restoration-layer {
Toru Furusawa28988892017-10-30 17:28:40 -0700473 type tapi-common:layer-protocol-name;
474 description "Indicate which layer this resilience parameters package configured for.";
475 }
Toru Furusawa28988892017-10-30 17:28:40 -0700476 description "A list of control parameters to apply to a switch.";
477 }
Toru Furusawa28988892017-10-30 17:28:40 -0700478 grouping cep-list {
479 list connection-end-point {
480 key 'uuid';
481 uses connection-end-point;
482 description "none";
483 }
484 description "none";
485 }
Toru Furusawa28988892017-10-30 17:28:40 -0700486
487 /***********************
488 * package type-definitions
489 **********************/
490 typedef service-type {
491 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500492 enum POINT_TO_POINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700493 description "none";
494 }
wu6a418d22018-02-02 01:49:21 -0500495 enum POINT_TO_MULTIPOINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700496 description "none";
497 }
wu6a418d22018-02-02 01:49:21 -0500498 enum MULTIPOINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700499 description "none";
500 }
wu6a418d22018-02-02 01:49:21 -0500501 enum ROOTED_MULTIPOINT_CONNECTIVITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700502 description "none";
503 }
504 }
505 description "none";
506 }
507 typedef reversion-mode {
508 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500509 enum REVERTIVE {
Toru Furusawa28988892017-10-30 17:28:40 -0700510 description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";
511 }
wu6a418d22018-02-02 01:49:21 -0500512 enum NON-REVERTIVE {
Toru Furusawa28988892017-10-30 17:28:40 -0700513 description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
514 }
515 }
516 description "The reversion mode associated with protection.";
517 }
518 typedef selection-control {
519 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500520 enum LOCK_OUT {
Toru Furusawa28988892017-10-30 17:28:40 -0700521 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
522 This overrides all other protection control states including forced.
523 If the item is locked out then it cannot be used under any circumstances.
524 Note: Only relevant when part of a protection scheme.";
525 }
wu6a418d22018-02-02 01:49:21 -0500526 enum NORMAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700527 description "none";
528 }
wu6a418d22018-02-02 01:49:21 -0500529 enum MANUAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700530 description "none";
531 }
wu6a418d22018-02-02 01:49:21 -0500532 enum FORCED {
Toru Furusawa28988892017-10-30 17:28:40 -0700533 description "none";
534 }
535 }
536 description "Possible degrees of administrative control applied to the Route selection.";
537 }
538 typedef selection-reason {
539 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500540 enum LOCKOUT {
Toru Furusawa28988892017-10-30 17:28:40 -0700541 description "none";
542 }
wu6a418d22018-02-02 01:49:21 -0500543 enum NORMAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700544 description "none";
545 }
wu6a418d22018-02-02 01:49:21 -0500546 enum MANUAL {
Toru Furusawa28988892017-10-30 17:28:40 -0700547 description "none";
548 }
wu6a418d22018-02-02 01:49:21 -0500549 enum FORCED {
Toru Furusawa28988892017-10-30 17:28:40 -0700550 description "none";
551 }
wu6a418d22018-02-02 01:49:21 -0500552 enum WAIT_TO_REVERT {
Toru Furusawa28988892017-10-30 17:28:40 -0700553 description "none";
554 }
wu6a418d22018-02-02 01:49:21 -0500555 enum SIGNAL_DEGRADE {
Toru Furusawa28988892017-10-30 17:28:40 -0700556 description "none";
557 }
wu6a418d22018-02-02 01:49:21 -0500558 enum SIGNAL_FAIL {
Toru Furusawa28988892017-10-30 17:28:40 -0700559 description "none";
560 }
561 }
562 description "The cause of the current route selection.";
563 }
564 typedef coordinate-type {
565 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500566 enum NO_COORDINATE {
Toru Furusawa28988892017-10-30 17:28:40 -0700567 description "none";
568 }
wu6a418d22018-02-02 01:49:21 -0500569 enum HOLD_OFF_TIME {
Toru Furusawa28988892017-10-30 17:28:40 -0700570 description "none";
571 }
wu6a418d22018-02-02 01:49:21 -0500572 enum WAIT_FOR_NOTIFICATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700573 description "none";
574 }
575 }
576 description "none";
577 }
Toru Furusawa28988892017-10-30 17:28:40 -0700578 typedef protection-role {
579 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500580 enum WORK {
Toru Furusawa28988892017-10-30 17:28:40 -0700581 description "none";
582 }
wu6a418d22018-02-02 01:49:21 -0500583 enum PROTECT {
Toru Furusawa28988892017-10-30 17:28:40 -0700584 description "none";
585 }
wu6a418d22018-02-02 01:49:21 -0500586 enum PROTECTED {
Toru Furusawa28988892017-10-30 17:28:40 -0700587 description "none";
588 }
wu6a418d22018-02-02 01:49:21 -0500589 enum NA {
Toru Furusawa28988892017-10-30 17:28:40 -0700590 description "none";
591 }
wu6a418d22018-02-02 01:49:21 -0500592 enum WORK_RESTORE {
Toru Furusawa28988892017-10-30 17:28:40 -0700593 description "none";
594 }
wu6a418d22018-02-02 01:49:21 -0500595 enum PROTECT_RESTORE {
Toru Furusawa28988892017-10-30 17:28:40 -0700596 description "none";
597 }
598 }
599 description "none";
600 }
601
602 /***********************
603 * package interfaces
604 **********************/
605 rpc get-connection-details {
606 description "none";
607 input {
608 leaf service-id-or-name {
609 type string;
610 description "none";
611 }
612 leaf connection-id-or-name {
613 type string;
614 description "none";
615 }
616 }
617 output {
618 container connection {
619 uses connection;
620 description "none";
621 }
622 }
623 }
624 rpc get-connectivity-service-list {
625 description "none";
626 output {
627 list service {
628 uses connectivity-service;
629 description "none";
630 }
631 }
632 }
633 rpc get-connectivity-service-details {
634 description "none";
635 input {
636 leaf service-id-or-name {
637 type string;
638 description "none";
639 }
640 }
641 output {
642 container service {
643 uses connectivity-service;
644 description "none";
645 }
646 }
647 }
648 rpc create-connectivity-service {
649 description "none";
650 input {
651 list end-point {
Yuta HIGUCHI348bba72018-03-08 13:46:48 -0800652 key 'local-id';
Toru Furusawa28988892017-10-30 17:28:40 -0700653 min-elements 2;
654 uses connectivity-service-end-point;
655 description "none";
656 }
hirokid8fd7862018-10-09 15:24:24 +0900657 container connectivity-constraint {
Toru Furusawa28988892017-10-30 17:28:40 -0700658 uses connectivity-constraint;
659 description "none";
660 }
hirokid8fd7862018-10-09 15:24:24 +0900661 container routing-constraint {
662 uses tapi-path-computation:routing-constraint;
663 description "none";
664 }
665 container topology-constraint {
666 uses tapi-path-computation:topology-constraint;
Toru Furusawa28988892017-10-30 17:28:40 -0700667 description "none";
668 }
669 list resilience-constraint {
670 uses resilience-constraint;
671 description "none";
672 }
673 leaf state {
674 type string;
675 description "none";
676 }
677 }
678 output {
679 container service {
680 uses connectivity-service;
681 description "none";
682 }
683 }
684 }
685 rpc update-connectivity-service {
686 description "none";
687 input {
688 leaf service-id-or-name {
689 type string;
690 description "none";
691 }
692 container end-point {
693 uses connectivity-service-end-point;
694 description "none";
695 }
hirokid8fd7862018-10-09 15:24:24 +0900696 container connectivity-constraint {
Toru Furusawa28988892017-10-30 17:28:40 -0700697 uses connectivity-constraint;
698 description "none";
699 }
hirokid8fd7862018-10-09 15:24:24 +0900700 container routing-constraint {
701 uses tapi-path-computation:routing-constraint;
702 description "none";
703 }
704 container topology-constraint {
705 uses tapi-path-computation:topology-constraint;
Toru Furusawa28988892017-10-30 17:28:40 -0700706 description "none";
707 }
708 list resilience-constraint {
709 uses resilience-constraint;
710 description "none";
711 }
712 leaf state {
713 type string;
714 description "none";
715 }
716 }
717 output {
718 container service {
719 uses connectivity-service;
720 description "none";
721 }
722 }
723 }
724 rpc delete-connectivity-service {
725 description "none";
726 input {
727 leaf service-id-or-name {
728 type string;
729 description "none";
730 }
731 }
Toru Furusawa28988892017-10-30 17:28:40 -0700732 }
733
734}