blob: cf6266958b68a5f5e5e10fad30401b2bef8ee4e0 [file] [log] [blame]
module tapi-path-computation {
namespace "urn:onf:params:xml:ns:yang:tapi-path-computation";
prefix tapi-path-computation;
import tapi-topology {
prefix tapi-topology;
}
import tapi-common {
prefix tapi-common;
}
organization "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
contact "
WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
description "none";
revision 2017-05-31 {
description "TAPI SDK 2.0-alpha";
reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
}
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";
}
}
}
}