add unit tests for pceOtnNode
[transportpce.git] / pce / src / test / java / org / opendaylight / transportpce / pce / networkanalyzer / PceOtnNodeTest.java
1 /*
2  * Copyright © 2020 Orange, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.transportpce.pce.networkanalyzer;
10
11 import com.google.common.collect.ImmutableList;
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.List;
15 import org.junit.Assert;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.mockito.Mockito;
19 import org.opendaylight.transportpce.common.NetworkUtils;
20 import org.opendaylight.transportpce.test.AbstractTest;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengthsBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributes;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributes;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CpAttributesBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CtpAttributesBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.PpAttributesBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.RxTtpAttributesBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributesBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.TpSupportedInterfaces;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.TpSupportedInterfacesBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If100GEODU4;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If10GEODU2e;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If1GEODU0;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.IfOCHOTU4ODU4;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
48 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
50 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
51 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
52 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
53 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
54 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
55 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
56 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder;
57 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
58 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
59 import org.opendaylight.yangtools.yang.common.Uint32;
60
61
62
63 public class PceOtnNodeTest extends AbstractTest {
64
65     private PceOtnNode pceOtnNode;
66     private Node node;
67
68     @Before
69     public void setUp() {
70         node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERNETWORK).build();
71     }
72
73     @Test
74     public void testInitXndrTpsODU4() {
75         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR,
76                 new NodeId("optical"), ServiceFormat.OMS.getName(), "ODU4");
77         pceOtnNode.initXndrTps("AZ");
78         pceOtnNode.checkAvailableTribPort();
79         pceOtnNode.checkAvailableTribSlot();
80         Assert.assertTrue("valid otn service type " , pceOtnNode.isValid());
81         Assert.assertFalse("checkWl returns by default false" , pceOtnNode.checkWL(5L));
82         Assert.assertNotNull("tpAvailableTribPort isn't null !" , pceOtnNode.getAvailableTribPorts());
83     }
84
85     @Test
86     public void testInitXndrTps10GE() {
87         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR,
88                 new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE");
89         pceOtnNode.initXndrTps("mode");
90         pceOtnNode.checkAvailableTribPort();
91         pceOtnNode.checkAvailableTribSlot();
92         Assert.assertFalse("not valid otn service type" , pceOtnNode.isValid());
93     }
94
95     @Test
96     public void testInitXndrTps10GXponderClient1() {
97         node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build();
98         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.ROADM,
99                 new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE");
100         pceOtnNode.initXndrTps("mode");
101         pceOtnNode.checkAvailableTribPort();
102         pceOtnNode.checkAvailableTribSlot();
103         Assert.assertFalse("not valid otn service type", pceOtnNode.isValid());
104         Assert.assertTrue("this.nodeType isn'tOpenroadmNodeType.TPDR" ,
105                 pceOtnNode.validateSwitchingPoolBandwidth(null,null,1L));
106
107     }
108
109     @Test
110     public void testInitXndrTps1GXponderClient() {
111         node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build();
112         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR,
113                 new NodeId("optical"), ServiceFormat.OMS.getName(), "1GE");
114         pceOtnNode.initXndrTps("mode");
115         pceOtnNode.checkAvailableTribPort();
116         pceOtnNode.checkAvailableTribSlot();
117         Assert.assertFalse("not valid otn service type" , pceOtnNode.isValid());
118     }
119
120     @Test
121     public void testInitXndrTps10GXponderClient() {
122         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR,
123                 new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE");
124         pceOtnNode.validateXponder("optical", "sl");
125         pceOtnNode.validateXponder("not optical", "sl");
126         pceOtnNode.initXndrTps("AZ");
127         pceOtnNode.checkAvailableTribPort();
128         pceOtnNode.checkAvailableTribSlot();
129         Assert.assertFalse("not valid otn service type" , pceOtnNode.isValid());
130         Assert.assertFalse("checkTp returns false by default " , pceOtnNode.checkTP("tp"));
131
132     }
133
134     @Test
135     public void testIsPceOtnNodeValid() {
136         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR,
137                 new NodeId("optical"), ServiceFormat.OMS.getName(), "10GE");
138         pceOtnNode.initXndrTps("AZ");
139         pceOtnNode.checkAvailableTribPort();
140         pceOtnNode.checkAvailableTribSlot();
141         Assert.assertFalse("not valid otn service Type" , pceOtnNode.isPceOtnNodeValid(pceOtnNode));
142     }
143
144     @Test
145     public void testIsPceOtnNodeValidNode() {
146         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.DEGREE,
147                 new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE");
148         pceOtnNode.initXndrTps("AZ");
149         pceOtnNode.checkAvailableTribPort();
150         pceOtnNode.checkAvailableTribSlot();
151         pceOtnNode = Mockito.spy(pceOtnNode);
152         Mockito.when(pceOtnNode.getNodeId()).thenReturn(null);
153         Assert.assertFalse("not valid node , nodeId is null" , pceOtnNode.isPceOtnNodeValid(pceOtnNode));
154
155     }
156
157     @Test
158     public void testIsPceOtnNodeValidNodeTypeNull() {
159         pceOtnNode = new PceOtnNode(node, null,
160                 new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE");
161         pceOtnNode.initXndrTps("AZ");
162         pceOtnNode.checkAvailableTribPort();
163         pceOtnNode.checkAvailableTribSlot();
164         Assert.assertFalse("not valid type, nodeType is null " , pceOtnNode.isPceOtnNodeValid(pceOtnNode));
165     }
166
167     @Test
168     public void testIsPceOtnNodeValidNodeTypeDeg() {
169         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.DEGREE,
170                 new NodeId("optical"), ServiceFormat.OMS.getName(), "100GE");
171         pceOtnNode.initXndrTps("AZ");
172         Assert.assertFalse("not valid node , its type isn't one of MUXPDR or SWITCH or TPDR" ,
173                 pceOtnNode.isPceOtnNodeValid(pceOtnNode));
174     }
175
176     @Test
177     public void testIsPceOtnNodeValidTrue() {
178         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR,
179                 new NodeId("optical"), ServiceFormat.OMS.getName(), "ODU4");
180         pceOtnNode.initXndrTps("AZ");
181         pceOtnNode.checkAvailableTribPort();
182         pceOtnNode.checkAvailableTribSlot();
183         Assert.assertTrue("valid otn service type ", pceOtnNode.isPceOtnNodeValid(pceOtnNode));
184     }
185
186     @Test
187     public void testIsPceOtnNodeValidChecksw() {
188         node = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERCLIENT).build();
189         pceOtnNode = new PceOtnNode(node, OpenroadmNodeType.MUXPDR,
190                 new NodeId("optical"), ServiceFormat.OMS.getName(), "1GE");
191         pceOtnNode.initXndrTps("mode");
192         Assert.assertFalse("not valid otn service Type" , pceOtnNode.isPceOtnNodeValid(pceOtnNode));
193     }
194
195     private List<SupportingNode> geSupportingNodes() {
196         List<SupportingNode> supportingNodes1 = new ArrayList<>();
197         supportingNodes1
198                 .add(new SupportingNodeBuilder()
199                         .setNodeRef(new NodeId("node 1"))
200                         .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
201                         .build());
202
203         supportingNodes1
204                 .add(new SupportingNodeBuilder()
205                         .setNodeRef(new NodeId("node 2"))
206                         .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
207                         .build());
208         return supportingNodes1;
209     }
210
211     private NodeBuilder getNodeBuilder(List<SupportingNode> supportingNodes1, OpenroadmTpType openroadmTpType) {
212
213         TerminationPoint1Builder tp1Bldr = getTerminationPoint1Builder(openroadmTpType);
214         TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder(openroadmTpType);
215         xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build());
216
217         xpdrTpBldr.addAugmentation(
218                 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
219                         .TerminationPoint1.class,
220                 createAnother2TerminationPoint(openroadmTpType).build());
221         xpdrTpBldr.addAugmentation(
222                 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1.class,
223                 createAnotherTerminationPoint(openroadmTpType).build());
224
225         org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1();
226         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
227                 new Node1Builder()
228                         .setTerminationPoint(ImmutableList.of(xpdrTpBldr.build()))
229                         .build();
230
231
232         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 nodeIetf =
233                 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
234                         .Node1Builder()
235                         .setTerminationPoint(ImmutableList.of(xpdrTpBldr.build()))
236                         .build();
237
238         return new NodeBuilder()
239                 .setNodeId(new NodeId("node_test"))
240                 .withKey(new NodeKey(new NodeId("node 1")))
241                 .addAugmentation(
242                         Node1.class, node1Rev180226)
243                 .addAugmentation(
244                         org.opendaylight
245                                 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1.class,
246                         node1)
247                 .addAugmentation(
248                         org.opendaylight
249                                 .yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class,
250                         nodeIetf
251                 )
252                 .setSupportingNode(supportingNodes1);
253     }
254
255     private NodeBuilder getNodeBuilderEmpty(List<SupportingNode> supportingNodes1, OpenroadmTpType openroadmTpType) {
256
257         TerminationPoint1Builder tp1Bldr = getTerminationPoint1Builder(openroadmTpType);
258         TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder(openroadmTpType);
259         xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build());
260         xpdrTpBldr.addAugmentation(
261                 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
262                         .TerminationPoint1.class,
263                 createAnotherTerminationPoint(openroadmTpType).build());
264
265         org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1Empty();
266         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
267                 new Node1Builder()
268                         .setTerminationPoint(ImmutableList.of(xpdrTpBldr.build()))
269                         .build();
270
271
272         return new NodeBuilder()
273                 .setNodeId(new NodeId("node_test"))
274                 .withKey(new NodeKey(new NodeId("node 1")))
275                 .addAugmentation(
276                         Node1.class, node1Rev180226)
277                 .addAugmentation(
278                         org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1.class,
279                         node1)
280                 .setSupportingNode(supportingNodes1);
281     }
282
283     private org.opendaylight
284             .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1() {
285         return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
286                 .setSrgAttributes(getSrgAttributes())
287                 .setDegreeAttributes(getDegAttributes())
288                 .build();
289     }
290
291     private org.opendaylight
292             .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1Empty() {
293         return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
294                 .setSrgAttributes(getEmptySrgAttributes())
295                 .setDegreeAttributes(getEmptyDegAttributes())
296                 .build();
297     }
298
299     private DegreeAttributes getDegAttributes() {
300         return (new DegreeAttributesBuilder())
301                 .setAvailableWavelengths(
302                         Collections.singletonList(new AvailableWavelengthsBuilder()
303                                 .setIndex(20L)
304                                 .build()))
305                 .build();
306     }
307
308     private SrgAttributes getSrgAttributes() {
309         return new SrgAttributesBuilder().setAvailableWavelengths(create96AvalWaveSrg()).build();
310     }
311
312     private DegreeAttributes getEmptyDegAttributes() {
313         return (new DegreeAttributesBuilder())
314                 .setAvailableWavelengths(
315                         new ArrayList<>())
316                 .build();
317     }
318
319     private SrgAttributes getEmptySrgAttributes() {
320         List<org.opendaylight.yang.gen
321                 .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
322                 waveList = new ArrayList<>();
323         return new SrgAttributesBuilder().setAvailableWavelengths(waveList).build();
324     }
325
326     private TerminationPointBuilder getTerminationPointBuilder(OpenroadmTpType openroadmTpType) {
327         return new TerminationPointBuilder()
328                 .setTpId(new TpId("2"))
329                 .addAugmentation(
330                         org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
331                                 .TerminationPoint1.class,
332                         createOTNTerminationPoint(openroadmTpType).build());
333     }
334
335     private TerminationPoint1Builder getTerminationPoint1Builder(OpenroadmTpType openroadmTpType) {
336
337         return new TerminationPoint1Builder()
338                 .setTpType(openroadmTpType);
339
340     }
341
342     private org.opendaylight.yang.gen
343             .v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder createAnotherTerminationPoint(
344             OpenroadmTpType openroadmTpType
345     ) {
346         return new org.opendaylight
347                 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder()
348                 .setTpType(openroadmTpType)
349                 .setCtpAttributes((new CtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
350                 .setCpAttributes((new CpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
351                 .setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
352                 .setRxTtpAttributes((new RxTtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
353                 .setPpAttributes((new PpAttributesBuilder()).setUsedWavelength(new ArrayList<>()).build())
354                 .setXpdrClientAttributes((new XpdrClientAttributesBuilder()).build())
355                 .setXpdrPortAttributes((new XpdrPortAttributesBuilder()).build())
356                 .setXpdrNetworkAttributes(new XpdrNetworkAttributesBuilder()
357                         .setTailEquipmentId("destNode" + "--" + "destTp").build());
358     }
359
360     private org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
361             .TerminationPoint1Builder createOTNTerminationPoint(OpenroadmTpType openroadmTpType) {
362
363         SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder()
364                 .setIfCapType(IfOCHOTU4ODU4.class)
365                 .build();
366
367         SupportedInterfaceCapability supIfCapa1 = new SupportedInterfaceCapabilityBuilder()
368                 .setIfCapType(If100GEODU4.class)
369                 .build();
370         SupportedInterfaceCapability supIfCapa2 = new SupportedInterfaceCapabilityBuilder()
371                 .setIfCapType(If10GEODU2e.class)
372                 .build();
373         SupportedInterfaceCapability supIfCapa3 = new SupportedInterfaceCapabilityBuilder()
374                 .setIfCapType(If1GEODU0.class)
375                 .build();
376
377         List<SupportedInterfaceCapability> supIfCapaList = new ArrayList<>();
378         supIfCapaList.add(supIfCapa);
379         supIfCapaList.add(supIfCapa1);
380         supIfCapaList.add(supIfCapa2);
381         supIfCapaList.add(supIfCapa3);
382
383         TpSupportedInterfaces tpSupIf = new TpSupportedInterfacesBuilder()
384                 .setSupportedInterfaceCapability(supIfCapaList)
385                 .build();
386
387         XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder();
388
389         return new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
390                 .TerminationPoint1Builder()
391                 .setTpType(openroadmTpType)
392                 .setTpSupportedInterfaces(tpSupIf)
393                 .setXpdrTpPortConnectionAttributes(xtpcaBldr.build());
394     }
395
396     private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
397             .TerminationPoint1Builder createAnother2TerminationPoint(OpenroadmTpType openroadmTpType) {
398         return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
399                 .TerminationPoint1Builder()
400                 .setTpType(openroadmTpType);
401     }
402
403     private static List<org.opendaylight.yang.gen
404             .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths> create96AvalWaveSrg() {
405
406         List<org.opendaylight.yang.gen
407                 .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
408                 waveList = new ArrayList<>();
409
410         for (int i = 1; i < 97; i++) {
411             org.opendaylight.yang.gen
412                     .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder
413                     avalBldr = new org.opendaylight.yang.gen
414                     .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder()
415                     .setIndex(Uint32.valueOf(i))
416                     .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
417                             .AvailableWavelengthsKey(Uint32.valueOf(i)));
418             waveList.add(avalBldr.build());
419         }
420         return waveList;
421     }
422
423 }