2 namespace "urn:onf:otcc:yang:tapi-common";
4 organization "ONF OTCC (Open Transport Configuration & Control) Project";
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>";
11 This module contains TAPI Common Model definitions.
12 Source: TapiCommon.uml
13 - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
14 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
15 <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
16 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
17 <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
18 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
19 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
20 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
21 The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
22 YANG models included in this release may not be backward compatible with previous TAPI releases.
23 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
24 License: This module is distributed under the Apache License 2.0";
26 description "ONF Transport API version 2.1.1.
27 Changes included in this TAPI release (v2.1.1) are listed in
28 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
29 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
30 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
33 description "ONF Transport API version 2.1.0.
34 Changes included in this TAPI release (v2.1.0) are listed in
35 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
36 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
37 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
40 description "ONF Transport API version 2.0.2
41 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
42 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
43 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
44 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
47 description "ONF Transport API version 2.0.1
48 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
49 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
50 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
51 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
54 description "ONF Transport API version 2.0.0
55 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
56 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
57 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
58 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
61 /**************************
62 * definitions of refrences
63 **************************/
64 grouping service-interface-point-ref {
65 leaf service-interface-point-uuid {
67 path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';
74 /**************************
75 * package object-classes
76 **************************/
77 grouping admin-state-pac {
78 leaf administrative-state {
79 type administrative-state;
82 leaf operational-state {
83 type operational-state;
87 leaf lifecycle-state {
92 description "Provides state attributes that are applicable to an entity that can be administered. Such an entity also has operational and lifecycle aspects.";
94 grouping global-class {
97 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.
98 UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters.
99 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}
100 Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
105 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.";
107 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. ";
109 grouping lifecycle-state-pac {
110 leaf lifecycle-state {
111 type lifecycle-state;
115 description "Provides state attributes for an entity that has lifeccycle aspects only.";
117 grouping local-class {
125 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.";
127 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. ";
129 grouping operational-state-pac {
130 leaf operational-state {
131 type operational-state;
135 leaf lifecycle-state {
136 type lifecycle-state;
140 description "Provides state attributes that are applicable to an entity that reflects operational aspects. Such an entity is expected to also have lifecycle aspects.";
144 presence "Root container for all TAPI interaction";
147 grouping tapi-context {
148 list service-interface-point {
150 uses service-interface-point;
154 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).";
156 grouping resource-spec {
160 grouping service-spec {
164 grouping service-interface-point {
165 leaf layer-protocol-name {
166 type layer-protocol-name;
168 description "Usage of layerProtocolName [>1] in the ServiceInterfacePoint should be considered experimental";
170 leaf-list supported-layer-protocol-qualifier {
171 type layer-protocol-qualifier;
177 uses admin-state-pac;
179 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
180 The structure of LTP supports all transport protocols including circuit and packet forms.";
182 grouping capacity-pac {
183 container total-potential-capacity {
186 description "An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken.";
188 container available-capacity {
191 description "Capacity available to be assigned.";
193 description "The TopologicalEntity derives capacity from the underlying realization.
194 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.
195 A TopologicalEntity may be directly used in the view or may be assigned to another view for use.
196 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.
197 Represents the capacity available to user (client) along with client interaction and usage.
198 A TopologicalEntity may reflect one or more client protocols and one or more members for each profile.";
200 grouping termination-pac {
201 leaf termination-direction {
202 type termination-direction;
204 description "The overall directionality of the LP.
205 - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.
206 - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows
207 - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";
209 leaf termination-state {
210 type termination-state;
212 description "Indicates whether the layer is terminated and if so how.";
214 description "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality.
215 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.
216 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. ";
219 /**************************
220 * package type-definitions
221 **************************/
222 identity LAYER_PROTOCOL_QUALIFIER {
225 typedef administrative-state {
228 description "Users are administratively prohibited from making use of the resource.";
231 description "Users are allowed to use the resource";
234 description "The possible values of the administrativeState.";
236 typedef date-and-time {
238 description "This primitive type defines the date and time according to the following structure:
239 yyyyMMddhhmmss.s[Z|{+|-}HHMm] where:
246 s .0...9 tenth of second (set to .0 if EMS or NE cannot support this granularity)
247 Z Z indicates UTC (rather than local time)
248 {+|-} + or - delta from UTC
249 HH 00..23 time zone difference in hours
250 Mm 00..59 time zone difference in minutes.";
252 typedef directive-value {
272 typedef forwarding-direction {
275 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)";
277 enum UNIDIRECTIONAL {
278 description "The Forwarding entity has Ports that are either INPUT or OUTPUT. It has no BIDIRECTIONAL Ports.";
280 enum UNDEFINED_OR_UNKNOWN {
281 description "Not a normal state. The system is unable to determine the correct value.";
284 description "The directionality of a Forwarding entity.";
286 typedef layer-protocol-name {
289 description "Models the ODU layer as per ITU-T G.872";
292 description "Models the ETH layer as per ITU-T G.8010";
295 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.";
297 enum PHOTONIC_MEDIA {
298 description "Models the OCH, OTSi, OTSiA, OTSiG, OMS, OTS and Media channels as per ITU-T G.872 (2017) version 4";
301 description "Provides a controlled list of layer protocol names and indicates the naming authority.
302 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.
303 Layer protocol names include:
304 - Layer 1 (L1): OTU, ODU
305 - Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)
308 typedef lifecycle-state {
311 description "The resource is planned but is not present in the network.";
313 enum POTENTIAL_AVAILABLE {
314 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.
315 o When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
316 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.";
318 enum POTENTIAL_BUSY {
319 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.
320 o When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
321 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.";
324 description "The resource is present in the network and is capable of providing the service expected.";
326 enum PENDING_REMOVAL {
327 description "The resource has been marked for removal";
330 description "The possible values of the lifecycleState.";
332 grouping name-and-value {
335 description "The name of the value. The value need not have a name.";
339 description "The value";
341 description "A scoped name-value pair";
343 typedef operational-state {
346 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.";
349 description "The resource is partially or fully operable and available for use";
352 description "The possible values of the operationalState.";
354 typedef port-direction {
357 description "The Port has both an INPUT flow and an OUTPUT flow defined.";
360 description "The Port only has definition for a flow into the Forwarding entity (i.e. an ingress flow).";
363 description "The Port only has definition for a flow out of the Forwarding entity (i.e. an egress flow).";
365 enum UNIDENTIFIED_OR_UNKNOWN {
366 description "Not a normal state. The system is unable to determine the correct value.";
369 description "The orientation of flow at the Port of a Forwarding entity";
389 description "The role of an end in the context of the function of the forwarding entity that it bounds";
391 typedef termination-direction {
394 description "A Termination with both SINK and SOURCE flows.";
397 description "The flow is up the layer stack from the server side to the client side.
398 Considering an example of a Termination function within the termination entity, a SINK flow:
399 - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component
400 - then will be decoded and deconstructed
401 - 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
402 A SINK termination is one that only supports a SINK flow.
403 A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";
406 description "The flow is down the layer stack from the server side to the client side.
407 Considering an example of a Termination function within the termination entity, a SOURCE flow:
408 - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component
409 - then will be assembled with various overheads etc and will be coded
410 - 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
411 A SOURCE termination is one that only supports a SOURCE flow.
412 A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";
414 enum UNDEFINED_OR_UNKNOWN {
415 description "Not a normal state. The system is unable to determine the correct value.";
418 description "The directionality of a termination entity";
420 typedef termination-state {
422 enum LP_CAN_NEVER_TERMINATE {
423 description "A non-flexible case that can never be terminated.";
425 enum LT_NOT_TERMINATED {
426 description "A flexible termination that can terminate but is currently not terminated.";
428 enum TERMINATED_SERVER_TO_CLIENT_FLOW {
429 description "A flexible termination that is currently terminated for server to client flow only.";
431 enum TERMINATED_CLIENT_TO_SERVER_FLOW {
432 description "A flexible termination that is currently terminated for client to server flow only.";
434 enum TERMINATED_BIDIRECTIONAL {
435 description "A flexible termination that is currently terminated in both directions of flow.";
437 enum LT_PERMENANTLY_TERMINATED {
438 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).";
440 enum TERMINATION_STATE_UNKNOWN {
441 description "There TerminationState cannot be determined.";
444 description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.
445 Indicates to what degree the LayerTermination is terminated.";
449 description "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure.
450 UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters.
451 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}
452 Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
455 container total-size {
457 description "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate.";
459 container bandwidth-profile {
460 uses bandwidth-profile;
463 description "Information on capacity of a particular TopologicalEntity.";
465 grouping bandwidth-profile {
466 leaf bw-profile-type {
467 type bandwidth-profile-type;
470 container committed-information-rate {
474 container committed-burst-size {
478 container peak-information-rate {
482 container peak-burst-size {
496 grouping capacity-value {
505 description "The Capacity (Bandwidth) values that are applicable for digital layers.";
507 typedef capacity-unit {
510 description "Indicates that the integer CapacityValue is in TeraBytes";
513 description "Indicates that the integer CapacityValue is in Terabit-per-second";
516 description "Indicates that the integer CapacityValue is in GigaBytes";
519 description "Indicates that the integer CapacityValue is in Gigabit-per-second";
522 description "Indicates that the integer CapacityValue is in MegaBytes";
525 description "Indicates that the integer CapacityValue is in Megabit-per-second";
528 description "Indicates that the integer CapacityValue is in KiloBytes";
531 description "Indicates that the integer CapacityValue is in Kilobit-per-second";
542 typedef bandwidth-profile-type {
559 grouping time-range {
570 grouping time-period {
616 grouping time-interval {
626 typedef layer-protocol-qualifier {
628 base LAYER_PROTOCOL_QUALIFIER;
630 description "This enumeration is used to qualify the sub-layers (if applicable) for a specific LayerProtocol.
631 This extensible enumeration is intentionally empty in the common module and will be augmented with layer-specific values in the respective technology-specific modules.
633 - LayerProtocolName := OPTICAL_DATA_UNIT
634 LayerProtocolQualifier := 'ODU_FLEX', 'ODU_0', 'ODU_1', 'ODU_2', 'ODU_2E', 'ODU_3', 'ODU_4'', 'ODU_CBR'', 'ODU_GFP'', 'ODU_GFP_HAO', etc
635 - LayerProtocolName := DIGITAL_SIGNAL_RATE
636 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
637 - LayerProtocolName := PHOTONIC_MEDIA
638 LayerProtocolQualifier := OCH, OTSi, OTSiA, NMC, NMCA, SMC, SMCA, OMS, OTS
642 /**************************
644 **************************/
645 rpc get-service-interface-point-details {
648 leaf sip-id-or-name {
655 uses service-interface-point;
660 rpc get-service-interface-point-list {
665 uses service-interface-point;
670 rpc update-service-interface-point {
673 leaf sip-id-or-name {
678 type administrative-state;