2 namespace "urn:onf:otcc:yang:tapi-common";
\r
4 organization "ONF OTCC (Open Transport Configuration & Control) Project";
\r
6 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
7 Project List: <mailto:transport-api@opennetworking.org>
8 Editor: Karthik Sethuraman
9 <mailto:karthik.sethuraman@necam.com>";
\r
11 This module contains TAPI Common Model definitions.
\r
12 Source: TapiCommon.uml
\r
13 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
\r
14 License: This module is distributed under the Apache License 2.0
\r
16 revision 2018-08-31 {
\r
17 description "ONF Transport API version 2.1.0
18 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
19 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
\r
20 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
21 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
\r
23 revision 2018-03-07 {
\r
24 description "ONF Transport API version 2.0.2
25 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
26 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
\r
27 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
28 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
\r
30 revision 2018-02-16 {
\r
31 description "ONF Transport API version 2.0.1
32 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
33 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
\r
34 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
35 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
\r
37 revision 2018-01-02 {
\r
38 description "ONF Transport API version 2.0.0
39 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
40 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
\r
41 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
42 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
\r
45 /*************************
\r
46 * definitions of refrences
\r
47 *************************/
\r
48 grouping service-interface-point-ref-g {
\r
49 leaf service-interface-point-uuid {
\r
51 path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';
\r
58 /***********************
\r
59 * package object-classes
\r
60 **********************/
\r
61 grouping admin-state-pac-g {
\r
62 leaf administrative-state {
\r
63 type administrative-state;
\r
66 leaf operational-state {
\r
67 type operational-state;
\r
71 leaf lifecycle-state {
\r
72 type lifecycle-state;
\r
76 description "Provides state attributes that are applicable to an entity that can be administered. Such an entity also has operational and lifecycle aspects.";
\r
78 grouping global-class-g {
\r
81 description "UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity.
\r
82 UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters.
\r
83 Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
\r
84 Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
\r
88 uses name-and-value-g;
\r
89 description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";
\r
91 description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";
\r
93 grouping lifecycle-state-pac-g {
\r
94 leaf lifecycle-state {
\r
95 type lifecycle-state;
\r
99 description "Provides state attributes for an entity that has lifeccycle aspects only.";
\r
101 grouping local-class-g {
\r
104 description "none";
\r
108 uses name-and-value-g;
\r
109 description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";
\r
111 description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";
\r
113 grouping operational-state-pac-g {
\r
114 leaf operational-state {
\r
115 type operational-state;
\r
117 description "none";
\r
119 leaf lifecycle-state {
\r
120 type lifecycle-state;
\r
122 description "none";
\r
124 description "Provides state attributes that are applicable to an entity that reflects operational aspects. Such an entity is expected to also have lifecycle aspects.";
\r
126 container context {
\r
127 uses tapi-context-g;
\r
128 presence "Root container for all TAPI interaction";
\r
129 description "none";
\r
131 grouping tapi-context-g {
\r
132 list service-interface-point {
\r
134 uses service-interface-point-g;
\r
135 description "none";
\r
137 uses global-class-g;
\r
138 description "The Network Control Domain (NCD) object class represents the scope of control that a particular SDN controller has with respect to a particular network, (i.e., encompassing a designated set of interconnected (virtual) network elements).";
\r
140 grouping resource-spec-g {
\r
141 uses global-class-g;
\r
142 description "none";
\r
144 grouping service-spec-g {
\r
145 uses global-class-g;
\r
146 description "none";
\r
148 grouping service-interface-point-g {
\r
149 leaf layer-protocol-name {
\r
150 type layer-protocol-name;
\r
152 description "Usage of layerProtocolName [>1] in the ServiceInterfacePoint should be considered experimental";
\r
154 leaf-list supported-layer-protocol-qualifier {
\r
155 type layer-protocol-qualifier;
\r
158 description "none";
\r
160 uses resource-spec-g;
\r
161 uses admin-state-pac-g;
\r
162 uses capacity-pac-g;
\r
163 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
\r
164 The structure of LTP supports all transport protocols including circuit and packet forms.";
\r
166 grouping capacity-pac-g {
\r
167 container total-potential-capacity {
\r
170 description "An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken.";
\r
172 container available-capacity {
\r
175 description "Capacity available to be assigned.";
\r
177 description "The TopologicalEntity derives capacity from the underlying realization.
\r
178 A TopologicalEntity may be an abstraction and virtualization of a subset of the underlying capability offered in a view or may be directly reflecting the underlying realization.
\r
179 A TopologicalEntity may be directly used in the view or may be assigned to another view for use.
\r
180 The clients supported by a multi-layer TopologicalEntity may interact such that the resources used by one client may impact those available to another. This is derived from the LTP spec details.
\r
181 Represents the capacity available to user (client) along with client interaction and usage.
\r
182 A TopologicalEntity may reflect one or more client protocols and one or more members for each profile.";
\r
184 grouping termination-pac-g {
\r
185 leaf termination-direction {
\r
186 type termination-direction;
\r
188 description "The overall directionality of the LP.
\r
189 - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.
\r
190 - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows
\r
191 - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";
\r
193 leaf termination-state {
\r
194 type termination-state;
\r
196 description "Indicates whether the layer is terminated and if so how.";
\r
198 description "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality.
\r
199 It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection.
\r
200 Where the client – server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where the is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP. ";
\r
203 /***********************
\r
204 * package type-definitions
\r
205 **********************/
\r
206 identity LAYER_PROTOCOL_QUALIFIER {
\r
207 description "none";
\r
209 typedef administrative-state {
\r
212 description "Users are administratively prohibited from making use of the resource.";
\r
215 description "Users are allowed to use the resource";
\r
218 description "The possible values of the administrativeState.";
\r
220 typedef date-and-time {
\r
222 description "This primitive type defines the date and time according to the following structure:
\r
223 yyyyMMddhhmmss.s[Z|{+|-}HHMm] where:
\r
224 yyyy 0000..9999 year
\r
230 s .0...9 tenth of second (set to .0 if EMS or NE cannot support this granularity)
\r
231 Z Z indicates UTC (rather than local time)
\r
232 {+|-} + or - delta from UTC
\r
233 HH 00..23 time zone difference in hours
\r
234 Mm 00..59 time zone difference in minutes.";
\r
236 typedef directive-value {
\r
239 description "none";
\r
242 description "none";
\r
245 description "none";
\r
248 description "none";
\r
251 description "none";
\r
254 description "none";
\r
256 typedef forwarding-direction {
\r
258 enum BIDIRECTIONAL {
\r
259 description "The Fowarding entity supports both BIDIRECTIONAL flows at all Ports (i.e. all Ports have both an INPUT flow and an OUTPUT flow defined)";
\r
261 enum UNIDIRECTIONAL {
\r
262 description "The Forwarding entity has Ports that are either INPUT or OUTPUT. It has no BIDIRECTIONAL Ports.";
\r
264 enum UNDEFINED_OR_UNKNOWN {
\r
265 description "Not a normal state. The system is unable to determine the correct value.";
\r
268 description "The directionality of a Forwarding entity.";
\r
270 typedef layer-protocol-name {
\r
273 description "Models the ODU layer as per ITU-T G.872";
\r
276 description "Models the ETH layer as per ITU-T G.8010";
\r
279 description "Models a Digital Signal of an unspecified rate. This value can be used when the intent is to respresent an generic digital layer signal without making any statement on its format or overhead (processing) capabilities.";
\r
281 enum PHOTONIC_MEDIA {
\r
282 description "Models the OCH, OTSi, OTSiA, OTSiG, OMS, OTS and Media channels as per ITU-T G.872 (2017) version 4";
\r
285 description "Provides a controlled list of layer protocol names and indicates the naming authority.
\r
286 Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference.
\r
287 Layer protocol names include:
\r
288 - Layer 1 (L1): OTU, ODU
\r
289 - Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)
\r
292 typedef lifecycle-state {
\r
295 description "The resource is planned but is not present in the network.";
\r
297 enum POTENTIAL_AVAILABLE {
\r
298 description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.
\r
299 o When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
\r
300 o If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";
\r
302 enum POTENTIAL_BUSY {
\r
303 description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.
\r
304 o When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
\r
305 o If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";
\r
308 description "The resource is present in the network and is capable of providing the service expected.";
\r
310 enum PENDING_REMOVAL {
\r
311 description "The resource has been marked for removal";
\r
314 description "The possible values of the lifecycleState.";
\r
316 grouping name-and-value-g {
\r
319 description "The name of the value. The value need not have a name.";
\r
323 description "The value";
\r
325 description "A scoped name-value pair";
\r
327 typedef operational-state {
\r
330 description "The resource is unable to meet the SLA of the user of the resource. If no (explicit) SLA is defined the resource is disabled if it is totally inoperable and unable to provide service to the user.";
\r
333 description "The resource is partially or fully operable and available for use";
\r
336 description "The possible values of the operationalState.";
\r
338 typedef port-direction {
\r
340 enum BIDIRECTIONAL {
\r
341 description "The Port has both an INPUT flow and an OUTPUT flow defined.";
\r
344 description "The Port only has definition for a flow into the Forwarding entity (i.e. an ingress flow).";
\r
347 description "The Port only has definition for a flow out of the Forwarding entity (i.e. an egress flow).";
\r
349 enum UNIDENTIFIED_OR_UNKNOWN {
\r
350 description "Not a normal state. The system is unable to determine the correct value.";
\r
353 description "The orientation of flow at the Port of a Forwarding entity";
\r
355 typedef port-role {
\r
358 description "none";
\r
361 description "none";
\r
364 description "none";
\r
367 description "none";
\r
370 description "none";
\r
373 description "The role of an end in the context of the function of the forwarding entity that it bounds";
\r
375 typedef termination-direction {
\r
377 enum BIDIRECTIONAL {
\r
378 description "A Termination with both SINK and SOURCE flows.";
\r
381 description "The flow is up the layer stack from the server side to the client side.
\r
382 Considering an example of a Termination function within the termination entity, a SINK flow:
\r
383 - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component
\r
384 - then will be decoded and deconstructed
\r
385 - then relevant parts of the flow will be sent out of the termination function (the client side) where it is essentially at an OUTPUT from the termination component
\r
386 A SINK termination is one that only supports a SINK flow.
\r
387 A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";
\r
390 description "The flow is down the layer stack from the server side to the client side.
\r
391 Considering an example of a Termination function within the termination entity, a SOURCE flow:
\r
392 - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component
\r
393 - then will be assembled with various overheads etc and will be coded
\r
394 - then coded form of the assembly of flow will be sent out of the termination function (the server side) where it is essentially at an OUTPUT from the termination component
\r
395 A SOURCE termination is one that only supports a SOURCE flow.
\r
396 A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";
\r
398 enum UNDEFINED_OR_UNKNOWN {
\r
399 description "Not a normal state. The system is unable to determine the correct value.";
\r
402 description "The directionality of a termination entity";
\r
404 typedef termination-state {
\r
406 enum LP_CAN_NEVER_TERMINATE {
\r
407 description "A non-flexible case that can never be terminated.";
\r
409 enum LT_NOT_TERMINATED {
\r
410 description "A flexible termination that can terminate but is currently not terminated.";
\r
412 enum TERMINATED_SERVER_TO_CLIENT_FLOW {
\r
413 description "A flexible termination that is currently terminated for server to client flow only.";
\r
415 enum TERMINATED_CLIENT_TO_SERVER_FLOW {
\r
416 description "A flexible termination that is currently terminated for client to server flow only.";
\r
418 enum TERMINATED_BIDIRECTIONAL {
\r
419 description "A flexible termination that is currently terminated in both directions of flow.";
\r
421 enum LT_PERMENANTLY_TERMINATED {
\r
422 description "A non-flexible termination that is always terminated (in both directions of flow for a bidirectional case and in the one direction of flow for both unidirectional cases).";
\r
424 enum TERMINATION_STATE_UNKNOWN {
\r
425 description "There TerminationState cannot be determined.";
\r
428 description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.
\r
429 Indicates to what degree the LayerTermination is terminated.";
\r
433 description "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure.
\r
434 UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters.
\r
435 Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
\r
436 Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
\r
438 grouping capacity-g {
\r
439 container total-size {
\r
440 uses capacity-value-g;
\r
441 description "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate.";
\r
443 container bandwidth-profile {
\r
444 uses bandwidth-profile-g;
\r
445 description "none";
\r
447 description "Information on capacity of a particular TopologicalEntity.";
\r
449 grouping bandwidth-profile-g {
\r
450 leaf bw-profile-type {
\r
451 type bandwidth-profile-type;
\r
452 description "none";
\r
454 container committed-information-rate {
\r
455 uses capacity-value-g;
\r
456 description "none";
\r
458 container committed-burst-size {
\r
459 uses capacity-value-g;
\r
460 description "none";
\r
462 container peak-information-rate {
\r
463 uses capacity-value-g;
\r
464 description "none";
\r
466 container peak-burst-size {
\r
467 uses capacity-value-g;
\r
468 description "none";
\r
472 description "none";
\r
474 leaf coupling-flag {
\r
476 description "none";
\r
478 description "none";
\r
480 grouping capacity-value-g {
\r
483 description "none";
\r
486 type capacity-unit;
\r
487 description "none";
\r
489 description "The Capacity (Bandwidth) values that are applicable for digital layers.";
\r
491 typedef capacity-unit {
\r
494 description "Indicates that the integer CapacityValue is in TeraBytes";
\r
497 description "Indicates that the integer CapacityValue is in Terabit-per-second";
\r
500 description "Indicates that the integer CapacityValue is in GigaBytes";
\r
503 description "Indicates that the integer CapacityValue is in Gigabit-per-second";
\r
506 description "Indicates that the integer CapacityValue is in MegaBytes";
\r
509 description "Indicates that the integer CapacityValue is in Megabit-per-second";
\r
512 description "Indicates that the integer CapacityValue is in KiloBytes";
\r
515 description "Indicates that the integer CapacityValue is in Kilobit-per-second";
\r
518 description "none";
\r
521 description "none";
\r
524 description "none";
\r
526 typedef bandwidth-profile-type {
\r
529 description "none";
\r
532 description "none";
\r
535 description "none";
\r
538 description "none";
\r
541 description "none";
\r
543 grouping time-range-g {
\r
545 type date-and-time;
\r
546 description "none";
\r
549 type date-and-time;
\r
550 description "none";
\r
552 description "none";
\r
554 grouping time-period-g {
\r
557 description "none";
\r
561 description "none";
\r
563 description "none";
\r
565 typedef time-unit {
\r
568 description "none";
\r
571 description "none";
\r
574 description "none";
\r
577 description "none";
\r
580 description "none";
\r
583 description "none";
\r
585 enum MILLISECONDS {
\r
586 description "none";
\r
588 enum MICROSECONDS {
\r
589 description "none";
\r
592 description "none";
\r
595 description "none";
\r
598 description "none";
\r
600 grouping time-interval-g {
\r
604 uses time-period-g;
\r
605 description "none";
\r
607 description "none";
\r
609 typedef layer-protocol-qualifier {
\r
611 base LAYER_PROTOCOL_QUALIFIER;
\r
613 description "This enumeration is used to qualify the sub-layers (if applicable) for a specific LayerProtocol.
\r
614 This extensible enumeration is intentionally empty in the common module and will be augmented with layer-specific values in the respective technology-specific modules.
\r
616 - LayerProtocolName := OPTICAL_DATA_UNIT
\r
617 LayerProtocolQualifier := 'ODU_FLEX', 'ODU_0', 'ODU_1', 'ODU_2', 'ODU_2E', 'ODU_3', 'ODU_4'', 'ODU_CBR'', 'ODU_GFP'', 'ODU_GFP_HAO', etc
\r
618 - LayerProtocolName := DIGITAL_SIGNAL_RATE
\r
619 LayerProtocolQualifier := 'GBE', '10_GBE_WAN', '10_GBE_LAN', '100_GBE', 'FC_100', 'FC_200', 'FC_400', 'FC_800', 'FC_1200', 'FC_1600', 'FC_3200', 'STM_1', 'STM_4', 'STM_16', 'STM_64', 'STM_256', 'OC_3', 'OC_12', 'OC_48', 'OC_192', 'OC_768', 'OTU_1', 'OTU_2', 'OTU_2E', 'OTU_3', 'OTU_4', 'GPON', 'XGPON', 'IB_SDR', 'IB_DDR', 'IB_QDR', 'SBCON_ESCON', 'DVB_ASI', 'SDI', 'SDI_1G5', 'SDI_3G', etc
\r
620 - LayerProtocolName := PHOTONIC_MEDIA
\r
621 LayerProtocolQualifier := OCH, OTSi, OTSiA, NMC, NMCA, SMC, SMCA, OMS, OTS
\r
625 /***********************
\r
626 * package interfaces
\r
627 **********************/
\r
628 rpc get-service-interface-point-details {
\r
629 description "none";
\r
631 leaf sip-id-or-name {
\r
633 description "none";
\r
638 uses service-interface-point-g;
\r
639 description "none";
\r
643 rpc get-service-interface-point-list {
\r
644 description "none";
\r
647 uses service-interface-point-g;
\r
648 description "none";
\r
652 rpc update-service-interface-point {
\r
653 description "none";
\r
655 leaf sip-id-or-name {
\r
657 description "none";
\r
660 type administrative-state;
\r
661 description "none";
\r