fix a bug in PceTestUtils Junit
[transportpce.git] / pce / src / test / java / org / opendaylight / transportpce / pce / utils / NodeUtils.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.utils;
10
11 import java.math.BigDecimal;
12 import java.util.ArrayList;
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Map;
16 import org.opendaylight.transportpce.common.NetworkUtils;
17 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengths;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengthsBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLinkKey;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationKey;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributesBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.AmplifiedLinkBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.SpanBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributes;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributes;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CpAttributesBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CtpAttributesBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.PpAttributesBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.RxTtpAttributesBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.TpSupportedInterfaces;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.TpSupportedInterfacesBuilder;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If100GEODU4;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If10GEODU2e;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If1GEODU0;
57 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.IfOCHOTU4ODU4;
58 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
59 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
60 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
61 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
62 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
63 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
64 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeKey;
65 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
66 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder;
67 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
68 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
69 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
70 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
71 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder;
72 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder;
73 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
74 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
75 import org.opendaylight.yangtools.yang.binding.Augmentation;
76 import org.opendaylight.yangtools.yang.common.Uint16;
77 import org.opendaylight.yangtools.yang.common.Uint32;
78
79 public class NodeUtils {
80
81     private static final String LINK_ID_FORMAT = "%1$s-%2$sto%3$s-%4$s";
82
83     public static LinkBuilder createLinkBuilder(
84             String srcNode, String destNode, String srcTp, String destTp, Link1Builder link1Builder) {
85         SourceBuilder ietfSrcLinkBldr =
86                 new SourceBuilder().setSourceNode(new NodeId(srcNode)).setSourceTp(srcTp);
87         //create destination link
88         DestinationBuilder ietfDestLinkBldr =
89                 new DestinationBuilder().setDestNode(new NodeId(destNode)).setDestTp(destTp);
90         LinkId linkId = new LinkId(String.format(LINK_ID_FORMAT, srcNode, srcTp, destNode, destTp));
91
92         LinkId oppositeLinkId = new LinkId("OpenROADM-3-2-DEG1-to-OpenROADM-3-1-DEG1");
93         //For setting up attributes for openRoadm augment
94         OMSAttributesBuilder omsAttributesBuilder =
95                 new OMSAttributesBuilder().setOppositeLink(oppositeLinkId);
96
97         // Augementation
98         Augmentation<Link> aug11 = new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130
99                 .Link1Builder()
100                 .setAdministrativeGroup(Uint32.valueOf(123))
101                 .setAdministrativeState(State.InService)
102                 .setAmplified(true)
103                 .setLinkLatency(Uint32.valueOf(123))
104                 .setLinkLength(BigDecimal.valueOf(123))
105                 .setOMSAttributes(new OMSAttributesBuilder()
106                         .setOppositeLink(new LinkId("OpenROADM-3-2-DEG1-to-OpenROADM-3-1-DEG1"))
107                         .setSpan(new SpanBuilder().build())
108                         .setTEMetric(Uint32.valueOf(123)).build())
109                 .setOperationalState(State.InService).build();
110
111         LinkBuilder linkBuilder = new LinkBuilder()
112                 .setSource(ietfSrcLinkBldr.build())
113                 .setDestination(ietfDestLinkBldr.build())
114                 .setLinkId(linkId)
115                 .addAugmentation(aug11)
116                 .withKey(new LinkKey(linkId));
117
118         linkBuilder.addAugmentation(link1Builder.build());
119         return linkBuilder;
120     }
121
122     public static LinkBuilder createRoadmToRoadm(String srcNode, String destNode, String srcTp, String destTp) {
123         Link1Builder link1Builder = new Link1Builder()
124                 .setLinkLatency(Uint32.valueOf(30))
125                 .setLinkType(OpenroadmLinkType.ROADMTOROADM);
126         return createLinkBuilder(srcNode, destNode, srcTp, destTp, link1Builder);
127
128     }
129
130     public static Map<SupportingNodeKey, SupportingNode> geSupportingNodes() {
131         Map<SupportingNodeKey, SupportingNode> supportingNodes1 = new HashMap<>();
132         SupportingNode supportingNode1 = new SupportingNodeBuilder()
133                 .setNodeRef(new NodeId("node 1"))
134                 .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
135                 .build();
136         supportingNodes1
137                 .put(supportingNode1.key(),supportingNode1);
138
139         SupportingNode supportingNode2 = new SupportingNodeBuilder()
140                 .setNodeRef(new NodeId("node 2"))
141                 .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
142                 .build();
143         supportingNodes1
144                 .put(supportingNode2.key(),supportingNode2);
145         return supportingNodes1;
146     }
147
148     public static NodeBuilder getNodeBuilder(Map<SupportingNodeKey,SupportingNode> supportingNodes1) {
149
150
151         //update tp of nodes
152         TerminationPointBuilder xpdrTpBldr = new TerminationPointBuilder();
153         TerminationPoint1Builder tp1Bldr = new TerminationPoint1Builder();
154
155         tp1Bldr.setTpType(OpenroadmTpType.XPONDERNETWORK);
156         xpdrTpBldr.addAugmentation(tp1Bldr.build());
157         TerminationPoint xpdr = xpdrTpBldr.build();
158         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1 =
159                 new Node1Builder().setTerminationPoint(Map.of(xpdr.key(),xpdr)).build();
160
161
162         return new NodeBuilder()
163                 .setNodeId(new NodeId("node 1"))
164                 .withKey(new NodeKey(new NodeId("node 1")))
165                 .addAugmentation(node1)
166                 .setSupportingNode(supportingNodes1);
167     }
168
169     private Link genereateLinkBuilder() {
170
171         Map<LinkConcatenationKey,LinkConcatenation> linkConcentationValues = new HashMap<>();
172         LinkConcatenation linkConcatenation = new LinkConcatenationBuilder()
173                 .setFiberType(LinkConcatenation.FiberType.Truewave)
174                 .setPmd(new FiberPmd(BigDecimal.ONE))
175                 .setSRLGId(Uint32.valueOf(1))
176                 .setSRLGLength(Uint32.valueOf(1))
177                 .build();
178         LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
179                 .setFiberType(LinkConcatenation.FiberType.Truewave)
180                 .setPmd(new FiberPmd(BigDecimal.ONE))
181                 .setSRLGId(Uint32.valueOf(1))
182                 .setSRLGLength(Uint32.valueOf(1))
183                 .build();
184         linkConcentationValues.put(linkConcatenation.key(),linkConcatenation);
185         linkConcentationValues.put(linkConcatenation2.key(),linkConcatenation2);
186
187         Map<AmplifiedLinkKey,AmplifiedLink>
188                 amplifiedLinkValues = new HashMap<>();
189         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al =
190                 new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
191                         .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
192                         .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130
193                                 .amplified.link.attributes.amplified.link.section.element.section.element
194                                 .SpanBuilder()
195                                 .setSpan(
196                                         new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified
197                                                 .link.attributes.amplified.link.section.element.section
198                                                 .element.span.SpanBuilder()
199                                                 .setAdministrativeState(AdminStates.InService)
200                                                 .setAutoSpanloss(true)
201                                                 .setClfi("clfi")
202                                                 .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
203                                                 .setLinkConcatenation(linkConcentationValues)
204                                                 .setSpanlossBase(new RatioDB(BigDecimal.ONE))
205                                                 .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
206                                                 .build())
207                                 .build())
208                         .build())
209                         .setSectionEltNumber(Uint16.valueOf(1)).build();
210         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al2 =
211                 new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
212                         .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
213                         .setSectionElement(
214                                 new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
215                                         .attributes.amplified.link.section.element.section.element.SpanBuilder()
216                                         .setSpan(
217                                                 new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130
218                                                         .amplified.link
219                                                         .attributes.amplified.link.section.element.section.element.span
220                                                         .SpanBuilder()
221                                                         .setAdministrativeState(AdminStates.InService)
222                                                         .setAutoSpanloss(true)
223                                                         .setClfi("clfi")
224                                                         .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
225                                                         .setLinkConcatenation(linkConcentationValues)
226                                                         .setSpanlossBase(new RatioDB(BigDecimal.ONE))
227                                                         .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
228                                                         .build())
229                                         .build())
230                         .build())
231                         .setSectionEltNumber(Uint16.valueOf(1)).build();
232
233         amplifiedLinkValues.put(al.key(),al);
234         amplifiedLinkValues.put(al2.key(),al2);
235         Augmentation<Link> aug11 =
236                 new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder()
237                         .setAdministrativeGroup(Uint32.valueOf(123))
238                         .setAdministrativeState(State.InService)
239                         .setAmplified(true)
240                         .setLinkLatency(Uint32.valueOf(123))
241                         .setLinkLength(BigDecimal.valueOf(123))
242                         .setOMSAttributes(new OMSAttributesBuilder()
243                                 .setAmplifiedLink(new AmplifiedLinkBuilder()
244                                         .setAmplifiedLink(amplifiedLinkValues)
245                                         .build())
246                                 .setOppositeLink(new LinkId("link 1"))
247                                 .setSpan(new SpanBuilder().build())
248                                 .setTEMetric(Uint32.valueOf(123)).build())
249                         .setOperationalState(State.InService).build();
250
251         TransactionUtils.getNetworkForSpanLoss();
252         return new LinkBuilder()
253                 .setLinkId(new LinkId("OpenROADM-3-1-DEG1-to-OpenROADM-3-2-DEG1"))
254                 .setSource(
255                         new SourceBuilder()
256                                 .setSourceNode(new NodeId("OpenROADM-3-2-DEG1"))
257                                 .setSourceTp("DEG1-TTP-TX").build())
258                 .setDestination(
259                         new DestinationBuilder()
260                                 .setDestNode(new NodeId("OpenROADM-3-1-DEG1"))
261                                 .setDestTp("DEG1-TTP-RX").build())
262                 .addAugmentation(aug11)
263                 .build();
264
265
266     }
267
268     // OTN network node
269     public static List<SupportingNode> getOTNSupportingNodes() {
270         List<SupportingNode> supportingNodes1 = new ArrayList<>();
271         supportingNodes1
272                 .add(new SupportingNodeBuilder()
273                         .setNodeRef(new NodeId("node 1"))
274                         .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
275                         .build());
276
277         supportingNodes1
278                 .add(new SupportingNodeBuilder()
279                         .setNodeRef(new NodeId("node 2"))
280                         .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
281                         .build());
282         return supportingNodes1;
283     }
284
285     public static NodeBuilder getOTNNodeBuilder(Map<SupportingNodeKey,SupportingNode> supportingNodes1,
286                                                 OpenroadmTpType openroadmTpType) {
287
288         org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder
289                 tp1Bldr = getTerminationPoint1Builder(openroadmTpType);
290         TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder(openroadmTpType);
291         xpdrTpBldr
292                 .addAugmentation(tp1Bldr.build());
293
294         xpdrTpBldr.addAugmentation(createAnother2TerminationPoint(openroadmTpType).build());
295         xpdrTpBldr.addAugmentation(createAnotherTerminationPoint(openroadmTpType).build());
296
297         org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1();
298         TerminationPoint xpdr = xpdrTpBldr.build();
299         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
300                 new Node1Builder()
301                         .setTerminationPoint(Map.of(xpdr.key(),xpdr))
302                         .build();
303
304
305         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 nodeIetf =
306                 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
307                         .Node1Builder()
308                         .setTerminationPoint(Map.of(xpdr.key(),xpdr))
309                         .build();
310
311         return new NodeBuilder()
312                 .setNodeId(new NodeId("node_test"))
313                 .withKey(new NodeKey(new NodeId("node 1")))
314                 .addAugmentation(node1Rev180226)
315                 .addAugmentation(node1)
316                 .addAugmentation(nodeIetf)
317                 .setSupportingNode(supportingNodes1);
318     }
319
320     public static NodeBuilder getOTNNodeBuilderEmpty(Map<SupportingNodeKey,SupportingNode> supportingNodes1,
321                                                      OpenroadmTpType openroadmTpType) {
322
323         org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder tp1Bldr =
324                 getTerminationPoint1Builder(openroadmTpType);
325         TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder(openroadmTpType);
326         xpdrTpBldr.addAugmentation(tp1Bldr.build());
327         xpdrTpBldr.addAugmentation(createAnotherTerminationPoint(openroadmTpType).build());
328
329         org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1Empty();
330         TerminationPoint xpdr = xpdrTpBldr.build();
331         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
332                 new Node1Builder()
333                         .setTerminationPoint(Map.of(xpdr.key(),xpdr))
334                         .build();
335
336
337         return new NodeBuilder()
338                 .setNodeId(new NodeId("node_test"))
339                 .withKey(new NodeKey(new NodeId("node 1")))
340                 .addAugmentation(node1Rev180226)
341                 .addAugmentation(node1)
342                 .setSupportingNode(supportingNodes1);
343     }
344
345     private static org.opendaylight
346             .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1() {
347         return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
348                 .setSrgAttributes(getSrgAttributes())
349                 .setDegreeAttributes(getDegAttributes())
350                 .build();
351     }
352
353     private static org.opendaylight
354             .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1Empty() {
355         return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
356                 .setSrgAttributes(getEmptySrgAttributes())
357                 .setDegreeAttributes(getEmptyDegAttributes())
358                 .build();
359     }
360
361     private static DegreeAttributes getDegAttributes() {
362         AvailableWavelengths aval = new AvailableWavelengthsBuilder()
363                 .setIndex(Uint32.valueOf(20))
364                 .build();
365         return (new DegreeAttributesBuilder())
366                 .setAvailableWavelengths(Map.of(aval.key(),aval))
367                 .build();
368     }
369
370     private static SrgAttributes getSrgAttributes() {
371         return new SrgAttributesBuilder().setAvailableWavelengths(create96AvalWaveSrg()).build();
372     }
373
374     private static DegreeAttributes getEmptyDegAttributes() {
375         return (new DegreeAttributesBuilder())
376                 .setAvailableWavelengths(Map.of())
377                 .build();
378     }
379
380     private static SrgAttributes getEmptySrgAttributes() {
381         return new SrgAttributesBuilder().setAvailableWavelengths(Map.of()).build();
382     }
383
384     private static TerminationPointBuilder getTerminationPointBuilder(OpenroadmTpType openroadmTpType) {
385         return new TerminationPointBuilder()
386                 .setTpId(new TpId("2"))
387                 .addAugmentation(createOTNTerminationPoint(openroadmTpType).build());
388     }
389
390     private static org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder
391         getTerminationPoint1Builder(OpenroadmTpType openroadmTpType) {
392
393         return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder()
394                 .setTpType(openroadmTpType);
395
396     }
397
398     private static org.opendaylight.yang.gen
399             .v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder createAnotherTerminationPoint(
400             OpenroadmTpType openroadmTpType
401     ) {
402         return new org.opendaylight
403                 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder()
404                 .setTpType(openroadmTpType)
405                 .setCtpAttributes((new CtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
406                 .setCpAttributes((new CpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
407                 .setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
408                 .setRxTtpAttributes((new RxTtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
409                 .setPpAttributes((new PpAttributesBuilder()).setUsedWavelength(Map.of()).build())
410                 .setXpdrClientAttributes((new XpdrClientAttributesBuilder()).build())
411                 .setXpdrPortAttributes((new XpdrPortAttributesBuilder()).build())
412                 .setXpdrNetworkAttributes(new XpdrNetworkAttributesBuilder()
413                         .setTailEquipmentId("destNode" + "--" + "destTp").build());
414     }
415
416     private static org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
417             .TerminationPoint1Builder createOTNTerminationPoint(OpenroadmTpType openroadmTpType) {
418
419         SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder()
420                 .setIfCapType(IfOCHOTU4ODU4.class)
421                 .build();
422
423         SupportedInterfaceCapability supIfCapa1 = new SupportedInterfaceCapabilityBuilder()
424                 .setIfCapType(If100GEODU4.class)
425                 .build();
426         SupportedInterfaceCapability supIfCapa2 = new SupportedInterfaceCapabilityBuilder()
427                 .setIfCapType(If10GEODU2e.class)
428                 .build();
429         SupportedInterfaceCapability supIfCapa3 = new SupportedInterfaceCapabilityBuilder()
430                 .setIfCapType(If1GEODU0.class)
431                 .build();
432
433         Map<SupportedInterfaceCapabilityKey,SupportedInterfaceCapability> supIfCapaList = new HashMap<>();
434         supIfCapaList.put(supIfCapa.key(),supIfCapa);
435         supIfCapaList.put(supIfCapa1.key(),supIfCapa1);
436         supIfCapaList.put(supIfCapa2.key(),supIfCapa2);
437         supIfCapaList.put(supIfCapa3.key(),supIfCapa3);
438
439         TpSupportedInterfaces tpSupIf = new TpSupportedInterfacesBuilder()
440                 .setSupportedInterfaceCapability(supIfCapaList)
441                 .build();
442
443         XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder();
444
445         return new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
446                 .TerminationPoint1Builder()
447                 .setTpType(openroadmTpType)
448                 .setTpSupportedInterfaces(tpSupIf)
449                 .setXpdrTpPortConnectionAttributes(xtpcaBldr.build());
450     }
451
452     private static org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
453             .TerminationPoint1Builder createAnother2TerminationPoint(OpenroadmTpType openroadmTpType) {
454         return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
455                 .TerminationPoint1Builder()
456                 .setTpType(openroadmTpType);
457     }
458
459     private static Map<org.opendaylight.yang.gen
460         .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsKey,
461         org.opendaylight.yang.gen
462             .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths> create96AvalWaveSrg() {
463
464         Map<org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsKey,
465             org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
466                 waveList = new HashMap<>();
467
468         for (int i = 1; i < 97; i++) {
469             org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
470                     .AvailableWavelengthsBuilder avalBldr
471                 = new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
472                     .AvailableWavelengthsBuilder()
473                         .setIndex(Uint32.valueOf(i))
474                         .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
475                             .AvailableWavelengthsKey(Uint32.valueOf(i)));
476             org.opendaylight.yang.gen.v1.http.org.openroadm.srg
477                 .rev181130.srg.node.attributes.AvailableWavelengths aval =
478                     avalBldr.build();
479             waveList.put(aval.key(),aval);
480         }
481         return waveList;
482     }
483
484 }