mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-11-02 02:57:52 +00:00
adding yang corresponding to the json inputs
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com> Change-Id: I75b0cc3c3ce84dc724e588f918bddf0a5a97225d
This commit is contained in:
53
gnpy/yang/gnpy-api@2020-10-22.yang
Normal file
53
gnpy/yang/gnpy-api@2020-10-22.yang
Normal file
@@ -0,0 +1,53 @@
|
||||
module gnpy-api {
|
||||
yang-version 1.1;
|
||||
namespace "gnpy:gnpy-api";
|
||||
prefix gnpyapi;
|
||||
|
||||
import gnpy-network-topology {
|
||||
prefix gnpynt;
|
||||
}
|
||||
import gnpy-path-computation-simplified {
|
||||
prefix gnpypc;
|
||||
}
|
||||
import gnpy-eqpt-config {
|
||||
prefix gnpyeqpt;
|
||||
}
|
||||
|
||||
organization
|
||||
"Telecom Infra Project OOPT PSE Working Group";
|
||||
contact
|
||||
"WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
|
||||
contact: <mailto:ahmed.triki@orange.com>
|
||||
contact: <mailto:esther.lerouzic@orange.com>
|
||||
";
|
||||
description
|
||||
"YANG model for gnpy api input for path computation - TransportPCE preversion";
|
||||
|
||||
revision 2020-10-22 {
|
||||
description
|
||||
"draft for experimental/2020-candi";
|
||||
reference
|
||||
"YANG model for api input for path computation with gnpy";
|
||||
}
|
||||
|
||||
container service {
|
||||
description
|
||||
"Describe the service file to connect to gnpy";
|
||||
uses gnpypc:service;
|
||||
}
|
||||
container result {
|
||||
uses gnpypc:result;
|
||||
description
|
||||
"Describe the response object to gnpy";
|
||||
}
|
||||
container topology {
|
||||
description
|
||||
"Describe the topology file to connect to gnpy";
|
||||
uses gnpynt:topo;
|
||||
}
|
||||
container equipment {
|
||||
description
|
||||
"Describe the equipment library to connect to gnpy";
|
||||
uses gnpyeqpt:eqpt;
|
||||
}
|
||||
}
|
||||
442
gnpy/yang/gnpy-eqpt-config@2020-10-22.yang
Normal file
442
gnpy/yang/gnpy-eqpt-config@2020-10-22.yang
Normal file
@@ -0,0 +1,442 @@
|
||||
module gnpy-eqpt-config {
|
||||
yang-version 1;
|
||||
namespace "gnpy:gnpy-eqpt-config";
|
||||
|
||||
prefix "gnpyeqpt";
|
||||
|
||||
organization
|
||||
"Telecom Infra Project OOPT PSE
|
||||
Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
|
||||
contact: <mailto:ahmed.triki@orange.com>
|
||||
contact: <mailto:esther.lerouzic@orange.com>
|
||||
";
|
||||
|
||||
description "Base YANG model for gnpy equipment library input for path computation - transportPCE preversion";
|
||||
|
||||
revision "2020-10-22" {
|
||||
description "draft for experimental/2020-candi";
|
||||
reference "Base YANG model for equipment library input for path computation with gnpy";
|
||||
}
|
||||
|
||||
/*
|
||||
* Identities
|
||||
|
||||
|
||||
identity edfa-type-def {
|
||||
description "base identity for variable gain and fixed gain";
|
||||
}
|
||||
|
||||
identity variable-gain{
|
||||
base edfa-type-def ;
|
||||
description "'variable_gain' is a simplified model simulating a 2-coil
|
||||
EDFA with internal, input and output VOAs. The NF vs gain response is calculated
|
||||
accordingly based on the input parameters: nf_min, nf_max, and gain_flatmax. It
|
||||
is not a simple interpolation but a 2-stage NF calculation.";
|
||||
}
|
||||
|
||||
identity fixed-gain{
|
||||
base edfa-type-def ;
|
||||
description "'fixed_gain' is a fixed gain model. NF == Cte == nf0 if gain_min < gain < gain_flatmax";
|
||||
}
|
||||
|
||||
identity fiber-variety {
|
||||
description "base identity for fiber variety";
|
||||
}
|
||||
|
||||
identity transceiver-variety {
|
||||
description "base identity for transceiver variety";
|
||||
}
|
||||
|
||||
*/
|
||||
grouping variable-gain {
|
||||
leaf nf_min {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB;
|
||||
}
|
||||
leaf nf_max {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB;
|
||||
}
|
||||
leaf out_voa_auto{
|
||||
type boolean ;
|
||||
description "auto_design feature to optimize the amplifier output VOA. If true, output VOA is present
|
||||
and will be used to push amplifier gain to its maximum, within EOL power margins.";
|
||||
}
|
||||
}
|
||||
|
||||
grouping fixed-gain{
|
||||
leaf nf0 {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB;
|
||||
}
|
||||
}
|
||||
|
||||
grouping no-type-def{
|
||||
leaf advanced_config_from_json {
|
||||
type string ;
|
||||
description " filename with json edfa";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
grouping openroadm{
|
||||
leaf-list nf_coef {
|
||||
type decimal64 {
|
||||
fraction-digits 5;
|
||||
}
|
||||
//default [8.1e-4,6.142e-2,1.558,19.97] ;
|
||||
}
|
||||
}
|
||||
|
||||
grouping dual-stage {
|
||||
leaf raman {
|
||||
type boolean;
|
||||
}
|
||||
leaf preamp_variety {
|
||||
type leafref {
|
||||
path "../../Edfa/type_variety";
|
||||
}
|
||||
}
|
||||
leaf booster_variety {
|
||||
type leafref {
|
||||
path "../../Edfa/type_variety";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping edfa-common {
|
||||
leaf allowed_for_design{
|
||||
type boolean ;
|
||||
description "If false, the amplifier will not be picked by auto-design but it can still be used as a
|
||||
manual input (from JSON or Excel template topology files.)";
|
||||
}
|
||||
leaf gain_flatmax {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB;
|
||||
}
|
||||
leaf gain_min {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB;
|
||||
}
|
||||
leaf p_max {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dBm;
|
||||
}
|
||||
leaf type_def {
|
||||
type identityref{
|
||||
base edfa-type-def ;
|
||||
}
|
||||
}
|
||||
choice type_of_model {
|
||||
case variable-gain {
|
||||
when "type_def = 'variable-gain'";
|
||||
uses variable-gain ;
|
||||
}
|
||||
case fixed-gain{
|
||||
when "type_def = 'fixed-gain'";
|
||||
uses fixed-gain;
|
||||
}
|
||||
case no-type-def{
|
||||
when "type_def = 'no-type-def'";
|
||||
uses no-type-def;
|
||||
}
|
||||
case openroadm{
|
||||
when "type_def = 'openroadm'";
|
||||
uses openroadm;
|
||||
}
|
||||
case dual_stage {
|
||||
when "type_def = 'dual_stage'";
|
||||
uses dual-stage ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping common-fiber {
|
||||
description "common parameters for fiber and raman fiber";
|
||||
leaf type_variety {
|
||||
type string ;
|
||||
}
|
||||
description "a unique name to ID the fiber in the JSON or Excel template topology input file";
|
||||
leaf dispersion{
|
||||
type decimal64 {
|
||||
fraction-digits 8;
|
||||
}
|
||||
units s.m-1.m-1;
|
||||
}
|
||||
leaf gamma{
|
||||
type decimal64 {
|
||||
fraction-digits 8;
|
||||
}
|
||||
units w-2.m-1 ;
|
||||
description "2pi.n2/(lambda*Aeff) (w-2.m-1)";
|
||||
}
|
||||
leaf pmd_coef{
|
||||
type decimal64 {
|
||||
fraction-digits 16;
|
||||
}
|
||||
units s.m-0.5;
|
||||
}
|
||||
}
|
||||
|
||||
grouping eqpt{
|
||||
list Edfa {
|
||||
key type_variety;
|
||||
leaf type_variety {
|
||||
type string;
|
||||
description "a unique name to ID the amplifier in the JSON/Excel template topology input file";
|
||||
}
|
||||
uses edfa-common;
|
||||
}
|
||||
|
||||
list Fiber {
|
||||
key type_variety;
|
||||
uses common-fiber;
|
||||
}
|
||||
|
||||
list RamanFiber {
|
||||
uses common-fiber;
|
||||
container raman_efficiency {
|
||||
leaf-list cr {
|
||||
type decimal64 {
|
||||
fraction-digits 8;
|
||||
}
|
||||
}
|
||||
leaf-list frequency_offset {
|
||||
type decimal64 {
|
||||
fraction-digits 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list Span {
|
||||
leaf power_mode {
|
||||
type boolean ;
|
||||
}
|
||||
leaf-list delta_power_range_db {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf max_length {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units km;
|
||||
default 150.0 ;
|
||||
}
|
||||
leaf max_loss {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB;
|
||||
}
|
||||
leaf max_fiber_lineic_loss_for_raman {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB.km-1;
|
||||
}
|
||||
leaf target_extended_gain {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB;
|
||||
}
|
||||
leaf length_units{
|
||||
type string ;
|
||||
default "km";
|
||||
}
|
||||
leaf padding{
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
default 10.0 ;
|
||||
}
|
||||
leaf EOL{
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
default 0.0 ;
|
||||
}
|
||||
leaf con_in{
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
default 0.0 ;
|
||||
}
|
||||
leaf con_out{
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
default 0.0 ;
|
||||
}
|
||||
}
|
||||
|
||||
list Roadm {
|
||||
leaf target_pch_out_db {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf add_drop_osnr {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf pmd {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
container restrictions {
|
||||
leaf-list preamp_variety_list {
|
||||
type string;
|
||||
}
|
||||
leaf-list booster_variety_list {
|
||||
type string;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list SI {
|
||||
leaf f_min {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf f_max {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf baud_rate {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf spacing {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf power_dbm {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf-list power_range_db {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf roll_off {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf tx_osnr {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
leaf sys_margins {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list Transceiver {
|
||||
leaf type_variety {
|
||||
type string ;
|
||||
description "a unique name to ID the transceiver in the JSON or Excel template topology input file";
|
||||
}
|
||||
container frequency {
|
||||
leaf min {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units Hz ;
|
||||
}
|
||||
leaf max {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units Hz ;
|
||||
}
|
||||
description "Min/max frequency of transponder eg 191.35e12 and 196.1e12";
|
||||
}
|
||||
list mode {
|
||||
leaf format {
|
||||
type string ;
|
||||
description "unique name of the mode";
|
||||
}
|
||||
leaf baud_rate {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units baud ;
|
||||
description "baud_rate";
|
||||
}
|
||||
leaf OSNR {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB ;
|
||||
description "min required OSNR in 0.1nm (dB)";
|
||||
}
|
||||
leaf tx_osnr {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units dB ;
|
||||
description "min required OSNR in 0.1nm (dB)";
|
||||
}
|
||||
leaf min_spacing {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units GHz ;
|
||||
description "...";
|
||||
}
|
||||
leaf bit_rate {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units bit/s ;
|
||||
description "bit rate";
|
||||
}
|
||||
leaf roll_off {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
description "...";
|
||||
}
|
||||
leaf cost {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
description "arbitrary unit";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
293
gnpy/yang/gnpy-network-topology@2020-10-22.yang
Normal file
293
gnpy/yang/gnpy-network-topology@2020-10-22.yang
Normal file
@@ -0,0 +1,293 @@
|
||||
module gnpy-network-topology {
|
||||
yang-version 1.1;
|
||||
namespace "gnpy:gnpy-network-topology";
|
||||
prefix gnpynt;
|
||||
|
||||
organization
|
||||
"Telecom Infra Project OOPT PSE Working Group";
|
||||
contact
|
||||
"WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
|
||||
contact: <mailto:ahmed.triki@orange.com>
|
||||
contact: <mailto:esther.lerouzic@orange.com>
|
||||
";
|
||||
description
|
||||
"YANG model for gnpy network input for path computation - transportPCE preversion";
|
||||
|
||||
revision 2020-10-22 {
|
||||
description
|
||||
"draft for experimental/2020-candi";
|
||||
reference
|
||||
"YANG model for network input for path computation with gnpy";
|
||||
}
|
||||
|
||||
identity type-element {
|
||||
description
|
||||
"Base identity for element type";
|
||||
}
|
||||
|
||||
identity Transceiver {
|
||||
base type-element;
|
||||
description
|
||||
" Transceiver element";
|
||||
}
|
||||
|
||||
identity Fiber {
|
||||
base type-element;
|
||||
description
|
||||
"Fiber element";
|
||||
}
|
||||
|
||||
identity Roadm {
|
||||
base type-element;
|
||||
description
|
||||
"Roadm element";
|
||||
}
|
||||
|
||||
identity Edfa {
|
||||
base type-element;
|
||||
description
|
||||
"Edfa element";
|
||||
}
|
||||
|
||||
identity Fused {
|
||||
base type-element;
|
||||
description
|
||||
"Fused element";
|
||||
}
|
||||
|
||||
identity length-unit {
|
||||
description
|
||||
"length unit";
|
||||
}
|
||||
|
||||
identity km {
|
||||
base length-unit;
|
||||
description
|
||||
"kilometers";
|
||||
}
|
||||
|
||||
identity m {
|
||||
base length-unit;
|
||||
description
|
||||
"meter";
|
||||
}
|
||||
|
||||
typedef Coordinate {
|
||||
type decimal64 {
|
||||
fraction-digits 6;
|
||||
}
|
||||
}
|
||||
|
||||
typedef Coef {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
|
||||
grouping location-attributes {
|
||||
container location {
|
||||
leaf city {
|
||||
type string;
|
||||
mandatory true;
|
||||
}
|
||||
leaf region {
|
||||
type string;
|
||||
mandatory true;
|
||||
}
|
||||
leaf latitude {
|
||||
type Coordinate;
|
||||
mandatory true;
|
||||
}
|
||||
leaf longitude {
|
||||
type Coordinate;
|
||||
mandatory true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping fiber-params {
|
||||
description
|
||||
".....";
|
||||
leaf length {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
mandatory true;
|
||||
}
|
||||
leaf loss_coef {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
mandatory true;
|
||||
}
|
||||
leaf length_units {
|
||||
type identityref {
|
||||
base length-unit;
|
||||
}
|
||||
mandatory true;
|
||||
}
|
||||
leaf att_in {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
mandatory true;
|
||||
}
|
||||
leaf con_in {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
mandatory true;
|
||||
}
|
||||
leaf con_out {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
mandatory true;
|
||||
}
|
||||
}
|
||||
|
||||
grouping edfa-params {
|
||||
container operational {
|
||||
description
|
||||
"Operational values for the Edfa ";
|
||||
leaf gain_target {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units "dB";
|
||||
mandatory true;
|
||||
description
|
||||
"..";
|
||||
}
|
||||
leaf tilt_target {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
mandatory true;
|
||||
description
|
||||
"..";
|
||||
}
|
||||
leaf out_voa {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units "dB";
|
||||
mandatory true;
|
||||
description
|
||||
"..";
|
||||
}
|
||||
leaf delta_p {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units "dB";
|
||||
mandatory true;
|
||||
description
|
||||
"..";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping roadm-params {
|
||||
leaf target_pch_out_db {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units "dB";
|
||||
description
|
||||
"..";
|
||||
}
|
||||
container restrictions {
|
||||
leaf-list preamp_variety_list {
|
||||
type string;
|
||||
description
|
||||
"List of authorized preamp type-variety";
|
||||
}
|
||||
leaf-list booster_variety_list {
|
||||
type string;
|
||||
description
|
||||
"List of authorized booster type-variety";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping transceiver-params;
|
||||
|
||||
grouping fused-params{
|
||||
leaf loss {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units "dB";
|
||||
description
|
||||
"Concentrated loss of the fused element";
|
||||
}
|
||||
}
|
||||
|
||||
grouping element-type-choice {
|
||||
choice element-type {
|
||||
case Edfa {
|
||||
when "type = 'Edfa'";
|
||||
uses edfa-params;
|
||||
}
|
||||
case FiberRoadm {
|
||||
container params {
|
||||
choice fiberroadmfused {
|
||||
case Fiber {
|
||||
when "type = 'Fiber'";
|
||||
uses fiber-params;
|
||||
}
|
||||
case Roadm {
|
||||
when "type = 'Roadm'";
|
||||
uses roadm-params;
|
||||
}
|
||||
case Fused {
|
||||
when "type = 'Fused'";
|
||||
uses fused-params;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
case Transceiver {
|
||||
when "type = 'Transceiver'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
grouping topo {
|
||||
list elements {
|
||||
key "uid";
|
||||
leaf uid {
|
||||
type string;
|
||||
}
|
||||
leaf type {
|
||||
type identityref {
|
||||
base type-element;
|
||||
}
|
||||
mandatory true;
|
||||
}
|
||||
leaf type_variety {
|
||||
type string;
|
||||
mandatory false;
|
||||
}
|
||||
container metadata {
|
||||
uses location-attributes;
|
||||
}
|
||||
uses element-type-choice;
|
||||
}
|
||||
list connections {
|
||||
config false;
|
||||
leaf from_node {
|
||||
type leafref {
|
||||
path "../../elements/uid";
|
||||
}
|
||||
}
|
||||
leaf to_node {
|
||||
type leafref {
|
||||
path "../../elements/uid";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
559
gnpy/yang/gnpy-path-computation-simplified@2020-10-22.yang
Normal file
559
gnpy/yang/gnpy-path-computation-simplified@2020-10-22.yang
Normal file
@@ -0,0 +1,559 @@
|
||||
module gnpy-path-computation-simplified {
|
||||
yang-version 1.1;
|
||||
namespace "gnpy:path";
|
||||
|
||||
prefix "gnpypc";
|
||||
|
||||
organization
|
||||
"Telecom Infra Project OOPT PSE Working Group";
|
||||
|
||||
contact
|
||||
"WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
|
||||
contact: <mailto:ahmed.triki@orange.com>
|
||||
contact: <mailto:esther.lerouzic@orange.com>
|
||||
";
|
||||
|
||||
description "YANG model for gnpy path computation simplified for transportPCE";
|
||||
|
||||
revision "2020-10-22" {
|
||||
description
|
||||
"draft for experimental/2020-candi";
|
||||
reference
|
||||
"YANG model for path computation with gnpy inputs";
|
||||
}
|
||||
|
||||
grouping effective-freq-slot{
|
||||
/* content copied from ietf-flexi-grid-media-channel, because only M and N are needed
|
||||
from the initial grouping.
|
||||
*/
|
||||
description "The effective frequency slot is an attribute
|
||||
of a media channel and, being a frequency slot, it is
|
||||
described by its nominal central frequency and slot
|
||||
width";
|
||||
reference "rfc7698";
|
||||
leaf N {
|
||||
type uint32;
|
||||
description
|
||||
"Is used to determine the Nominal Central
|
||||
Frequency. The set of nominal central frequencies
|
||||
can be built using the following expression:
|
||||
f = 193.1 THz + n x 0.00625 THz,
|
||||
where 193.1 THz is ITU-T ''anchor frequency'' for
|
||||
transmission over the C band, n is a positive or
|
||||
negative integer including 0.";
|
||||
reference "rfc7698";
|
||||
}
|
||||
leaf M {
|
||||
type int32;
|
||||
description
|
||||
"Is used to determine the slot width. A slot width
|
||||
is constrained to be M x SWG (that is, M x 12.5 GHz),
|
||||
where M is an integer greater than or equal to 1.";
|
||||
reference "rfc7698";
|
||||
}
|
||||
}
|
||||
|
||||
grouping gnpy-specific-parameters{
|
||||
description
|
||||
"This grouping defines the gnpy specific parameters for requests.";
|
||||
leaf technology {
|
||||
type string;
|
||||
default "flexi-grid";
|
||||
description
|
||||
"Data plane technology type.";
|
||||
}
|
||||
leaf trx_type {
|
||||
type string ;
|
||||
mandatory true;
|
||||
description "name of the transponder type (to be read from equipment library";
|
||||
|
||||
}
|
||||
leaf trx_mode {
|
||||
type string;
|
||||
description "name of the transponder mode (to be read from equipment library";
|
||||
|
||||
}
|
||||
list effective-freq-slot {
|
||||
key "N";
|
||||
uses effective-freq-slot ;
|
||||
}
|
||||
leaf spacing {
|
||||
mandatory true;
|
||||
type decimal64 {
|
||||
fraction-digits 1;
|
||||
}
|
||||
units Hz;
|
||||
description
|
||||
"It is the spacing between channels assuming full load with
|
||||
same channels as the requested one. multiple of 12.5 GHz";
|
||||
|
||||
}
|
||||
leaf max-nb-of-channel{
|
||||
type int32;
|
||||
description "Nb of channel to take into account for the full load case.
|
||||
";
|
||||
|
||||
}
|
||||
leaf output-power{
|
||||
type decimal64 {
|
||||
fraction-digits 5;
|
||||
}
|
||||
units W;
|
||||
description "optical power setting to be used for the propagation";
|
||||
|
||||
}
|
||||
leaf path_bandwidth{
|
||||
type decimal64 {
|
||||
fraction-digits 5;
|
||||
}
|
||||
mandatory true;
|
||||
units bit/s;
|
||||
description "Capacity required";
|
||||
}
|
||||
}
|
||||
|
||||
identity SNR-bandwidth {
|
||||
base path-metric-type;
|
||||
description
|
||||
"A metric that records SNR in signal bandwidth";
|
||||
}
|
||||
|
||||
identity OSNR-bandwidth {
|
||||
base path-metric-type;
|
||||
description
|
||||
"A metric that records OSNR in signal bandwidth";
|
||||
}
|
||||
|
||||
identity SNR-0.1nm {
|
||||
base path-metric-type;
|
||||
description
|
||||
"A metric that records SNR in 0.1nm";
|
||||
}
|
||||
|
||||
identity OSNR-0.1nm {
|
||||
base path-metric-type;
|
||||
description
|
||||
"A metric that records OSNR in 0.1nm";
|
||||
}
|
||||
|
||||
identity reference_power {
|
||||
base path-metric-type;
|
||||
description
|
||||
"to be revised";
|
||||
}
|
||||
|
||||
identity path_bandwidth {
|
||||
base path-metric-type;
|
||||
description
|
||||
"to be revised";
|
||||
}
|
||||
|
||||
grouping transponder{
|
||||
leaf transponder-type {
|
||||
type string ;
|
||||
description
|
||||
"transponder type.";
|
||||
}
|
||||
leaf transponder-mode {
|
||||
type string ;
|
||||
description
|
||||
"transponder mode.";
|
||||
}
|
||||
}
|
||||
|
||||
grouping hop-attribute{
|
||||
description
|
||||
"This grouping defines the hop attribute parameters for request or response";
|
||||
choice hop-type{
|
||||
case tsp {
|
||||
container transponder{
|
||||
uses transponder ;
|
||||
}
|
||||
}
|
||||
case regen {
|
||||
container regenerator{
|
||||
leaf regenerator-id{
|
||||
type string ;
|
||||
}
|
||||
uses transponder ;
|
||||
}
|
||||
}
|
||||
case pow {
|
||||
container optical-power{
|
||||
leaf optical-power{
|
||||
type decimal64 {
|
||||
fraction-digits 5;
|
||||
}
|
||||
units W;
|
||||
description "not used yet. hop output (input??) power";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
identity path-metric-type {
|
||||
description
|
||||
"Base identity for path metric type";
|
||||
}
|
||||
|
||||
identity route-usage-type {
|
||||
description
|
||||
"Base identity for route usage";
|
||||
}
|
||||
|
||||
identity route-include-ero {
|
||||
base route-usage-type;
|
||||
description
|
||||
"Include ERO from route";
|
||||
}
|
||||
|
||||
identity route-exclude-ero {
|
||||
base route-usage-type;
|
||||
description
|
||||
"Exclude ERO from route";
|
||||
}
|
||||
|
||||
identity route-exclude-srlg {
|
||||
base route-usage-type;
|
||||
description
|
||||
"Exclude SRLG from route";
|
||||
}
|
||||
|
||||
typedef te-hop-type {
|
||||
type enumeration {
|
||||
enum LOOSE {
|
||||
description
|
||||
"loose hop in an explicit path";
|
||||
}
|
||||
enum STRICT {
|
||||
description
|
||||
"strict hop in an explicit path";
|
||||
}
|
||||
}
|
||||
description
|
||||
"enumerated type for specifying loose or strict
|
||||
paths";
|
||||
reference "RFC3209: section-4.3.2";
|
||||
}
|
||||
|
||||
typedef te-path-disjointness {
|
||||
type bits {
|
||||
bit node {
|
||||
position 0;
|
||||
description "Node disjoint.";
|
||||
}
|
||||
bit link {
|
||||
position 1;
|
||||
description "Link disjoint.";
|
||||
}
|
||||
bit srlg {
|
||||
position 2;
|
||||
description "SRLG (Shared Risk Link Group) disjoint.";
|
||||
}
|
||||
}
|
||||
description
|
||||
"Type of the resource disjointness for a TE tunnel path.";
|
||||
reference
|
||||
"RFC4872: RSVP-TE Extensions in Support of End-to-End
|
||||
Generalized Multi-Protocol Label Switching (GMPLS)
|
||||
Recovery";
|
||||
} // te-path-disjointness
|
||||
|
||||
typedef accumulated-metric-type {
|
||||
type union {
|
||||
type uint64;
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
}
|
||||
description
|
||||
"type useable for accumulative-value";
|
||||
}
|
||||
|
||||
grouping path-route-objects {
|
||||
description
|
||||
"List of EROs to be included or excluded when performing
|
||||
the path computation.";
|
||||
container explicit-route-objects {
|
||||
description
|
||||
"Container for the route object list";
|
||||
list route-object-include-exclude {
|
||||
description
|
||||
"List of explicit route objects to include or
|
||||
exclude in path computation";
|
||||
leaf explicit-route-usage {
|
||||
type identityref {
|
||||
base route-usage-type;
|
||||
}
|
||||
description "Explicit-route usage.";
|
||||
}
|
||||
key "index";
|
||||
uses explicit-route-hop ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping generic-path-disjointness {
|
||||
description "Path disjointness grouping";
|
||||
leaf disjointness {
|
||||
type te-path-disjointness;
|
||||
description
|
||||
"The type of resource disjointness.
|
||||
Under primary path, disjointness level applies to
|
||||
all secondary LSPs. Under secondary, disjointness
|
||||
level overrides the one under primary";
|
||||
}
|
||||
}
|
||||
|
||||
grouping common-path-constraints-attributes {
|
||||
description
|
||||
"Common path constraints configuration grouping";
|
||||
uses common-constraints_config;
|
||||
}
|
||||
|
||||
grouping generic-path-constraints {
|
||||
description
|
||||
"Global named path constraints configuration
|
||||
grouping";
|
||||
container path-constraints {
|
||||
description "TE named path constraints container";
|
||||
uses common-path-constraints-attributes;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
grouping explicit-route-hop {
|
||||
description
|
||||
"The explicit route subobject grouping";
|
||||
leaf index {
|
||||
type uint32;
|
||||
description "ERO subobject index";
|
||||
}
|
||||
choice type {
|
||||
description
|
||||
"The explicit route subobject type";
|
||||
case num-unnum-hop {
|
||||
container num-unnum-hop {
|
||||
leaf node-id {
|
||||
//type te-node-id;
|
||||
type string;
|
||||
description
|
||||
"The identifier of a node in the TE topology.";
|
||||
}
|
||||
leaf link-tp-id {
|
||||
//type te-tp-id;
|
||||
type string;
|
||||
description
|
||||
"TE link termination point identifier. The combination
|
||||
of TE link ID and the TE node ID is used to identify an
|
||||
unnumbered TE link.";
|
||||
}
|
||||
leaf hop-type {
|
||||
type te-hop-type;
|
||||
description "strict or loose hop";
|
||||
}
|
||||
description
|
||||
"Numbered and Unnumbered link/node explicit route
|
||||
subobject";
|
||||
}
|
||||
}
|
||||
case label {
|
||||
container label-hop {
|
||||
description "Label hop type";
|
||||
uses effective-freq-slot;
|
||||
}
|
||||
description
|
||||
"The Label ERO subobject";
|
||||
}
|
||||
case hop-attribute{
|
||||
uses gnpypc:hop-attribute ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping common-constraints_config {
|
||||
description
|
||||
"Common constraints grouping that can be set on
|
||||
a constraint set or directly on the tunnel";
|
||||
|
||||
container te-bandwidth {
|
||||
uses gnpy-specific-parameters ;
|
||||
description
|
||||
"A requested bandwidth to use for path computation";
|
||||
}
|
||||
}
|
||||
|
||||
grouping end-points {
|
||||
description
|
||||
"Common grouping to define the TE tunnel end-points";
|
||||
|
||||
leaf source {
|
||||
type string;
|
||||
description "TE tunnel source address.";
|
||||
}
|
||||
leaf destination {
|
||||
type string;
|
||||
description "P2P tunnel destination address";
|
||||
}
|
||||
leaf src-tp-id {
|
||||
type string;
|
||||
description "TE tunnel source termination point identifier.";
|
||||
}
|
||||
leaf dst-tp-id {
|
||||
type string;
|
||||
description "TE tunnel destination termination point
|
||||
identifier.";
|
||||
}
|
||||
}
|
||||
|
||||
grouping synchronization-info {
|
||||
description "Information for sync";
|
||||
list synchronization {
|
||||
key "synchronization-id";
|
||||
description "sync list";
|
||||
leaf synchronization-id {
|
||||
type string;
|
||||
description "index";
|
||||
}
|
||||
container svec {
|
||||
description
|
||||
"Synchronization VECtor";
|
||||
leaf relaxable {
|
||||
type boolean;
|
||||
default true;
|
||||
description
|
||||
"If this leaf is true, path computation process is free
|
||||
to ignore svec content.
|
||||
otherwise it must take into account this svec.";
|
||||
}
|
||||
uses generic-path-disjointness;
|
||||
leaf-list request-id-number {
|
||||
type string;
|
||||
description "This list reports the set of M path computation requests that must be synchronized.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping path-metric {
|
||||
description "TE path metric type";
|
||||
leaf metric-type {
|
||||
type identityref {
|
||||
base path-metric-type;
|
||||
}
|
||||
description "TE path metric type";
|
||||
}
|
||||
leaf accumulative-value {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
description "TE path metric accumulative value";
|
||||
}
|
||||
}
|
||||
grouping generic-path-properties {
|
||||
description "TE generic path properties grouping";
|
||||
container path-properties {
|
||||
config false;
|
||||
description "The TE path properties";
|
||||
list path-metric {
|
||||
key metric-type;
|
||||
uses path-metric;
|
||||
}
|
||||
list z-a-path-metric {
|
||||
key metric-type;
|
||||
uses path-metric;
|
||||
}
|
||||
list path-route-objects {
|
||||
description
|
||||
"Container for the list of route objects either returned by
|
||||
the computation engine or actually used by an LSP";
|
||||
container path-route-object {
|
||||
description
|
||||
"List of route objects either returned by the computation
|
||||
engine or actually used by an LSP";
|
||||
uses explicit-route-hop;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grouping path-info {
|
||||
uses generic-path-properties;
|
||||
description "Path computation output information";
|
||||
}
|
||||
|
||||
// adding some blocking reasons and info on path in case of blocking
|
||||
|
||||
grouping no-path-info {
|
||||
description "no-path-info";
|
||||
container no-path {
|
||||
presence "Response without path information, due to failure
|
||||
performing the path computation";
|
||||
leaf no-path {
|
||||
type string;
|
||||
mandatory true ;
|
||||
description
|
||||
"returned blocking reasons:
|
||||
NO_PATH
|
||||
NO_COMPUTED_SNR
|
||||
NO_FEASIBLE_BAUDRATE_WITH_SPACING
|
||||
NO_PATH_WITH_CONSTRAINT
|
||||
NO_FEASIBLE_MODE
|
||||
MODE_NOT_FEASIBLE
|
||||
NO_SPECTRUM
|
||||
";
|
||||
}
|
||||
uses generic-path-properties ;
|
||||
description "if path computation cannot identify a path,
|
||||
rpc returns no path.";
|
||||
}
|
||||
}
|
||||
|
||||
grouping service {
|
||||
list path-request {
|
||||
key "request-id";
|
||||
description "request-list";
|
||||
leaf request-id {
|
||||
type string;
|
||||
mandatory true;
|
||||
description "Each path computation request is uniquely identified by the request-id-number.";
|
||||
}
|
||||
leaf bidirectional {
|
||||
type boolean;
|
||||
mandatory true;
|
||||
description "Specify the bidirectionality of the path";
|
||||
}
|
||||
|
||||
uses end-points;
|
||||
uses path-route-objects;
|
||||
uses generic-path-constraints;
|
||||
}
|
||||
uses synchronization-info;
|
||||
}
|
||||
|
||||
grouping result {
|
||||
list response {
|
||||
key response-id;
|
||||
config false;
|
||||
description "response";
|
||||
leaf response-id {
|
||||
type string;
|
||||
description
|
||||
"The list key that has to reuse request-id-number.";
|
||||
}
|
||||
choice response-type {
|
||||
config false;
|
||||
description "response-type";
|
||||
case no-path-case {
|
||||
uses no-path-info;
|
||||
}
|
||||
case path-case {
|
||||
uses path-info;
|
||||
description "Path computation service.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user