--- /dev/null
+module transportpce-pce {
+ namespace "http://org/opendaylight/transportpce/pce";
+ prefix org-opendaylight-transportpce-pce;
+
+ import transportpce-routing-constraints {
+ prefix transportpce-routing-constraints;
+ }
+ import org-openroadm-common-service-types {
+ prefix org-openroadm-common-service-types;
+ revision-date 2019-05-31;
+ }
+ import transportpce-common-service-path-types {
+ prefix transportpce-common-service-path-types;
+ }
+ import transportpce-pathDescription {
+ prefix transportpce-pathDescription;
+ }
+ import gnpy-path-computation-simplified {
+ prefix gnpypc;
+ }
+
+ organization
+ "transportPCE";
+ contact
+ "transportPCE committers - ODL";
+ description
+ "YANG definitions of B interface (transportPCE). Adapted from service definition (openroadm)
+ Copyright © 2017 Orange, Inc. and others. All rights reserved.
+
+ openroadm copyright:
+ Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
+ AT&T Intellectual Property. All other rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+ * Neither the Members of the Open ROADM MSA Agreement nor the names of its
+ contributors may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE";
+
+ revision 2021-07-01 {
+ description
+ "Version 1.8";
+ }
+ revision 2020-01-28 {
+ description
+ "Version 1.7";
+ }
+ revision 2019-06-24 {
+ description
+ "Version 1.6.1";
+ }
+ revision 2017-10-17 {
+ description
+ "Version 1.6";
+ }
+ revision 2017-04-26 {
+ description
+ "Version 1.5";
+ }
+
+ grouping stubpce-path-description {
+ leaf path-name {
+ type string;
+ mandatory true;
+ description
+ "Identifier for the pathDescription to be created in the ROADM
+ network, e.g., CLFI, CLCI, etc.";
+ }
+ uses transportpce-pathDescription:path-description;
+ }
+
+ grouping gnpy {
+ list gnpy-response {
+ key "path-dir";
+ config false;
+ description
+ "GNPy response";
+ leaf path-dir {
+ type string;
+ description
+ "A-to-Z or Z-to-A";
+ }
+ leaf feasibility {
+ type boolean;
+ description
+ "true : feasible path / False : non-feasible.";
+ }
+ choice response-type {
+ config false;
+ description
+ "response-type";
+ case no-path-case {
+ uses gnpypc:no-path-info;
+ }
+ case path-case {
+ description
+ "Path computation service.";
+ uses path-performance;
+ }
+ }
+ }
+ }
+
+ grouping path-performance {
+ 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 gnpypc:path-metric-type;
+ }
+ }
+ leaf accumulative-value {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ }
+ }
+ }
+ }
+
+ rpc path-computation-request {
+ input {
+ leaf service-name {
+ type string;
+ mandatory true;
+ description
+ "Identifier for the service to be created in the ROADM network,
+ e.g., CLFI, CLCI, etc. This is reported against the service, but
+ may not get reflected in the service in the network.";
+ }
+ leaf resource-reserve {
+ type boolean;
+ mandatory true;
+ description
+ "indicates if resources (from local PCE topology) must be reserved
+ until further notice (cancel-resource-reserve or topology update)";
+ }
+ uses transportpce-common-service-path-types:service-handler-header;
+ container service-a-end {
+ uses transportpce-common-service-path-types:service-endpoint-sp;
+ }
+ container service-z-end {
+ uses transportpce-common-service-path-types:service-endpoint-sp;
+ }
+ uses transportpce-routing-constraints:routing-constraints-sp;
+ uses org-openroadm-common-service-types:routing-metric;
+ }
+ output {
+ uses org-openroadm-common-service-types:configuration-response-common;
+ uses transportpce-common-service-path-types:response-parameters-sp;
+ uses gnpy;
+ }
+ }
+
+ rpc cancel-resource-reserve {
+ input {
+ leaf service-name {
+ type string;
+ mandatory true;
+ }
+ uses transportpce-common-service-path-types:service-handler-header;
+ }
+ output {
+ uses org-openroadm-common-service-types:configuration-response-common;
+ }
+ }
+
+ notification service-path-rpc-result {
+ description
+ "This Notification indicates result of service RPC";
+ leaf notification-type {
+ type transportpce-common-service-path-types:service-path-notification-types;
+ }
+ container path-description {
+ uses transportpce-pathDescription:path-description;
+ }
+ uses transportpce-common-service-path-types:rpc-response-status-ex;
+ uses org-openroadm-common-service-types:service-notification-result;
+ uses org-openroadm-common-service-types:routing-metric;
+ }
+
+ container path-description-list {
+ description
+ "List of pathDescription. Can only be created, deleted, modified,
+ etc. using special RPCs.";
+ list pathDescriptions {
+ key "path-name";
+ uses stubpce-path-description;
+ }
+ }
+
+ container spectrum-assignment {
+ description
+ "Spectrum assignment management using index steps and flexgrid property";
+ leaf begin-index {
+ type uint16;
+ mandatory true;
+ description
+ "Begin index of spectrum assignment";
+ }
+ leaf stop-index {
+ type uint16;
+ mandatory true;
+ description
+ "End index of spectrum assignment";
+ }
+ leaf flex-grid {
+ type boolean;
+ mandatory true;
+ description
+ "Set it to true for flexgrid, false otherwise";
+ }
+ }
+}