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