Update docs conf.yaml version to Sulfur
[transportpce.git] / ordmodels / device / src / main / yang / org-openroadm-device@2020-05-29.yang
1 module org-openroadm-device {
2   namespace "http://org/openroadm/device";
3   prefix org-openroadm-device;
4
5   import ietf-yang-types {
6     prefix ietf-yang-types;
7     revision-date 2013-07-15;
8   }
9   import ietf-inet-types {
10     prefix ietf-inet-types;
11     revision-date 2013-07-15;
12   }
13   import ietf-netconf {
14     prefix ietf-nc;
15     revision-date 2011-06-01;
16   }
17   import org-openroadm-common-types {
18     prefix org-openroadm-common-types;
19     revision-date 2020-05-29;
20   }
21   import org-openroadm-common-alarm-pm-types {
22     prefix org-openroadm-common-alarm-pm-types;
23     revision-date 2019-11-29;
24   }
25   import org-openroadm-common-equipment-types {
26     prefix org-openroadm-common-equipment-types;
27     revision-date 2019-11-29;
28   }
29   import org-openroadm-common-state-types {
30     prefix org-openroadm-common-state-types;
31     revision-date 2019-11-29;
32   }
33   import org-openroadm-common-amplifier-types {
34     prefix org-openroadm-common-amplifier-types;
35     revision-date 2019-11-29;
36   }
37   import org-openroadm-common-link-types {
38     prefix org-openroadm-common-link-types;
39     revision-date 2019-11-29;
40   }
41   import org-openroadm-common-node-types {
42     prefix org-openroadm-common-node-types;
43     revision-date 2019-11-29;
44   }
45   import org-openroadm-common-optical-channel-types {
46     prefix org-openroadm-common-optical-channel-types;
47     revision-date 2020-05-29;
48   }
49   import org-openroadm-device-types {
50     prefix org-openroadm-device-types;
51     revision-date 2019-11-29;
52   }
53   import org-openroadm-resource-types {
54     prefix org-openroadm-resource-types;
55     revision-date 2019-11-29;
56   }
57   import org-openroadm-physical-types {
58     prefix org-openroadm-physical-types;
59     revision-date 2019-11-29;
60   }
61   import org-openroadm-user-mgmt {
62     prefix org-openroadm-user-mgmt;
63     revision-date 2019-11-29;
64   }
65   import org-openroadm-port-types {
66     prefix org-openroadm-port-types;
67     revision-date 2020-03-27;
68   }
69   import org-openroadm-interfaces {
70     prefix org-openroadm-interfaces;
71     revision-date 2019-11-29;
72   }
73   import org-openroadm-swdl {
74     prefix org-openroadm-swdl;
75     revision-date 2020-05-29;
76   }
77   import org-openroadm-equipment-states-types {
78     prefix org-openroadm-equipment-states-types;
79     revision-date 2019-11-29;
80   }
81   import org-openroadm-switching-pool-types {
82     prefix org-openroadm-switching-pool-types;
83     revision-date 2019-11-29;
84   }
85   import org-openroadm-optical-operational-interfaces {
86     prefix org-openroadm-optical-operational-interfaces;
87     revision-date 2020-05-29;
88   }
89   import org-openroadm-otn-common-types {
90     prefix org-openroadm-otn-common-types;
91     revision-date 2020-03-27;
92   }
93
94   organization
95     "Open ROADM MSA";
96   contact
97     "OpenROADM.org";
98   description
99     "YANG definitions of ROADM device
100
101      Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
102      All other rights reserved.
103
104      Redistribution and use in source and binary forms, with or without modification,
105      are permitted provided that the following conditions are met:
106
107      * Redistributions of source code must retain the above copyright notice, this
108        list of conditions and the following disclaimer.
109      * Redistributions in binary form must reproduce the above copyright notice,
110        this list of conditions and the following disclaimer in the documentation and/or
111        other materials provided with the distribution.
112      * Neither the Members of the Open ROADM MSA Agreement nor the names of its
113        contributors may be used to endorse or promote products derived from this software
114        without specific prior written permission.
115
116      THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS''
117      AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
118      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
119      IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT,
120      INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
121      NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA,
122      OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
123      WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
124      ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
125      POSSIBILITY OF SUCH DAMAGE.
126
127      Also contains code components extracted from IETF netconf.  These code components
128      are copyrighted and licensed as follows:
129
130      Copyright (c) 2016 IETF Trust and the persons identified as the document authors.
131      All rights reserved.
132
133      This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating
134      to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of
135      publication of this document. Please review these documents carefully, as they
136      describe your rights and restrictions with respect to this document. Code Components
137      extracted from this document must include Simplified BSD License text as described in
138      Section 4.e of the Trust Legal Provisions and are provided without warranty as
139      described in the Simplified BSD License.";
140
141   revision 2020-05-29 {
142     description
143       "Version 7.1.0";
144   }
145   revision 2020-03-27 {
146     description
147       "Version 7.0.0";
148   }
149   revision 2019-11-29 {
150     description
151       "Version 6.1.0";
152   }
153   revision 2019-09-27 {
154     description
155       "Version 6.0.0";
156   }
157   revision 2019-05-31 {
158     description
159       "Version 5.1.0";
160   }
161   revision 2019-03-29 {
162     description
163       "Version 5.0.0";
164   }
165   revision 2018-11-30 {
166     description
167       "Version 4.1.0";
168   }
169   revision 2018-09-28 {
170     description
171       "Version 4.0.0";
172   }
173   revision 2018-05-30 {
174     description
175       "Version 3.1.0";
176   }
177   revision 2018-03-30 {
178     description
179       "Version 3.0.0";
180   }
181   revision 2017-12-15 {
182     description
183       "Version 2.2";
184   }
185   revision 2017-09-29 {
186     description
187       "Version 2.1";
188   }
189   revision 2017-07-28 {
190     description
191       "Version 2.0.1 - added revision-date to imports";
192   }
193   revision 2017-06-26 {
194     description
195       "Version 2.0";
196   }
197   revision 2017-02-06 {
198     description
199       "Version 1.2.1 - removed pattern for current-datetime in info tree and rpc";
200   }
201   revision 2016-10-14 {
202     description
203       "Version 1.2";
204   }
205
206   identity connection-direction-identity {
207     description
208       "Bidrectional capable, or Bi and Unidirectional capable";
209   }
210
211   identity connection-direction_bi {
212     base connection-direction-identity;
213     description
214       "Bidrectional capable";
215   }
216
217   identity connection-direction_bi_and_uni {
218     base connection-direction-identity;
219     description
220       "Bi and Unidirectional capable";
221   }
222
223   typedef interface-ref {
224     type leafref {
225       path "/org-openroadm-device:org-openroadm-device/org-openroadm-device:interface/org-openroadm-device:name";
226     }
227     description
228       "This type is used by data models that need to reference
229        configured interfaces.";
230   }
231
232   grouping create-tech-info-group {
233     leaf shelf-id {
234       type leafref {
235         path "/org-openroadm-device/shelves/shelf-name";
236       }
237       description
238         "shelf ID";
239     }
240     leaf log-file-name {
241       type string;
242       description
243         "The log file name a vendor can specify for a given log collection operation";
244     }
245   }
246
247   grouping device-common {
248     leaf node-id {
249       type org-openroadm-common-node-types:node-id-type;
250       default "openroadm";
251       description
252         "Globally unique identifier for a device.";
253     }
254     leaf node-number {
255       type uint32;
256       description
257         "Number assigned to a ROADM node at a
258          given office";
259     }
260     leaf node-type {
261       type org-openroadm-device-types:node-types;
262       config true;
263       mandatory true;
264       description
265         "Identifier for node-type e.g Roadm, xponder.
266          Once the node-type is configured, it should not be modified.";
267     }
268     leaf clli {
269       type string;
270       description
271         "Common Language Location Identifier.";
272     }
273     uses org-openroadm-physical-types:node-info;
274     leaf ipAddress {
275       type ietf-inet-types:ip-address;
276       description
277         "IP Address of device";
278     }
279     leaf prefix-length {
280       type uint8 {
281         range "0..128";
282       }
283       description
284         "The length of the subnet prefix";
285     }
286     leaf defaultGateway {
287       type ietf-inet-types:ip-address;
288       description
289         "Default Gateway";
290     }
291     leaf source {
292       type enumeration {
293         enum static {
294           value 1;
295         }
296         enum dhcp {
297           value 2;
298         }
299       }
300       config false;
301     }
302     leaf current-ipAddress {
303       type ietf-inet-types:ip-address;
304       config false;
305       description
306         "Current IP Address of device";
307     }
308     leaf current-prefix-length {
309       type uint8 {
310         range "0..128";
311       }
312       config false;
313       description
314         "The current length of the subnet prefix";
315     }
316     leaf current-defaultGateway {
317       type ietf-inet-types:ip-address;
318       config false;
319       description
320         "Current Default Gateway";
321     }
322     leaf macAddress {
323       type ietf-yang-types:mac-address;
324       config false;
325       description
326         "MAC Address of device";
327     }
328     leaf softwareVersion {
329       type string;
330       config false;
331       description
332         "Software version";
333     }
334     leaf software-build {
335       type string;
336       config false;
337       description
338         "Software build version";
339     }
340     leaf openroadm-version {
341       type org-openroadm-common-types:openroadm-version-type;
342       config false;
343       description
344         "openroadm version used on the device";
345     }
346     leaf template {
347       type string;
348       description
349         "Template information used in the deployment.";
350     }
351     leaf current-datetime {
352       type ietf-yang-types:date-and-time;
353       config false;
354       description
355         "The current system date and time in UTC. Format: YYYY-MM-DDTHH:MM:SS.mm+ ";
356     }
357     leaf lifecycle-state {
358       type org-openroadm-common-state-types:lifecycle-state;
359       description
360         "Lifecycle State of the device node. Whether it is planned, deployed, in maintenance, etc.";
361     }
362     container geoLocation {
363       description
364         "GPS location";
365       leaf latitude {
366         type decimal64 {
367           fraction-digits 16;
368           range "-90 .. 90";
369         }
370         description
371           "[From wikipedia] Latitude is an angle (defined below)
372            which ranges from 0 at the Equator to 90 (North or
373            South) at the poles";
374       }
375       leaf longitude {
376         type decimal64 {
377           fraction-digits 16;
378           range "-180 .. 180";
379         }
380         description
381           "[From wikipedia] The longitude is measured as the
382            angle east or west from the Prime Meridian, ranging
383            from 0 at the Prime Meridian to +180 eastward and
384            -180 westward.";
385       }
386     }
387   }
388
389   grouping slot-info {
390     description
391       "slots information. To be populated by NE during retrieval.";
392     leaf slot-name {
393       type string;
394       description
395         "The name of this slot.";
396     }
397     leaf label {
398       type string;
399       description
400         "Faceplate label";
401     }
402     leaf provisioned-circuit-pack {
403       type leafref {
404         path "/org-openroadm-device/circuit-packs/circuit-pack-name";
405       }
406       description
407         "The supported circuit-pack. It will be empty if holder status is empty-not-prov, or installed-not-prov";
408     }
409     leaf slot-status {
410       type enumeration {
411         enum empty-not-prov {
412           value 1;
413           description
414             "Slot is empty and not provisioned";
415         }
416         enum empty-prov-match {
417           value 2;
418           status obsolete;
419           description
420             "(Deprecated) Slot is empty and expected type is provisioned";
421         }
422         enum empty-prov-mismatch {
423           value 3;
424           status obsolete;
425           description
426             "(Deprecated) Slot is empty and an unsupported type is provisioned";
427         }
428         enum installed-not-prov {
429           value 4;
430           description
431             "Slot is occupied but not provisioned";
432         }
433         enum installed-prov-match {
434           value 5;
435           description
436             "Slot is occupied with matching provisioned type";
437         }
438         enum installed-prov-mismatch {
439           value 6;
440           description
441             "Slot is occupied with mismatched provisioned type";
442         }
443         enum empty-prov {
444           value 7;
445           description
446             "Slot is empty and provisioned";
447         }
448       }
449     }
450   }
451
452   grouping shelves {
453     list shelves {
454       key "shelf-name";
455       uses shelf;
456     }
457   }
458
459   grouping user-description-grp {
460     description
461       "user description group";
462     leaf user-description {
463       type string;
464       description
465         "user provided description";
466     }
467   }
468
469   grouping shelf {
470     leaf shelf-name {
471       type string;
472       description
473         "Unique identifier for this shelf within a device";
474     }
475     leaf shelf-type {
476       type string;
477       mandatory true;
478       description
479         "The shelf type: describe the shelf with a unique string.";
480     }
481     leaf rack {
482       type string;
483       description
484         "Reflect the shelf physical location data including floor, aisle, bay values.";
485     }
486     leaf shelf-position {
487       type string;
488       description
489         "Reflect the shelf vertical position within an equipment bay.";
490     }
491     leaf lifecycle-state {
492       type org-openroadm-common-state-types:lifecycle-state;
493       description
494         "Lifecycle State of shelf. Whether it is planned, deployed, in maintenance, etc.";
495     }
496     leaf administrative-state {
497       type org-openroadm-equipment-states-types:admin-states;
498       mandatory true;
499       description
500         "Admin State of the shelf";
501     }
502     uses org-openroadm-physical-types:common-info;
503     leaf equipment-state {
504       type org-openroadm-equipment-states-types:states;
505       description
506         "equipment state for the shelf, used to track the lifecycle state.";
507     }
508     leaf is-physical {
509       type boolean;
510       config false;
511       mandatory true;
512       description
513         "is the entity physical or logical";
514     }
515     leaf is-passive {
516       type boolean;
517       config false;
518       mandatory true;
519       description
520         "is the entity passive and not actively managed by the device;
521          e.g., no physical inventory or plug-in notification supported";
522     }
523     leaf faceplate-label {
524       type string;
525       config false;
526       mandatory true;
527       description
528         "label on the faceplace silk screening";
529     }
530     uses user-description-grp;
531     leaf due-date {
532       type ietf-yang-types:date-and-time;
533       description
534         "due date for the shelf.";
535     }
536     list slots {
537       key "slot-name";
538       config false;
539       description
540         "List of slots on this shelf. To be populated by NE during retrieval.";
541       uses slot-info;
542     }
543   }
544
545   grouping circuit-packs {
546     list circuit-packs {
547       key "circuit-pack-name";
548       description
549         "List of circuit packs. This includes common equipment, like fans, power supplies, etc.";
550       leaf circuit-pack-type {
551         type string;
552         mandatory true;
553         description
554           "Type of circuit-pack";
555       }
556       leaf circuit-pack-product-code {
557         type string;
558         description
559           "Product Code for the circuit-pack";
560       }
561       uses circuit-pack;
562     }
563   }
564
565   grouping circuit-pack-features {
566     leaf software-load-version {
567       type string;
568       config false;
569       description
570         "Software version running on the circuit pack.";
571     }
572     list circuit-pack-features {
573       config false;
574       container feature {
575         description
576           "List of features supported by the installed load and indications on whether the features have been applied or not.";
577         leaf description {
578           type string;
579           description
580             "Feature description.";
581         }
582         leaf boot {
583           type boolean;
584           description
585             "Flag to indicate boot loader or unprotected firmware update required";
586         }
587         leaf activated {
588           type boolean;
589           description
590             "Indicator if the feature has been activated.";
591         }
592       }
593     }
594     list circuit-pack-components {
595       config false;
596       container component {
597         description
598           "Optional list of components on the circuit-pack and the load information applicable to those components.  If a load is not up to date and will upgrade when a cold restart occurs, the version that will be applied should also be listed.  If there is no misalignment, this does not need to be reported.";
599         leaf name {
600           type string;
601           description
602             "Name of a component on the circuit-pack that can have a load applied to it.";
603         }
604         leaf boot {
605           type boolean;
606           description
607             "Flag to indicate boot loader or unprotected firmware update required";
608         }
609         leaf current-version {
610           type string;
611           description
612             "Name of the load version currently running on the component.";
613         }
614         leaf version-to-apply {
615           type string;
616           description
617             "Name of the load version for the component that will be applied when cold restart occurs on the circuit-pack.";
618         }
619       }
620     }
621   }
622
623   grouping circuit-pack {
624     leaf circuit-pack-name {
625       type string;
626       description
627         "Unique identifier for this circuit-pack within a device";
628     }
629     leaf lifecycle-state {
630       type org-openroadm-common-state-types:lifecycle-state;
631       description
632         "Lifecycle State of circuit-pack. Whether it is planned, deployed, in maintenance, etc.";
633     }
634     leaf administrative-state {
635       type org-openroadm-equipment-states-types:admin-states;
636       mandatory true;
637       description
638         "Administrative state of circuit-pack";
639     }
640     uses org-openroadm-physical-types:common-info;
641     container circuit-pack-category {
642       config false;
643       description
644         "General type of circuit-pack";
645       uses org-openroadm-common-equipment-types:equipment-type;
646     }
647     leaf equipment-state {
648       type org-openroadm-equipment-states-types:states;
649       description
650         "Equipment state, which complements operational state.";
651     }
652     leaf circuit-pack-mode {
653       type string;
654       default "NORMAL";
655       description
656         "Circuit-pack mode allowed. e.g. NORMAL or REGEN";
657     }
658     leaf shelf {
659       type leafref {
660         path "/org-openroadm-device/shelves/shelf-name";
661       }
662       mandatory true;
663     }
664     leaf slot {
665       type string;
666       mandatory true;
667     }
668     leaf subSlot {
669       type string;
670       mandatory false;
671     }
672     leaf is-pluggable-optics {
673       type boolean;
674       config false;
675       mandatory true;
676       description
677         "True if circuitpack is pluggable optics";
678     }
679     leaf is-physical {
680       type boolean;
681       config false;
682       mandatory true;
683       description
684         "is the entity physical or logical";
685     }
686     leaf is-passive {
687       type boolean;
688       config false;
689       mandatory true;
690       description
691         "is the entity passive and not actively managed by the device;
692          e.g., no physical inventory or plug-in notification supported";
693     }
694     leaf faceplate-label {
695       type string;
696       config false;
697       mandatory true;
698       description
699         "label on the faceplace silk screening";
700     }
701     uses user-description-grp;
702     leaf due-date {
703       type ietf-yang-types:date-and-time;
704       description
705         "due date for this circuit-pack.";
706     }
707     container parent-circuit-pack {
708       description
709         "In the case of circuit packs that contain other equipment (modules or pluggables), this captures the hierarchy of that equipment.  It is a vendor specific design decision if the ports for single-port pluggables are modeled as children of the parent circuit-pack, or as children of the pluggable circuit-pack contained in the parent circuit-pack.  For modules with multiple ports, it is recommended that ports be children of the module and not the carrier, to help in fault correlation and isolation in the case of a module failure.";
710       uses circuit-pack-name;
711       leaf cp-slot-name {
712         type string;
713         description
714           "Slot name on parent-circuit-pack.";
715       }
716     }
717     list cp-slots {
718       key "slot-name";
719       config false;
720       description
721         "List of circuit-pack slots on this circuit-pack. To be populated by NE during retrieval.";
722       uses slot-info;
723       leaf slot-type {
724         type enumeration {
725           enum pluggable-optics-holder {
726             value 1;
727             description
728               "slot accepts dedicated pluggable port circuit-pack";
729           }
730           enum other {
731             value 2;
732             description
733               "slot accepts parent circuit-pack";
734           }
735         }
736       }
737     }
738     uses circuit-pack-features;
739     list ports {
740       key "port-name";
741       description
742         "List of ports on this circuit-pack. Note that pluggables are considered independent circuit-packs.  All ports that are physically present on a pluggable, need to be modeled as a port against that pluggable circuit-pack, and not against the parent circuit-pack.";
743       uses port;
744       container roadm-port {
745         when "../port-qual='roadm-external'";
746         uses org-openroadm-port-types:roadm-port;
747       }
748       container transponder-port {
749         when "../port-qual='xpdr-network' or ../port-qual='xpdr-client' or ../port-qual='switch-network' or ../port-qual='switch-client'";
750         uses org-openroadm-port-types:common-port;
751       }
752       container otdr-port {
753         when "../port-qual='otdr'";
754         description
755           "Settings for otdr port.";
756         leaf launch-cable-length {
757           type uint32;
758           units "m";
759           default "30";
760         }
761         leaf port-direction {
762           type org-openroadm-common-alarm-pm-types:direction;
763         }
764       }
765       container ila-port {
766         when "../port-qual='ila-external'";
767         uses org-openroadm-port-types:common-port;
768       }
769     }
770   }
771
772   grouping odu-connection {
773     description
774       "Grouping used to define odu-connections.";
775     leaf connection-name {
776       type string;
777       description
778         "roadm-connection and odu-connection share the same resource-type and resource definition (e.g. connection)";
779     }
780     leaf direction {
781       type enumeration {
782         enum unidirectional {
783           value 1;
784         }
785         enum bidirectional {
786           value 2;
787         }
788       }
789       default "bidirectional";
790       description
791         "Directionality of connection. If bidirectional, both directions are created.";
792     }
793     container source {
794       leaf src-if {
795         type leafref {
796           path "/org-openroadm-device/interface/name";
797         }
798         mandatory true;
799       }
800     }
801     container destination {
802       leaf dst-if {
803         type leafref {
804           path "/org-openroadm-device/interface/name";
805         }
806         mandatory true;
807       }
808     }
809   }
810
811   grouping connection {
812     description
813       "Grouping used to define connections.";
814     leaf connection-name {
815       type string;
816     }
817     leaf opticalControlMode {
818       type org-openroadm-common-link-types:optical-control-mode;
819       default "off";
820       description
821         "Whether connection is currently in power or gain/loss mode";
822       reference
823         "openroadm.org: Open ROADM MSA Specification.";
824     }
825     leaf target-output-power {
826       type org-openroadm-common-link-types:power-dBm;
827       description
828         "The output target power for this connection. When set, the ROADM will work to ensure that current-output-power reaches this level.";
829     }
830     container source {
831       leaf src-if {
832         type leafref {
833           path "/org-openroadm-device/interface/name";
834         }
835         mandatory true;
836       }
837     }
838     container destination {
839       leaf dst-if {
840         type leafref {
841           path "/org-openroadm-device/interface/name";
842         }
843         mandatory true;
844       }
845     }
846   }
847
848   grouping mc-capabilities-grp {
849     description
850       "Media channel capabilities grouping";
851     leaf-list mc-capability-profile-name {
852       type leafref {
853         path "/org-openroadm-device/mc-capability-profile/profile-name";
854       }
855       config false;
856       description
857         "Media channel capabilities";
858     }
859   }
860
861   grouping degree {
862     leaf degree-number {
863       type uint16;
864       description
865         "Degree number should be greater than zero and not greater than max-degrees";
866     }
867     leaf lifecycle-state {
868       type org-openroadm-common-state-types:lifecycle-state;
869       description
870         "Lifecycle State of degree. Whether it is planned, deployed, in maintenance, etc.";
871     }
872     leaf max-wavelengths {
873       type uint16;
874       config false;
875       mandatory true;
876       description
877         "maximum number of wavelengths";
878     }
879     list circuit-packs {
880       key "index";
881       description
882         "list for Cards associated with a degree";
883       leaf index {
884         type uint32;
885       }
886       uses circuit-pack-name {
887         refine "circuit-pack-name" {
888           mandatory true;
889         }
890       }
891     }
892     list connection-ports {
893       key "index";
894       description
895         "Port associated with degree: One if bi-directional; two if uni-directional";
896       leaf index {
897         type uint32;
898       }
899       uses port-name {
900         refine "circuit-pack-name" {
901           mandatory true;
902         }
903         refine "port-name" {
904           mandatory true;
905         }
906       }
907     }
908     container otdr-port {
909       description
910         "otdr port associated with degree.";
911       uses port-name;
912     }
913     uses mc-capabilities-grp;
914   }
915
916   grouping amplifier {
917     leaf amp-number {
918       type uint8 {
919         range "1..128";
920       }
921       description
922         "Unique identifier/number for the amplifier entry which corresponds to a logical amplifier";
923     }
924     leaf amp-type {
925       type org-openroadm-common-amplifier-types:amplifier-types;
926       config false;
927       mandatory true;
928       description
929         "Amplifier type";
930     }
931     leaf control-mode {
932       type org-openroadm-common-amplifier-types:line-amplifier-control-mode;
933       default "off";
934       description
935         "Whether the line amplifier is currently in off or gainLoss mode. control-mode can only be set to gainLoss when target-gain, target-tilt and egress-average-channel-power are set and the OMS interfaces are provisioned. The amplifier will be turned off when the control-mode is set to off";
936     }
937     leaf amp-gain-range {
938       type org-openroadm-common-amplifier-types:amplifier-gain-range;
939       default "gain-range-1";
940       config false;
941       description
942         "Amplifier gain-range (gain-range 1 to 4 for switched gain amplifiers)
943          gain-range-1 (default value) for standard amplifiers";
944     }
945     leaf target-gain {
946       type org-openroadm-common-link-types:ratio-dB;
947       config true;
948       description
949         "Target overall Amplifier Signal gain, excluding ASE, including VOA attenuation.
950          Defined as optional for ODL support, but shall be considered as mandatory and provided
951          by the controller when the control-mode is set to gainLoss for amplifier setting";
952     }
953     leaf target-tilt {
954       type org-openroadm-common-link-types:ratio-dB;
955       config true;
956       description
957         "Target tilt configured in case of smart EDFA.
958          Tilt value provided as specified in Open-ROADM-MSA-specifications spreadsheet
959          Defined as optional for ODL support, but shall be considered as mandatory and provided
960          by the controller when the control-mode is set to gainLoss for amplifier setting";
961     }
962     leaf egress-average-channel-power {
963       type org-openroadm-common-link-types:power-dBm;
964       config true;
965       description
966         "Based upon the total max power across the 4.8 THz passband.
967          Defined as optional for ODL support, but shall be considered as mandatory and provided
968          by the controller when the control-mode is set to gainLoss for amplifier setting";
969     }
970     leaf out-voa-att {
971       type org-openroadm-common-link-types:ratio-dB;
972       config false;
973       description
974         "Used to provide the value output VOA attenuation, optional";
975     }
976     leaf partner-amp {
977       type leafref {
978         path "/org-openroadm-device/line-amplifier/amp-number";
979       }
980       config false;
981       description
982         "amp-number of amp module that is functionally associated to the amplifier
983          in the opposite direction";
984     }
985     leaf ila-direction-label {
986       type string;
987       description
988         "Amplifier direction. Each operators may have its own naming convention.
989          Shall be consistent with tx-instance-port-direction-label and rx-instance-port-direction-label.";
990     }
991     leaf lifecycle-state {
992       type org-openroadm-common-state-types:lifecycle-state;
993       description
994         "Lifecycle State of the amplifier. Whether it is planned, deployed, in maintenance, etc.";
995     }
996   }
997
998   grouping external-links {
999     description
1000       "YANG definitions for external links..
1001        - physical links between ROADMs and between the ROADMs and XPonders, which can be added and removed manually.";
1002     list external-link {
1003       key "external-link-name";
1004       uses external-link;
1005     }
1006   }
1007
1008   grouping external-link {
1009     leaf external-link-name {
1010       type string;
1011     }
1012     container source {
1013       uses org-openroadm-resource-types:device-id {
1014         refine "node-id" {
1015           mandatory true;
1016         }
1017       }
1018       uses org-openroadm-resource-types:port-name {
1019         refine "circuit-pack-name" {
1020           mandatory true;
1021         }
1022         refine "port-name" {
1023           mandatory true;
1024         }
1025       }
1026     }
1027     container destination {
1028       uses org-openroadm-resource-types:device-id {
1029         refine "node-id" {
1030           mandatory true;
1031         }
1032       }
1033       uses org-openroadm-resource-types:port-name {
1034         refine "circuit-pack-name" {
1035           mandatory true;
1036         }
1037         refine "port-name" {
1038           mandatory true;
1039         }
1040       }
1041     }
1042   }
1043
1044   grouping internal-links {
1045     list internal-link {
1046       key "internal-link-name";
1047       config false;
1048       uses internal-link;
1049     }
1050   }
1051
1052   grouping internal-link {
1053     leaf internal-link-name {
1054       type string;
1055     }
1056     container source {
1057       uses port-name {
1058         refine "circuit-pack-name" {
1059           mandatory true;
1060         }
1061         refine "port-name" {
1062           mandatory true;
1063         }
1064       }
1065     }
1066     container destination {
1067       uses port-name {
1068         refine "circuit-pack-name" {
1069           mandatory true;
1070         }
1071         refine "port-name" {
1072           mandatory true;
1073         }
1074       }
1075     }
1076   }
1077
1078   grouping physical-links {
1079     description
1080       "YANG definitions for physical links.
1081        - physical links (fiber, cables,etc.) between ports within a node. ";
1082     list physical-link {
1083       key "physical-link-name";
1084       uses physical-link;
1085     }
1086   }
1087
1088   grouping physical-link {
1089     leaf physical-link-name {
1090       type string;
1091     }
1092     leaf is-physical {
1093       type boolean;
1094       description
1095         "is the entity physical or logical";
1096     }
1097     uses user-description-grp;
1098     container source {
1099       uses port-name {
1100         refine "circuit-pack-name" {
1101           mandatory true;
1102         }
1103         refine "port-name" {
1104           mandatory true;
1105         }
1106       }
1107     }
1108     container destination {
1109       uses port-name {
1110         refine "circuit-pack-name" {
1111           mandatory true;
1112         }
1113         refine "port-name" {
1114           mandatory true;
1115         }
1116       }
1117     }
1118     leaf lifecycle-state {
1119       type org-openroadm-common-state-types:lifecycle-state;
1120       description
1121         "Lifecycle State of the physical link. Whether it is planned, deployed, in maintenance, etc.";
1122     }
1123   }
1124
1125   grouping srg {
1126     leaf max-add-drop-ports {
1127       type uint16;
1128       config false;
1129       mandatory true;
1130       description
1131         "The max number of ports available for a given srg";
1132     }
1133     leaf current-provisioned-add-drop-ports {
1134       type uint16;
1135       config false;
1136       mandatory true;
1137       description
1138         "The number of ports currently provisioned for a given srg.";
1139     }
1140     leaf srg-number {
1141       type uint16;
1142       description
1143         "Srg number should be greater than zero and not greater than max-srgs";
1144     }
1145     leaf lifecycle-state {
1146       type org-openroadm-common-state-types:lifecycle-state;
1147       description
1148         "Lifecycle State of shared-risk-group. Whether it is planned, deployed, in maintenance, etc.";
1149     }
1150     leaf wavelength-duplication {
1151       type org-openroadm-common-optical-channel-types:wavelength-duplication-type;
1152       config false;
1153       mandatory true;
1154       description
1155         "Whether the SRG can handle duplicate wavelengths and if so to what extent.";
1156     }
1157     list circuit-packs {
1158       key "index";
1159       description
1160         "list for Cards associated with an add/drop group and srg";
1161       leaf index {
1162         type uint32;
1163       }
1164       uses circuit-pack-name {
1165         refine "circuit-pack-name" {
1166           mandatory true;
1167         }
1168       }
1169     }
1170     uses mc-capabilities-grp;
1171   }
1172
1173   grouping xponder {
1174     leaf xpdr-number {
1175       type uint16;
1176       must 'current() > 0' {
1177         error-message "Xponder not supported by device ";
1178         description
1179           "Validating if the Xponder is supported by device";
1180       }
1181     }
1182     leaf xpdr-type {
1183       type org-openroadm-device-types:xpdr-node-types;
1184       mandatory true;
1185       description
1186         "Identifier for xponder-type e.g Transponder, Muxponder";
1187     }
1188     leaf lifecycle-state {
1189       type org-openroadm-common-state-types:lifecycle-state;
1190       description
1191         "Lifecycle State of xponder. Whether it is planned, deployed, in maintenance, etc.";
1192     }
1193     leaf recolor {
1194       type boolean;
1195       config false;
1196       description
1197         "Indication if recolor is supported";
1198     }
1199     list xpdr-port {
1200       key "index";
1201       description
1202         "Network Ports with in a Xponder";
1203       leaf index {
1204         type uint32;
1205       }
1206       uses port-name {
1207         refine "circuit-pack-name" {
1208           mandatory true;
1209         }
1210         refine "port-name" {
1211           mandatory true;
1212         }
1213       }
1214       leaf eqpt-srg-id {
1215         type uint32;
1216         description
1217           "Shared Risk Group identifier. All ports in a circuit-pack will have same srg-id";
1218       }
1219     }
1220   }
1221
1222   grouping degree-number {
1223     leaf degree-number {
1224       type leafref {
1225         path "/org-openroadm-device/degree/degree-number";
1226       }
1227       description
1228         "Degree identifier. Unique within the context of a device.";
1229     }
1230   }
1231
1232   grouping circuit-pack-name {
1233     leaf circuit-pack-name {
1234       type leafref {
1235         path "/org-openroadm-device/circuit-packs/circuit-pack-name";
1236       }
1237       description
1238         "Circuit-Pack identifier. Unique within the context of a device.";
1239     }
1240   }
1241
1242   grouping port-name {
1243     uses circuit-pack-name;
1244     leaf port-name {
1245       type leafref {
1246         path "/org-openroadm-device/circuit-packs[circuit-pack-name=current()/../circuit-pack-name]/ports/port-name";
1247       }
1248       description
1249         "Port identifier. Unique within the context of a circuit-pack.";
1250     }
1251   }
1252
1253   grouping srg-number {
1254     leaf srg-number {
1255       type leafref {
1256         path "/org-openroadm-device/shared-risk-group/srg-number";
1257       }
1258       description
1259         "Shared Risk Group identifier. Unique within the context of a device.";
1260     }
1261   }
1262
1263   grouping supporting-port-name {
1264     leaf supporting-circuit-pack-name {
1265       type leafref {
1266         path "/org-openroadm-device/circuit-packs/circuit-pack-name";
1267       }
1268       description
1269         "Identifier of the supporting circuit-pack.";
1270     }
1271     leaf supporting-port {
1272       type leafref {
1273         path "/org-openroadm-device/circuit-packs[circuit-pack-name=current()/../supporting-circuit-pack-name]/ports/port-name";
1274       }
1275       description
1276         "Identifier of the supporting port.";
1277     }
1278   }
1279
1280   grouping supporting-circuit-pack-list-grp {
1281     description
1282       "supporting circuit pack list grouping";
1283     list supporting-port-list {
1284       key "index";
1285       description
1286         "supporting port list";
1287       leaf index {
1288         type uint8;
1289         description
1290           "supporting circuit pack index";
1291       }
1292       leaf circuit-pack-name {
1293         type leafref {
1294           path "/org-openroadm-device/circuit-packs/circuit-pack-name";
1295         }
1296         mandatory true;
1297         description
1298           "The supported circuit-pack.";
1299       }
1300       leaf-list port-list {
1301         type leafref {
1302           path "/org-openroadm-device/circuit-packs[circuit-pack-name=current()/../circuit-pack-name]/ports/port-name";
1303         }
1304         description
1305           "port list";
1306       }
1307     }
1308   }
1309
1310   grouping interface-name {
1311     description
1312       "interface name grouping";
1313     leaf interface-name {
1314       type leafref {
1315         path "/org-openroadm-device/interface/name";
1316       }
1317       config false;
1318       description
1319         "Name of an interface. Unique within the context of a device.";
1320     }
1321   }
1322
1323   grouping interfaces-grp {
1324     description
1325       "OpenROADM Interface configuration parameters.";
1326     list interface {
1327       key "name";
1328       description
1329         "The list of configured interfaces on the device.";
1330       leaf name {
1331         type string;
1332         description
1333           "The name of the interface.";
1334       }
1335       leaf description {
1336         type string;
1337         description
1338           "A textual description of the interface.";
1339       }
1340       leaf type {
1341         type identityref {
1342           base org-openroadm-interfaces:interface-type;
1343         }
1344         mandatory true;
1345         description
1346           "The type of the interface.";
1347       }
1348       leaf lifecycle-state {
1349         type org-openroadm-common-state-types:lifecycle-state;
1350         description
1351           "Lifecycle State of interface. Whether it is planned, deployed, in maintenance, etc.";
1352       }
1353       leaf administrative-state {
1354         type org-openroadm-equipment-states-types:admin-states;
1355         mandatory true;
1356       }
1357       leaf operational-state {
1358         type org-openroadm-common-state-types:state;
1359         config false;
1360         mandatory true;
1361       }
1362       leaf circuit-id {
1363         type string {
1364           length "0..45";
1365         }
1366         description
1367           "circuit identifier/user label,
1368            can be used in alarm correlation and/or connection management ";
1369       }
1370       uses supporting-port-name;
1371       leaf-list supporting-interface-list {
1372         type leafref {
1373           path "/org-openroadm-device/interface/name";
1374         }
1375         description
1376           "supporting interface list";
1377       }
1378     }
1379   }
1380
1381   grouping protection-groups {
1382     description
1383       "OpenROADM facility protection configuration parameters.";
1384     container protection-grps {
1385       description
1386         "The list of configured protection groups on the device.";
1387     }
1388   }
1389
1390   grouping port {
1391     description
1392       "Grouping of attributes related to a port object.";
1393     leaf port-name {
1394       type string;
1395       mandatory true;
1396       description
1397         "Identifier for a port, unique within a circuit pack";
1398     }
1399     uses supporting-circuit-pack-list-grp;
1400     leaf port-type {
1401       type string;
1402       description
1403         "Type of the pluggable or fixed port.";
1404     }
1405     leaf port-qual {
1406       type org-openroadm-device-types:port-qual;
1407     }
1408     leaf port-wavelength-type {
1409       type org-openroadm-port-types:port-wavelength-types;
1410       config false;
1411       description
1412         "Type of port - single, multiple-wavelength, etc.";
1413     }
1414     leaf port-direction {
1415       type org-openroadm-common-alarm-pm-types:direction;
1416       config false;
1417       mandatory true;
1418       description
1419         "Whether port is uni (tx/rx) or bi-directional and";
1420     }
1421     leaf is-physical {
1422       type boolean;
1423       config false;
1424       mandatory true;
1425       description
1426         "is the entity physical or logical";
1427     }
1428     leaf faceplate-label {
1429       type string;
1430       config false;
1431       mandatory true;
1432       description
1433         "label on the faceplace silk screening";
1434     }
1435     uses user-description-grp;
1436     leaf circuit-id {
1437       type string {
1438         length "0..45";
1439       }
1440       description
1441         "circuit identifier/user label,
1442          can be used in alarm correlation and/or connection management ";
1443     }
1444     leaf lifecycle-state {
1445       type org-openroadm-common-state-types:lifecycle-state;
1446       description
1447         "Lifecycle State of port. Whether it is planned, deployed, in maintenance, etc.";
1448     }
1449     leaf administrative-state {
1450       type org-openroadm-equipment-states-types:admin-states;
1451       default "outOfService";
1452       description
1453         "Administrative state of port. The value of this field independent of the state of its contained and containing resources.  Setting this a port to administratively down will impact both its operational state, as well the operational state of its contained resources.  If this port is an endpoint to a connection, internal-link, physical-link, etc, then administratively disabling this port will impact the operational state of those items unless they are using some form of port-protection schema.";
1454     }
1455     leaf operational-state {
1456       type org-openroadm-common-state-types:state;
1457       config false;
1458       mandatory true;
1459       description
1460         "Operational state of a port";
1461     }
1462     leaf logical-connection-point {
1463       type string;
1464       description
1465         "delete or replace with list logical-ports or connections?";
1466     }
1467     container partner-port {
1468       config false;
1469       description
1470         "For ports which are not identified as having a direction of bidirectional, this field is used to identify the port which corresponds to the reverse direction. A port pair should include a port for each direction (tx, rx) and report their mate as partner-port.";
1471       uses port-name;
1472     }
1473     container parent-port {
1474       config false;
1475       description
1476         "In the case of port hierarchy, this is the parent port, which is also modeled as port within this circuit-pack. This is used in the case of a port that supports a parallel connector that contains subports.  The parent-port of the subport will be the port that contains this subport.  This can be used to help isolate faults when a single fault on a parallel connector introduces symptomatic failures on the contained subports.";
1477       uses port-name;
1478     }
1479     list interfaces {
1480       config false;
1481       description
1482         "List of the interfaces this port supports.  This is a list of names of instances in the flat instance list.  Implementations must provide the list of interfaces for port that has interfaces provisioned on that port.";
1483       uses interface-name;
1484     }
1485     uses mc-capabilities-grp;
1486   }
1487
1488   grouping odu-mux-hierarchy-grp {
1489     description
1490       "ODU mux hierarchy group";
1491     list mux-capability {
1492       key "stage-number ho-odu-type ho-odu-payload-type";
1493       description
1494         "low order ODU TCM direction capability";
1495       leaf stage-number {
1496         type uint8 {
1497           range "1 .. 2";
1498         }
1499         description
1500           "stage number";
1501       }
1502       leaf ho-odu-type {
1503         type identityref {
1504           base org-openroadm-otn-common-types:odu-rate-identity;
1505         }
1506         description
1507           "High order ODU type";
1508       }
1509       leaf ho-odu-payload-type {
1510         type org-openroadm-otn-common-types:payload-type-def;
1511         description
1512           "High order ODU payload type";
1513       }
1514       leaf-list supported-lo-odu-type {
1515         type identityref {
1516           base org-openroadm-otn-common-types:odu-rate-identity;
1517         }
1518         description
1519           "Supported low order ODU type";
1520       }
1521       leaf lo-odu-proactive-DMp {
1522         type boolean;
1523         description
1524           "low order ODU PM delay measurement (DMp) (G.709 06-2016 15.8.2.1.6)";
1525       }
1526       leaf lo-odu-tcm-capable {
1527         type boolean;
1528         description
1529           "only when lo-odu-tcm-capable=true, the following two are applicable (ie, lo-odu-proactive-DMt, lo-odu-tcm-direction";
1530       }
1531       leaf lo-odu-proactive-DMt {
1532         when "../lo-odu-tcm-capable= 'true'";
1533         type boolean;
1534         description
1535           "low order ODU TCM delay measurement (DMt) (G.709 06-2016 15.8.2.2.8)";
1536       }
1537       leaf lo-odu-tcm-direction-capability {
1538         when "../lo-odu-tcm-capable= 'true'";
1539         type org-openroadm-common-types:tcm-direction-capability-type;
1540         description
1541           "Supported tcm direction capability for low order ODU associated with the port.";
1542       }
1543     }
1544   }
1545
1546   identity flexo-modulation-format-identity {
1547     description
1548       "Flexo modulation format identification";
1549   }
1550
1551   grouping flexo-grp {
1552     description
1553       "Flexo group";
1554     leaf circuit-pack-name {
1555       type leafref {
1556         path "/org-openroadm-device:org-openroadm-device/org-openroadm-device:circuit-packs/org-openroadm-device:circuit-pack-name";
1557       }
1558       description
1559         "Circuit-Pack identifier. Unique within the context of a device.";
1560     }
1561     leaf port-name {
1562       type leafref {
1563         path "/org-openroadm-device:org-openroadm-device/org-openroadm-device:circuit-packs/org-openroadm-device:ports/org-openroadm-device:port-name";
1564       }
1565       description
1566         "Port index identifier. Unique within the context of a circuit-pack.";
1567     }
1568
1569     uses org-openroadm-common-types:fec-grouping {
1570       status deprecated;
1571       description
1572         "Flexo FEC / Forward Error Correction";
1573     }
1574
1575     leaf otsi-rate {
1576       type identityref {
1577         base org-openroadm-common-optical-channel-types:otsi-rate-identity;
1578       }
1579       mandatory true;
1580       description
1581         "Flexo rate";
1582     }
1583     leaf otsi-modulation-format {
1584       type identityref {
1585         base flexo-modulation-format-identity;
1586       }
1587       description
1588         "Flexo modulation format";
1589     }
1590     leaf otsi-width {
1591       type uint16;
1592       description
1593         "OTSI width";
1594     }
1595     leaf operational-mode-id {
1596       type string;
1597       mandatory true;
1598       description
1599         "Optical profile operational mode identifier";
1600     }
1601   }
1602
1603   grouping otsigroup-capability-grp {
1604     description
1605       "Otsigroup group capability";
1606     leaf if-cap-type {
1607       type identityref {
1608         base org-openroadm-port-types:supported-if-capability;
1609       }
1610       description
1611         "Interface type/hierarchy/rate supported on this Otsi port. For example, if-n-otu4-n-odu4 and if-otucn-oducn";
1612     }
1613     choice otu-rate {
1614       description
1615         "To specify the supported rate in the case of OTUCn or NxOTU4";
1616       case otucn {
1617         leaf otucn-n-rate {
1618           type uint16;
1619           description
1620             "Specify the N associated with OTUCn, e.g. N = 2,3,4 for 200G/300G/400G respectively";
1621         }
1622       }
1623       case nxotu4 {
1624         leaf supported-n-otu4 {
1625           type uint16;
1626           description
1627             "Specify the number of N in the case of N x OTU4";
1628         }
1629       }
1630     }
1631     leaf-list foic-type {
1632       type identityref {
1633         base org-openroadm-common-optical-channel-types:foic-identity;
1634       }
1635       description
1636         "FlexO interface type ";
1637     }
1638     leaf otn-capability-profile-name {
1639       type leafref {
1640         path "/org-openroadm-device/otn-capability-profile/profile-name";
1641       }
1642       description
1643         "OTN capabilities";
1644     }
1645     leaf otn-odu-mux-hierarchy-profile-name {
1646       type leafref {
1647         path "/org-openroadm-device/otn-odu-mux-hierarchy-profile/profile-name";
1648       }
1649       description
1650         "OTN ODU Mux hierarchy capabilities";
1651     }
1652   }
1653
1654   grouping split-lambda-capability-grp {
1655     description
1656       "Split lambda capability group";
1657     container logical-port {
1658       leaf circuit-pack-name {
1659         type string;
1660         description
1661           "The circuit pack supporting the logical port";
1662       }
1663       leaf port-name {
1664         type string;
1665         description
1666           "Port name for logical-port";
1667       }
1668       description
1669         "Logical port container";
1670     }
1671     list otsi {
1672       key "circuit-pack-name port-name";
1673       description
1674         "OTSI list for split lambda";
1675       leaf circuit-pack-name {
1676         type string;
1677         description
1678           "OTSI circuit pack name";
1679       }
1680       leaf port-name {
1681         type string;
1682         description
1683           "OTSI port name";
1684       }
1685       leaf otsi-rate {
1686          type identityref {
1687            base org-openroadm-common-optical-channel-types:otsi-rate-identity;
1688          }
1689          description
1690            "OTSI rate";
1691       }
1692       leaf-list optical-operational-mode {
1693         type leafref {
1694           path "/org-openroadm-device/optical-operational-mode-profile/profile-name";
1695         }
1696         description
1697           "Optical operational mode leaf list";
1698       }
1699     }
1700     leaf-list otsigroup-capability-profile-name {
1701       type leafref {
1702         path "/org-openroadm-device/otsigroup-capability-profile/profile-name";
1703       }
1704       description
1705         "OTSI group capability mode";
1706     }
1707   }
1708
1709   grouping otn-capability-grp {
1710     description
1711       "OTN capability group";
1712     leaf-list if-protection-capability {
1713       type identityref {
1714         base org-openroadm-common-types:otn-protection-type;
1715       }
1716       description
1717         "supported protection types if protection is supported on this port";
1718     }
1719     leaf proactive-DMp {
1720       type boolean;
1721       description
1722         "ODU PM delay measurement (DMp) (G.709 06-2016 15.8.2.1.6)";
1723     }
1724     leaf tcm-capable {
1725       type boolean;
1726       description
1727         "only when tcm-capable=true, the following two are applicable (ie, proactive-DMt, tcm-direction";
1728     }
1729     leaf proactive-DMt {
1730       when "../tcm-capable= 'true'";
1731       type boolean;
1732       description
1733         "ODU TCM delay measurement (DMt) (G.709 06-2016 15.8.2.2.8)";
1734     }
1735     leaf tcm-direction-capability {
1736       when "../tcm-capable= 'true'";
1737       type org-openroadm-common-types:tcm-direction-capability-type;
1738       description
1739         "Supported tcm direction capability on the ODUk associated with the port.";
1740     }
1741     leaf-list opu-payload-type-mapping {
1742       type org-openroadm-otn-common-types:payload-type-def;
1743       description
1744         "OPU payload-type mapping OPU.";
1745     }
1746   }
1747
1748   grouping otn-odu-mux-hierarchy-grp {
1749     description
1750       "ODU mux hierarchy base group";
1751      list mux-capability {
1752        key "stage-number ho-odu-type ho-odu-payload-type";
1753        description
1754          "low order ODU TCM direction capability";
1755        leaf stage-number {
1756          type uint8 {
1757            range "1 .. 2";
1758          }
1759          description
1760            "stage number";
1761        }
1762        leaf ho-odu-type {
1763          type identityref {
1764            base org-openroadm-otn-common-types:odu-rate-identity;
1765          }
1766          description
1767            "High order ODU type";
1768        }
1769        leaf ho-odu-payload-type {
1770          type org-openroadm-otn-common-types:payload-type-def;
1771          description
1772            "High order ODU payload type";
1773        }
1774        leaf-list supported-lo-odu-type {
1775          type identityref {
1776            base org-openroadm-otn-common-types:odu-rate-identity;
1777          }
1778          description
1779            "Supported low order ODU type";
1780        }
1781        leaf lo-odu-proactive-DMp {
1782          type boolean;
1783          description
1784            "low order ODU PM delay measurement (DMp) (G.709 06-2016 15.8.2.1.6)";
1785        }
1786        leaf lo-odu-tcm-capable {
1787          type boolean;
1788          description
1789            "only when lo-odu-tcm-capable=true, the following two are applicable (ie, lo-odu-proactive-DMt, lo-odu-tcm-direction";
1790        }
1791        leaf lo-odu-proactive-DMt {
1792          when "../lo-odu-tcm-capable= 'true'";
1793          type boolean;
1794          description
1795            "low order ODU TCM delay measurement (DMt) (G.709 06-2016 15.8.2.2.8)";
1796        }
1797        leaf lo-odu-tcm-direction-capability {
1798          when "../lo-odu-tcm-capable= 'true'";
1799          type org-openroadm-common-types:tcm-direction-capability-type;
1800          description
1801            "Supported tcm direction capability for low order ODU associated with the port.";
1802        }
1803     }
1804   }
1805
1806   grouping mux-grp {
1807     leaf odtu-type {
1808       type identityref {
1809         base org-openroadm-otn-common-types:odtu-type-identity;
1810       }
1811       mandatory true;
1812       description
1813         "ODTU type, part of the MSI (Multiplex Structure Identifier)";
1814     }
1815     leaf network-odu-rate {
1816        type identityref {
1817        base org-openroadm-otn-common-types:odu-rate-identity;
1818       }
1819       mandatory true;
1820       description
1821         "Network ODU rate";
1822     }
1823     leaf network-oducn-n-rate {
1824       type uint16;
1825       description
1826         "Network ODUCn rate, eg, network-oducn-n-rate=4 for ODUC4";
1827     }
1828     leaf network-ho-odu-trib-port-number {
1829       type uint16 {
1830         range "1 .. 80";
1831       }
1832       mandatory true;
1833       description
1834         "Tributary port number";
1835     }
1836     leaf-list network-ho-odu-trib-slots {
1837       type uint16 {
1838         range "1 .. 80";
1839       }
1840       min-elements 1;
1841       max-elements 80;
1842       description
1843         "Network high order ODU trib slots";
1844     }
1845     leaf-list network-ho-odu-opucn-trib-slots {
1846       type org-openroadm-otn-common-types:opucn-trib-slot-def;
1847       description
1848         "Network high order ODU OPU tributary slots";
1849     }
1850     description
1851       "Mux group grouping";
1852   }
1853
1854   grouping org-openroadm-device-container {
1855     container org-openroadm-device {
1856       container info {
1857         uses device-common;
1858         leaf max-degrees {
1859           type uint16;
1860           config false;
1861           description
1862             "Max. number of degrees supported by device";
1863         }
1864         leaf max-srgs {
1865           type uint16;
1866           config false;
1867           description
1868             "Max. number of SRGs in an add/drop group";
1869         }
1870         leaf max-num-bin-15min-historical-pm {
1871           type uint16;
1872           config false;
1873           description
1874             "Max. number of bin the NE support for 15min historical PM";
1875         }
1876         leaf max-num-bin-24hour-historical-pm {
1877           type uint16;
1878           config false;
1879           description
1880             "Max. number of bin the NE support for 24hour historical PM";
1881         }
1882       }
1883       container users {
1884         description
1885           "Stores a list of users";
1886         uses org-openroadm-user-mgmt:user-profile;
1887       }
1888       container pending-sw {
1889         config false;
1890         description
1891           "pending software information";
1892         uses org-openroadm-swdl:sw-bank;
1893       }
1894       container database-info {
1895         config false;
1896         description
1897           "database restore information";
1898         uses org-openroadm-swdl:database-info-group;
1899       }
1900       uses shelves;
1901       uses circuit-packs;
1902       uses interfaces-grp;
1903       uses protection-groups;
1904       container protocols {
1905         description
1906           "Contains the supported protocols";
1907         leaf lifecycle-state {
1908           type org-openroadm-common-state-types:lifecycle-state;
1909           description
1910             "Lifecycle State of the protocols. Whether it is planned or deployed, etc.";
1911         }
1912       }
1913       uses internal-links;
1914       uses physical-links;
1915       uses external-links;
1916       list degree {
1917         when "/org-openroadm-device/info/node-type='rdm'";
1918         key "degree-number";
1919         uses degree;
1920       }
1921       list shared-risk-group {
1922         when "/org-openroadm-device/info/node-type='rdm'";
1923         key "srg-number";
1924         uses srg;
1925       }
1926       list line-amplifier {
1927         when "/org-openroadm-device/info/node-type='ila'";
1928         key "amp-number";
1929         description
1930           "lists amplifiers in different directions";
1931         uses amplifier;
1932         list circuit-pack {
1933           key "index";
1934           description
1935             "list for Cards associated with an amplifier";
1936           leaf index {
1937             type uint32;
1938           }
1939           uses circuit-pack-name {
1940             refine "circuit-pack-name" {
1941               mandatory true;
1942             }
1943           }
1944         }
1945         list line-port {
1946           key "port-direction";
1947           description
1948             "Port associated with an amplifier which face the line (ila-external): traffic port.";
1949           leaf port-direction {
1950             type org-openroadm-common-alarm-pm-types:direction;
1951             config true;
1952             mandatory true;
1953             description
1954               "partly allows identifying ports associated with logical amp :TX for egress, RX for ingress
1955                TXRX in case of bidirectional port";
1956           }
1957           leaf tx-instance-port-direction-label {
1958             type string;
1959             config true;
1960             description
1961               "Complements ports identification. Used notably in case of bidirectional ports,
1962                and/or in multi-degree amplifier nodes. Allows associating one of the directions
1963                specified in ila-direction-label. Shall be consistent with ila-direction-label";
1964           }
1965           leaf rx-instance-port-direction-label {
1966             type string;
1967             config true;
1968             description
1969               "Complements ports identification. Used notably in case of bidirectional ports,
1970                and/or in multi-degree amplifier nodes. Allows associating one of the directions
1971                specified in ila-direction-label. Shall be consistent with ila-direction-label";
1972           }
1973           uses port-name {
1974             refine "circuit-pack-name" {
1975               mandatory true;
1976             }
1977             refine "port-name" {
1978               mandatory true;
1979             }
1980           }
1981         }
1982         list osc-port {
1983           key "port-direction";
1984           description
1985             "Ports associated with OSC";
1986           leaf port-direction {
1987             type org-openroadm-common-alarm-pm-types:direction;
1988             config true;
1989             mandatory true;
1990             description
1991               "allows identifying ports associated with logical amp :
1992                TX for OSC circuit-pack IN RX for OSC circuit-pack OUT";
1993           }
1994           uses port-name {
1995             refine "circuit-pack-name" {
1996               mandatory true;
1997             }
1998             refine "port-name" {
1999               mandatory true;
2000             }
2001           }
2002         }
2003         list otdr-port {
2004           key "otdr-direction";
2005           description
2006             "otdr ports associated with an ILA";
2007           leaf otdr-direction {
2008             type string;
2009             config true;
2010             description
2011               "allows identifying associated logical amp port in which OTDR is launched:
2012                corresponds to rx-instance-port-direction-label of corresponding amplifier line-port";
2013           }
2014           uses port-name {
2015             refine "circuit-pack-name" {
2016               mandatory true;
2017             }
2018             refine "port-name" {
2019               mandatory true;
2020             }
2021           }
2022         }
2023       }
2024       list xponder {
2025         when "/org-openroadm-device/info/node-type='xpdr'";
2026         key "xpdr-number";
2027         uses xponder;
2028       }
2029       list roadm-connections {
2030         when "/org-openroadm-device/info/node-type='rdm'";
2031         key "connection-name";
2032         uses connection;
2033       }
2034       list odu-connection {
2035         when "/org-openroadm-device/info/node-type='xpdr'";
2036         key "connection-name";
2037         uses odu-connection;
2038       }
2039       list connection-map {
2040         key "connection-map-number";
2041         config false;
2042         leaf connection-map-number {
2043           type uint32;
2044           description
2045             "Unique identifier for this connection-map entry";
2046         }
2047         container source {
2048           leaf circuit-pack-name {
2049             type leafref {
2050               path "/org-openroadm-device/circuit-packs/circuit-pack-name";
2051             }
2052             mandatory true;
2053           }
2054           leaf port-name {
2055             type leafref {
2056               path "/org-openroadm-device/circuit-packs[circuit-pack-name=current()/../circuit-pack-name]/ports/port-name";
2057             }
2058             mandatory true;
2059             description
2060               "Port identifier. Unique within the context of a circuit-pack.";
2061           }
2062         }
2063         list destination {
2064           key "circuit-pack-name port-name";
2065           min-elements 1;
2066           leaf circuit-pack-name {
2067             type leafref {
2068               path "/org-openroadm-device/circuit-packs/circuit-pack-name";
2069             }
2070             mandatory true;
2071           }
2072           leaf port-name {
2073             type leafref {
2074               path "/org-openroadm-device/circuit-packs[circuit-pack-name=current()/../circuit-pack-name]/ports/port-name";
2075             }
2076             mandatory true;
2077             description
2078               "Port identifier. Unique within the context of a circuit-pack.";
2079           }
2080         }
2081       }
2082       list odu-switching-pools {
2083         when "/org-openroadm-device/info/node-type='xpdr'";
2084         key "switching-pool-number";
2085         config false;
2086         leaf switching-pool-number {
2087           type uint16;
2088           description
2089             "Unique identifier for this odu-switching-pool";
2090         }
2091         leaf switching-pool-type {
2092           type org-openroadm-switching-pool-types:switching-pool-types;
2093           description
2094             "Blocking/Non-Blocking";
2095         }
2096         leaf odu-connection-direction-capabilities {
2097           type identityref {
2098             base connection-direction-identity;
2099           }
2100           description
2101             "Bidrectional capable, or Bi and Unidirectional capable";
2102         }
2103         list non-blocking-list {
2104           key "nbl-number";
2105           config false;
2106           description
2107             "List of ports in a non-blocking switch element";
2108           leaf nbl-number {
2109             type uint16;
2110             description
2111               "Identifier for this non-blocking-list. Unique within odu-switching-pool";
2112           }
2113           leaf interconnect-bandwidth-unit {
2114             type uint32;
2115             config false;
2116             description
2117               "Switch fabric interconnect bandwidth unit rate in bits per second.
2118                Represents granularity of switch fabric";
2119           }
2120           leaf interconnect-bandwidth {
2121             type uint32;
2122             config false;
2123             description
2124               "Total interconnect bandwidth for a non-blocking element expressed as
2125                number of inter-connect-bandwidth units";
2126           }
2127           list port-list {
2128             key "circuit-pack-name port-name";
2129             leaf circuit-pack-name {
2130               type leafref {
2131                 path "/org-openroadm-device/circuit-packs/circuit-pack-name";
2132               }
2133               config false;
2134             }
2135             leaf port-name {
2136               type leafref {
2137                 path "/org-openroadm-device/circuit-packs/ports/port-name";
2138               }
2139               config false;
2140               description
2141                 "Port name. Unique within device";
2142             }
2143           }
2144           list pluggable-optics-holder-list {
2145             key "circuit-pack-name slot-name";
2146             leaf circuit-pack-name {
2147               type leafref {
2148                 path "/org-openroadm-device/circuit-packs/circuit-pack-name";
2149               }
2150               config false;
2151               description
2152                 "Name of parent circuit-pack";
2153             }
2154             leaf slot-name {
2155               type leafref {
2156                 path "/org-openroadm-device/circuit-packs/cp-slots/slot-name";
2157               }
2158               config false;
2159               description
2160                 "Name of pluggable-optics-holder";
2161             }
2162           }
2163         }
2164       }
2165       list otsigroup-capability-profile {
2166         key "profile-name";
2167         config false;
2168         description
2169           "OTSI group operational profile";
2170         leaf profile-name {
2171           type string;
2172           description
2173             "OTSI group profile name";
2174         }
2175         uses otsigroup-capability-grp;
2176       }
2177       list mc-capability-profile {
2178         key "profile-name";
2179         config false;
2180         description
2181           "Media channel capability profile list";
2182         leaf profile-name {
2183           type string;
2184           description
2185             "Media channel profile name";
2186         }
2187         leaf center-freq-granularity {
2188           type org-openroadm-common-optical-channel-types:frequency-GHz;
2189           default "50";
2190           config false;
2191           description
2192             "Granularity of allowed center frequencies.  The base frequency for this computation is 193.1 THz (G.694.1)";
2193         }
2194         leaf min-edge-freq {
2195           type org-openroadm-common-optical-channel-types:frequency-THz;
2196           config false;
2197           description
2198             "Minimum edge frequency";
2199         }
2200         leaf max-edge-freq {
2201           type org-openroadm-common-optical-channel-types:frequency-THz;
2202           config false;
2203           description
2204             "Maximum edge frequency";
2205         }
2206         leaf slot-width-granularity {
2207           type org-openroadm-common-optical-channel-types:frequency-GHz;
2208           default "50";
2209           config false;
2210           description
2211             "Width of a slot measured in GHz.";
2212         }
2213         leaf min-slots {
2214           type uint32;
2215           default "1";
2216           config false;
2217           description
2218             "Minimum number of slots permitted to be joined together to form a media channel.  Must be less than or equal to the max-slots";
2219         }
2220         leaf max-slots {
2221           type uint32;
2222           default "1";
2223           config false;
2224           description
2225             "Maximum number of slots permitted to be joined together to form a media channel.  Must be greater than or equal to the min-slots";
2226         }
2227       }
2228       list split-lambda-profile {
2229         key "profile-name";
2230         config false;
2231         description
2232           "OTN capability profile";
2233         leaf profile-name {
2234           type string;
2235           description
2236             "Split lambda profile name";
2237         }
2238         uses split-lambda-capability-grp;
2239       }
2240       list otn-odu-mux-hierarchy-profile {
2241         key "profile-name";
2242         config false;
2243         description
2244           "OTN ODU mux hierarchy profile list";
2245         leaf profile-name {
2246           type string;
2247           description
2248             "OTN ODU mux hierarchy profile name";
2249         }
2250         uses otn-odu-mux-hierarchy-grp;
2251       }
2252       list optical-operational-mode-profile {
2253         key "profile-name";
2254         config false;
2255         description
2256           "Optical operational profile";
2257         leaf profile-name {
2258           type string;
2259           description
2260             "Optical operational profile name";
2261         }
2262         uses org-openroadm-optical-operational-interfaces:optical-operational-modes-grp-attr;
2263       }
2264       list otn-capability-profile {
2265         key "profile-name";
2266         config false;
2267         description
2268           "OTN capability profile";
2269         leaf profile-name {
2270           type string;
2271           description
2272             "OTN capability profile name";
2273         }
2274         uses otn-capability-grp;
2275       }
2276       list muxp-profile {
2277         key "profile-name";
2278         config false;
2279         description
2280           "Muxp profile list";
2281         leaf profile-name {
2282           type string;
2283           description
2284             "Mux profile name";
2285         }
2286         uses mux-grp;
2287       }
2288     }
2289   }
2290
2291   grouping common-session-parms {
2292     description
2293       "Common session parameters to identify a
2294        management session.";
2295     leaf username {
2296       type org-openroadm-user-mgmt:username-type;
2297       mandatory true;
2298       description
2299         "Name of the user for the session.";
2300     }
2301     leaf session-id {
2302       type ietf-nc:session-id-or-zero-type;
2303       mandatory true;
2304       description
2305         "Identifier of the session.
2306          A NETCONF session MUST be identified by a non-zero value.
2307          A non-NETCONF session MAY be identified by the value zero.";
2308     }
2309     leaf source-host {
2310       type ietf-inet-types:ip-address;
2311       description
2312         "Address of the remote host for the session.";
2313     }
2314   }
2315
2316   grouping changed-by-parms {
2317     description
2318       "Common parameters to identify the source
2319        of a change event, such as a configuration
2320        or capability change.";
2321     container changed-by {
2322       description
2323         "Indicates the source of the change.
2324          If caused by internal action, then the
2325          empty leaf 'server' will be present.
2326          If caused by a management session, then
2327          the name, remote host address, and session ID
2328          of the session that made the change will be reported.";
2329       choice server-or-user {
2330         leaf server {
2331           type empty;
2332           description
2333             "If present, the change was caused
2334              by the server.";
2335         }
2336         case by-user {
2337           uses common-session-parms;
2338         }
2339       }
2340     }
2341   }
2342
2343   rpc led-control {
2344     description
2345       "This command is used to allow user to find an entity on the NE,
2346        The specified entity will have LED blinking.
2347        The equipmentLedOn alarm will be raised and cleared for the indication";
2348     input {
2349       choice equipment-entity {
2350         mandatory true;
2351         case shelf {
2352           leaf shelf-name {
2353             type leafref {
2354               path "/org-openroadm-device/shelves/shelf-name";
2355             }
2356             mandatory true;
2357             description
2358               "shelf-name for the operation";
2359           }
2360         }
2361         case circuit-pack {
2362           leaf circuit-pack-name {
2363             type leafref {
2364               path "/org-openroadm-device/circuit-packs/circuit-pack-name";
2365             }
2366             mandatory true;
2367             description
2368               "circuit-pack-name for the operation";
2369           }
2370         }
2371       }
2372       leaf enabled {
2373         type boolean;
2374         mandatory true;
2375         description
2376           "led-control enabled flag.
2377            when enabled=true,  equipmentLedOn alarm will be raised
2378            when enabled=false, equipmentLedOn alarm will be cleared";
2379       }
2380     }
2381     output {
2382       uses org-openroadm-common-types:rpc-response-status;
2383     }
2384   }
2385
2386   rpc create-tech-info {
2387     description
2388       "Collects all log data for debugging and place it in a location accessible via ftp/sftp.
2389        This model assumes ASYNC operation, i.e. the command will return after the device accepts the command,
2390        A create-tech-info-notification will be send out later for the result of the operation.
2391        The log-file is cleared at the start of every create-tech-info operation in order to ensure
2392        the up-to-date logs are collected. If a vendor does not support concurrent log collection, the second
2393        create-tech-info command will be rejected.";
2394     input {
2395       leaf shelf-id {
2396         type leafref {
2397           path "/org-openroadm-device/shelves/shelf-name";
2398         }
2399         description
2400           "This optional field is used to specify the shelf for log collection.
2401            When this filed is not provided, it is expected to collect logs for the whole node.
2402            Vendor should reject the command if the whole node log collection is not supported.";
2403       }
2404       leaf log-option {
2405         type string;
2406         description
2407           "The log type a vendor can specify. Maybe used in future";
2408       }
2409     }
2410     output {
2411       uses create-tech-info-group;
2412       uses org-openroadm-common-types:rpc-response-status;
2413     }
2414   }
2415
2416   rpc get-connection-port-trail {
2417     input {
2418       leaf connection-name {
2419         type string;
2420         mandatory true;
2421       }
2422     }
2423     output {
2424       uses org-openroadm-common-types:rpc-response-status;
2425       list ports {
2426         uses org-openroadm-device-types:physical-location;
2427         uses port-name {
2428           refine "circuit-pack-name" {
2429             mandatory true;
2430           }
2431           refine "port-name" {
2432             mandatory true;
2433           }
2434         }
2435       }
2436     }
2437   }
2438
2439   rpc disable-automatic-shutoff {
2440     input {
2441       choice degree-or-amp {
2442         mandatory true;
2443         description
2444           "The choice describes the option to specify the entity for the disable-automatic-shutoff RPC. It can be degree-number for rdm and amp-number for ila";
2445         case degree {
2446           leaf degree-number {
2447             type leafref {
2448               path "/org-openroadm-device/degree/degree-number";
2449             }
2450             mandatory true;
2451             description
2452               "The degree-number defined in degree";
2453           }
2454         }
2455         case amp {
2456           leaf amp-number {
2457             type leafref {
2458               path "/org-openroadm-device/line-amplifier/amp-number";
2459             }
2460             mandatory true;
2461             description
2462               "The amp-number defined in line-amplifier";
2463           }
2464         }
2465       }
2466       leaf support-timer {
2467         type uint16 {
2468           range "1..600";
2469         }
2470         default "20";
2471       }
2472     }
2473     output {
2474       uses org-openroadm-common-types:rpc-response-status;
2475     }
2476   }
2477
2478   rpc start-scan {
2479     input {
2480       choice degree-or-amp {
2481         mandatory true;
2482         description
2483           "The choice describes the option to specify the entity for the start-scan RPC. It can be degree-number for rdm and amp-number for ila";
2484         case degree {
2485           leaf degree-number {
2486             type leafref {
2487               path "/org-openroadm-device/degree/degree-number";
2488             }
2489             mandatory true;
2490             description
2491               "The degree-number defined in degree";
2492           }
2493         }
2494         case amp {
2495           leaf amp-number {
2496             type leafref {
2497               path "/org-openroadm-device/line-amplifier/amp-number";
2498             }
2499             mandatory true;
2500             description
2501               "The amp-number defined in line-amplifier";
2502           }
2503         }
2504       }
2505       leaf port-direction {
2506         type org-openroadm-common-alarm-pm-types:direction;
2507       }
2508       leaf distance {
2509         type uint32;
2510       }
2511       leaf resolution {
2512         type uint32;
2513       }
2514     }
2515     output {
2516       uses org-openroadm-common-types:rpc-response-status;
2517     }
2518   }
2519
2520   rpc set-current-datetime {
2521     description
2522       "Set the info/current-datetime leaf to the specified value.";
2523     input {
2524       leaf current-datetime {
2525         type ietf-yang-types:date-and-time;
2526         mandatory true;
2527         description
2528           "The current system date and time in UTC. Format: YYYY-MM-DDTHH:MM:SS";
2529       }
2530     }
2531     output {
2532       uses org-openroadm-common-types:rpc-response-status;
2533     }
2534   }
2535
2536   notification create-tech-info-notification {
2537     description
2538       "This Notification is sent when the create-tech-info is complete or failed.";
2539     uses create-tech-info-group;
2540     uses org-openroadm-common-types:rpc-response-status;
2541   }
2542
2543   notification otdr-scan-result {
2544     description
2545       "This Notification is sent when the otdr-scan-result is complete or failed.";
2546     uses org-openroadm-common-types:rpc-response-status;
2547     leaf result-file {
2548       type string;
2549     }
2550   }
2551
2552   notification change-notification {
2553     description
2554       "The Notification that a resource has been added, modified or removed.
2555        This notification can be triggered by changes in configuration and operational data.
2556        It shall contain the changed field pointed by the xpath.
2557        Typically it is not intended for frequently changing volatile data e.g. PM, power levels";
2558     leaf change-time {
2559       type ietf-yang-types:date-and-time;
2560       description
2561         "The time the change occurs.";
2562     }
2563     uses changed-by-parms;
2564     leaf datastore {
2565       type enumeration {
2566         enum running {
2567           description
2568             "The <running> datastore has changed.";
2569         }
2570         enum startup {
2571           description
2572             "The <startup> datastore has changed";
2573         }
2574       }
2575       default "running";
2576       description
2577         "Indicates which configuration datastore has changed.";
2578     }
2579     list edit {
2580       description
2581         "An edit (change) record SHOULD be present for each distinct
2582          edit operation that the server has detected on
2583          the target datastore.  This list MAY be omitted
2584          if the detailed edit operations are not known.
2585          The server MAY report entries in this list for
2586          changes not made by a NETCONF session.";
2587       leaf target {
2588         type instance-identifier;
2589         description
2590           "Top most node associated with the configuration or operational change.
2591            A server SHOULD set this object to the node within
2592            the datastore that is being altered.  A server MAY
2593            set this object to one of the ancestors of the actual
2594            node that was changed, or omit this object, if the
2595            exact node is not known.";
2596       }
2597       leaf operation {
2598         type ietf-nc:edit-operation-type;
2599         description
2600           "Type of edit operation performed.
2601            A server MUST set this object to the NETCONF edit
2602            operation performed on the target datastore.";
2603       }
2604     }
2605   }
2606
2607   uses org-openroadm-device-container;
2608 }