blob: fa5745b2466736ed6f16d405d1e3f54468427fa6 [file] [log] [blame]
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';
}
}
}
/***********************
* 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 {
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 {
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";
}
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";
}
}
}
}