module tapi-virtual-network { yang-version "1.1"; namespace "urn:onf:otcc:yang:tapi-virtual-network"; prefix tapi-virtual-network; import tapi-topology { prefix tapi-topology; revision-date 2022-11-21; } import tapi-common { prefix tapi-common; revision-date 2022-11-21; } import tapi-notification { prefix tapi-notification; revision-date 2022-11-21; } import tapi-streaming { prefix tapi-streaming; revision-date 2022-11-21; } organization "ONF OTCC (Open Transport Configuration & Control) Project"; contact " Project Web: Project List: Editor: Karthik Sethuraman Andrea Mazzini Arturo Mayoral Nigel Davis Ramon Casellas "; description " This module contains TAPI Virtual Network Model definitions. Source: TapiVirtualNetwork.uml - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK. - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool] and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines] - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts. As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts. - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases. The YANG model backward compatibility criteria are outlined in section 11 of . YANG models included in this release may not be backward compatible with previous TAPI releases. Copyright (c) 2022 Open Networking Foundation (ONF). All rights reserved. License: This module is distributed under the Apache License 2.0."; revision 2022-11-21 { description "ONF Transport API version 2.4.0 RC1. Changes included in this TAPI release (v2.4.0) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2021-09-24 { description "ONF Transport API version 2.3.1. Changes included in this TAPI release (v2.3.1) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2021-08-04 { description "ONF Transport API version 2.3. Changes included in this TAPI release (v2.3) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2021-05-24 { description "ONF Transport API version 2.3 RC1. Changes included in this TAPI release (v2.3) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2020-04-23 { description "ONF Transport API version 2.1.3. Changes included in this TAPI release (v2.1.3) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2019-07-16 { description "ONF Transport API version 2.1.2. Changes included in this TAPI release (v2.1.2) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2019-03-31 { description "ONF Transport API version 2.2-RC1. Changes included in this TAPI release (v2.2) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2018-12-10 { description "ONF Transport API version 2.1.1. Changes included in this TAPI release (v2.1.1) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2018-10-16 { description "ONF Transport API version 2.1.0. Changes included in this TAPI release (v2.1.0) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2018-03-07 { description "ONF Transport API version 2.0.2 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool. Changes in this revision: "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model "; } revision 2018-02-16 { description "ONF Transport API version 2.0.1 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool. Changes in this revision: "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model "; } revision 2018-01-02 { description "ONF Transport API version 2.0.0 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool. Changes in this revision: "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model "; } augment "/tapi-common:context" { container virtual-network-context { uses virtual-network-context; description "Augments the base TAPI Context with VirtualNetworkService model."; } description "Augments the base TAPI Context with VirtualNetworkService model."; } augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" { when 'derived-from-or-self(tapi-streaming:record-content, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE")'; container virtual-network-service { uses virtual-network-service; description "none"; } description "none"; } augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" { when 'derived-from-or-self(tapi-streaming:record-content, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE_END_POINT")'; container virtual-network-service-end-point { uses virtual-network-service-end-point; description "none"; } description "none"; } augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" { when 'derived-from-or-self(tapi-streaming:record-content, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_CONSTRAINT")'; container virtual-network-constraint { uses virtual-network-constraint; description "none"; } description "none"; } augment "/tapi-common:context/tapi-notification:notification-context/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE_END_POINT")'; container virtual-network-service-end-point { uses virtual-network-service-end-point; description "none"; } description "none"; } augment "/tapi-common:context/tapi-notification:notification-context/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_CONSTRAINT")'; container virtual-network-constraint { uses virtual-network-constraint; description "none"; } description "none"; } augment "/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE")'; container virtual-network-service { uses virtual-network-service; description "none"; } description "none"; } augment "/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE_END_POINT")'; container virtual-network-service-end-point { uses virtual-network-service-end-point; description "none"; } description "none"; } augment "/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_CONSTRAINT")'; container virtual-network-constraint { uses virtual-network-constraint; description "none"; } description "none"; } augment "/tapi-common:context/tapi-notification:notification-context/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE")'; container virtual-network-service { uses virtual-network-service; description "none"; } description "none"; } /************************** * definitions of references **************************/ grouping virtual-nw-service-ref { leaf virtual-nw-service-uuid { type leafref { path '/tapi-common:context/tapi-virtual-network:virtual-network-context/tapi-virtual-network:virtual-nw-service/tapi-virtual-network:uuid'; } description "none"; } description "none"; } /************************** * package object-classes **************************/ grouping virtual-network-constraint { container src-service-end-point { uses tapi-common:service-interface-point-ref; config false; description "none"; } container sink-service-end-point { uses tapi-common:service-interface-point-ref; config false; description "none"; } list diversity-exclusion { uses virtual-nw-service-ref; key 'virtual-nw-service-uuid'; config false; description "none"; } container requested-capacity { uses tapi-common:capacity; description "none"; } leaf service-level { type string; description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability"; } leaf-list service-layer { type tapi-common:layer-protocol-name; description "none"; } list cost-characteristic { key 'cost-name'; uses tapi-topology:cost-characteristic; description "The list of costs where each cost relates to some aspect of the TopologicalEntity."; } list latency-characteristic { key 'traffic-property-name'; uses tapi-topology:latency-characteristic; description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic."; } uses tapi-common:local-class; description "none"; } grouping virtual-network-service { container topology { uses tapi-topology:topology-ref; config false; description "none"; } list end-point { key 'local-id'; min-elements 2; uses virtual-network-service-end-point; description "none"; } list vnw-constraint { key 'local-id'; min-elements 1; uses virtual-network-constraint; description "none"; } container schedule { uses tapi-common:time-range; description "none"; } container state { uses tapi-common:admin-state-pac; description "none"; } leaf-list layer-protocol-name { type tapi-common:layer-protocol-name; min-elements 1; description "none"; } uses tapi-common:global-class; 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. At the lowest level of recursion, a FC represents a cross-connection within an NE."; } grouping virtual-network-service-end-point { container service-interface-point { uses tapi-common:service-interface-point-ref; config false; description "none"; } leaf role { type tapi-common:port-role; config false; description "The role of the (conceptual) port of the associated VirtualNetworkService."; } leaf direction { type tapi-common:direction; config false; description "The direction of the end point."; } leaf service-layer { type tapi-common:layer-protocol-name; config false; description "none"; } uses tapi-common:local-class; description "The association of the FC to LTPs is made via EndPoints. The EndPoint (EP) object class models the access to the FC function. The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances. In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point. The EP replaces the Protection Unit of a traditional protection model. The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component"; } grouping virtual-network-context { list virtual-nw-service { key 'uuid'; uses virtual-network-service; description "none"; } description "none"; } /************************** * package type-definitions **************************/ identity VIRTUAL_NETWORK_OBJECT_TYPE { base tapi-common:OBJECT_TYPE; description "none"; } identity VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE { base VIRTUAL_NETWORK_OBJECT_TYPE; description "none"; } identity VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_SERVICE_END_POINT { base VIRTUAL_NETWORK_OBJECT_TYPE; description "none"; } identity VIRTUAL_NETWORK_OBJECT_TYPE_VIRTUAL_NETWORK_CONSTRAINT { base VIRTUAL_NETWORK_OBJECT_TYPE; description "The VirtualNetworkConstraint class."; } typedef virtual-network-object-type { type identityref { base VIRTUAL_NETWORK_OBJECT_TYPE; } description "The list of TAPI Virtual Network Object types/classes."; } /************************** * package interfaces **************************/ rpc create-virtual-network-service { description "none"; input { leaf uuid { type tapi-common:uuid; 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. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. 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} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } list name { key 'value-name'; uses tapi-common:name-and-value; description "List of names. This value 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."; } list end-point { key 'local-id'; min-elements 2; uses virtual-network-service-end-point; description "none"; } container vnw-constraint { uses virtual-network-constraint; description "none"; } container schedule { uses tapi-common:time-range; description "none"; } } output { container service { uses virtual-network-service; description "none"; } } } rpc delete-virtual-network-service { description "none"; input { leaf uuid { type tapi-common:uuid; 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. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. 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} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } } output { container service { uses virtual-network-service; description "none"; } } } rpc get-virtual-network-service-details { description "none"; input { leaf uuid { type tapi-common:uuid; 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. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. 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} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } } output { container service { uses virtual-network-service; description "none"; } } } rpc get-virtual-network-service-list { description "none"; output { list service { key 'uuid'; uses virtual-network-service; description "none"; } } } }