TAPI 2.0.2-SNAPSHOT

- based on https://github.com/OpenNetworkingFoundation/TAPI/pull/302
           https://github.com/OpenNetworkingFoundation/TAPI/pull/303
  not official 2.0.2 release yet

Change-Id: Idf9dc67e77521e707cad67f5d8d609991cf8ce42
diff --git a/models/tapi/src/main/yang/tapi-virtual-network@2018-03-07.yang b/models/tapi/src/main/yang/tapi-virtual-network@2018-03-07.yang
new file mode 100644
index 0000000..3157955
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-virtual-network@2018-03-07.yang
@@ -0,0 +1,224 @@
+module tapi-virtual-network {

+    namespace "urn:onf:otcc:yang:tapi-virtual-network";

+    prefix tapi-virtual-network;

+    import tapi-topology {

+        prefix tapi-topology;

+    }

+    import tapi-common {

+        prefix tapi-common;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "

+        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+        Project List: <mailto:transport-api@opennetworking.org>

+        Editor: Karthik Sethuraman

+                <mailto:karthik.sethuraman@necam.com>";

+    description "

+        This module contains TAPI Virtual Network Model definitions.

+        Source: TapiVirtualNetwork.uml

+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

+        License: This module is distributed under the Apache License 2.0";

+    revision 2018-03-07 {

+        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 version .

+        <https://wiki.opennetworking.org/display/OIMT/IISOMI>

+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/change-log.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/develop/UML>";

+    }

+    augment "/tapi-common:context" {

+        uses virtual-network-context;

+        description "Augments the base TAPI Context with VirtualNetworkService information";

+    }

+    /***********************

+    * package object-classes

+    **********************/

+        grouping virtual-network-constraint {

+            container src-service-end-point {

+                uses tapi-common:service-interface-point-ref;

+                config false;

+                description "none";

+            }

+            leaf sink-service-end-point {

+                type leafref {

+                    path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';

+                }

+                config false;

+                description "none";

+            }

+            leaf-list diversity-exclusion {

+                type leafref {

+                    path '/tapi-common:context/tapi-virtual-network:virtual-nw-service/tapi-virtual-network:vnw-constraint/tapi-virtual-network:local-id';

+                }

+                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";

+            }

+            leaf schedule {

+                type string;

+                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:service-spec;

+            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 {

+            leaf service-interface-point {

+                type leafref {

+                    path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';

+                }

+                config false;

+                description "none";

+            }

+            leaf role {

+                type tapi-common:port-role;

+                config false;

+                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. ";

+            }

+            leaf direction {

+                type tapi-common:port-direction;

+                config false;

+                description "The orientation of defined flow at the EndPoint.";

+            }

+            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 interfaces

+    **********************/ 

+        rpc create-virtual-network-service {

+            description "none";

+            input {

+                list sep {

+                    min-elements 2;

+                    uses virtual-network-service-end-point;

+                    description "none";

+                }

+                container vnw-constraint {

+                    uses virtual-network-constraint;

+                    description "none";

+                }

+                leaf conn-schedule {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses virtual-network-service;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-virtual-network-service {

+            description "none";

+            input {

+                leaf service-id-or-name {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses virtual-network-service;

+                    description "none";

+                }

+            }

+        }

+        rpc get-virtual-network-service-details {

+            description "none";

+            input {

+                leaf service-id-or-name {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses virtual-network-service;

+                    description "none";

+                }

+            }

+        }

+        rpc get-virtual-network-service-list {

+            description "none";

+            output {

+                list service {

+                    uses virtual-network-service;

+                    description "none";

+                }

+            }

+        }

+

+}