1 module org-openroadm-network-topology {
2 namespace "http://org/openroadm/network/topology";
7 revision-date 2015-06-08;
9 import ietf-network-topology {
11 revision-date 2015-06-08;
13 import org-openroadm-network-types {
14 prefix org-openroadm-network-types;
15 revision-date 2017-09-29;
17 import org-openroadm-srg {
19 revision-date 2017-09-29;
21 import org-openroadm-degree {
23 revision-date 2017-09-29;
25 import org-openroadm-xponder {
27 revision-date 2017-09-29;
29 import org-openroadm-external-pluggable {
31 revision-date 2017-09-29;
33 import org-openroadm-link {
35 revision-date 2017-09-29;
37 import org-openroadm-common-types {
39 revision-date 2017-09-29;
47 "YANG definitions for network view of a ROADM
49 Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
50 AT&T Intellectual Property. All other rights reserved.
52 Redistribution and use in source and binary forms, with or without modification,
53 are permitted provided that the following conditions are met:
55 * Redistributions of source code must retain the above copyright notice, this
56 list of conditions and the following disclaimer.
57 * Redistributions in binary form must reproduce the above copyright notice,
58 this list of conditions and the following disclaimer in the documentation and/or
59 other materials provided with the distribution.
60 * Neither the Members of the Open ROADM MSA Agreement nor the names of its
61 contributors may be used to endorse or promote products derived from this software
62 without specific prior written permission.
64 THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
65 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
66 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
67 IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
68 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
69 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
70 OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
71 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
72 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
73 POSSIBILITY OF SUCH DAMAGE.";
81 "Version 2.0.1 - added revision-date to imports";
88 augment "/nd:network/nd:network-types" {
90 "Introduce new network type for the Open ROADM optical
92 container openroadm-topology {
93 presence "indicates optical network topology for Open ROADMs";
96 augment "/nd:network/nd:node" {
97 when "../nd:network-types/openroadm-topology";
99 "This augmentations adds the ROADM Node type to the generic node
100 definition and defines node-sepcific attributes for each node type
101 in the ROADM Topology.";
103 type org-openroadm-network-types:openroadm-node-type;
105 "The type of a node in the ROADM topology. Valid node types are 'SRG', 'DEGREE',
106 'TPDR', 'SWITCH', 'REGEN', 'REGEN-UNI', 'EXT-PLUGGABLE' and 'MUXPDR'";
108 container srg-attributes {
109 when "../node-type = 'SRG'";
110 uses srg:srg-node-attributes;
112 "Topology-related attributes for SRG nodes";
114 container degree-attributes {
115 when "../node-type = 'DEGREE'";
116 uses dgr:degree-node-attributes;
118 "Topology-related attributes for degree nodes";
120 container xpdr-attributes {
121 when "../node-type = 'TPDR' or ../node-type = 'MUXPDR' or ../node-type = 'REGEN' or
122 ../node-type = 'REGEN-UNI' or ../node-type = 'SWITCH'";
123 uses xpdr:xpdr-topo-node-attributes;
125 "Topology-related attributes for Xponder nodes";
128 augment "/nd:network/nd:node/nwt:termination-point" {
129 when "../../nd:network-types/openroadm-topology";
131 "Defines the type of a termination point in the ROADM topology and
132 TP-specific attributes for each termination point type.";
134 type org-openroadm-network-types:openroadm-tp-type;
135 must "../../topo:node-type != 'DEGREE' or (../../topo:node-type = 'DEGREE' and
136 (../topo:tp-type = 'DEGREE-TX-TTP' or ../topo:tp-type = 'DEGREE-RX-TTP' or ../topo:tp-type = 'DEGREE-TXRX-TTP' or
137 ../topo:tp-type = 'DEGREE-TX-CTP' or ../topo:tp-type = 'DEGREE-RX-CTP' or ../topo:tp-type = 'DEGREE-TXRX-CTP'))" {
138 error-message "Invalid TP for node type 'DEGREE'";
140 must "../../topo:node-type != 'SRG' or (../../topo:node-type = 'SRG' and
141 (../topo:tp-type = 'SRG-TX-CP' or ../topo:tp-type = 'SRG-RX-CP' or ../topo:tp-type = 'SRG-TXRX-CP' or
142 ../topo:tp-type = 'SRG-RX-PP' or ../topo:tp-type = 'SRG-TX-PP' or ../topo:tp-type = 'SRG-TXRX-PP'))" {
143 error-message "Invalid TP for node type 'SRG'";
145 must " (../../topo:node-type != 'TPDR' and ../../topo:node-type != 'MUXPDR' and ../../topo:node-type != 'REGEN' and
146 ../../topo:node-type != 'REGEN-UNI' and ../../topo:node-type != 'SWITCH')
147 or ((../../topo:node-type = 'TPDR' or ../../topo:node-type = 'MUXPDR' or ../../topo:node-type = 'REGEN' or
148 ../../topo:node-type = 'REGEN-UNI' or ../../topo:node-type = 'SWITCH') and
149 (../topo:tp-type = 'XPONDER-NETWORK' or ../topo:tp-type = 'XPONDER-CLIENT' or ../topo:tp-type = 'XPONDER-PORT'))" {
150 error-message "Invalid TP for node type 'XPONDER'";
152 must "../../topo:node-type != 'EXT-PLUGGABLE' or (../../topo:node-type = 'EXT-PLUGGABLE' and ../topo:tp-type = 'EXT-PLUGGABLE-TP')" {
153 error-message "Invalid TP for node type 'EXT-PLUGGABLE'";
156 "The TP type; also defines which TP types can be instantiated
157 on which Node types";
159 container tx-ttp-attributes {
160 when "../tp-type = 'DEGREE-TX-TTP' or ../tp-type = 'DEGREE-TXRX-TTP'";
162 "There must be only one TP of type DEGREE-TX-TTP in any given
164 uses dgr:degree-used-wavelengths;
166 container rx-ttp-attributes {
167 when "../tp-type = 'DEGREE-RX-TTP'";
169 "There must be only one TP of type DEGREE-RX-TTP in any given
171 uses dgr:degree-used-wavelengths;
173 container ctp-attributes {
174 when "../tp-type = 'DEGREE-TX-CTP' or ../tp-type = 'DEGREE-RX-CTP' or ../tp-type = 'DEGREE-TXRX-CTP'";
175 uses dgr:degree-used-wavelengths;
177 container cp-attributes {
178 when "../tp-type = 'SRG-TX-CP' or ../tp-type = 'SRG-RX-CP' or ../tp-type = 'SRG-TXRX-CP'";
179 list used-wavelengths {
181 uses org-openroadm-network-types:wavelengths;
184 "This list is created to accommodate fixed grid (1.2.1) as well as flex grid (2.0 above). In case of fixed grid
185 index number will refer to one of the 96 WL defined in the wavelength map file. In case of flex grid this
186 will hold list of used spectrums";
188 container pp-attributes {
189 when "../tp-type = 'SRG-TXRX-PP' or ../tp-type = 'SRG-TX-PP' or ../tp-type = 'SRG-RX-PP' ";
190 list used-wavelength {
192 uses org-openroadm-network-types:wavelengths;
195 "This list is created to accommodate fixed grid (1.2.1) as well as flex grid (2.0 above). In case of fixed grid
196 index number will refer to one of the 96 WL defined in the wavelength map file. In case of flex grid this
197 will hold list of used spectrums";
200 when "../tp-type = 'XPONDER-CLIENT' or ../tp-type = 'XPONDER-NETWORK' or ../tp-type = 'EXT-PLUGGABLE-TP' or
201 ../tp-type = 'XPONDER-PORT'";
203 "Shared Risk Group identifier. All ports in a circuit-pack will have same srg-id";
206 container xpdr-client-attributes {
207 when "../tp-type = 'XPONDER-CLIENT'";
208 uses xpdr:xpdr-connection-attributes;
209 uses xpdr:xpdr-port-connection-attributes;
211 container xpdr-network-attributes {
212 when "../tp-type = 'XPONDER-NETWORK'";
213 uses xpdr:xpdr-connection-attributes;
214 uses xpdr:xpdr-port-connection-attributes;
216 container xpdr-port-attributes {
217 when "../tp-type = 'XPONDER-PORT'";
218 uses xpdr:xpdr-connection-attributes;
219 uses xpdr:xpdr-port-connection-attributes;
221 container ext-pluggable-attributes {
222 when "../tp-type = 'EXT-PLUGGABLE-TP'";
223 uses plg:pluggable-tp-attributes;
226 augment "/nd:network/nwt:link" {
227 when "../nd:network-types/openroadm-topology";
229 "This augmentation defines ROADM link types in the ROADM topology";
231 type org-openroadm-network-types:openroadm-link-type;
238 leaf administrative-group {
241 "according to RFC 3630 definition";
243 leaf operational-state {
246 "according to RFC 3630 definition";
248 leaf administrative-state {
251 "according to RFC 3630 definition";
259 when "../link-type = 'ROADM-TO-ROADM'";
262 "defines whether an ROADM-TO-ROADM Link includes line amplifiers or not";
264 container OMS-attributes {
265 when "../link-type = 'ROADM-TO-ROADM'";
268 uses link:OMS-attributes;
271 path "../../../nwt:link/nwt:link-id";
274 "optional - pointer to reverse link in case of bidirectional link";
277 when "../../amplified = 'false'";
280 uses link:span-attributes;
282 container amplified-link {
283 when "../../amplified = 'true'";
285 "when amplified is set to true, rather than a simple OMS section
286 we have an amplified link";
287 uses link:amplified-link-attributes;