ONOS-7506 update to TAPI 2.0.1

Change-Id: Ib47a4b93c536854cc0ee3c577307ac995ef24c4f
diff --git a/models/tapi/src/main/yang/tapi-path-computation@2018-02-16.yang b/models/tapi/src/main/yang/tapi-path-computation@2018-02-16.yang
new file mode 100644
index 0000000..9db5ab3
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-path-computation@2018-02-16.yang
@@ -0,0 +1,285 @@
+module tapi-path-computation {

+    namespace "urn:onf:otcc:yang:tapi-path-computation";

+    prefix tapi-path-computation;

+    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 Path Computation Model definitions.

+        Source: TapiPathComputation.uml

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

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

+    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 version .
+        <https://wiki.opennetworking.org/display/OIMT/IISOMI>
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/Snowmass-ONFOpenTransport/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/Snowmass-ONFOpenTransport/tree/develop/UML>";

+    }

+    augment "/tapi-common:context" {

+        uses path-computation-context;

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

+    }

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

+    * package object-classes

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

+        grouping path {

+            leaf-list link {

+                type leafref {

+                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';

+                }

+                config false;

+                min-elements 1;

+                description "none";

+            }

+            container routing-constraint {

+                config false;

+                uses routing-constraint;

+                description "none";

+            }

+            uses tapi-common:resource-spec;

+            description "Path is described by an ordered list of TE Links. A TE Link is defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by concatenating link resources (associated with a Link) and the lower-level connections (cross-connections) in the different nodes";

+        }

+        grouping path-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 path-computation-service {

+            leaf-list path {

+                type leafref {

+                    path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';

+                }

+                config false;

+                min-elements 1;

+                description "none";

+            }

+            list end-point {

+                key 'local-id';

+                min-elements 2;

+                max-elements 2;

+                uses path-service-end-point;

+                description "none";

+            }

+            container routing-constraint {

+                uses routing-constraint;

+                description "none";

+            }

+            container objective-function {

+                uses path-objective-function;

+                description "none";

+            }

+            container optimization-constraint {

+                uses path-optimization-constraint;

+                description "none";

+            }

+            uses tapi-common:service-spec;

+            description "none";

+        }

+        grouping path-objective-function {

+            leaf bandwidth-optimization {

+                type tapi-common:directive-value;

+                config false;

+                description "none";

+            }

+            leaf concurrent-paths {

+                type tapi-common:directive-value;

+                config false;

+                description "none";

+            }

+            leaf cost-optimization {

+                type tapi-common:directive-value;

+                config false;

+                description "none";

+            }

+            leaf link-utilization {

+                type tapi-common:directive-value;

+                config false;

+                description "none";

+            }

+            leaf resource-sharing {

+                type tapi-common:directive-value;

+                config false;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping path-optimization-constraint {

+            leaf traffic-interruption {

+                type tapi-common:directive-value;

+                config false;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping routing-constraint {

+            container requested-capacity {

+                config false;

+                uses tapi-common:capacity;

+                description "none";

+            }

+            leaf service-level {

+                type string;

+                config false;

+                description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";

+            }

+            leaf-list path-layer {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            list cost-characteristic {

+                key 'cost-name';

+                config false;

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

+                config false;

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

+            }

+            leaf-list include-topology {

+                type leafref {

+                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';

+                }

+                config false;

+                description "none";

+            }

+            leaf-list avoid-topology {

+                type leafref {

+                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';

+                }

+                config false;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping path-computation-context {

+            list path-comp-service {

+                key 'uuid';

+                uses path-computation-service;

+                description "none";

+            }

+            list path {

+                key 'uuid';

+                config false;

+                uses path;

+                description "none";

+            }

+            description "none";

+        }

+

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

+    * package interfaces

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

+        rpc compute-p-2-p-path {

+            description "none";

+            input {

+                list sep {

+                    min-elements 2;

+                    max-elements 2;

+                    uses path-service-end-point;

+                    description "none";

+                }

+                container routing-constraint {

+                    uses routing-constraint;

+                    description "none";

+                }

+                container objective-function {

+                    uses path-objective-function;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses path-computation-service;

+                    description "none";

+                }

+            }

+        }

+        rpc optimize-p-2-p-path {

+            description "none";

+            input {

+                leaf path-id-or-name {

+                    type string;

+                    description "none";

+                }

+                container routing-constraint {

+                    uses routing-constraint;

+                    description "none";

+                }

+                container optimization-constraint {

+                    uses path-optimization-constraint;

+                    description "none";

+                }

+                container objective-function {

+                    uses path-objective-function;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses path-computation-service;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-p-2-p-path {

+            description "none";

+            input {

+                leaf path-id-or-name {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses path-computation-service;

+                    description "none";

+                }

+            }

+        }

+

+}