X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=transportpce.git;a=blobdiff_plain;f=ordmodels%2Fservice%2Fsrc%2Fmain%2Fyang%2Forg-openroadm-service%402021-12-10.yang;fp=ordmodels%2Fservice%2Fsrc%2Fmain%2Fyang%2Forg-openroadm-service%402021-12-10.yang;h=9f9f0b1f713148f8efdd03b4156a789d0274a9bf;hp=0000000000000000000000000000000000000000;hb=5e3f7dd89cb088ef4957f5559a82b8c6436afa17;hpb=1e2f9a502de80450411761fd2f636e2b7ee32301 diff --git a/ordmodels/service/src/main/yang/org-openroadm-service@2021-12-10.yang b/ordmodels/service/src/main/yang/org-openroadm-service@2021-12-10.yang new file mode 100644 index 000000000..9f9f0b1f7 --- /dev/null +++ b/ordmodels/service/src/main/yang/org-openroadm-service@2021-12-10.yang @@ -0,0 +1,1697 @@ +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 2021-12-10; + } + import org-openroadm-common-types { + prefix org-openroadm-common-types; + revision-date 2021-12-10; + } + import org-openroadm-resource-types { + prefix org-openroadm-resource-types; + revision-date 2021-09-24; + } + import org-openroadm-resource { + prefix org-openroadm-resource; + revision-date 2021-12-10; + } + import org-openroadm-common-service-types { + prefix org-openroadm-common-service-types; + revision-date 2021-12-10; + } + import org-openroadm-controller-customization { + prefix org-openroadm-controller-customization; + revision-date 2021-12-10; + } + import org-openroadm-topology { + prefix org-openroadm-topology; + revision-date 2021-12-10; + } + import org-openroadm-operational-mode-catalog { + prefix org-openroadm-operational-mode-catalog; + revision-date 2021-12-10; + } + import org-openroadm-common-optical-channel-types { + prefix org-openroadm-common-optical-channel-types; + revision-date 2021-12-10; + } + + 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 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 { + description + "Provides one-way end-to-end latency (in milliseconds) of a service-path; + It can be measured or estimated"; + type decimal64 { + fraction-digits 3; + } + units "milliseconds"; + } + 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-tunnelservice 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 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 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; + } +}