module org-openroadm-service { yang-version 1.1; namespace "http://org/openroadm/service"; prefix org-openroadm-service; import ietf-yang-types { prefix yang; revision-date 2013-07-15; } import org-openroadm-routing-constraints { prefix org-openroadm-routing-constraints; revision-date 2022-12-09; } import org-openroadm-common-types { prefix org-openroadm-common-types; revision-date 2023-05-26; } import org-openroadm-resource-types { prefix org-openroadm-resource-types; revision-date 2022-03-25; } import org-openroadm-resource { prefix org-openroadm-resource; revision-date 2023-05-26; } import org-openroadm-common-service-types { prefix org-openroadm-common-service-types; revision-date 2023-05-26; } import org-openroadm-controller-customization { prefix org-openroadm-controller-customization; revision-date 2023-05-26; } import org-openroadm-topology { prefix org-openroadm-topology; revision-date 2023-05-26; } import org-openroadm-operational-mode-catalog { prefix org-openroadm-operational-mode-catalog; revision-date 2023-05-26; } import org-openroadm-common-optical-channel-types { prefix org-openroadm-common-optical-channel-types; revision-date 2023-05-26; } import org-openroadm-common-link-types { prefix org-openroadm-common-link-types; revision-date 2019-11-29; } organization "Open ROADM MSA"; contact "OpenROADM.org"; description "YANG definitions of services. Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016, 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 2023-05-26 { description "Version 13.1"; } revision 2023-03-31 { description "Version 13.0"; } revision 2022-12-09 { description "Version 12.1"; } revision 2022-09-30 { description "Version 12.0"; } revision 2022-05-27 { description "Version 11.1"; } revision 2022-03-25 { description "Version 11.0"; } revision 2021-12-10 { description "Version 10.1"; } revision 2021-09-24 { description "Version 10.0"; } revision 2021-05-28 { description "Version 9.1"; } revision 2021-03-26 { description "Version 9.0"; } revision 2020-12-11 { description "Version 8.1"; } revision 2020-09-25 { description "Version 8.0"; } revision 2020-05-29 { description "Version 7.1.0"; } revision 2020-03-27 { description "Version 7.0.0"; } revision 2019-11-29 { description "Version 6.1.0"; } revision 2019-09-27 { description "Version 6.0.0"; } revision 2019-05-31 { description "Version 5.1.0"; } revision 2019-03-29 { description "Version 5.0.0"; } revision 2018-11-30 { description "Version 4.1.0"; } revision 2018-09-28 { description "Version 4.0.0"; } revision 2018-05-30 { description "Version 3.1.0"; } revision 2018-03-30 { description "Version 3.0.0"; } revision 2017-12-15 { description "Version 2.2"; } revision 2017-09-29 { description "Version 2.1"; } revision 2017-07-28 { description "Version 2.0.1 - added revision-date to imports"; } revision 2017-06-26 { description "Version 2.0"; } revision 2016-10-14 { description "Version 1.2"; } grouping proposed-equipment-g { leaf propose-equipment { type enumeration { enum never { value 1; } enum ifNeeded { value 2; } enum always { value 3; } } default "ifNeeded"; description "Whether or not this request can propose new equipment that could be used to fulfill this request. If never, the request will just use existing deployed and planned equipment. If ifNeeded, routes using existing equipment will be preferred. If always, a route with proposed equipment shall be returned, if possible"; } } grouping service-feasibility-check-inputs { leaf connection-type { type org-openroadm-common-service-types:connection-type; } uses org-openroadm-common-service-types:resource-status; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; uses proposed-equipment-g; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; container requesting-interface-properties { when "../../connection-type = 'optical-tunnel'" { description "an optical-tunnel service creation request triggers a container that includes the description of the characteristics of the external optical transceiver handled by a 3rd party controller"; } uses org-openroadm-common-service-types:external-interface-characteristics; } } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; container requesting-interface-properties { when "../../connection-type = 'optical-tunnel'" { description "an optical-tunnel service creation request triggers a container that includes the description of the characteristics of the external optical transceiver handled by a 3rd party controller"; } uses org-openroadm-common-service-types:external-interface-characteristics; } } uses org-openroadm-routing-constraints:routing-constraints; uses org-openroadm-common-service-types:service-information; uses org-openroadm-common-service-types:max-regeneration-options; uses org-openroadm-common-service-types:existing-service-grouping { refine "existing-service-attributes/reusable-existing-resources" { default "all"; } } } grouping service-feasibility-check-outputs { leaf connection-type { type org-openroadm-common-service-types:connection-type; } uses org-openroadm-common-service-types:resource-status; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; uses proposed-equipment-g; uses org-openroadm-common-service-types:service-information; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; list equipment-required { key "equipment-identifier"; description "List of required equipment, including equipment type, state and quantity"; uses org-openroadm-common-service-types:equipment-info; } container expected-settings-and-performances { when "(../../connection-type = 'optical-tunnel' or ../../connection-type = 'infrastructure')" { description "Performances and settings are provided for wavelength services whether they are based on end to end services or optical-tunnels"; } uses org-openroadm-resource:common-och-otsi-attributes; uses org-openroadm-resource:path-computation-outputs; } } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; list equipment-required { key "equipment-identifier"; description "List of required equipment, including equipment type, state and quantity"; uses org-openroadm-common-service-types:equipment-info; } container expected-settings-and-performances { when "(../../connection-type = 'optical-tunnel' or ../../connection-type = 'infrastructure')" { description "Performances and settings are provided for wavelength services whether they are based on end to end services or optical-tunnels"; } uses org-openroadm-resource:common-och-otsi-attributes; uses org-openroadm-resource:path-computation-outputs; } } uses org-openroadm-common-service-types:intermediate-site-container; container requested-service-topology { description "This corresponds to the topology of the service requested. Includes all the containers: topology, backup topology, network topology, and network backup-topology"; container topology { description "topology corresponds to working-path which is the default path. It defines the initial path to which services defined as revertive may revert to when the failure condition disappear"; uses org-openroadm-topology:topology; } container backup-topology { list backup-path { key "backup-path-id"; leaf backup-path-id { type uint8 { range "1..255"; } description "Several backup paths may be used when backup-paths are pre-calculated. Backup-path-id avoids 0 which is associated with working path in current-active-path"; } leaf failure-case-id { type string; description "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)"; } uses org-openroadm-topology:topology; } } container network-topology { uses org-openroadm-topology:network-topology; } container network-backup-topology { list backup-path { key "backup-path-id"; leaf backup-path-id { type uint8 { range "1..255"; } description "Several backup paths may be used when backup-paths are pre-calculated. Backup-path-id avoids 0 which is associated with working path in current-active-path"; } leaf failure-case-id { type string; description "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)"; } uses org-openroadm-topology:network-topology; } } } list supporting-service-hierarchy { key "service-identifier"; description "This lists all the supporting services and their respective hierarchy, includes the proposed one"; uses org-openroadm-common-service-types:service-hierarchy; } uses service-path-metrics; uses org-openroadm-common-service-types:max-regeneration-options; uses org-openroadm-common-service-types:regeneration-option-list; uses org-openroadm-common-service-types:existing-service-grouping { refine "existing-service-attributes/reusable-existing-resources" { default "all"; } } } grouping service-path-metrics { container primary-path-metrics { description "These service metrics are associated with primary service path"; uses service-metrics; } list backup-path-metrics { key "backup-path-id"; description "These service metrics are associated with the backup service path"; leaf backup-path-id { type uint8 { range "1..255"; } description "Unique identifier for the backup service path"; } uses service-metrics; } } grouping service-metrics { container service-metrics { description "All the metrics associated with end-to-end service feasibility This container will have all the metrics that have'max' contraint in org-openroadm-routing-constraints"; leaf latency { type decimal64 { fraction-digits 3; } units "milliseconds"; description "Provides one-way end-to-end latency (in milliseconds) of a service-path; It can be measured or estimated"; } leaf distance { type decimal64 { fraction-digits 2; } units "km"; description "Provides end-to-end distance of a service-path"; } container hop-count { description "Maximum hops allowed"; leaf wdm-hop-count { type uint8; } leaf otn-hop-count { type uint8; } } container TE-metric { description "Maximum cost allowed"; leaf wdm-TE-metric { type uint32; } leaf otn-TE-metric { type uint32; } } } } rpc service-create { description "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent."; 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 common-id { type string; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:service-order; uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; leaf connection-type { type org-openroadm-common-service-types:connection-type; mandatory true; } uses org-openroadm-common-service-types:resource-status; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; } uses org-openroadm-routing-constraints:routing-constraints; uses org-openroadm-common-service-types:service-information; } output { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:response-parameters; } } rpc service-create-bulk { description "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent. This is 'all' or 'nothing' operation, which means that either all services are created or none of them will be created."; input { uses org-openroadm-common-service-types:sdnc-request-header; list service-request-list { key "service-name"; 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 common-id { type string; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:service-order; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; leaf connection-type { type org-openroadm-common-service-types:connection-type; mandatory true; } uses org-openroadm-common-service-types:resource-status; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; } uses org-openroadm-routing-constraints:routing-constraints; uses org-openroadm-common-service-types:service-information; } } output { uses org-openroadm-common-service-types:configuration-response-common; list service-response-list { key "service-name"; leaf service-name { type string; mandatory true; } uses org-openroadm-common-service-types:response-parameters; } } } rpc temp-service-create-bulk { input { uses org-openroadm-common-service-types:sdnc-request-header; list service-request-list { key "common-id"; leaf common-id { type string; mandatory true; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:service-order; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; leaf connection-type { type org-openroadm-common-service-types:connection-type; mandatory true; } uses org-openroadm-common-service-types:resource-status; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; } uses org-openroadm-routing-constraints:routing-constraints; uses org-openroadm-common-service-types:service-information; uses org-openroadm-common-service-types:existing-service-grouping { refine "existing-service-attributes/reusable-existing-resources" { default "all"; } } } } output { uses org-openroadm-common-service-types:configuration-response-common; list service-response-list { key "common-id"; leaf common-id { type string; mandatory true; } uses org-openroadm-common-service-types:response-parameters; uses org-openroadm-common-service-types:existing-service-grouping { refine "existing-service-attributes/reusable-existing-resources" { default "all"; } } } } } rpc service-create-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-identifiers-container; uses service-path-metrics; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-create-complex-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-and-supporting-services; uses service-path-metrics; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-delete-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-identifiers-container; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-delete-complex-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-and-supporting-services; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-feasibility-check { description "Whether a service was possible to be created, and if so the routing constraints match and the a and z end connection that have to match Takes a potential service and determines if it is possible in the network using equipment that is installed on the network, formally planned or proposed for planning. No resources are reserved, provisioned or planned as a result of this operation"; input { leaf common-id { type string; mandatory true; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:sdnc-request-header; uses service-feasibility-check-inputs; } output { leaf common-id { type string; mandatory true; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:response-parameters; uses service-feasibility-check-outputs; } } rpc service-feasibility-check-bulk { description "Whether a service was possible to be created, and if so the routing constraints match and the a and z end connection that have to match Takes a list of potential services and determines if they are possible in the network using equipment that is installed on the network, formally planned or proposed for planning. All services are treated collectively to ensure that a given resource is not used more than once. No resources are reserved, provisioned or planned as a result of this operation"; input { uses org-openroadm-common-service-types:sdnc-request-header; list service-request-list { key "common-id"; leaf common-id { type string; mandatory true; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses service-feasibility-check-inputs; } } output { uses org-openroadm-common-service-types:configuration-response-common; list service-response-list { key "common-id"; leaf common-id { type string; mandatory true; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:response-parameters; uses service-feasibility-check-outputs; } } } rpc service-delete { description "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent. Once the service has been deleted, it no longer will appear in the service list"; input { uses org-openroadm-common-service-types:sdnc-request-header; container service-delete-req-info { leaf service-name { type string; mandatory true; description "Identifier for the service to be deleted in the ROADM network, e.g., CLFI, CLCI, etc."; } leaf due-date { type yang:date-and-time; description "date and time service to be turned down. If missing, now."; } leaf tail-retention { type enumeration { enum yes { value 1; description "tails are left intact "; } enum no { value 2; description "tails are deleted"; } } mandatory true; } } } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc equipment-notification { input { uses org-openroadm-common-service-types:sdnc-request-header; leaf equipment-id { type string; mandatory true; } leaf equipment-name { type string; } leaf equipment-type { type string; mandatory true; description "The set of valid value is derived from the equipment-type grouping used in the device model."; } leaf equipment-vendor { type string; mandatory true; } leaf equipment-customer { type string; } leaf equipment-clli { type string; mandatory true; } leaf equipment-ip { type string; } leaf controller-id { type string; mandatory true; } } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc temp-service-create { input { leaf common-id { type string; mandatory true; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:service-order; uses org-openroadm-common-service-types:sdnc-request-header; leaf connection-type { type org-openroadm-common-service-types:connection-type; mandatory true; } uses org-openroadm-common-service-types:resource-status; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; container requesting-interface-properties { when "../../connection-type = 'optical-tunnel'" { description "an optical-tunnel service creation request triggers a container that includes the description of the characteristics of the external optical transceiver handled by a 3rd party controller"; } uses org-openroadm-common-service-types:external-interface-characteristics; } } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; container requesting-interface-properties { when "../../connection-type = 'optical-tunnel'" { description "an optical-tunnel service creation request triggers a container that includes the description of the characteristics of the external optical transceiver handled by a 3rd party controller"; } uses org-openroadm-common-service-types:external-interface-characteristics; } } uses org-openroadm-routing-constraints:routing-constraints; uses org-openroadm-common-service-types:service-information; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; uses org-openroadm-common-service-types:existing-service-grouping { refine "existing-service-attributes/reusable-existing-resources" { default "all"; } } } output { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:response-parameters; uses org-openroadm-common-service-types:existing-service-grouping { refine "existing-service-attributes/reusable-existing-resources" { default "all"; } } } } rpc temp-service-delete { input { leaf common-id { type string; mandatory true; } uses org-openroadm-common-service-types:sdnc-request-header; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-roll { description "This rpc can be use to roll a service according to 2 possible options : A new path may (no path pre-calculation) or may not be calculated according to the parameters provided (which includes metrics). If path computation has been triggered and is successful, a new path is provided, and the service can be rolled according to that path."; input { leaf service-name { type string; mandatory true; description "Identifier for the service to be rolled in the ROADM network, e.g., CLFI, CLCI, etc."; } leaf due-date { type yang:date-and-time; description "date and time service to be rolled"; } uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-common-service-types:routing-metric; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-roll-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-identifiers-container; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-reconfigure { description "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent."; input { uses org-openroadm-common-service-types:sdnc-request-header; leaf service-name { type string; mandatory true; description "Existing identifier for the service to be reconfigured in the ROADM network, e.g., CLFI, CLCI, etc."; } leaf new-service-name { type string; description "New identifier for the service to be reconfigured in the ROADM network, e.g., CLFI, CLCI, etc."; } leaf data-reload { type boolean; description "Indicates whether the data of existing service needs to be refreshed or reloaded. No reprovisioning/reconfiguration should be done to the service, only data is updated. May generate data conflict to existing service after reload. If set true, the data of existing service will be refreshed"; } leaf common-id { type string; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:service-order; leaf connection-type { type org-openroadm-common-service-types:connection-type; } uses org-openroadm-common-service-types:resource-status; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; container requesting-interface-properties { when "../../connection-type = 'optical-tunnel'" { description "an optical-tunnel service creation request triggers a container that includes the description of the characteristics of the external optical transceiver handled by a 3rd party controller"; } uses org-openroadm-common-service-types:external-interface-characteristics; } } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; container requesting-interface-properties { when "../../connection-type = 'optical-tunnel'" { description "an optical-tunnel service creation request triggers a container that includes the description of the characteristics of the external optical transceiver handled by a 3rd party controller"; } uses org-openroadm-common-service-types:external-interface-characteristics; } } uses org-openroadm-routing-constraints:routing-constraints; uses org-openroadm-common-service-types:service-information; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; } output { // Augment the reconfigure response with the data-reload uses org-openroadm-common-service-types:configuration-response-common { augment "configuration-response-common" { leaf ack-data-reload-indicator { type string; description "This optional, meaning this will be populated only when the data-reload indicator is set true"; } } } uses org-openroadm-common-service-types:response-parameters; } } rpc service-reconfigure-bulk { description "Whether bulk of requests passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent."; input { uses org-openroadm-common-service-types:sdnc-request-header; list service-reconfigure-list { key "service-name"; leaf service-name { type string; mandatory true; description "Existing identifier for the service to be reconfigured in the ROADM network, e.g., CLFI, CLCI, etc."; } leaf new-service-name { type string; description "New identifier for the service to be reconfigured in the ROADM network, e.g., CLFI, CLCI, etc."; } leaf data-reload { type boolean; description "Indicates whether the data of existing service needs to be refreshed or reloaded. No reprovisioning/reconfiguration should be done to the service, only data is updated. May generate data conflict to existing service after reload. If set true, the data of existing service will be refreshed"; } leaf common-id { type string; description "To be used by the ROADM controller to identify the routing constraints received from planning application (PED)."; } uses org-openroadm-common-service-types:service-order; leaf connection-type { type org-openroadm-common-service-types:connection-type; } uses org-openroadm-common-service-types:resource-status; container service-a-end { uses org-openroadm-common-service-types:service-endpoint; } container service-z-end { uses org-openroadm-common-service-types:service-endpoint; } uses org-openroadm-routing-constraints:routing-constraints; uses org-openroadm-common-service-types:service-information; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; } } output { uses org-openroadm-common-service-types:configuration-response-common { augment "configuration-response-common" { leaf ack-data-reload-indicator { type string; description "This optional, meaning this will be populated only when the data-reload indicator is set true"; } } } list service-reconfigure-response-list { key "service-name"; leaf service-name { type string; mandatory true; description "Existing identifier for the service to be reconfigured in the ROADM network, e.g., CLFI, CLCI, etc."; } } uses org-openroadm-common-service-types:response-parameters; } } rpc service-reconfigure-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-identifiers-container; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-restoration { description "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent. This rpc can be use to reroute a service according to 2 possible options : \t_Option1 : neither the backup-path-id nor the failure-case-id are provided, a new path shall be calculated according to the parameters provided (which includes metrics). If path computation is successful, a new path is provided, and the service is rerouted according to that path. \t_Option2 : if a backup-path-id or a failure-case-id are provided, the service shall be rerouted according to the corresponding path. If path computation is triggered and successful, a new path is provided, and the service is rerouted according to that path."; input { leaf service-name { type string; mandatory true; description "Identifier for the service to be restored in the ROADM network, e.g., CLFI, CLCI, etc."; } leaf option { type enumeration { enum permanent { value 1; description "A spare regen can be used to restore the service permanently without reverting back to the original regen"; } enum temporary { value 2; description "a spare regen can be used to restore the service temporarily. The service needs to be reverted back to the original regen transponder"; } } mandatory true; } leaf backup-path-id { type uint8 { range "1..255"; } description "When present, states that the service shall be rerouted according to a specific backup path"; } leaf failure-case-id { type string; description "When present, states that the service shall be rerouted according to a specific backup path. This last corresponds to the provided failure case id"; } uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-common-service-types:routing-metric; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-restoration-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-identifiers-container; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-reversion { description "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent."; input { leaf service-name { type string; mandatory true; description "Identifier for the service to be reverted in the ROADM network, e.g., CLFI, CLCI, etc. "; } leaf due-date { type yang:date-and-time; description "date and time service to be reverted"; } uses org-openroadm-common-service-types:sdnc-request-header; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-reversion-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-identifiers-container; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-reroute { description "Whether this request was validated and processed correctly. If successful, it returns the proposed new route. If acceptable, this request should be followed by a service-reroute-confirm to complete the reroute operation."; input { leaf service-name { type string; mandatory true; description "Identifier for the service to be re-routed in the ROADM network, e.g., CLFI, CLCI, etc."; } uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-common-service-types:routing-metric; uses org-openroadm-common-service-types:service-resiliency; } output { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-routing-constraints:routing-constraints; } } rpc service-reroute-confirm { description "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a service-rpc-result Notification shall be sent."; input { leaf service-name { type string; mandatory true; description "Identifier for the service to be re-routed in the ROADM network, e.g., CLFI, CLCI, etc."; } uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-routing-constraints:routing-constraints; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-reroute-confirm-result-notification-request { description "This is the callback notification that the controller invokes on the carrier system."; input { uses org-openroadm-common-service-types:configuration-response-common; uses org-openroadm-common-service-types:service-identifiers-container; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc optical-tunnel-create { description "This rpc is used in a second step of service creation when the connection-type is an optical-tunnel. The optical tunnel rendering implies that end terminals optical interfaces such as router pluggables are tuned to the a correct wavelength and that the output power is set so that control loop can operate during connection setting. The rpc is invoked to confirm the optical tunnel can be established."; input { leaf service-name { type string; mandatory true; description "Identifier used in the second step of the optical-tunnel service creation. Identifies the service (optical tunnel between SRG PPs) to be created in the ROADM network."; } leaf common-id { type string; mandatory true; description "Identifier used in the first step of optical-tunnelservice creation using temp-service-create rpc. Identifies the temporary service for which resources have been reserved after a successful path computation"; } leaf set-frequency { type org-openroadm-common-optical-channel-types:frequency-THz; mandatory true; description "Center Frequency in THz."; } leaf full-bandwidth-at-3dB { type org-openroadm-common-optical-channel-types:frequency-GHz; mandatory true; description "Signal full bandwidth at 3dB bellow the peak in GHz."; } leaf full-bandwidth-at-10dB { type org-openroadm-common-optical-channel-types:frequency-GHz; mandatory true; description "Signal full bandwidth at 10dB bellow the peak in GHz."; } uses org-openroadm-common-service-types:sdnc-request-header; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc optical-tunnel-request-cancel { description "This rpc is used to abort service creation when the connection-type is an optical-tunnel, if the conditions required to set-up the end to end service can not be met by the end terminals optical interfaces such as router pluggables. When the rpc is invoked, any resource temporary reserved for the second step of service creation shall be released : this rpc cancels service path rendering between SRG PPs."; input { leaf service-name { type string; description "Identifier used in the first step of service creation using service create rpc."; } leaf common-id { type string; description "Identifier used in the first step of optical-tunnel service creation using temp-service-create rpc. Identifies the temporary service for which resources have been reserved after a successful path computation"; } uses org-openroadm-common-service-types:sdnc-request-header; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc end-terminal-performance-info-request { description "This rpc is used to retrieve the performances of an end-terminal (pluggable/ alien-Xponder) from the controller which manages the end-terminal."; input { uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-common-service-types:service-ends-container; } output { uses org-openroadm-common-service-types:configuration-response-common; container a-z-end-common-interface-characteristics { description "Interface characteristics provided corresponds to the least common denominator of the specifications supported at both A and Z ends"; uses org-openroadm-common-service-types:external-interface-characteristics; } } } rpc end-terminal-activation-request { description "This rpc is used to activate an end-terminal (pluggable/alien-Xponder) managed by a third-party controller."; input { leaf end-terminal-controller-service-name { type string; description "Identifier used by the by the end-terminals' controller to identify the alien wavelength service (supported by an optical tunnel between SRG PPs) to be created."; } leaf service-name { type string; description "Identifier used by the RNC in the second step of the optical-tunnel service creation. Identifies the service (optical tunnel between SRG PPs) to be created in the ROADM network."; } leaf common-id { type string; description "Identifier used by the RNC in the first step of optical-tunnel service creation relying on temp-service-create rpc. Identifies the temporary service for which resources have been reserved after a successful path computation"; } uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-common-service-types:alien-service-ends-setting-container; uses org-openroadm-resource:common-och-otsi-attributes; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc end-terminal-deactivation-request { description "This rpc is used to deactivate an end-terminal (pluggable/alien-Xponder) managed by a third-party controller."; input { leaf end-terminal-controller-service-name { type string; description "Identifier used by the by the end-terminals' controller to identify the alien wavelength service associated to the interfaces to be deactivated."; } leaf due-date { type yang:date-and-time; description "date and time end-terminal shall to be turned down. If missing, now."; } uses org-openroadm-common-service-types:sdnc-request-header; } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc end-terminal-power-control { description "This rpc is used to forward to the RNC the output power set on the end-terminal (pluggable/alien-Xponder) managed by a third-party controller so that the RNC can evaluate from the power received on the SRG whether the attenuation on the connecting tail is acceptable or not, and send back to the requester the results of this evaluation "; input { leaf end-terminal-controller-service-name { type string; description "Identifier used by the by the end-terminals' controller to identify the alien wavelength service (supported by an optical tunnel between SRG PPs) to be created."; } leaf service-name { type string; description "Identifier used by the RNC in the second step of the optical-tunnel service creation. Identifies the service (optical tunnel between SRG PPs) to be created in the ROADM network."; } leaf common-id { type string; description "Identifier used by the RNC in the first step of optical-tunnel service creation relying on temp-service-create rpc. Identifies the temporary service for which resources have been reserved after a successful path computation"; } uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-resource:common-och-otsi-attributes; leaf output-power-setpoint-a-end { type org-openroadm-common-link-types:power-dBm; description "output-power currently set on A-end end-terminal"; } leaf output-power-setpoint-z-end { type org-openroadm-common-link-types:power-dBm; description "output-power currently set on Z-end end-terminal"; } } output { leaf output-power-adjustment-needed { type boolean; description "shall be set to true, if attenuation on at least one tail from one end-terminal to one SRG-PP exceeds expected value, and set-output power of corresponding end terminal does not allow to reach expected level on SRG-PP-RX"; } leaf corrected-output-power-a-end { when "../output-power-adjustment-needed = 'true'" { description "Only needed if a correction shall be applied "; } type org-openroadm-common-link-types:power-dBm; description "output-power that shall be set on the A-end. Only needed if a correction shall be applied on the A-end. It is the responsibility of the RNC to calculate the correction and provide an acceptable value which complies with end-terminal specifications described in the corresponding operational-mode of the catalog"; } leaf corrected-output-power-z-end { when "../output-power-adjustment-needed = 'true'" { description "Only needed if a correction shall be applied "; } type org-openroadm-common-link-types:power-dBm; description "output-power that shall be set on the Z-end. Only needed if a correction shall be applied on the Z-end. It is the responsibility of the RNC to calculate the correction and provide an acceptable value which complies with end-terminal specifications described in the corresponding operational-mode of the catalog"; } leaf srg-input-power-out-of-range { type boolean; description "If RNC does not succeed to calculate a correction to apply to output power settings on end-terminal, because resulting power would be out of the range defined in the operational mode of the end-terminal, this node is set to true to indicate the failure"; } uses org-openroadm-common-service-types:configuration-response-common; } } rpc network-re-optimization { input { leaf service-name { type string; description "Identifier for the service in the ROADM network, e.g., CLFI, CLCI, etc. whose path is to be checked by the RNC for re-optimization"; } leaf a-end { type string; description "Services whose A-ends are terminated at the specified office location are to be checked by the RNC for re-optimization"; } leaf z-end { type string; description "Services whose Z-ends are terminated at the specified office location are to be checked by the RNC for re-optimization "; } leaf pass-through { type string; description "Services that are pass-through (either via regen or express) at the specified office location are to be checked by the RNC for re-optimization"; } leaf customer-code { type string; description "Services that belong to the specified customer are to be checked by the RNC for re-optimization "; } uses org-openroadm-common-service-types:sdnc-request-header; uses org-openroadm-common-service-types:routing-metric; } output { uses org-openroadm-common-service-types:configuration-response-common; leaf optimization-candidate { type string; } } } rpc add-openroadm-operational-modes-to-catalog { description "This rpc is used to feed the operational mode catalog with openroadm operational modes"; input { uses org-openroadm-common-service-types:sdnc-request-header; container operational-mode-info { container grid-parameters { description "Parameters associated with global spectrum use"; uses org-openroadm-operational-mode-catalog:operational-mode-grid-parameters; } container xponders-pluggables { description "Parameters associated with xponders and pluggables"; list xponder-pluggable-openroadm-operational-mode { key "openroadm-operational-mode-id"; description "defines the openroadm operational mode pointing to an official specification "; leaf openroadm-operational-mode-id { type string; description "openroadm operational mode which points to a specific spreadsheet of optical specifications"; } uses org-openroadm-operational-mode-catalog:operational-mode-transponder-parameters; } } container roadms { description "Parameters associated with roadms"; uses org-openroadm-operational-mode-catalog:operational-mode-roadm-express-parameters; uses org-openroadm-operational-mode-catalog:operational-mode-roadm-add-parameters; uses org-openroadm-operational-mode-catalog:operational-mode-roadm-drop-parameters; } container amplifiers { description "Parameters associated with amplifiers"; uses org-openroadm-operational-mode-catalog:operational-mode-amplifier-parameters; } } } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc add-specific-operational-modes-to-catalog { description "This rpc is used to feed the operational mode catalog with specific operational modes for \txponders or external pluggables"; input { uses org-openroadm-common-service-types:sdnc-request-header; container operational-mode-info { container specific-operational-modes { description "All specific operational modes corresponding to bookended or alien units"; list specific-operational-mode { key "operational-mode-id"; description "List of all declared specific operationnal modes"; leaf operational-mode-id { type string; description "unique identifier which identifies the operational mode"; } uses org-openroadm-operational-mode-catalog:operational-mode-grid-parameters; uses org-openroadm-operational-mode-catalog:operational-mode-transponder-parameters; } } } } output { uses org-openroadm-common-service-types:configuration-response-common; } } rpc service-srlg-get { input { leaf service-name { type string; description "Identifier for the service in the ROADM network, e.g., CLFI, CLCI, etc. whose path or other risks must be evaluated by the RNC"; } leaf SRLG-type { type org-openroadm-common-types:SRLG-type; description "Type of SRLG, Site SRLG, Node SRLG, Fiber SRLG or Link SRLG. If SRLG-type is not provided in input, output should include all types of SRLGs for a given service-name"; } leaf due-date { type yang:date-and-time; description "Due-date is required to get list of SRLGs for specific validity period. If Due-date is not provited in the input, RPC should return list of current/active SRLGS"; } } output { list SRLG-list { key "SRLG-Id"; leaf SRLG-Id { type uint32; description "unique identifier for SRLG"; } leaf SRLG-name { type string; description "Name of the SRLG"; } leaf SRLG-type { type org-openroadm-common-types:SRLG-type; description "Type of SRLG, Site SRLG, Node SRLG, Fiber SRLG or Link SRLG"; } leaf SRLG-length { type decimal64 { fraction-digits 2; } description "Fiber length in desired distance unit of measure"; } } } } notification service-rpc-result { description "This Notification indicates result of service RPC"; leaf notification-type { type org-openroadm-common-service-types:service-notification-types; } uses org-openroadm-common-types:rpc-response-status; uses org-openroadm-common-service-types:service-notification-result; container path-computation-result { when "../notification-type = 'path-computation-result'" { description "an optical-tunnel service triggers the leaf providing information on the operationnal mode selected by the pce"; } container aToZ { description "Describes the settings and the performances for the A to Z path"; uses org-openroadm-resource:common-och-otsi-attributes; uses org-openroadm-resource:path-computation-outputs; } container zToA { description "Describes the settings and the performances for the Z to A path"; uses org-openroadm-resource:common-och-otsi-attributes; uses org-openroadm-resource:path-computation-outputs; } } } notification service-traffic-flow { description "This Notification indicates that traffic is flowing again on the service after an administrative action has completed"; leaf service-name { type string; mandatory true; description "Identifier for the service being reported on"; } leaf version-number { type uint64; description "Identifier for the versioned service"; } leaf actual-date { type yang:date-and-time; description "Actual date and time traffic started flowing"; } } notification service-notification { description "This Notification that a service has been added, modified or removed. A resourceCreation notification shall contain the created service in its entirety. A resourceModified notification shall contain just the modified field, plus the service identifier A resourceDeleted notification shall just contain the service identifier"; leaf notificationType { type org-openroadm-resource-types:resource-notification-type; description "Whether this notification indicates a service creation, service modification or service deletion."; } leaf version-number { type uint64; description "Identifier for the versioned service"; } uses org-openroadm-common-service-types:service; } notification optical-tunnel-created { description "This Notification is used to confirm that an optical-tunnel service has been created. It shall contain the created service in its entirety"; leaf notificationType { type org-openroadm-resource-types:resource-notification-type; description "Whether this notification indicates a service creation, or service-reconfigure."; } leaf version-number { type uint64; description "Identifier for the versioned service"; } leaf actual-date { type yang:date-and-time; description "Actual date and time traffic started flowing"; } uses org-openroadm-common-service-types:service; } notification end-terminal-activation-status { description "This Notification is used to provide asynchronously the result of : _an end-terminal-activation-request _an end-terminal-deactivation-request As the process to activate/deactivate end-terminals may take time"; leaf end-terminal-controller-service-name { type string; description "Identifier used by the by the end-terminals' controller to identify the alien wavelength service (supported by an optical tunnel between SRG PPs) to be created suspended or deleted. Optional, expected in both the activation and the deactivation phase"; } leaf service-name { type string; description "Identifier used by the RNC in the second step of the optical-tunnel service creation. Identifies the service (optical tunnel between SRG PPs) to be created in the ROADM network. Optional, expected in the activation phase"; } leaf common-id { type string; description "Identifier used by the RNC in the first step of optical-tunnel service creation relying on temp-service-create rpc. Identifies the temporary service for which resources have been reserved after a successful path computation. Optional, expected in the activation phase"; } uses org-openroadm-common-types:rpc-response-status; leaf activation-status { type org-openroadm-common-service-types:end-terminal-activation-status-type; description "In case of successful operation, an end-terminal-activation-request will lead to activated, whereas an end-terminal-deactivation-request will lead to deactivated. In case of failure, the type of failure is indicated in status-message leaf of rpc-response-status"; } leaf actual-date { type yang:date-and-time; description "Actual date and time traffic started flowing"; } leaf output-power-setpoint-a-end { type org-openroadm-common-link-types:power-dBm; description "the power set on end-terminal network port"; } leaf output-power-setpoint-z-end { type org-openroadm-common-link-types:power-dBm; description "the power set on end-terminal network port"; } } notification non-rpc-related-notification { description "Used to notify SDN controller that : _a change occured in the data tree associated with the topology or the service Datastore of the RNC _the attenuation on a ROADM to ROADM link as exceeded the value that can be accepted with current design _the restoration of an optical OTN/WDM service"; leaf notificationType { type org-openroadm-controller-customization:non-rpc-related-notification-type; description "This notification indicates whether a change occured in the data tree associated with the topology or the service Datastore, an out of limit attenuation on a WDM link, or the restoration of an optical WDM/OTN service."; } leaf notificationId { type string; description "Unique identifier for the notification."; } leaf notification-time { type yang:date-and-time; description "Time at which notification is raised"; } leaf service-name { when "../notificationType = 'service-state-change' or ../notificationType = 'autonomous-optical-restoration-triggered'" { description "When Service Data store is modified, or a restoration has been triggered service-name is provided"; } type string; } leaf impacted-resource-type { when "../notificationType = 'topology-change' or ../notificationType = 'service-state-change'" { description "Used to provide additional information on the type of resource impacted by the change in the data-store, to target more effectively consecutive request"; } type string; } leaf impacted-resource-id { when "../notificationType = 'topology-change' or ../notificationType = 'service-state-change'" { description "Identifies the resource impacted by the change in the data-store"; } type string; } leaf topology-layer { when "../notificationType = 'topology-change'" { description "indicates the layer associated with the topological change"; } type enumeration { enum openroadm-topology { value 1; } enum otn-topology { value 2; } } } } container service-list { description "List of service. Can only be created, deleted, modified, etc. using special RPCs. Will only contain one service with a given name. Does not contain historical (deleted or rather those passed their end time) or draft services. If two services exist with the same name (with non-lapping start-end times for example), this table will contain the current one. If only planned services exist for the name, the one with the earliest start time will be present "; list services { key "service-name"; uses org-openroadm-common-service-types:service; } } container versioned-service-list { description "List of service, regardless of lifecycle state. Can only be created, deleted, modified, etc. using special RPCs. Can report more than one version of a service, if supported by the implementation. May contain deleted services, multiple versions of the same service, as identified by its name, etc."; list services { key "service-name version-number"; leaf version-number { type uint64; } uses org-openroadm-common-service-types:service; } } container temp-service-list { description "List of temporary services Can only be created, deleted, modified, etc. using special RPCs."; list services { key "common-id"; uses org-openroadm-common-service-types:service { refine "service-name" { mandatory false; } augment "service-a-end" { list equipment-required { key "equipment-identifier"; description "List of required equipment, including equipment type, state and quantity"; uses org-openroadm-common-service-types:equipment-info; } } augment "service-z-end" { list equipment-required { key "equipment-identifier"; description "List of required equipment, including equipment type, state and quantity"; uses org-openroadm-common-service-types:equipment-info; } } } uses org-openroadm-common-service-types:intermediate-site-container; list supporting-service-hierarchy { key "service-identifier"; uses org-openroadm-common-service-types:service-hierarchy; description "This lists all the supporting services and their respective hierarchy, includes the proposed one"; } uses org-openroadm-common-service-types:existing-service-grouping { refine "existing-service-attributes/reusable-existing-resources" { default "all"; } } } } container controller-behaviour-settings { description "Parameters allowing to set the controller behaviour"; uses org-openroadm-controller-customization:controller-parameters; } container operational-mode-catalog { description "Store parameters associated with openroadm specifications and specific operational modes"; uses org-openroadm-operational-mode-catalog:operational-mode-catalog; } }