Remove openroadm and tapi models building
[transportpce.git] / ordmodels / service / src / main / yang / org-openroadm-common-service-types@2021-12-10.yang
1 module org-openroadm-common-service-types {
2   namespace "http://org/openroadm/common/service/types";
3   prefix org-openroadm-common-service-types;
4
5   import ietf-yang-types {
6     prefix yang;
7     revision-date 2013-07-15;
8   }
9   import ietf-inet-types {
10     prefix inet;
11     revision-date 2013-07-15;
12   }
13   import org-openroadm-routing-constraints {
14     prefix org-openroadm-routing-constraints;
15     revision-date 2021-12-10;
16   }
17   import org-openroadm-topology {
18     prefix org-openroadm-topology;
19     revision-date 2021-12-10;
20   }
21   import org-openroadm-common-equipment-types {
22     prefix org-openroadm-common-equipment-types;
23     revision-date 2019-11-29;
24   }
25   import org-openroadm-common-state-types {
26     prefix org-openroadm-common-state-types;
27     revision-date 2019-11-29;
28   }
29   import org-openroadm-common-node-types {
30     prefix org-openroadm-common-node-types;
31     revision-date 2021-05-28;
32   }
33   import org-openroadm-resource-types {
34     prefix org-openroadm-resource-types;
35     revision-date 2021-09-24;
36   }
37   import org-openroadm-otn-common-types {
38     prefix org-openroadm-otn-common-types;
39     revision-date 2021-09-24;
40   }
41   import org-openroadm-common-types {
42     prefix org-openroadm-common-types;
43     revision-date 2021-12-10;
44   }
45   import org-openroadm-equipment-states-types {
46     prefix org-openroadm-equipment-states-types;
47     revision-date 2019-11-29;
48   }
49   import org-openroadm-service-format {
50     prefix org-openroadm-service-format;
51     revision-date 2019-11-29;
52   }
53   import org-openroadm-common-attributes {
54     prefix org-openroadm-common-attributes;
55     revision-date 2021-09-24;
56   }
57   import org-openroadm-common-phy-codes {
58     prefix org-openroadm-common-phy-codes;
59     revision-date 2021-05-28;
60   }
61   import org-openroadm-common-optical-channel-types {
62     prefix org-openroadm-common-optical-channel-types;
63     revision-date 2021-12-10;
64   }
65   import org-openroadm-resource {
66     prefix org-openroadm-resource;
67     revision-date 2021-12-10;
68   }
69   
70
71   organization
72     "Open ROADM MSA";
73   contact
74     "OpenROADM.org";
75   description
76     "YANG definitions of common service types.
77
78       Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
79       All other rights reserved.
80
81       Redistribution and use in source and binary forms, with or without modification,
82       are permitted provided that the following conditions are met:
83
84       * Redistributions of source code must retain the above copyright notice, this
85         list of conditions and the following disclaimer.
86       * Redistributions in binary form must reproduce the above copyright notice,
87         this list of conditions and the following disclaimer in the documentation and/or
88         other materials provided with the distribution.
89       * Neither the Members of the Open ROADM MSA Agreement nor the names of its
90         contributors may be used to endorse or promote products derived from this software
91         without specific prior written permission.
92
93       THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS''
94       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
95       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
96       IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT,
97       INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98       NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA,
99       OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
100       WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
101       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
102       POSSIBILITY OF SUCH DAMAGE";
103
104   revision 2021-12-10 {
105     description
106       "Version 10.1";
107   }
108   revision 2021-09-24 {
109     description
110       "Version 10.0";
111   }
112   revision 2021-05-28 {
113     description
114       "Version 9.1";
115   }
116   revision 2021-03-26 {
117     description
118       "Version 9.0";
119   }
120   revision 2020-12-11 {
121     description
122       "Version 8.1";
123   }
124   revision 2020-09-25 {
125     description
126       "Version 8.0";
127   }
128   revision 2020-05-29 {
129     description
130       "Version 7.1.0";
131   }
132   revision 2020-03-27 {
133     description
134       "Version 7.0.0";
135   }
136   revision 2019-11-29 {
137     description
138       "Version 6.1.0";
139   }
140   revision 2019-09-27 {
141     description
142       "Version 6.0.0";
143   }
144   revision 2019-05-31 {
145     description
146       "Version 5.1.0";
147   }
148   revision 2019-03-29 {
149     description
150       "Version 5.0.0";
151   }
152   revision 2018-11-30 {
153     description
154       "Version 4.1.0";
155   }
156   revision 2018-09-28 {
157     description
158       "Version 4.0.0";
159   }
160   revision 2018-05-30 {
161     description
162       "Version 3.1.0";
163   }
164   revision 2018-03-30 {
165     description
166       "Version 3.0.0";
167   }
168   revision 2017-12-15 {
169     description
170       "Version 2.2";
171   }
172   revision 2017-09-29 {
173     description
174       "Version 2.1";
175   }
176   revision 2017-07-28 {
177     description
178       "Version 2.0.1 - added revision-date to imports";
179   }
180   revision 2017-06-26 {
181     description
182       "Version 2.0";
183   }
184   revision 2016-10-14 {
185     description
186       "Version 1.2";
187   }
188
189   identity service-resiliency-type-identity {
190     description
191       "A unique resiliency type identification of the service.";
192   }
193
194   identity unprotected {
195     base service-resiliency-type-identity;
196     description
197       "the service is not protected in the OpenROADM layer";
198   }
199
200   identity unprotected-diversely-routed {
201     base service-resiliency-type-identity;
202     description
203       "the service is not protected in the OpenROADM layer, but may be protected in a higher layer
204           a coupled service that may be routed partially or fully disjointly is defined";
205   }
206
207   identity protected {
208     base service-resiliency-type-identity;
209     description
210       "the service is protected in the OpenROADM layer : the protection is handled
211        autonomously in this layer";
212   }
213
214   identity restorable {
215     base service-resiliency-type-identity;
216     description
217       "the service can be restored autonomously in the OpenROADM layer";
218   }
219
220   identity external-trigger-restorable {
221     base service-resiliency-type-identity;
222     description
223       "the service can be restored in the OpenROADM layer, but the restoration is triggered
224        at a higher layer through service models' rpc";
225   }
226
227   typedef rpc-actions {
228     type enumeration {
229       enum service-create {
230         value 1;
231       }
232       enum service-feasibility-check {
233         value 2;
234       }
235       enum service-delete {
236         value 3;
237       }
238       enum equipment-notification {
239         value 4;
240       }
241       enum temp-service-create {
242         value 5;
243       }
244       enum temp-service-delete {
245         value 6;
246       }
247       enum service-roll {
248         value 7;
249       }
250       enum service-reconfigure {
251         value 8;
252       }
253       enum service-restoration {
254         value 9;
255       }
256       enum service-reversion {
257         value 10;
258       }
259       enum service-reroute {
260         value 11;
261       }
262       enum service-reroute-confirm {
263         value 12;
264       }
265       enum network-re-optimization {
266         value 13;
267       }
268       enum service-feasibility-check-bulk {
269         value 14;
270       }
271       enum ber-test {
272         value 15;
273       }
274       enum controller-parameters-setting {
275         value 16;
276       }
277       enum optical-tunnel-create {
278           value 17;
279       }
280       enum optical-tunnel-request-cancel {
281           value 18;
282       }
283       enum fill-catalog-with-or-operational-modes {
284           value 19;
285       }
286       enum fill-catalog-with-specific-operational-modes {
287           value 20;
288       }
289     }
290     description
291       "rpc-actions include all the rpc methods";
292   }
293
294   typedef ethernet-encoding-type {
295     type enumeration {
296       enum 10GBASE-W {
297         value 1;
298       }
299       enum 10GBASE-R {
300         value 2;
301       }
302     }
303   }
304
305   typedef mapping-mode-type {
306     type enumeration {
307       enum GFP-F {
308         value 1;
309         reference
310           "GFP-F - ITU-T G.7041 SubClause 7.1, Payload Only";
311       }
312       enum GFP-E {
313         value 2;
314         reference
315           "GFP-E - ITU-T G.7041 SubClause 7.9, Payload + Preamble + Ordered Sets";
316       }
317       enum PCS-Transparent {
318         value 3;
319         reference
320           "PCS-Transparent - ITU-T G.709 Subclause 17.2 , CBR10G3 mapping to ODU2e";
321       }
322     }
323   }
324
325   typedef service-layer-type {
326     type enumeration {
327       enum wdm {
328         value 1;
329       }
330       enum otn {
331         value 2;
332       }
333     }
334   }
335
336   typedef service-notification-types {
337     type enumeration {
338       enum service-create-result {
339         value 1;
340       }
341       enum service-reconfigure-result {
342         value 2;
343       }
344       enum service-delete-result {
345         value 3;
346       }
347       enum service-roll-result {
348         value 4;
349       }
350       enum service-revert-result {
351         value 5;
352       }
353       enum service-reroute-result {
354         value 6;
355       }
356       enum service-restoration-result {
357         value 7;
358       }
359       enum successful-path-computation-resource-reserved {
360         value 8;
361       }
362       enum path-computation-failed {
363         value 9;
364       }
365     }
366   }
367
368   typedef connection-type {
369     type enumeration {
370       enum service {
371         value 1;
372       }
373       enum infrastructure {
374         value 2;
375       }
376       enum roadm-line {
377         value 3;
378       }
379       enum optical-tunnel {
380         value 4;
381       }
382     }
383   }
384
385   typedef resource-status-type {
386     type enumeration {
387       enum deployed {
388         value 1;
389         description
390           "find the best route using deployed network resources,
391            regardless of network failures; lifecycle-state must
392            be deployed and operational-state is ignored.";
393       }
394       enum in-service {
395         value 2;
396         description
397           "find the best route using deployed network resources,
398            but route around failed resources; lifecycle-state
399            must be deployed and operational-state must be
400            inService.";
401       }
402       enum planned {
403         value 3;
404         description
405           "find the best route using both deployed and planned
406            network resources; lifecycle-state must be planned
407            or deployed (deploying, deployed-updating, deployed-
408            augmented, and deploy-failed may be considered
409            planned states) and operational-state is ignored. if
410            planned is selected, due-date must be specified in
411            the service request.";
412       }
413     }
414     default "deployed";
415     description
416       "identifies the state of network resources required to
417        complete a service request.  default is deployed";
418   }
419
420   typedef service-condition {
421     type enumeration {
422       enum restored-temporarily {
423         value 1;
424       }
425       enum re-routed-temporarily {
426         value 2;
427       }
428       enum activated-for-service {
429         value 3;
430       }
431       enum activated-for-further-check {
432         value 4;
433       }
434       enum activated-for-troubleshooting-failure {
435         value 5;
436       }
437     }
438   }
439
440   grouping service-and-supporting-services {
441     description
442       "Service identifiers and supporting services details";
443     uses service-identifiers-container;
444     uses supporting-services-identifiers-and-ends;
445   }
446
447   grouping supporting-services-identifiers-and-ends {
448     container supporting-services {
449       list supporting-service-details {
450         key "index";
451         leaf index {
452           type uint16;
453           description
454             "Service number of the supporting service";
455         }
456         uses service-identifiers-container;
457         uses service-ends-container;
458       }
459     }
460   }
461
462   grouping trail-trace {
463     description
464       "Trail trace grouping";
465     uses org-openroadm-common-attributes:trail-trace-tx;
466     uses org-openroadm-common-attributes:trail-trace-other;
467   }
468
469   grouping tcm-attributes {
470     description
471       "Tandem Connection Monitoring (TCM) attributes";
472     leaf layer {
473       type uint8 {
474         range "1..6";
475       }
476       description
477         "TCM layer";
478     }
479     leaf monitoring-mode {
480       type enumeration {
481         enum not-terminated {
482           description
483             "Not Terminated: no detection or generation.
484              Overhead is passed through the interface transparently in receive direction
485              unless extension is set for erase";
486         }
487         enum terminated {
488           description
489             "Terminated: detection and generation enabled.
490              Overhead is erased (replaced with all zeros) in receive direction, unless
491              extension is set to passthrough";
492         }
493         enum monitored {
494           description
495             "Monitored: detection enabled.
496              Overhead is passed through the interface transparently in receive direction
497              unless extension is set for erase";
498         }
499       }
500       description
501         "Monitoring mode of the TCM layer";
502     }
503     leaf ltc-act-enabled {
504       type boolean;
505       description
506         "enable/disable alarm transfer on detection of Loss of Tandem Connection (LTC)";
507     }
508     leaf proactive-delay-measurement-enabled {
509       type boolean;
510       description
511         "enable/disable proactive Delay Measurement for TCM";
512     }
513     leaf tcm-direction {
514       type org-openroadm-otn-common-types:tcm-direction-enum;
515       description
516         "Direction of TCM.";
517     }
518     uses trail-trace;
519     uses org-openroadm-common-attributes:deg-threshold;
520   }
521
522   grouping otn-attributes-grp {
523     container otn-attributes {
524       when "(../service-format='OTU' or ../service-format='ODU')" {
525         description
526           "For any OTN services (OTU and OTN)";
527       }
528       uses org-openroadm-common-attributes:parent-odu-allocation;
529       uses org-openroadm-common-types:fec-grouping {
530         description
531           "OTN FEC / Forward Error Correction";
532       }
533       uses org-openroadm-common-attributes:trail-trace-tx;
534       uses org-openroadm-common-attributes:trail-trace-other;
535       uses org-openroadm-common-attributes:deg-threshold;
536       leaf-list reserved-tcm-layer {
537         type uint8;
538       }
539       list tcm {
540         key "layer tcm-direction";
541         max-elements 12;
542         description
543           "Tandem Connection Management";
544         uses tcm-attributes;
545       }
546     }
547   }
548
549   grouping ethernet-subrate-attributes-grp {
550     container ethernet-attributes {
551       when "(../service-format='Ethernet')" {
552         description
553           "For any Ethernet services";
554       }
555       uses org-openroadm-common-types:fec-grouping {
556         description
557           "ETH FEC / Forward Error Correction";
558       }
559       uses org-openroadm-common-service-types:subrate-eth-sla;
560     }
561   }
562
563   grouping service-ends-container {
564     container service-a-end {
565       uses service-endpoint-summary;
566     }
567     container service-z-end {
568       uses service-endpoint-summary;
569     }
570   }
571
572   grouping service-endpoint-summary {
573     description
574       "Brief form of service-endpoint";
575     container service-endpoint-details {
576       leaf clli {
577         type string;
578         mandatory true;
579         description
580           "CLLI. Note this CLLI must match the site associated with the device-id of this endpoint";
581       }
582       uses org-openroadm-resource-types:device-id;
583       container tx-direction {
584         uses service-port;
585       }
586       container rx-direction {
587         uses service-port;
588       }
589     }
590   }
591
592   grouping intermediate-site-container {
593     description
594       "Intermediate site used in the service feasibility check output.
595        This is different from the service-endpoint structure";
596     list intermediate-site {
597       key "clli";
598       description
599         "List of intermediate sites in the service feasiblity check
600          output response";
601       leaf clli {
602         type string;
603       }
604       list node {
605         key "node-id";
606         leaf node-id {
607           type org-openroadm-common-node-types:node-id-type;
608           description
609             "List of nodes within a CLLI";
610         }
611         list equipment-required {
612           key "equipment-identifier";
613           description
614             "List of required equipment, including equipment type, state and
615              quantity";
616           uses equipment-info;
617         }
618       }
619     }
620   }
621
622   grouping service-identifiers-container {
623     container service-identifiers {
624       leaf service-name {
625         type string;
626       }
627       leaf common-id {
628         type string;
629       }
630       leaf version-number {
631         type uint64;
632       }
633     }
634   }
635
636   grouping configuration-response-common {
637     container configuration-response-common {
638       leaf request-id {
639         type string;
640         mandatory true;
641       }
642       leaf response-code {
643         type string;
644         mandatory true;
645       }
646       leaf response-message {
647         type string;
648       }
649       leaf ack-final-indicator {
650         type string;
651         mandatory true;
652       }
653     }
654   }
655
656   grouping response-parameters {
657     container response-parameters {
658       description
659         "Violated soft constraints";
660       uses org-openroadm-routing-constraints:routing-constraints;
661     }
662   }
663
664   grouping subrate-eth-sla {
665     container subrate-eth-sla {
666       presence "Explicit assignment of subrate ethernet allocation";
667       description
668         "SLA (Service Level Agreement) for subrate Ethernet";
669       uses org-openroadm-common-types:eth-rate-and-burst-size;
670     }
671   }
672
673   grouping external-interface-characteristics {
674     list supported-operational-modes {
675       key "preference";
676       description
677         "list of supported operational modes associated to a preference
678          for their selection by the Path Computation Engine (1 is the highest priority)
679          only one operational mode shall be associated to a preference. 2 leaves present
680          since this mode could be either specific or an openROADM operational-mode";
681       leaf preference {
682         type int16;
683         description
684           "preference/priority associated to the operational mode";
685       }
686       leaf operational-mode-id {
687         type string;
688         description
689           "the supported operational mode : either openROADM or specific ";
690       }
691     }
692     leaf min-frequency {
693       type org-openroadm-common-optical-channel-types:frequency-THz;
694       description
695         "Minimum acceptable Frequency in THz.";
696     }
697     leaf max-frequency {
698       type org-openroadm-common-optical-channel-types:frequency-THz;
699       description
700         "Minimum acceptable Frequency in THz.";
701     }
702     leaf min-granularity {
703       type org-openroadm-common-optical-channel-types:frequency-GHz;
704       description
705         "Minimum grid granularity in GHz.";
706     }
707   }
708
709   grouping service-endpoint {
710     leaf service-format {
711       type org-openroadm-service-format:service-format;
712       mandatory true;
713       description
714         "Format of the requested service: Ethernet, OTU, etc.";
715     }
716     leaf service-rate {
717       when "../service-format != 'OMS' and ../service-format != 'ODU'" {
718         description
719           "service rate not applicable when service
720            format is roadmline or ODU; valid for OTU since service-rate has
721            already been supported for wdm layer OTU services (100 for OTU4)";
722       }
723       type uint32;
724       description
725         "Rate of the requested service in GBps";
726     }
727     leaf is-split-lambda {
728       type boolean;
729       default "false";
730       description
731         "This flag allows to specify whether to use split-lambda. It can be user controlled
732          (or specified) or controller initiated. This is only applicable for line-service or
733          network ports";
734     }
735     leaf split-lambda-service-rate {
736       when "../is-split-lambda = 'true' and
737             ../service-format != 'OMS' and
738             ../service-format != 'ODU'";
739       type uint32;
740       description
741         "This service rate is only applicable when the split-lambda is enabled.
742          It will help to identify how many wavelengths to use. Only applicable
743          to the WDM layer and OTUCn services.";
744     }
745     leaf other-service-format-and-rate {
746       type string;
747       description
748         "Used when service-format is set to other in the bookend xponder use case.
749          The use of other-service-format-and-rate is not standardized in the Open ROADM MSA
750          and intended to allow the controller to support non-Open ROADM service formats.
751          This value encodes both the service format and the rate supported.
752          This field should not be specified when service format != other.";
753     }
754     leaf otu-service-rate {
755       when "../service-format = 'OTU'" {
756         description
757           "only applicable for OTU services";
758       }
759       type identityref {
760         base org-openroadm-otn-common-types:otu-rate-identity;
761       }
762       description
763         "OTU Rate of the requested service";
764     }
765     leaf odu-service-rate {
766       when "../service-format = 'ODU'" {
767         description
768           "only applicable for ODU services";
769       }
770       type identityref {
771         base org-openroadm-otn-common-types:odu-rate-identity;
772       }
773       description
774         "ODU Rate of the requested service";
775     }
776     leaf ethernet-encoding {
777       when "(../service-format='Ethernet')
778             and
779             (../service-rate=10)" {
780         description
781           "Applicable only to Ethernet 10G services";
782       }
783       type ethernet-encoding-type;
784       description
785         "Ethernet encoding type";
786     }
787     leaf mapping-mode {
788       when "(../service-format='Ethernet')
789             and
790             (../service-rate=10)" {
791         description
792           "Mapping Mode, currently only defined for Ethernet 10G services";
793       }
794       type mapping-mode-type;
795       description
796         "Mapping mode.";
797     }
798     leaf client-phy-code {
799       type identityref {
800         base org-openroadm-common-phy-codes:client-phy-code-identity;
801       }
802       description
803         "Client PHY Code for the service end point.";
804     }
805     uses otn-attributes-grp;
806     leaf clli {
807       type string;
808       mandatory true;
809       description
810         "CLLI. Note this CLLI must match the site associated with the device-id of this
811          endpoint";
812     }
813     uses org-openroadm-resource-types:device-id;
814     list tx-direction {
815       key "index";
816       leaf index {
817         type uint8;
818         description
819           "Used to list tx-direction attributes for each split-lambda wavelength/service";
820       }
821       uses service-port;
822       uses service-lgx;
823       uses service-tail;
824     }
825     list rx-direction {
826       key "index";
827       leaf index {
828         type uint8;
829         description
830           "used to list rx-direction attributes for each split-lambda wavelength/service";
831       }
832       uses service-port;
833       uses service-lgx;
834       uses service-tail;
835     }
836     leaf optic-type {
837       type org-openroadm-common-equipment-types:optic-types;
838     }
839     container router {
840       description
841         "Needed for communication with DWDM pluggable";
842       leaf node-id {
843         type org-openroadm-common-node-types:node-id-type;
844         description
845           "Node id. This is reported against the service, but may not get reflected in the service in the network.";
846       }
847       leaf ip-address {
848         type inet:ip-address;
849         description
850           "Router IP Address. This is reported against the service, but may not get reflected in the service in the network.";
851       }
852       leaf url {
853         type string;
854         description
855           "URL needed for communication with DWDM pluggable. This is reported against the service, but may not get reflected in the service in the network.";
856       }
857     }
858     leaf user-label {
859       type string;
860       mandatory false;
861       description
862         "Label for service endpoint, defined by the user";
863     }
864     uses ethernet-subrate-attributes-grp;
865     leaf project-id {
866         type string;
867         description
868           "Project identifier for the service end point";
869      }
870      leaf project-note {
871         type string;
872         description
873           "Additional details associated with the service end point project";
874      }
875   }
876
877   typedef existing-resource-reuse-type {
878     description
879       "Used to indicate the type of resource that the existing service
880       can reuse wherever possible (best-effort)";
881     type enumeration {
882       enum regenerator {
883         description
884           "Indicates reuse regenerator";
885         value 1;
886       }
887       enum wavelength {
888         description
889           "Indicates reuse of wavelength";
890         value 2;
891       }
892       enum spectrum-portion {
893         description
894           "Indicates reuse of frequency slot(s). Reuse the exact        
895           or partial portion of the spectrum of the original service
896           specturm";
897         value 3;
898       }
899       enum xponder {
900         description
901           "This could be a transponder/muxponder/switchponder";
902         value 4;
903       }
904       enum all {
905         description
906           "Reuse all possible options";
907           value 99;
908       }
909     }
910   }
911
912   grouping existing-service-grouping {
913     container existing-service-attributes {
914       description
915         "This consists of all the attributes related to the existing service";
916       leaf is-existing {
917         type boolean;
918         description
919           "This is set true if feasibility check is on an existing service with or 
920           without new constraints. Feasibility is done as if current service 
921           and its resources are released";
922       }
923       leaf existing-service-name {
924         when "../is-existing = 'true'";
925         type string; 
926         description
927           "Name of the existing service";
928       }
929       leaf reuse-existing-resources {
930         type boolean;
931         description
932           "If true reuse the existing equipment wherever possible";
933       }
934       leaf-list reusable-existing-resources {
935         when "../reuse-existing-resources = 'true'";
936         type existing-resource-reuse-type;
937         description
938           "List of existing resources that can be reused;
939           This list is enabled only when the reuse-existing-equipment 
940           is set true";
941       }
942     }
943   }
944
945   grouping sdnc-request-header {
946     container sdnc-request-header {
947       leaf request-id {
948         type string;
949       }
950       leaf rpc-action {
951         type rpc-actions;
952       }
953       leaf notification-url {
954         type string;
955       }
956       leaf request-system-id {
957         type string;
958       }
959     }
960   }
961
962   grouping service-port {
963     container port {
964       description
965         "From the device model perspective the port-device-name plus the port-circuit-pack-name plus the port-name uniquely identifies the port.
966          From the network model perspective the openroadm-topology-ref plus port-device-name plus port-name uniquely identify the termination point in the network model.";
967       leaf port-device-name {
968         type string;
969       }
970       leaf port-circuit-pack-name {
971         type string;
972       }
973       leaf port-circuit-pack-type {
974         type string;
975       }
976       leaf port-type {
977         type string;
978       }
979       leaf port-name {
980         type string;
981       }
982       leaf port-rack {
983         type string;
984       }
985       leaf port-shelf {
986         type string;
987       }
988       leaf port-slot {
989         type string;
990       }
991       leaf port-sub-slot {
992         type string;
993       }
994     }
995   }
996
997   grouping service-lgx {
998     container lgx {
999       leaf lgx-device-name {
1000         type string;
1001       }
1002       leaf lgx-port-name {
1003         type string;
1004       }
1005       leaf lgx-port-rack {
1006         type string;
1007       }
1008       leaf lgx-port-shelf {
1009         type string;
1010       }
1011     }
1012   }
1013
1014   grouping service-tail {
1015     container tail {
1016       container tail-roadm {
1017         description
1018           "ROADM on which the transponder is connected to (TID, IP Address,
1019            or FQDN)";
1020         uses org-openroadm-resource-types:device-id;
1021       }
1022       container xponder-port {
1023         description
1024           "Muxponder port used in tail, that will get used as a service endpoint.";
1025         leaf circuit-pack-name {
1026           type string;
1027         }
1028         leaf port-name {
1029           type string;
1030         }
1031       }
1032       leaf tail-roadm-port-aid {
1033         type string;
1034         description
1035           "This will provide the transponder port needed to inter-city ROADM
1036            connection";
1037       }
1038       leaf tail-roadm-port-rack-location {
1039         type string;
1040         description
1041           "Transponder's location";
1042       }
1043     }
1044   }
1045
1046   grouping service-information {
1047     leaf due-date {
1048       type yang:date-and-time;
1049       description
1050         "Date and time service to be turn up. If time is not specified for a given date,
1051          default to midnight. Service turned up immediately if no due date is specified";
1052     }
1053     leaf end-date {
1054       type yang:date-and-time;
1055       mandatory false;
1056       description
1057         "Date and time service to be removed";
1058     }
1059     uses eventHorizon;
1060     leaf nc-code {
1061       type string;
1062       description
1063         "NC code applied to wavelength service only. This is reported against the service,
1064          but may not get reflected in the service in the network.";
1065     }
1066     leaf nci-code {
1067       type string;
1068       description
1069         "NCI code applied to wavelength service only. This is reported against the service,
1070          but may not get reflected in the service in the network.";
1071     }
1072     leaf secondary-nci-code {
1073       type string;
1074       description
1075         "NC code applied to wavelength service only. This is reported against the service,
1076          but may not get reflected in the service in the network.";
1077     }
1078     leaf customer {
1079       type string;
1080       description
1081         "To be included in ticket information. This is reported against the service,
1082          but may not get reflected in the service in the network.";
1083     }
1084     leaf customer-contact {
1085       type string;
1086       description
1087         "Customer contact information to be included in ticket information.
1088          This is reported against the service, but may not get reflected in the service
1089          in the network.";
1090     }
1091     leaf operator-contact {
1092       type string;
1093       description
1094         "Operator contact information to be included in ticket information.
1095          This is reported against the service, but may not get reflected in the service
1096          in the network.";
1097     }
1098     leaf service-layer {
1099       type service-layer-type;
1100       default "wdm";
1101       description
1102         "Layer associated with service (e.g. wdm or otn)";
1103     }
1104     leaf clli-network-ref {
1105       type string;
1106       description
1107         "Assumption: a service would not span multiple clli-network layers.
1108          Reference to the network-id of the clli-network layer.";
1109     }
1110     leaf openroadm-network-ref {
1111       type string;
1112       description
1113         "Assumption: a service would not span multiple openroadm-network layers.
1114          Reference to the network-id of the openroadm-network layer.";
1115     }
1116     leaf openroadm-topology-ref {
1117       type string;
1118       description
1119         "Assumption: a service would not span multiple topology layers.
1120          Reference to the network-id of either the openroadm-topology
1121          or the otn-topology layer depending upon service-layer (wdm or otn).";
1122     }
1123     leaf sla-id {
1124       type string;
1125       description
1126         "Service Level Agreement";
1127     }
1128     leaf bandwidth-calendaring {
1129       type boolean;
1130       description
1131         "True if service is active only during a specific time period";
1132     }
1133     container bw-calendaring-parameters {
1134       when "../bandwidth-calendaring = 'true'" {
1135         description
1136           "Includes all attributes associated with bandwidth calendaring option.
1137            Used to set service profile : each service corresponds to one specific
1138            time-period. Services defined on complementary time periods can be linked
1139            together through the coupled-service attribute ";
1140       }
1141       list bw-calendaring-coupled-services {
1142         key "service-index";
1143         leaf service-index {
1144           type uint16;
1145           description
1146             "service-number of the service that may be associated to the considered service";
1147         }
1148         leaf service-name {
1149           type string;
1150           description
1151             "service-name of the service that may be associated to the considered service in service-list";
1152         }
1153         leaf common-id {
1154           type string;
1155           description
1156             "common-id of the service that may be associated to the considered service in temp-service-list";
1157         }
1158         leaf version-number {
1159           type uint64;
1160           description
1161             "common-id of the service that may be associated to the considered service in versioned-service-list";
1162         }
1163       }
1164       list recurrence-pattern {
1165         key "recurrence-id";
1166         leaf recurrence-id {
1167           type uint32;
1168           description
1169             "id of the pattern defining the time during which the service is active ";
1170         }
1171         leaf-list day-of-the-week {
1172           type enumeration {
1173             enum Monday {
1174               value 1;
1175             }
1176             enum Tuesday {
1177               value 2;
1178             }
1179             enum Wednesday {
1180               value 3;
1181             }
1182             enum Thursday {
1183               value 4;
1184             }
1185             enum Friday {
1186               value 5;
1187             }
1188             enum Saturday {
1189               value 6;
1190             }
1191             enum Sunday {
1192               value 7;
1193             }
1194           }
1195           description
1196             "Each day for which the service is active from stat-time to end-time";
1197         }
1198         leaf start-time {
1199           type string {
1200             pattern '\d{2}:\d{2}:\d{2}';
1201           }
1202           description
1203             "start time expressed as hour:min:seconds";
1204         }
1205         leaf end-time {
1206           type string {
1207             pattern '\d{2}:\d{2}:\d{2}';
1208           }
1209           description
1210             "end time expressed as hour:min:seconds";
1211         }
1212       }
1213     }
1214   }
1215
1216   grouping routing-metric {
1217     container routing-metric {
1218       description
1219         "Describes the metrics used to route a service.
1220          All parameters of integer type, to set the priority of the routing criterion
1221          '0' means the criterion is not used,
1222          '1'coresponds to the highest priority,
1223          '255'coresponds to the lowest priority.
1224          Priority might be handled in several way : 1) To select one from several paths with the same metrics,
1225          using lower priority metrics until metrics calculated allow the selection; 2) Using priority as
1226          a weight for composite metric calculation";
1227       leaf wdm-hop-count {
1228         type uint8 {
1229           range "0..255";
1230         }
1231         default "1";
1232         description
1233           "Metric corresponding to the number of hop in the wdm layer";
1234       }
1235       leaf otn-hop-count {
1236         type uint8 {
1237           range "0..255";
1238         }
1239         default "0";
1240         description
1241           "Metric corresponding to the number of hop in the otn layer";
1242       }
1243       leaf wdm-load {
1244         type uint8 {
1245           range "0..255";
1246         }
1247         default "0";
1248         description
1249           "Metric corresponding to the load of the wdm layer
1250            Can be used to avoid using heavy loaded links ";
1251       }
1252       leaf otn-load {
1253         type uint8 {
1254           range "0..255";
1255         }
1256         default "0";
1257         description
1258           "Metric corresponding to the load of the otn layer.
1259            Can be used to avoid using heavy loaded links/switchs ";
1260       }
1261       leaf latency {
1262         type uint8 {
1263           range "0..255";
1264         }
1265         default "0";
1266         description
1267           "Metric corresponding to the latency. Total path latency can be calculated from
1268            SRLG length of the OMS and the latency introduced by the equipment";
1269       }
1270       leaf distance {
1271         type uint8 {
1272           range "0..255";
1273         }
1274         default "0";
1275         description
1276           "Metric associated with the distance. Total path distance can be
1277            calculated from SRLG length of the OMS";
1278       }
1279       leaf wdm-TE-metric {
1280         type uint8 {
1281           range "0..255";
1282         }
1283         default "0";
1284         description
1285           "Used when routing shall be performed according to specific pre-defined
1286            TE-Metric. Total path metric can be calculated from OMS TE-metric attribute
1287            defined in org-openroadm-link module";
1288       }
1289       leaf adaptation-number {
1290         type uint8 {
1291           range "0..255";
1292         }
1293         default "0";
1294         description
1295           "Metric associated with the adaptation between layers. Total path metric can
1296            can be calculated from the total number of transition between layers";
1297       }
1298       leaf otn-TE-metric {
1299         type uint8 {
1300           range "0..255";
1301         }
1302         default "0";
1303         description
1304           "Used when routing shall be performed according to specific pre-defined
1305            metric associated with OTN (OTU/ODU level)";
1306       }
1307     }
1308   }
1309
1310   grouping service-resiliency {
1311     container service-resiliency {
1312       leaf resiliency {
1313         type identityref {
1314           base service-resiliency-type-identity;
1315         }
1316         description
1317           "describes the type of resiliency and the associated layer ";
1318       }
1319       leaf revertive {
1320         when "../resiliency != 'unprotected' and ../resiliency != 'unprotected-diversely-routed'" {
1321           description
1322             "revertive not applicable when service is neither protected nor restorable";
1323         }
1324         type boolean;
1325         description
1326           "defines if the service shall revert to the initial working path
1327            after protection or restoration has been triggered and fault condition
1328            has disappeared";
1329       }
1330       leaf wait-to-restore {
1331         when "../revertive = 'true'" {
1332           description
1333             "wait-to-restore applies for service defined as revertive ";
1334         }
1335         type uint64;
1336         units "ms";
1337         description
1338           "time delay to revert to initial path after conditions for reversion are satisfied";
1339       }
1340       leaf holdoff-time {
1341         when "../resiliency != 'unprotected' and ../resiliency != 'unprotected-diversely-routed'" {
1342           description
1343             "holdoff-time applies when services are either protected or restorable";
1344         }
1345         type uint64;
1346         units "ms";
1347         description
1348           "time delay to initiate a protection or restoration event";
1349       }
1350       leaf pre-calculated-backup-path-number {
1351         when "../resiliency = 'restorable' or ../resiliency = 'external-trigger-restorable'" {
1352           description
1353             "when service is restorable, defines the
1354              number of paths that shall be or have been pre-calculated";
1355         }
1356         type uint8;
1357         description
1358           "Associated to service-create / reconfigure / feasibility-check rpcs
1359            --> defines the target number of backup-paths to be calculated by PCE. This is an
1360            optional parameter : operator can provide it to conform with specific engineering rules.
1361            If not provided, PCE will evaluate the number of backup path to be provided automously.
1362            Associated with service --> gives the effective number of backup-paths
1363            returned/calculated by PCE that can be find in topology container";
1364       }
1365       container coupled-service {
1366         when "../resiliency = 'unprotected-diversely-routed'" {
1367           description
1368             "for unprotected-diversely-routed services only one path is defined.
1369              Allows providing a link between services that are coupled
1370              through a routing disjonction criterion";
1371         }
1372         list coupled-services {
1373           key "service-index";
1374           leaf service-index {
1375             type uint16;
1376             description
1377               "service-number of the service that may be routed disjointly to the considered service";
1378           }
1379           leaf service-name {
1380             type string;
1381             description
1382               "service-name of the service that may be routed disjointly to the considered service in service-list";
1383           }
1384           leaf common-id {
1385             type string;
1386             description
1387               "common-id of the service that may be routed disjointly to the considered service in temp-service-list";
1388           }
1389           leaf version-number {
1390             type uint64;
1391             description
1392               "common-id of the service that may be routed disjointly to the considered service in versioned-service-list";
1393           }
1394         }
1395       }
1396     }
1397   }
1398
1399   grouping service-order {
1400     description
1401       "Service Order information for service";
1402     leaf order-id {
1403       type string;
1404       description
1405         "Order identifier for this service";
1406     }
1407     leaf order-note {
1408       type string;
1409       description
1410         "Additional details associated with the service order";
1411     }
1412   }
1413
1414   grouping resource-status {
1415     description
1416       "Grouping used to consisistenty apply resource-status
1417        naming to appropriate RPC.";
1418     leaf resource-status {
1419       type resource-status-type;
1420       description
1421         "identifies the state of network resources required
1422          to complete a service request.";
1423     }
1424   }
1425
1426   grouping service {
1427     leaf service-name {
1428       type string;
1429       description
1430         "Identifier for the service to be created in
1431          the ROADM network, e.g., CLFI, CLCI, etc.";
1432     }
1433     leaf common-id {
1434       type string;
1435       description
1436         "To be used by the ROADM controller to identify the routing
1437          constraints received from planning application (PED).";
1438     }
1439     uses service-order;
1440     uses sdnc-request-header;
1441     uses service-resiliency;
1442     uses routing-metric;
1443     leaf connection-type {
1444       type connection-type;
1445       mandatory true;
1446       description
1447         "Connection type";
1448     }
1449     leaf lifecycle-state {
1450       type org-openroadm-common-state-types:lifecycle-state;
1451       description
1452         "Lifecycle State of service. Whether it is planned, deployed, in maintenance, etc.";
1453     }
1454     uses resource-status;
1455     leaf administrative-state {
1456       type org-openroadm-equipment-states-types:admin-states;
1457       description
1458         "Administrative State: Intended state of service";
1459     }
1460     leaf operational-state {
1461       type org-openroadm-common-state-types:state;
1462       config false;
1463       description
1464         "Operational State: Actual state of service";
1465     }
1466     leaf condition {
1467       type service-condition;
1468       description
1469         "Service Condition: Additional information about the state of the service. Only sent when applicable.";
1470     }
1471     container service-a-end {
1472       uses service-endpoint;
1473     }
1474     container service-z-end {
1475       uses service-endpoint;
1476     }
1477     uses org-openroadm-routing-constraints:routing-constraints;
1478     uses service-information;
1479     leaf latency {
1480       type decimal64 {
1481         fraction-digits 3;
1482       }
1483       description
1484         "One-way latency (in milliseconds) on service";
1485       units "milliseconds";
1486     }
1487     leaf-list fiber-span-srlgs {
1488       type string;
1489       description
1490         "Shared risk link group identifiers";
1491     }
1492     list equipment-srgs {
1493       key "srg-number";
1494       uses org-openroadm-resource-types:srg-number;
1495     }
1496     leaf-list supporting-service-name {
1497       type string;
1498       description
1499         "The service name that this runs over top. If connection-type is service, then this is the related
1500          connection-type = infrastructure service, for example.";
1501     }
1502     leaf current-active-path-id {
1503       type uint8;
1504       description
1505         "defines the current active path : '0' if active path is the working path
1506          id of the active backup path if protection or restoration has been triggered";
1507     }
1508     container topology {
1509       description
1510         "topology corresponds to working-path which is the default path. It defines the initial path
1511          to which services defined as revertive may revert to when the failure condition disappear";
1512       uses org-openroadm-topology:topology;
1513     }
1514     container backup-topology {
1515       list backup-path {
1516         key "backup-path-id";
1517         leaf backup-path-id {
1518           type uint8 {
1519             range "1..255";
1520           }
1521           description
1522             "Several backup paths may be used when backup-paths are pre-calculated.
1523              Backup-path-id avoids 0 which is associated with working path in current-active-path";
1524         }
1525         leaf failure-case-id {
1526           type string;
1527           description
1528             "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
1529         }
1530         uses org-openroadm-topology:topology;
1531       }
1532     }
1533     container network-topology {
1534       uses org-openroadm-topology:network-topology;
1535     }
1536     container network-backup-topology {
1537       list backup-path {
1538         key "backup-path-id";
1539         leaf backup-path-id {
1540           type uint8 {
1541             range "1..255";
1542           }
1543           description
1544             "Several backup paths may be used when backup-paths are pre-calculated.
1545              Backup-path-id avoids 0 which is associated with working path in current-active-path";
1546         }
1547         leaf failure-case-id {
1548           type string;
1549           description
1550             "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
1551         }
1552         uses org-openroadm-topology:network-topology;
1553       }
1554     }
1555     leaf is-bandwidth-locked {
1556       type boolean;
1557       default "false";
1558       description
1559         "Bandwidth lock (true, false) indicates whether the service is administratively
1560          prohibited from taking on more capacity - ie whether it can be used as a supporting
1561          service in any new service creations. Unlike administrative status, this does not
1562          impact any previous planned or deployed services.";
1563     }
1564   }
1565
1566   grouping service-notification-result {
1567     leaf service-name {
1568       type string;
1569       description
1570         "Identifier for the service e.g., CLFI, CLCI, etc.";
1571     }
1572     leaf version-number {
1573       type uint64;
1574       description
1575         "Identifier for the versioned service";
1576     }
1577     leaf common-id {
1578       type string;
1579       description
1580         "Identifier for the temp service";
1581     }
1582     leaf actual-date {
1583       type yang:date-and-time;
1584       description
1585         "Actual date and time (if successful)";
1586     }
1587   }
1588
1589   grouping service-port-list {
1590     list port {
1591       key "circuit-pack-name port-name";
1592       description
1593         "List allows to output more than one piece of equipment per CLLI;
1594          Port-name is unique in the context of circuit-pack";
1595       leaf circuit-pack-name {
1596         type string;
1597       }
1598       leaf port-name {
1599         type string;
1600       }
1601       leaf lifecycle-state {
1602         type org-openroadm-common-state-types:lifecycle-state;
1603       }
1604     }
1605   }
1606
1607   grouping equipment-info {
1608     leaf equipment-type {
1609       type string;
1610       description
1611         "The set of valid value is derived from the equipment-type grouping used in the device model.";
1612     }
1613     leaf equipment-identifier {
1614       type string;
1615     }
1616     leaf lifecycle-state {
1617       type org-openroadm-common-state-types:lifecycle-state;
1618     }
1619     leaf equipment-rack {
1620         type string;
1621       }
1622       leaf equipment-shelf {
1623         type string;
1624       }
1625       leaf equipment-slot {
1626         type string;
1627       }
1628       leaf equipment-sub-slot {
1629         type string;
1630       }
1631       leaf is-reused {
1632         type boolean;
1633         description
1634           "This is set true if the equipment-required is being reused for
1635           service roll";
1636       }
1637     uses service-port-list;
1638   }
1639
1640   grouping eventHorizon {
1641     leaf eventHorizonStart {
1642       type yang:date-and-time;
1643       description
1644         "Start time to ensure that the service is routable and viable. Required resources shall
1645          be considered reserved from this time. If not provided, defaults to due-date.";
1646     }
1647     leaf eventHorizonEnd {
1648       type yang:date-and-time;
1649       description
1650         "End time to ensure that the service is routable and viable. Required resources shall
1651          be considered reserved until this time. If not provided, defaults to end-date.";
1652     }
1653   }
1654
1655   grouping service-hierarchy {
1656     leaf service-identifier {
1657       type string;
1658       description
1659         "Based on the level in the service hierarchy, this indentifier can be for the
1660          proposed or existing service";
1661     }
1662     leaf service-layer {
1663       type service-layer-type;
1664       default "wdm";
1665       description
1666         "Layer associated with service (e.g. wdm or otn)";
1667     }
1668     container service-a-end {
1669       leaf clli {
1670         type string;
1671         description
1672           "Based on the level in the service hierarchy, A-end CLLI of the
1673            proposed or existing service.";
1674       }
1675     }
1676     container service-z-end {
1677       leaf clli {
1678         type string;
1679         description
1680           "Based on the level in the service hierarchy, Z-end CLLI of the
1681            proposed or existing service.";
1682       }
1683     }
1684     list supporting-service {
1685       key "id";
1686       uses supporting-service;
1687     }
1688     container transport-assignment {
1689       container mc-ttp {
1690         description
1691           "Media Channel Trail Termination Point (MC-TTP)";
1692         uses org-openroadm-resource:mc-ttp-attributes;
1693       }
1694       list nmc-ctp {
1695         key "id";
1696         description
1697           "List of Network Media Channel Connection Termination Point (NMC-CTP)";
1698         leaf id {
1699           type string;
1700           description
1701             "This used to indentify the NMC in the MC. For example split-lambda would
1702             have two NMCs";
1703         }
1704         uses org-openroadm-resource:nmc-ctp-attributes;
1705       }
1706       container odu-allocation {
1707         description
1708           "parent odu allocation";
1709         leaf trib-port-number {
1710           type uint16 {
1711             range "1 .. 80";
1712           }
1713           description
1714             "Assigned tributary port number in parent OPU";
1715         }
1716         choice trib-slots-choice {
1717           description
1718             "trib slot selection";
1719           case opu {
1720             leaf  min-trib-slot {
1721               type uint16;
1722               description
1723                 "Minimum assigned trib slots occupied in parent OPU MSI";
1724             }
1725             leaf  max-trib-slot {
1726               type uint16;
1727               description
1728                 "Maximum assigned trib slots occupied in parent OPU MSI";
1729             }
1730           }
1731           case opucn {
1732             leaf opucn-min-trib-slot {
1733               type org-openroadm-otn-common-types:opucn-trib-slot-def;
1734               description
1735                 "Minimum OPUCn 5G trib slots in the form of TS #A.B (G.709)";
1736             }
1737             leaf opucn-max-trib-slot {
1738               type org-openroadm-otn-common-types:opucn-trib-slot-def;
1739               description
1740                   "Maximum OPUCn 5G trib slots in the form of TS #A.B (G.709)";
1741             }
1742           }
1743         }
1744       }
1745       leaf is-reused {
1746         type boolean;
1747         description
1748           "This flag is true if the spectral assignment overlaps--in part or in full--with 
1749           that of the active instance of the service. A determination whether the overlap 
1750           is full or partial requires a detailed comparison of spectral assignments; it 
1751           is not indicated here.";
1752       }
1753     }
1754   }
1755
1756   grouping supporting-service {
1757     leaf service-identifier {
1758       type string;
1759     }
1760     leaf id {
1761       type string;
1762     }
1763     container service-a-end {
1764       uses supporting-service-detail;
1765     }
1766     container service-z-end {
1767       uses supporting-service-detail;
1768     }
1769   }
1770
1771   grouping supporting-service-detail {
1772     leaf service-format {
1773       type org-openroadm-service-format:service-format;
1774       mandatory true;
1775       description
1776         "Format of the requested service: Ethernet, OTU, etc.";
1777     }
1778     leaf service-rate {
1779       when "../service-format != 'OMS' and ../service-format != 'ODU'" {
1780         description
1781           "service rate not applicable when service
1782            format is roadmline or ODU; valid for OTU since service-rate has
1783            already been supported for wdm layer OTU services (100 for OTU4)";
1784       }
1785       type uint32;
1786       description
1787         "Rate of the requested service in GBps";
1788     }
1789     leaf other-service-format-and-rate {
1790       type string;
1791       description
1792         "Used when service-format is set to other in the bookend xponder use case.
1793          The use of other-service-format-and-rate is not standardized in the Open ROADM MSA
1794          and intended to allow the controller to support non-Open ROADM service formats.
1795          This value encodes both the service format and the rate supported.
1796          This field should not be specified when service format != other.";
1797     }
1798     leaf otu-service-rate {
1799       when "../service-format = 'OTU'" {
1800         description
1801           "only applicable for OTU services";
1802       }
1803       type identityref {
1804         base org-openroadm-otn-common-types:otu-rate-identity;
1805       }
1806       description
1807         "OTU Rate of the requested service";
1808     }
1809     leaf odu-service-rate {
1810       when "../service-format = 'ODU'" {
1811         description
1812           "only applicable for ODU services";
1813       }
1814       type identityref {
1815         base org-openroadm-otn-common-types:odu-rate-identity;
1816       }
1817       description
1818         "ODU Rate of the requested service";
1819     }
1820     leaf clli {
1821       type string;
1822       description
1823         "CLLI of the supporting service";
1824     }
1825     leaf node-id {
1826       type org-openroadm-common-node-types:node-id-type;
1827       description
1828         "Node id. This is reported against the service, but may not get
1829          reflected in the service in the network.";
1830     }
1831   }
1832
1833   grouping max-regeneration-options {
1834     leaf max-regeneration-options {
1835       type uint8;
1836       default "1";
1837       description
1838         "Max regeneration options, is maximum number of regeneration-option-list elements requested in
1839          service-feasibility output. RNC can return less number of regeneration-options based on it's
1840          calculation but should not return more than max-regeneration-options. The goal of this field
1841          is to avoid RNC from having performance issues.";
1842     }
1843   }
1844
1845   grouping regeneration-option-list {
1846     list regeneration-option-list {
1847       key "regeneration-option-rank";
1848       leaf regeneration-option-rank {
1849         type uint8;
1850         description
1851           "Regen option rank is derived rank based on optical performance or based on other metrics.";
1852       }
1853       list regeneration-clli-list {
1854         key "sequence-id";
1855         leaf sequence-id {
1856           type uint8;
1857           description
1858             "Sequence id will define order of regeneration location for output path in A to Z direction.";
1859         }
1860         leaf regeneration-clli {
1861           type string;
1862           description
1863             "CLLI for the site where regeneraton is located or bring proposed.";
1864         }
1865         leaf lifecycle-state {
1866           type org-openroadm-common-state-types:lifecycle-state;
1867           description
1868             "Lifecycle State for regeneration CLLI indicating whether regen is already deployed or being proposed
1869              for at this site.";
1870         }
1871       }
1872     }
1873   }
1874 }