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-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 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 path-computation-context;
        description "Augments the base TAPI Context with PathComputationService information";
    }

    /*************************
    * definitions of refrences
    *************************/
    grouping path-ref {
        leaf path-id {
            type leafref {
                path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';
            }
            description "none";
        }
        description "none";
    }

    /***********************
    * package object-classes
    **********************/ 
        grouping path {
            list link {
                uses tapi-topology:link-ref;
                key 'topology-id link-id';
                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 {
            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 "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 {
            list path {
                uses path-ref;
                key 'path-id';
                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.";
            }
            list include-topology {
                uses tapi-topology:topology-ref;
                key 'topology-id';
                config false;
                description "none";
            }
            list avoid-topology {
                uses tapi-topology:topology-ref;
                key 'topology-id';
                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";
                }
            }
        }

}
