New API for GNPy
[transportpce.git] / api / src / main / yang / gnpy-path-computation-simplified@2020-09-09.yang
diff --git a/api/src/main/yang/gnpy-path-computation-simplified@2020-09-09.yang b/api/src/main/yang/gnpy-path-computation-simplified@2020-09-09.yang
deleted file mode 100644 (file)
index 0299fbe..0000000
+++ /dev/null
@@ -1,632 +0,0 @@
-module gnpy-path-computation-simplified {
-  yang-version 1;
-  namespace "gnpy:path";
-  prefix gnpypc;
-
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  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-09-09 {
-    description
-      "remove key from route-object-include-exclude";
-  }
-  revision 2020-02-02 {
-    description
-      "second draft with detailed blocking reasons";
-    reference
-      "YANG model for path computation with gnpy inputs";
-  }
-
-  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";
-  }
-
-  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 te-node-id {
-    type inet:ip-address;
-    description
-      "An identifier for a node in a topology.
-       The identifier is represented as 32-bit unsigned integer in
-       the dotted-quad notation.
-       This attribute is mapped to Router ID in
-       RFC3630, RFC5329, RFC5305, and RFC6119.";
-  }
-
-  typedef te-tp-id {
-    type union {
-      type uint32; // Unnumbered
-      type inet:ip-address; // IPv4 or IPv6 address
-    }
-    description
-      "An identifier for a TE link endpoint on a node.
-       This attribute is mapped to local or remote link identifier in
-       RFC3630 and RFC5305.";
-  }
-
-  typedef accumulated-metric-type {
-    type union {
-      type uint64;
-      type decimal64 {
-        fraction-digits 2;
-      }
-    }
-    description
-      "type useable for accumulative-value";
-  }
-
-  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 int32;
-      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 {
-      type decimal64 {
-        fraction-digits 1;
-      }
-      units "Hz";
-      mandatory true;
-      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 uint32;
-      description
-        "Nb of channel to take into account for the full load case.\n";
-    }
-    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;
-      }
-      units "bit/s";
-      mandatory true;
-      description
-        "Capacity required";
-    }
-  }
-
-  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
-              "hop output (input??) power";
-          }
-        }
-      }
-    }
-  }
-
-  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.";
-        }
-        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 {
-          description
-            "Numbered and Unnumbered link/node explicit route
-             subobject";
-          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";
-          }
-        }
-      }
-      case label {
-        description
-          "The Label ERO subobject";
-        container label-hop {
-          description
-            "Label hop type";
-          uses effective-freq-slot;
-        }
-      }
-      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 {
-      description
-        "A requested bandwidth to use for path computation";
-      uses gnpy-specific-parameters;
-    }
-  }
-
-  grouping end-points {
-    description
-      "Common grouping to define the TE tunnel end-points";
-    leaf source {
-      type inet:ip-address;
-      description
-        "TE tunnel source address.";
-    }
-    leaf destination {
-      type inet:ip-address;
-      description
-        "P2P tunnel destination address";
-    }
-    leaf src-tp-id {
-      type binary;
-      description
-        "TE tunnel source termination point identifier.";
-    }
-    leaf dst-tp-id {
-      type binary;
-      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 uint32;
-        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 uint32;
-          description
-            "This list reports the set of M path computation requests that must be synchronized.";
-        }
-      }
-    }
-  }
-
-  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";
-        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";
-        }
-      }
-      //      container path-route-objects {
-      //        description
-      //          "Container for the list of route objects either returned by
-      //           the computation engine or actually used by an LSP";
-      //        list path-route-object {
-      //          key index;
-      //          description
-      //            "List of route objects either returned by the computation
-      //             engine or actually used by an LSP";
-      //          uses explicit-route-hop;
-      //        }
-      //      }
-      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 {
-    description
-      "Path computation output information";
-    uses generic-path-properties;
-  }
-
-  // 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";
-      description
-        "if path computation cannot identify a path,
-         rpc returns no path.";
-      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;
-    }
-  }
-
-  /* TODO : correct the following with good trees:
-   *  te:tunnels-rpc/te:input/te:tunnel-info
-   *  te:tunnels-rpc/te:output/te:result
-   */
-
-  grouping service {
-    list path-request {
-      key "request-id";
-      description
-        "request-list";
-      leaf request-id {
-        type uint32;
-        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 uint32;
-        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 {
-          description
-            "Path computation service.";
-          uses path-info;
-        }
-      }
-    }
-  }
-
-  container result {
-    description
-      "Describe the service file to connect to gnpy";
-    uses result;
-  }
-}