Remove openroadm and tapi models building
[transportpce.git] / ordmodels / service / src / main / yang / org-openroadm-service@2021-12-10.yang
1 module org-openroadm-service {
2   yang-version 1.1;
3   namespace "http://org/openroadm/service";
4   prefix org-openroadm-service;
5
6   import ietf-yang-types {
7     prefix yang;
8     revision-date 2013-07-15;
9   }
10   import org-openroadm-routing-constraints {
11     prefix org-openroadm-routing-constraints;
12     revision-date 2021-12-10;
13   }
14   import org-openroadm-common-types {
15     prefix org-openroadm-common-types;
16     revision-date 2021-12-10;
17   }
18   import org-openroadm-resource-types {
19     prefix org-openroadm-resource-types;
20     revision-date 2021-09-24;
21   }
22   import org-openroadm-resource {
23     prefix org-openroadm-resource;
24     revision-date 2021-12-10;
25   }
26   import org-openroadm-common-service-types {
27     prefix org-openroadm-common-service-types;
28     revision-date 2021-12-10;
29   }
30   import org-openroadm-controller-customization {
31     prefix org-openroadm-controller-customization;
32     revision-date 2021-12-10;
33   }
34   import org-openroadm-topology {
35     prefix org-openroadm-topology;
36     revision-date 2021-12-10;
37   }
38   import org-openroadm-operational-mode-catalog {
39     prefix org-openroadm-operational-mode-catalog;
40     revision-date 2021-12-10;
41   }
42   import org-openroadm-common-optical-channel-types {
43     prefix org-openroadm-common-optical-channel-types;
44     revision-date 2021-12-10;
45   }
46
47   organization
48     "Open ROADM MSA";
49   contact
50     "OpenROADM.org";
51   description
52     "YANG definitions of services.
53
54       Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
55       All other rights reserved.
56
57       Redistribution and use in source and binary forms, with or without modification,
58       are permitted provided that the following conditions are met:
59
60       * Redistributions of source code must retain the above copyright notice, this
61         list of conditions and the following disclaimer.
62       * Redistributions in binary form must reproduce the above copyright notice,
63         this list of conditions and the following disclaimer in the documentation and/or
64         other materials provided with the distribution.
65       * Neither the Members of the Open ROADM MSA Agreement nor the names of its
66         contributors may be used to endorse or promote products derived from this software
67         without specific prior written permission.
68
69       THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS''
70       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
71       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
72       IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT,
73       INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
74       NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA,
75       OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
76       WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
77       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
78       POSSIBILITY OF SUCH DAMAGE";
79
80   revision 2021-12-10 {
81     description
82       "Version 10.1";
83   }
84   revision 2021-09-24 {
85     description
86       "Version 10.0";
87   }
88   revision 2021-05-28 {
89     description
90       "Version 9.1";
91   }
92   revision 2021-03-26 {
93     description
94       "Version 9.0";
95   }
96   revision 2020-12-11 {
97     description
98       "Version 8.1";
99   }
100   revision 2020-09-25 {
101     description
102       "Version 8.0";
103   }
104   revision 2020-05-29 {
105     description
106       "Version 7.1.0";
107   }
108   revision 2020-03-27 {
109     description
110       "Version 7.0.0";
111   }
112   revision 2019-11-29 {
113     description
114       "Version 6.1.0";
115   }
116   revision 2019-09-27 {
117     description
118       "Version 6.0.0";
119   }
120   revision 2019-05-31 {
121     description
122       "Version 5.1.0";
123   }
124   revision 2019-03-29 {
125     description
126       "Version 5.0.0";
127   }
128   revision 2018-11-30 {
129     description
130       "Version 4.1.0";
131   }
132   revision 2018-09-28 {
133     description
134       "Version 4.0.0";
135   }
136   revision 2018-05-30 {
137     description
138       "Version 3.1.0";
139   }
140   revision 2018-03-30 {
141     description
142       "Version 3.0.0";
143   }
144   revision 2017-12-15 {
145     description
146       "Version 2.2";
147   }
148   revision 2017-09-29 {
149     description
150       "Version 2.1";
151   }
152   revision 2017-07-28 {
153     description
154       "Version 2.0.1 - added revision-date to imports";
155   }
156   revision 2017-06-26 {
157     description
158       "Version 2.0";
159   }
160   revision 2016-10-14 {
161     description
162       "Version 1.2";
163   }
164
165   grouping proposed-equipment-g {
166     leaf propose-equipment {
167       type enumeration {
168         enum never {
169           value 1;
170         }
171         enum ifNeeded {
172           value 2;
173         }
174         enum always {
175           value 3;
176         }
177       }
178       default "ifNeeded";
179       description
180         "Whether or not this request can propose new equipment that could
181          be used to fulfill this request. If never, the request will just
182          use existing deployed and planned equipment. If ifNeeded, routes using existing equipment
183          will be preferred. If always, a route with proposed equipment shall be returned, if possible";
184     }
185   }
186
187   grouping service-feasibility-check-inputs {
188     leaf connection-type {
189       type org-openroadm-common-service-types:connection-type;
190     }
191     uses org-openroadm-common-service-types:resource-status;
192     uses org-openroadm-common-service-types:routing-metric;
193     uses org-openroadm-common-service-types:service-resiliency;
194     uses proposed-equipment-g;
195     container service-a-end {
196       uses org-openroadm-common-service-types:service-endpoint;
197       container requesting-interface-properties {
198         when "../../connection-type = 'optical-tunnel'" {
199           description
200             "an optical-tunnel service creation request triggers a container
201               that includes the description of the characteristics of the
202               external optical transceiver handled by a 3rd party controller";
203         }
204         uses org-openroadm-common-service-types:external-interface-characteristics;
205       }
206     }
207     container service-z-end {
208       uses org-openroadm-common-service-types:service-endpoint;
209       container requesting-interface-properties {
210         when "../../connection-type = 'optical-tunnel'" {
211           description
212             "an optical-tunnel service creation request triggers a container
213               that includes the description of the characteristics of the
214               external optical transceiver handled by a 3rd party controller";
215         }
216         uses org-openroadm-common-service-types:external-interface-characteristics;
217       }
218     }
219     uses org-openroadm-routing-constraints:routing-constraints;
220     uses org-openroadm-common-service-types:service-information;
221     uses org-openroadm-common-service-types:max-regeneration-options;
222     uses org-openroadm-common-service-types:existing-service-grouping {
223       refine "existing-service-attributes/reusable-existing-resources" {
224         default "all";
225       }
226     }
227   }
228
229   grouping service-feasibility-check-outputs {
230     leaf connection-type {
231       type org-openroadm-common-service-types:connection-type;
232     }
233     uses org-openroadm-common-service-types:resource-status;
234     uses org-openroadm-common-service-types:routing-metric;
235     uses org-openroadm-common-service-types:service-resiliency;
236     uses proposed-equipment-g;
237     uses org-openroadm-common-service-types:service-information;
238     container service-a-end {
239       uses org-openroadm-common-service-types:service-endpoint;
240       list equipment-required {
241         key "equipment-identifier";
242         description
243           "List of required equipment, including equipment type, state and
244            quantity";
245         uses org-openroadm-common-service-types:equipment-info;
246       }
247       container expected-settings-and-performances {
248         when "(../../connection-type = 'optical-tunnel' or ../../connection-type = 'infrastructure')" {
249           description
250             "Performances and settings are provided for wavelength services
251              whether they are based on end to end services or optical-tunnels";
252         }
253         uses org-openroadm-resource:common-och-otsi-attributes;
254         uses org-openroadm-resource:path-computation-outputs;
255       }
256     }
257     container service-z-end {
258       uses org-openroadm-common-service-types:service-endpoint;
259       list equipment-required {
260         key "equipment-identifier";
261         description
262           "List of required equipment, including equipment type, state and
263            quantity";
264         uses org-openroadm-common-service-types:equipment-info;
265       }
266       container expected-settings-and-performances {
267         when "(../../connection-type = 'optical-tunnel' or ../../connection-type = 'infrastructure')" {
268           description
269             "Performances and settings are provided for wavelength services
270              whether they are based on end to end services or optical-tunnels";
271         }
272         uses org-openroadm-resource:common-och-otsi-attributes;
273         uses org-openroadm-resource:path-computation-outputs;
274       }
275     }
276     uses org-openroadm-common-service-types:intermediate-site-container;
277     container requested-service-topology {
278       description
279         "This corresponds to the topology of the service requested. Includes all the
280          containers: topology, backup topology, network topology, and
281          network backup-topology";
282       container topology {
283         description
284           "topology corresponds to working-path which is the default path. It defines the initial path
285            to which services defined as revertive may revert to when the failure condition disappear";
286         uses org-openroadm-topology:topology;
287       }
288       container backup-topology {
289         list backup-path {
290           key "backup-path-id";
291           leaf backup-path-id {
292             type uint8 {
293               range "1..255";
294             }
295             description
296               "Several backup paths may be used when backup-paths are pre-calculated.
297                Backup-path-id avoids 0 which is associated with working path in current-active-path";
298           }
299           leaf failure-case-id {
300             type string;
301             description
302               "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
303           }
304           uses org-openroadm-topology:topology;
305         }
306       }
307       container network-topology {
308         uses org-openroadm-topology:network-topology;
309       }
310       container network-backup-topology {
311         list backup-path {
312           key "backup-path-id";
313           leaf backup-path-id {
314             type uint8 {
315               range "1..255";
316             }
317             description
318               "Several backup paths may be used when backup-paths are pre-calculated.
319                Backup-path-id avoids 0 which is associated with working path in current-active-path";
320           }
321           leaf failure-case-id {
322             type string;
323             description
324               "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
325           }
326           uses org-openroadm-topology:network-topology;
327         }
328       }
329     }
330     list supporting-service-hierarchy {
331       key "service-identifier";
332       description
333         "This lists all the supporting services and their respective hierarchy, includes the
334          proposed one";
335       uses org-openroadm-common-service-types:service-hierarchy;
336     }
337     uses service-path-metrics;
338     uses org-openroadm-common-service-types:max-regeneration-options;
339     uses org-openroadm-common-service-types:regeneration-option-list;
340     uses org-openroadm-common-service-types:existing-service-grouping {
341       refine "existing-service-attributes/reusable-existing-resources" {
342         default "all";
343       }
344     }
345   }
346
347   grouping service-path-metrics {
348     container primary-path-metrics {
349       description
350         "These service metrics are associated with primary
351          service path";
352       uses service-metrics;
353     }
354     list backup-path-metrics {
355       key "backup-path-id";
356       description
357         "These service metrics are associated with the backup
358          service path";
359       leaf backup-path-id {
360         type uint8 {
361           range "1..255";
362         }
363         description
364           "Unique identifier for the backup service path";
365       }
366       uses service-metrics;
367     }
368   }
369
370   grouping service-metrics {
371     container service-metrics {
372       description
373         "All the metrics associated with end-to-end service feasibility
374          This container will have all the metrics that have'max' contraint in
375          org-openroadm-routing-constraints";
376       leaf latency {
377         description
378           "Provides one-way end-to-end latency (in milliseconds) of a service-path; 
379           It can be measured or estimated";
380         type decimal64 {
381           fraction-digits 3;
382         }
383         units "milliseconds";
384       }
385       leaf distance {
386         type decimal64 {
387           fraction-digits 2;
388         }
389         units "km";
390         description
391           "Provides end-to-end distance of a service-path";
392       }
393       container hop-count {
394         description
395           "Maximum hops allowed";
396         leaf wdm-hop-count {
397           type uint8;
398         }
399         leaf otn-hop-count {
400           type uint8;
401         }
402       }
403       container TE-metric {
404         description
405           "Maximum cost allowed";
406         leaf wdm-TE-metric {
407           type uint32;
408         }
409         leaf otn-TE-metric {
410           type uint32;
411         }
412       }
413     }
414   }
415
416   rpc service-create {
417     description
418       "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a
419        service-rpc-result Notification shall be sent.";
420     input {
421       leaf service-name {
422         type string;
423         mandatory true;
424         description
425           "Identifier for the service to be created in
426            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.";
427       }
428       leaf common-id {
429         type string;
430         description
431           "To be used by the ROADM controller to identify the routing constraints received from planning application (PED).";
432       }
433       uses org-openroadm-common-service-types:service-order;
434       uses org-openroadm-common-service-types:sdnc-request-header;
435       uses org-openroadm-common-service-types:routing-metric;
436       uses org-openroadm-common-service-types:service-resiliency;
437       leaf connection-type {
438         type org-openroadm-common-service-types:connection-type;
439         mandatory true;
440       }
441       uses org-openroadm-common-service-types:resource-status;
442       container service-a-end {
443         uses org-openroadm-common-service-types:service-endpoint;
444       }
445       container service-z-end {
446         uses org-openroadm-common-service-types:service-endpoint;
447       }
448       uses org-openroadm-routing-constraints:routing-constraints;
449       uses org-openroadm-common-service-types:service-information;
450     }
451     output {
452       uses org-openroadm-common-service-types:configuration-response-common;
453       uses org-openroadm-common-service-types:response-parameters;
454     }
455   }
456
457   rpc service-create-bulk {
458     description
459       "Whether this request passed initial validation and was accepted for processing.
460        Once the request completes processing, a service-rpc-result Notification shall be
461        sent. This is 'all' or 'nothing' operation, which means that either all services
462        are created or none of them will be created.";
463     input {
464       uses org-openroadm-common-service-types:sdnc-request-header;
465       list service-request-list {
466         key "service-name";
467         leaf service-name {
468           type string;
469           mandatory true;
470           description
471             "Identifier for the service to be created in
472              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.";
473         }
474         leaf common-id {
475           type string;
476           description
477             "To be used by the ROADM controller to identify the routing constraints received from planning application (PED).";
478         }
479         uses org-openroadm-common-service-types:service-order;
480         uses org-openroadm-common-service-types:routing-metric;
481         uses org-openroadm-common-service-types:service-resiliency;
482         leaf connection-type {
483           type org-openroadm-common-service-types:connection-type;
484           mandatory true;
485         }
486         uses org-openroadm-common-service-types:resource-status;
487         container service-a-end {
488           uses org-openroadm-common-service-types:service-endpoint;
489         }
490         container service-z-end {
491           uses org-openroadm-common-service-types:service-endpoint;
492         }
493         uses org-openroadm-routing-constraints:routing-constraints;
494         uses org-openroadm-common-service-types:service-information;
495       }
496     }
497     output {
498       uses org-openroadm-common-service-types:configuration-response-common;
499       list service-response-list {
500         key "service-name";
501         leaf service-name {
502           type string;
503           mandatory true;
504         }
505         uses org-openroadm-common-service-types:response-parameters;
506       }
507     }
508   }
509
510   rpc temp-service-create-bulk {
511     input {
512       uses org-openroadm-common-service-types:sdnc-request-header;
513       list service-request-list {
514         key "common-id";
515         leaf common-id {
516           type string;
517           mandatory true;
518           description
519             "To be used by the ROADM controller to identify the routing constraints
520              received from planning application (PED).";
521         }
522         uses org-openroadm-common-service-types:service-order;
523         uses org-openroadm-common-service-types:routing-metric;
524         uses org-openroadm-common-service-types:service-resiliency;
525         leaf connection-type {
526           type org-openroadm-common-service-types:connection-type;
527           mandatory true;
528         }
529         uses org-openroadm-common-service-types:resource-status;
530         container service-a-end {
531           uses org-openroadm-common-service-types:service-endpoint;
532         }
533         container service-z-end {
534           uses org-openroadm-common-service-types:service-endpoint;
535         }
536         uses org-openroadm-routing-constraints:routing-constraints;
537         uses org-openroadm-common-service-types:service-information;
538         uses org-openroadm-common-service-types:existing-service-grouping {
539             refine "existing-service-attributes/reusable-existing-resources" {
540               default "all";
541             }
542         }
543       }
544     }
545     output {
546       uses org-openroadm-common-service-types:configuration-response-common;
547       list service-response-list {
548         key "common-id";
549         leaf common-id {
550           type string;
551           mandatory true;
552         }
553         uses org-openroadm-common-service-types:response-parameters;
554         uses org-openroadm-common-service-types:existing-service-grouping {
555             refine "existing-service-attributes/reusable-existing-resources" {
556               default "all";
557             }
558         }
559       }
560     }
561   }
562
563   rpc service-create-result-notification-request {
564     description
565       "This is the callback notification that the controller invokes on the carrier system.";
566     input {
567       uses org-openroadm-common-service-types:configuration-response-common;
568       uses org-openroadm-common-service-types:service-identifiers-container;
569       uses service-path-metrics;
570     }
571     output {
572       uses org-openroadm-common-service-types:configuration-response-common;
573     }
574   }
575
576   rpc service-create-complex-result-notification-request {
577     description
578       "This is the callback notification that the controller invokes on the carrier system.";
579     input {
580       uses org-openroadm-common-service-types:configuration-response-common;
581       uses org-openroadm-common-service-types:service-and-supporting-services;
582       uses service-path-metrics;
583     }
584     output {
585       uses org-openroadm-common-service-types:configuration-response-common;
586     }
587   }
588
589   rpc service-delete-result-notification-request {
590     description
591       "This is the callback notification that the controller invokes on the carrier system.";
592     input {
593       uses org-openroadm-common-service-types:configuration-response-common;
594       uses org-openroadm-common-service-types:service-identifiers-container;
595     }
596     output {
597       uses org-openroadm-common-service-types:configuration-response-common;
598     }
599   }
600
601   rpc service-delete-complex-result-notification-request {
602     description
603       "This is the callback notification that the controller invokes on the carrier system.";
604     input {
605       uses org-openroadm-common-service-types:configuration-response-common;
606       uses org-openroadm-common-service-types:service-and-supporting-services;
607     }
608     output {
609       uses org-openroadm-common-service-types:configuration-response-common;
610     }
611   }
612
613   rpc service-feasibility-check {
614     description
615       "Whether a service was possible to be created, and if so
616        the routing constraints match and the a and z end connection that have
617        to match
618        Takes a potential service and determines if it is possible in the network
619        using equipment that is installed on the network, formally planned or proposed for planning.
620        No resources are reserved, provisioned or planned as a result of this operation";
621     input {
622       leaf common-id {
623         type string;
624         mandatory true;
625         description
626           "To be used by the ROADM controller to identify the routing constraints
627            received from planning application (PED).";
628       }
629       uses org-openroadm-common-service-types:sdnc-request-header;
630       uses service-feasibility-check-inputs;
631     }
632     output {
633       leaf common-id {
634         type string;
635         mandatory true;
636         description
637           "To be used by the ROADM controller to identify the routing constraints
638            received from planning application (PED).";
639       }
640       uses org-openroadm-common-service-types:configuration-response-common;
641       uses org-openroadm-common-service-types:response-parameters;
642       uses service-feasibility-check-outputs;
643     }
644   }
645
646   rpc service-feasibility-check-bulk {
647     description
648       "Whether a service was possible to be created, and if so
649        the routing constraints match and the a and z end connection that have
650        to match
651
652        Takes a list of potential services and determines if they are possible in the network
653        using equipment that is installed on the network, formally planned or proposed for planning.
654        All services are treated collectively to ensure that a given resource is not used more than once.
655        No resources are reserved, provisioned or planned as a result of this operation";
656     input {
657       uses org-openroadm-common-service-types:sdnc-request-header;
658       list service-request-list {
659         key "common-id";
660         leaf common-id {
661           type string;
662           mandatory true;
663           description
664             "To be used by the ROADM controller to identify the routing constraints
665              received from planning application (PED).";
666         }
667         uses service-feasibility-check-inputs;
668       }
669     }
670     output {
671       uses org-openroadm-common-service-types:configuration-response-common;
672       list service-response-list {
673         key "common-id";
674         leaf common-id {
675           type string;
676           mandatory true;
677           description
678             "To be used by the ROADM controller to identify the routing constraints
679              received from planning application (PED).";
680         }
681         uses org-openroadm-common-service-types:response-parameters;
682         uses service-feasibility-check-outputs;
683       }
684     }
685   }
686
687   rpc service-delete {
688     description
689       "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a
690        service-rpc-result Notification shall be sent. Once the service has been deleted, it no longer will appear in the service list";
691     input {
692       uses org-openroadm-common-service-types:sdnc-request-header;
693       container service-delete-req-info {
694         leaf service-name {
695           type string;
696           mandatory true;
697           description
698             "Identifier for the service to be deleted in
699              the ROADM network, e.g., CLFI, CLCI, etc.";
700         }
701         leaf due-date {
702           type yang:date-and-time;
703           description
704             "date and time service to be turned down. If missing, now.";
705         }
706         leaf tail-retention {
707           type enumeration {
708             enum yes {
709               value 1;
710               description
711                 "tails are left intact ";
712             }
713             enum no {
714               value 2;
715               description
716                 "tails are deleted";
717             }
718           }
719           mandatory true;
720         }
721       }
722     }
723     output {
724       uses org-openroadm-common-service-types:configuration-response-common;
725     }
726   }
727
728   rpc equipment-notification {
729     input {
730       uses org-openroadm-common-service-types:sdnc-request-header;
731       leaf equipment-id {
732         type string;
733         mandatory true;
734       }
735       leaf equipment-name {
736         type string;
737       }
738       leaf equipment-type {
739         type string;
740         mandatory true;
741         description
742           "The set of valid value is derived from the equipment-type grouping used in the device model.";
743       }
744       leaf equipment-vendor {
745         type string;
746         mandatory true;
747       }
748       leaf equipment-customer {
749         type string;
750       }
751       leaf equipment-clli {
752         type string;
753         mandatory true;
754       }
755       leaf equipment-ip {
756         type string;
757       }
758       leaf controller-id {
759         type string;
760         mandatory true;
761       }
762     }
763     output {
764       uses org-openroadm-common-service-types:configuration-response-common;
765     }
766   }
767
768   rpc temp-service-create {
769     input {
770       leaf common-id {
771         type string;
772         mandatory true;
773         description
774           "To be used by the ROADM controller to identify the routing constraints received from planning application (PED).";
775       }
776       uses org-openroadm-common-service-types:service-order;
777       uses org-openroadm-common-service-types:sdnc-request-header;
778       leaf connection-type {
779         type org-openroadm-common-service-types:connection-type;
780         mandatory true;
781       }
782       uses org-openroadm-common-service-types:resource-status;
783       container service-a-end {
784         uses org-openroadm-common-service-types:service-endpoint;
785         container requesting-interface-properties {
786           when "../../connection-type = 'optical-tunnel'" {
787             description
788               "an optical-tunnel service creation request triggers a container
789                that includes the description of the characteristics of the
790                external optical transceiver handled by a 3rd party controller";
791           }
792           uses org-openroadm-common-service-types:external-interface-characteristics;
793         }
794       }
795       container service-z-end {
796         uses org-openroadm-common-service-types:service-endpoint;
797         container requesting-interface-properties {
798           when "../../connection-type = 'optical-tunnel'" {
799             description
800               "an optical-tunnel service creation request triggers a container
801                that includes the description of the characteristics of the
802                external optical transceiver handled by a 3rd party controller";
803           }
804           uses org-openroadm-common-service-types:external-interface-characteristics;
805         }
806       }
807       uses org-openroadm-routing-constraints:routing-constraints;
808       uses org-openroadm-common-service-types:service-information;
809       uses org-openroadm-common-service-types:routing-metric;
810       uses org-openroadm-common-service-types:service-resiliency;
811       uses org-openroadm-common-service-types:existing-service-grouping {
812         refine "existing-service-attributes/reusable-existing-resources" {
813           default "all";
814         }
815       }
816     }
817     output {
818       uses org-openroadm-common-service-types:configuration-response-common;
819       uses org-openroadm-common-service-types:response-parameters;
820       uses org-openroadm-common-service-types:existing-service-grouping {
821         refine "existing-service-attributes/reusable-existing-resources" {
822           default "all";
823         }
824       }
825     }
826   }
827
828   rpc temp-service-delete {
829     input {
830       leaf common-id {
831         type string;
832         mandatory true;
833       }
834       uses org-openroadm-common-service-types:sdnc-request-header;
835     }
836     output {
837       uses org-openroadm-common-service-types:configuration-response-common;
838     }
839   }
840
841   rpc service-roll {
842     description
843       "This rpc can be use to roll a service according to 2 possible options :
844          A new path may (no path pre-calculation) or may not be calculated according
845          to the parameters provided (which includes metrics). If path computation has been triggered
846          and is successful, a new path is provided, and the service can be rolled according to that path.";
847     input {
848       leaf service-name {
849         type string;
850         mandatory true;
851         description
852           "Identifier for the service to be rolled in
853            the ROADM network, e.g., CLFI, CLCI, etc.";
854       }
855       leaf due-date {
856         type yang:date-and-time;
857         description
858           "date and time service to be rolled";
859       }
860       uses org-openroadm-common-service-types:sdnc-request-header;
861       uses org-openroadm-common-service-types:routing-metric;
862     }
863     output {
864       uses org-openroadm-common-service-types:configuration-response-common;
865     }
866   }
867
868   rpc service-roll-result-notification-request {
869     description
870       "This is the callback notification that the controller invokes on the carrier system.";
871     input {
872       uses org-openroadm-common-service-types:configuration-response-common;
873       uses org-openroadm-common-service-types:service-identifiers-container;
874     }
875     output {
876       uses org-openroadm-common-service-types:configuration-response-common;
877     }
878   }
879
880   rpc service-reconfigure {
881     description
882       "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a
883        service-rpc-result Notification shall be sent.";
884     input {
885       uses org-openroadm-common-service-types:sdnc-request-header;
886       leaf service-name {
887         type string;
888         mandatory true;
889         description
890           "Existing identifier for the service to be
891            reconfigured in the ROADM network, e.g., CLFI, CLCI, etc.";
892       }
893       leaf new-service-name {
894         type string;
895         description
896           "New identifier for the service to be
897            reconfigured in the ROADM network, e.g., CLFI, CLCI, etc.";
898       }
899       leaf data-reload {
900         type boolean;
901         description 
902           "Indicates whether the data of existing service needs to be refreshed or 
903           reloaded. No reprovisioning/reconfiguration should be done to the service, 
904           only data is updated. May generate data conflict to existing service  
905           after reload. If set true, the data of existing service will be refreshed";
906       }
907       leaf common-id {
908         type string;
909         description
910           "To be used by the ROADM controller to identify the routing
911            constraints received from planning application (PED).";
912       }
913       uses org-openroadm-common-service-types:service-order;
914       leaf connection-type {
915         type org-openroadm-common-service-types:connection-type;
916       }
917       uses org-openroadm-common-service-types:resource-status;
918       container service-a-end {
919         uses org-openroadm-common-service-types:service-endpoint;
920         container requesting-interface-properties {
921           when "../../connection-type = 'optical-tunnel'" {
922             description
923               "an optical-tunnel service creation request triggers a container
924                 that includes the description of the characteristics of the
925                 external optical transceiver handled by a 3rd party controller";
926           }
927           uses org-openroadm-common-service-types:external-interface-characteristics;
928         }
929       }
930       container service-z-end {
931         uses org-openroadm-common-service-types:service-endpoint;
932         container requesting-interface-properties {
933           when "../../connection-type = 'optical-tunnel'" {
934             description
935               "an optical-tunnel service creation request triggers a container
936                 that includes the description of the characteristics of the
937                 external optical transceiver handled by a 3rd party controller";
938           }
939           uses org-openroadm-common-service-types:external-interface-characteristics;
940         }
941       }
942       uses org-openroadm-routing-constraints:routing-constraints;
943       uses org-openroadm-common-service-types:service-information;
944       uses org-openroadm-common-service-types:routing-metric;
945       uses org-openroadm-common-service-types:service-resiliency;
946     }
947     output {
948       // Augment the reconfigure response with the data-reload
949       uses org-openroadm-common-service-types:configuration-response-common {
950         augment "configuration-response-common" {
951           leaf ack-data-reload-indicator {
952             type string;
953             description
954               "This optional, meaning this will be populated only when
955               the data-reload indicator is set true";
956           }
957         }
958       }
959       uses org-openroadm-common-service-types:response-parameters;
960     }
961   }
962
963   rpc service-reconfigure-bulk {
964           description
965       "Whether bulk of requests passed initial validation and was accepted for 
966       processing. Once the request completes processing, a service-rpc-result 
967       Notification shall be sent.";
968           input {
969       uses org-openroadm-common-service-types:sdnc-request-header;
970       list service-reconfigure-list {
971         key "service-name";
972         leaf service-name {
973           type string;
974           mandatory true;
975           description
976             "Existing identifier for the service to be
977             reconfigured in the ROADM network, e.g., CLFI, CLCI, etc.";
978         }
979         leaf new-service-name {
980           type string;
981           description
982             "New identifier for the service to be
983             reconfigured in the ROADM network, e.g., CLFI, CLCI, etc.";
984         }
985         leaf data-reload {
986           type boolean;
987           description 
988             "Indicates whether the data of existing service needs to be refreshed or 
989             reloaded. No reprovisioning/reconfiguration should be done to the service, 
990             only data is updated. May generate data conflict to existing service        
991             after reload. If set true, the data of existing service will be refreshed";
992         }
993         leaf common-id {
994           type string;
995           description
996             "To be used by the ROADM controller to identify the routing
997             constraints received from planning application (PED).";
998         }
999         uses org-openroadm-common-service-types:service-order;
1000         leaf connection-type {
1001           type org-openroadm-common-service-types:connection-type;
1002         }
1003         uses org-openroadm-common-service-types:resource-status;
1004         container service-a-end {
1005           uses org-openroadm-common-service-types:service-endpoint;
1006         }
1007         container service-z-end {
1008           uses org-openroadm-common-service-types:service-endpoint;
1009         }
1010         uses org-openroadm-routing-constraints:routing-constraints;
1011         uses org-openroadm-common-service-types:service-information;
1012         uses org-openroadm-common-service-types:routing-metric;
1013         uses org-openroadm-common-service-types:service-resiliency;
1014       }
1015     }
1016     output {
1017                   uses org-openroadm-common-service-types:configuration-response-common {
1018                     augment "configuration-response-common" {
1019                             leaf ack-data-reload-indicator {
1020                         type string;
1021             description
1022                     "This optional, meaning this will be populated only when 
1023                the data-reload indicator is set true";
1024                     }
1025                     } 
1026                   }
1027                   list service-reconfigure-response-list {
1028                     key "service-name";
1029                     leaf service-name {
1030                             type string;
1031                             mandatory true;
1032                             description
1033             "Existing identifier for the service to be
1034             reconfigured in the ROADM network, e.g.,    CLFI, CLCI, etc.";
1035                     } 
1036       }
1037       uses org-openroadm-common-service-types:response-parameters;
1038     }
1039   }
1040
1041
1042
1043
1044   rpc service-reconfigure-result-notification-request {
1045     description
1046       "This is the callback notification that the controller invokes on the carrier system.";
1047     input {
1048       uses org-openroadm-common-service-types:configuration-response-common;
1049       uses org-openroadm-common-service-types:service-identifiers-container;
1050     }
1051     output {
1052       uses org-openroadm-common-service-types:configuration-response-common;
1053     }
1054   }
1055
1056   rpc service-restoration {
1057     description
1058       "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a
1059        service-rpc-result Notification shall be sent.
1060        This rpc can be use to reroute a service according to 2 possible options :
1061         \t_Option1 : neither the backup-path-id nor the failure-case-id are provided, a new path shall be
1062            calculated according to the parameters provided (which includes metrics). If path computation
1063            is successful, a new path is provided, and the service is rerouted according to that path.
1064         \t_Option2 : if a backup-path-id or a failure-case-id are provided, the service shall
1065            be rerouted according to the corresponding path. If path computation is triggered and successful,
1066            a new path is provided, and the service is rerouted according to that path.";
1067     input {
1068       leaf service-name {
1069         type string;
1070         mandatory true;
1071         description
1072           "Identifier for the service to be restored in
1073            the ROADM network, e.g., CLFI, CLCI, etc.";
1074       }
1075       leaf option {
1076         type enumeration {
1077           enum permanent {
1078             value 1;
1079             description
1080               "A spare regen can be used to restore the
1081                service permanently without reverting back to the
1082                original regen";
1083           }
1084           enum temporary {
1085             value 2;
1086             description
1087               "a spare regen can be used to restore the
1088                service temporarily.   The service needs to be reverted
1089                back to the original regen transponder";
1090           }
1091         }
1092         mandatory true;
1093       }
1094       leaf backup-path-id {
1095         type uint8 {
1096           range "1..255";
1097         }
1098         description
1099           "When present, states that the service shall be rerouted according to a specific backup path";
1100       }
1101       leaf failure-case-id {
1102         type string;
1103         description
1104           "When present, states that the service shall be rerouted according to a specific backup path.
1105            This last corresponds to the provided failure case id";
1106       }
1107       uses org-openroadm-common-service-types:sdnc-request-header;
1108       uses org-openroadm-common-service-types:routing-metric;
1109     }
1110     output {
1111       uses org-openroadm-common-service-types:configuration-response-common;
1112     }
1113   }
1114
1115   rpc service-restoration-result-notification-request {
1116     description
1117       "This is the callback notification that the controller invokes on the carrier system.";
1118     input {
1119       uses org-openroadm-common-service-types:configuration-response-common;
1120       uses org-openroadm-common-service-types:service-identifiers-container;
1121     }
1122     output {
1123       uses org-openroadm-common-service-types:configuration-response-common;
1124     }
1125   }
1126
1127   rpc service-reversion {
1128     description
1129       "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a
1130        service-rpc-result Notification shall be sent.";
1131     input {
1132       leaf service-name {
1133         type string;
1134         mandatory true;
1135         description
1136           "Identifier for the service to be reverted
1137            in the ROADM network, e.g., CLFI, CLCI, etc. ";
1138       }
1139       leaf due-date {
1140         type yang:date-and-time;
1141         description
1142           "date and time service to be reverted";
1143       }
1144       uses org-openroadm-common-service-types:sdnc-request-header;
1145     }
1146     output {
1147       uses org-openroadm-common-service-types:configuration-response-common;
1148     }
1149   }
1150
1151   rpc service-reversion-result-notification-request {
1152     description
1153       "This is the callback notification that the controller invokes on the carrier system.";
1154     input {
1155       uses org-openroadm-common-service-types:configuration-response-common;
1156       uses org-openroadm-common-service-types:service-identifiers-container;
1157     }
1158     output {
1159       uses org-openroadm-common-service-types:configuration-response-common;
1160     }
1161   }
1162
1163   rpc service-reroute {
1164     description
1165       "Whether this request was validated and processed correctly. If successful, it returns the proposed new route.
1166        If acceptable, this request should be followed by a service-reroute-confirm to complete the reroute operation.";
1167     input {
1168       leaf service-name {
1169         type string;
1170         mandatory true;
1171         description
1172           "Identifier for the service to be re-routed in
1173            the ROADM network, e.g., CLFI, CLCI, etc.";
1174       }
1175       uses org-openroadm-common-service-types:sdnc-request-header;
1176       uses org-openroadm-common-service-types:routing-metric;
1177       uses org-openroadm-common-service-types:service-resiliency;
1178     }
1179     output {
1180       uses org-openroadm-common-service-types:configuration-response-common;
1181       uses org-openroadm-routing-constraints:routing-constraints;
1182     }
1183   }
1184
1185   rpc service-reroute-confirm {
1186     description
1187       "Whether this request passed initial validation and was accepted for processing. Once the request completes processing, a
1188        service-rpc-result Notification shall be sent.";
1189     input {
1190       leaf service-name {
1191         type string;
1192         mandatory true;
1193         description
1194           "Identifier for the service to be re-routed in
1195            the ROADM network, e.g., CLFI, CLCI, etc.";
1196       }
1197       uses org-openroadm-common-service-types:sdnc-request-header;
1198       uses org-openroadm-routing-constraints:routing-constraints;
1199     }
1200     output {
1201       uses org-openroadm-common-service-types:configuration-response-common;
1202     }
1203   }
1204
1205   rpc service-reroute-confirm-result-notification-request {
1206     description
1207       "This is the callback notification that the controller invokes on the carrier system.";
1208     input {
1209       uses org-openroadm-common-service-types:configuration-response-common;
1210       uses org-openroadm-common-service-types:service-identifiers-container;
1211     }
1212     output {
1213       uses org-openroadm-common-service-types:configuration-response-common;
1214     }
1215   }
1216
1217   rpc optical-tunnel-create {
1218     description
1219       "This rpc is used in a second step of service creation when the connection-type is
1220           an optical-tunnel. The optical tunnel rendering implies that end terminals optical
1221           interfaces such as router pluggables are tuned to the a correct wavelength and that
1222           the output power is set so that control loop can operate during connection setting.
1223           The rpc is invoked to confirm the optical tunnel can be established.";
1224     input {
1225       leaf service-name {
1226         type string;
1227         mandatory true;
1228         description
1229           "Identifier used in the second step of the optical-tunnel service creation.  
1230            Identifies the service (optical tunnel between SRG PPs) to be created 
1231            in the ROADM network.";
1232       }
1233       leaf common-id {
1234         type string;
1235         mandatory true;
1236         description
1237           "Identifier used in the first step of optical-tunnelservice creation using 
1238           temp-service-create rpc. Identifies the temporary service for which resources 
1239           have been reserved after a successful path computation";
1240       }
1241       leaf set-frequency {
1242         type org-openroadm-common-optical-channel-types:frequency-THz;
1243         mandatory true;
1244         description
1245           "Center Frequency in THz.";
1246       }
1247       leaf full-bandwidth-at-3dB {
1248         type org-openroadm-common-optical-channel-types:frequency-GHz;
1249         mandatory true;
1250         description
1251           "Signal full bandwidth at 3dB bellow the peak in GHz.";
1252       }
1253       leaf full-bandwidth-at-10dB {
1254         type org-openroadm-common-optical-channel-types:frequency-GHz;
1255         mandatory true;
1256         description
1257             "Signal full bandwidth at 10dB bellow the peak in GHz.";
1258       }
1259       uses org-openroadm-common-service-types:sdnc-request-header;
1260     }
1261     output {
1262       uses org-openroadm-common-service-types:configuration-response-common;
1263     }
1264   }
1265
1266   rpc optical-tunnel-request-cancel {
1267     description
1268       "This rpc is used to abort service creation when the connection-type is
1269             an optical-tunnel, if the conditions required to set-up the end to end service
1270           can not be met by the end terminals optical interfaces such as router pluggables.
1271           When the rpc is invoked, any resource temporary reserved for the second step of
1272           service creation shall be released : this rpc cancels service path rendering between
1273           SRG PPs.";
1274     input {
1275       leaf service-name {
1276         type string;
1277         description
1278           "Identifier used in the first step of service creation using service create rpc.";
1279       }
1280       leaf common-id {
1281         type string;
1282         description
1283           "Identifier used in the first step of optical-tunnelservice creation using 
1284            temp-service-create rpc. Identifies the temporary service for which resources 
1285            have been reserved after a successful path computation";
1286       } 
1287       uses org-openroadm-common-service-types:sdnc-request-header;
1288     }
1289     output {
1290       uses org-openroadm-common-service-types:configuration-response-common;
1291     }
1292   }
1293
1294   rpc network-re-optimization {
1295     input {
1296       leaf service-name {
1297         type string;
1298         description
1299           "Identifier for the service in the ROADM network,
1300            e.g., CLFI, CLCI, etc. whose path is to be checked by the RNC
1301            for re-optimization";
1302       }
1303       leaf a-end {
1304         type string;
1305         description
1306           "Services whose A-ends are terminated at the
1307            specified office location are to be checked by the RNC for
1308            re-optimization";
1309       }
1310       leaf z-end {
1311         type string;
1312         description
1313           "Services whose Z-ends are terminated at the
1314            specified office location are to be checked by the RNC for
1315            re-optimization ";
1316       }
1317       leaf pass-through {
1318         type string;
1319         description
1320           "Services that are pass-through (either via
1321            regen or express) at the specified office location are to
1322            be checked by the RNC for re-optimization";
1323       }
1324       leaf customer-code {
1325         type string;
1326         description
1327           "Services that belong to the specified customer
1328            are to be checked by the RNC for re-optimization ";
1329       }
1330       uses org-openroadm-common-service-types:sdnc-request-header;
1331       uses org-openroadm-common-service-types:routing-metric;
1332     }
1333     output {
1334       uses org-openroadm-common-service-types:configuration-response-common;
1335       leaf optimization-candidate {
1336         type string;
1337       }
1338     }
1339   }
1340
1341 rpc add-openroadm-operational-modes-to-catalog {
1342             description
1343               "This rpc is used to feed the operational mode catalog with openroadm operational modes";
1344             input {
1345               uses org-openroadm-common-service-types:sdnc-request-header;
1346               container operational-mode-info {
1347                      container grid-parameters {
1348                                      description
1349                                        "Parameters associated with global spectrum use";
1350                                      uses org-openroadm-operational-mode-catalog:operational-mode-grid-parameters;
1351                              }
1352                                  container xponders-pluggables {
1353                                          description
1354                                             "Parameters associated with xponders and pluggables";
1355                                      list xponder-pluggable-openroadm-operational-mode {
1356                                                 key "openroadm-operational-mode-id";
1357                                                 description
1358                                                   "defines the openroadm operational mode pointing to an official specification ";
1359                                                 leaf openroadm-operational-mode-id {
1360                                                     type string;
1361                                                     description
1362                                                         "openroadm operational mode which points to a specific spreadsheet of optical specifications";
1363                                                     }
1364                                         uses org-openroadm-operational-mode-catalog:operational-mode-transponder-parameters;
1365                          }
1366                                  }
1367                                  container roadms {
1368                                      description
1369                                        "Parameters associated with roadms";
1370                                      uses org-openroadm-operational-mode-catalog:operational-mode-roadm-express-parameters;
1371                                      uses org-openroadm-operational-mode-catalog:operational-mode-roadm-add-parameters;
1372                                      uses org-openroadm-operational-mode-catalog:operational-mode-roadm-drop-parameters;
1373                              }
1374                                  container amplifiers {
1375                                      description
1376                                        "Parameters associated with amplifiers";
1377                                      uses org-openroadm-operational-mode-catalog:operational-mode-amplifier-parameters;
1378                              }
1379               }
1380             }
1381             output {
1382               uses org-openroadm-common-service-types:configuration-response-common;
1383             }
1384   }
1385  
1386   rpc add-specific-operational-modes-to-catalog {
1387     description
1388       "This rpc is used to feed the operational mode catalog with specific operational modes for
1389            \txponders or external pluggables";
1390     input {
1391       uses org-openroadm-common-service-types:sdnc-request-header;
1392       container operational-mode-info {
1393         container specific-operational-modes {
1394           description
1395             "All specific operational modes corresponding to bookended or alien units";
1396           list specific-operational-mode {
1397             key "operational-mode-id";
1398             description
1399               "List of all declared specific operationnal modes";
1400             leaf operational-mode-id {
1401               type string;
1402               description
1403                 "unique identifier which identifies the operational mode";
1404             }
1405             uses org-openroadm-operational-mode-catalog:operational-mode-grid-parameters;
1406             uses org-openroadm-operational-mode-catalog:operational-mode-transponder-parameters;
1407           }
1408         }
1409       }
1410     }
1411     output {
1412       uses org-openroadm-common-service-types:configuration-response-common;
1413     }
1414   }
1415   
1416   rpc service-srlg-get {
1417     input {
1418       leaf service-name {
1419         type string;
1420         description
1421           "Identifier for the service in the ROADM network,
1422           e.g., CLFI, CLCI, etc. whose path or other risks must be evaluated by the RNC";
1423       }
1424       leaf SRLG-type {
1425         type org-openroadm-common-types:SRLG-type;
1426         description
1427           "Type of SRLG, Site SRLG, Node SRLG, Fiber SRLG or Link SRLG. If SRLG-type is not provided 
1428           in input, output should include all types of SRLGs for a given service-name";
1429       }
1430       leaf due-date {
1431         type yang:date-and-time;
1432         description
1433           "Due-date is required to get list of SRLGs for specific validity period. If Due-date is not 
1434           provited in the input, RPC should return list of current/active SRLGS";
1435       }
1436     }
1437     output {
1438       list SRLG-list {
1439         key "SRLG-Id";
1440         leaf SRLG-Id {
1441           type uint32;
1442           description
1443             "unique identifier for SRLG";
1444         }
1445         leaf SRLG-name {
1446           type string;
1447           description
1448             "Name of the SRLG";
1449         }
1450         leaf SRLG-type {
1451           type org-openroadm-common-types:SRLG-type; 
1452           description
1453             "Type of SRLG, Site SRLG, Node SRLG, Fiber SRLG or Link SRLG";
1454         }
1455         leaf SRLG-length {
1456           type decimal64 {
1457             fraction-digits 2;
1458           }
1459           description
1460             "Fiber length in desired distance unit of measure";
1461         }
1462       }
1463     } 
1464   }
1465
1466   notification service-rpc-result {
1467     description
1468       "This Notification indicates result of service RPC";
1469     leaf notification-type {
1470       type org-openroadm-common-service-types:service-notification-types;
1471     }
1472     uses org-openroadm-common-types:rpc-response-status;
1473     uses org-openroadm-common-service-types:service-notification-result;
1474     container path-computation-result {
1475       when "../notification-type = 'path-computation-result'" {
1476         description
1477           "an optical-tunnel service triggers the leaf providing
1478            information on the operationnal mode selected by the pce";
1479       }
1480       container aToZ {
1481         description
1482           "Describes the settings and the performances for the A to Z path";
1483         uses org-openroadm-resource:common-och-otsi-attributes;
1484         uses org-openroadm-resource:path-computation-outputs;
1485       }
1486       container zToA {
1487         description
1488           "Describes the settings and the performances for the Z to A path";
1489         uses org-openroadm-resource:common-och-otsi-attributes;
1490         uses org-openroadm-resource:path-computation-outputs;
1491       }
1492     }
1493   }
1494
1495   notification service-traffic-flow {
1496     description
1497       "This Notification indicates that traffic is flowing again on the service after an administrative action has completed";
1498     leaf service-name {
1499       type string;
1500       mandatory true;
1501       description
1502         "Identifier for the service being reported on";
1503     }
1504     leaf version-number {
1505       type uint64;
1506       description
1507         "Identifier for the versioned service";
1508     }
1509     leaf actual-date {
1510       type yang:date-and-time;
1511       description
1512         "Actual date and time traffic started flowing";
1513     }
1514   }
1515
1516   notification service-notification {
1517     description
1518       "This Notification that a service has been added, modified or removed.
1519        A resourceCreation notification shall contain the created service in its entirety.
1520        A resourceModified notification shall contain just the modified field, plus the service identifier
1521        A resourceDeleted notification shall just contain the service identifier";
1522     leaf notificationType {
1523       type org-openroadm-resource-types:resource-notification-type;
1524       description
1525         "Whether this notification indicates a service creation, service modification or service deletion.";
1526     }
1527     leaf version-number {
1528       type uint64;
1529       description
1530         "Identifier for the versioned service";
1531     }
1532     uses org-openroadm-common-service-types:service;
1533   }
1534
1535   notification optical-tunnel-created {
1536     description
1537       "This Notification is used to confirm that an optical-tunnel service has been created.
1538        It shall contain the created service in its entirety";
1539     leaf notificationType {
1540       type org-openroadm-resource-types:resource-notification-type;
1541       description
1542         "Whether this notification indicates a service creation, or service-reconfigure.";
1543     }
1544     leaf version-number {
1545       type uint64;
1546       description
1547         "Identifier for the versioned service";
1548     }
1549     leaf actual-date {
1550       type yang:date-and-time;
1551       description
1552         "Actual date and time traffic started flowing";
1553     }
1554     uses org-openroadm-common-service-types:service;
1555   }
1556   
1557   notification non-rpc-related-notification {
1558     description
1559       "Used to notify SDN controller that :
1560        _a change occured in the data tree associated with the topology or the service Datastore of the RNC
1561        _the attenuation on a ROADM to ROADM link as exceeded the value that can be accepted with current design
1562        _the restoration of an optical OTN/WDM service";
1563     leaf notificationType {
1564       type org-openroadm-controller-customization:non-rpc-related-notification-type;
1565       description
1566         "This notification indicates whether a change occured in the data tree
1567          associated with the topology or the service Datastore, an out of limit
1568          attenuation on a WDM link, or the restoration of an optical WDM/OTN service.";
1569     }
1570     leaf notificationId {
1571       type string;
1572       description
1573         "Unique identifier for the notification.";
1574     }
1575     leaf notification-time {
1576       type yang:date-and-time;
1577       description
1578         "Time at which notification is raised";
1579     }
1580     leaf service-name {
1581       when "../notificationType = 'service-state-change' or ../notificationType = 'autonomous-optical-restoration-triggered'" {
1582         description
1583           "When Service Data store is modified, or a restoration has been triggered
1584            service-name is provided";
1585       }
1586       type string;
1587     }
1588     leaf impacted-resource-type {
1589       when "../notificationType = 'topology-change' or ../notificationType = 'service-state-change'" {
1590         description
1591           "Used to provide additional information on the type of resource impacted by the
1592            change in the data-store, to target more effectively consecutive request";
1593       }
1594       type string;
1595     }
1596     leaf impacted-resource-id {
1597       when "../notificationType = 'topology-change' or ../notificationType = 'service-state-change'" {
1598         description
1599           "Identifies the resource impacted by the change in the data-store";
1600       }
1601       type string;
1602     }
1603     leaf topology-layer {
1604       when "../notificationType = 'topology-change'" {
1605         description
1606           "indicates the layer associated with the topological change";
1607       }
1608       type enumeration {
1609         enum openroadm-topology {
1610           value 1;
1611         }
1612         enum otn-topology {
1613           value 2;
1614         }
1615       }
1616     }
1617   }
1618
1619   container service-list {
1620     description
1621       "List of service. Can only be created, deleted, modified, etc. using special RPCs. Will only contain one service with a given name.
1622        Does not contain historical (deleted or rather those passed their end time) or draft services. If two services exist with the same
1623        name (with non-lapping start-end times for example), this table will contain the current one. If only planned services exist for
1624        the name, the one with the earliest start time will be present
1625       ";
1626     list services {
1627       key "service-name";
1628       uses org-openroadm-common-service-types:service;
1629     }
1630   }
1631   container versioned-service-list {
1632     description
1633       "List of service, regardless of lifecycle state. Can only be created, deleted, modified, etc. using special RPCs. Can report more than one
1634        version of a service, if supported by the implementation. May contain deleted services, multiple versions of the same service, as identified
1635        by its name, etc.";
1636     list services {
1637       key "service-name version-number";
1638       leaf version-number {
1639         type uint64;
1640       }
1641       uses org-openroadm-common-service-types:service;
1642     }
1643   }
1644   container temp-service-list {
1645     description
1646       "List of temporary services Can only be created, deleted, modified, etc. using special RPCs.";
1647     list services {
1648       key "common-id";
1649       uses org-openroadm-common-service-types:service {
1650         refine "service-name" {
1651           mandatory false;
1652         }
1653         augment "service-a-end" {
1654           list equipment-required {
1655             key "equipment-identifier";
1656             description
1657               "List of required equipment, including equipment type, state and
1658               quantity";
1659             uses org-openroadm-common-service-types:equipment-info;
1660           }
1661         }
1662         augment "service-z-end" {
1663           list equipment-required {
1664             key "equipment-identifier";
1665             description
1666               "List of required equipment, including equipment type, state and
1667               quantity";
1668             uses org-openroadm-common-service-types:equipment-info;
1669           }
1670         }
1671       }
1672       uses org-openroadm-common-service-types:intermediate-site-container;
1673       list supporting-service-hierarchy {
1674         key "service-identifier";
1675         uses org-openroadm-common-service-types:service-hierarchy;
1676         description
1677           "This lists all the supporting services and their respective hierarchy, includes the
1678           proposed one";
1679       }
1680       uses org-openroadm-common-service-types:existing-service-grouping {
1681         refine "existing-service-attributes/reusable-existing-resources" {
1682           default "all";
1683         }
1684       }
1685     }
1686   }
1687   container controller-behaviour-settings {
1688     description
1689       "Parameters allowing to set the controller behaviour";
1690     uses org-openroadm-controller-customization:controller-parameters;
1691   }
1692   container operational-mode-catalog {
1693     description
1694       "Store parameters associated with openroadm specifications and specific operational modes";
1695     uses org-openroadm-operational-mode-catalog:operational-mode-catalog;
1696   }
1697 }