Migrate OLM module to Aluminium
[transportpce.git] / olm / src / test / java / org / opendaylight / transportpce / olm / util / TransactionUtils.java
1 /*
2  * Copyright © 2018 Orange Systems, 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.olm.util;
10
11 import java.math.BigDecimal;
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.HashMap;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.Optional;
18 import org.opendaylight.mdsal.binding.api.DataBroker;
19 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
20 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
21 import org.opendaylight.transportpce.common.NetworkUtils;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.Network;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.Nodes;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.NodesBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.NodesKey;
26 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.CpToDegree;
27 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.CpToDegreeBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.CpToDegreeKey;
29 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.Mapping;
30 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingKey;
32 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.NodeInfo.OpenroadmVersion;
33 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.NodeInfoBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.FiberPmd;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.link.types.rev181130.RatioDB;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLinkKey;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.SectionElementBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenationKey;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.AmplifiedLinkBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.SpanBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
50 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
51 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
52 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
53 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
54 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
55 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
56 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId;
57 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1;
58 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1Builder;
59 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
60 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder;
61 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
62 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.DestinationBuilder;
63 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SourceBuilder;
64 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SupportingLink;
65 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SupportingLinkBuilder;
66 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.link.SupportingLinkKey;
67 import org.opendaylight.yangtools.yang.binding.Augmentation;
68 import org.opendaylight.yangtools.yang.binding.DataObject;
69 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
70 import org.opendaylight.yangtools.yang.common.Uint16;
71 import org.opendaylight.yangtools.yang.common.Uint32;
72
73 public final class TransactionUtils {
74
75     private TransactionUtils() {
76
77     }
78
79     @SuppressWarnings("unchecked")
80     public static boolean writeTransaction(DataBroker dataBroker, InstanceIdentifier instanceIdentifier,
81         DataObject object) {
82         ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
83         transaction.put(LogicalDatastoreType.CONFIGURATION, instanceIdentifier, object);
84         transaction.commit();// submit(Timeouts.DATASTORE_WRITE, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT).get();
85         return true;
86     }
87
88 //
89 //    public static boolean writeTransaction(DataBroker dataBroker, LogicalDatastoreType logicalDatastoreType,
90 //        InstanceIdentifier instanceIdentifier,
91 //        DataObject object)
92
93 //    public static DataObject readTransaction(DeviceTransactionManager deviceTransactionManager,
94 //                                  String nodeId,
95 //                                  LogicalDatastoreType logicalDatastoreType,
96 //                                  InstanceIdentifier<? extends DataObject> instanceIdentifier)
97 //            throws ExecutionException, InterruptedException {
98 //        Future<Optional<DeviceTransaction>> deviceTxFuture =
99 //                deviceTransactionManager.getDeviceTransaction(nodeId);
100 //        if (!deviceTxFuture.get().isPresent()) {
101 //            return null;
102 //        }
103 //        DeviceTransaction deviceTx = deviceTxFuture.get().get();
104 //        com.google.common.base.Optional<? extends DataObject> readOpt
105 //                = deviceTx.read(logicalDatastoreType, instanceIdentifier).get();
106 //        if (!readOpt.isPresent()) {
107 //            return null;
108 //        }
109 //        return readOpt.get();
110 //    }
111
112     public static Network1 getNullNetwork() {
113         Map<LinkKey, Link> nullMap = null;
114         Network1 network = new Network1Builder().setLink(nullMap).build();
115         Optional.of(network);
116         return network;
117     }
118
119     public static Network1 getEmptyNetwork() {
120         Network1 network = new Network1Builder().setLink(Map.of()).build();
121         Optional.of(network);
122         return network;
123     }
124
125     public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network
126             .rev180226.networks.Network getOverLayNetwork() {
127         SupportingNode supportingNode = new SupportingNodeBuilder()
128                 .setNodeRef(new NodeId("node 1"))
129                 .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
130             .build();
131         NodeBuilder node1Builder = new NodeBuilder()
132                 .setNodeId(new NodeId("node 1"))
133                 .withKey(new NodeKey(new NodeId("node 1")))
134                 .setSupportingNode(Map.of(supportingNode.key(),supportingNode));
135         Map<NodeKey,Node> nodes = new HashMap<>();
136         Node node1 = node1Builder.build();
137         nodes.put(node1.key(),node1);
138         SupportingNode supportingNode2 = new SupportingNodeBuilder()
139             .setNodeRef(new NodeId("node 2"))
140             .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
141             .build();
142         NodeBuilder node2Builder = new NodeBuilder()
143                 .setNodeId(new NodeId("node 2"))
144                 .withKey(new NodeKey(new NodeId("node 2")))
145                 .setSupportingNode(Map.of(supportingNode2.key(),supportingNode2));
146         Node node2 = node2Builder.build();
147         nodes.put(node2.key(),node2);
148         SupportingNode supportingNode3 = new SupportingNodeBuilder()
149             .setNodeRef(new NodeId("node 3"))
150             .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
151             .build();
152         NodeBuilder node3Builder = new NodeBuilder()
153                 .setNodeId(new NodeId("node 3"))
154                 .withKey(new NodeKey(new NodeId("node 3")))
155                 .setSupportingNode(Map.of(supportingNode3.key(),supportingNode3));
156         Node node3 = node3Builder.build();
157         nodes.put(node3.key(),node3);
158         SupportingNode supportingNode4 = new SupportingNodeBuilder()
159             .setNodeRef(new NodeId("node 4"))
160             .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
161             .build();
162         NodeBuilder node4Builder = new NodeBuilder()
163                 .setNodeId(new NodeId("node 4"))
164                 .withKey(new NodeKey(new NodeId("node 4")))
165                 .setSupportingNode(Map.of(supportingNode4.key(),supportingNode4));
166         Node node4 = node4Builder.build();
167         nodes.put(node4.key(),node4);
168         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkBuilder
169             networkBuilder =
170                 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks
171                     .NetworkBuilder()
172                 .setNode(nodes)
173                 .setNetworkId(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
174         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network network =
175             networkBuilder.build();
176         Optional.of(network);
177         return network;
178     }
179
180     public static Network1 getNetwork() {
181         Map<SupportingLinkKey,SupportingLink> supportingLinks = new HashMap<>();
182         SupportingLink supportingLink1 = new SupportingLinkBuilder()
183                 .setLinkRef("ref1")
184                 .setNetworkRef(new NetworkId("net1"))
185                 .build();
186         SupportingLink supportingLink2 = new SupportingLinkBuilder()
187                 .setLinkRef("ref2")
188                 .setNetworkRef(new NetworkId("net2"))
189                 .build();
190         supportingLinks.put(supportingLink1.key(),supportingLink1);
191         supportingLinks.put(supportingLink2.key(),supportingLink2);
192         Map<LinkKey,Link> links = new HashMap<>();
193         Link link1 = new LinkBuilder()
194                 .setLinkId(new LinkId("link 1"))
195                 .setDestination(
196                     new DestinationBuilder()
197                         .setDestNode(new NodeId("node 1"))
198                         .setDestTp("dest tp").build())
199                 .setSource(
200                     new SourceBuilder()
201                         .setSourceNode(new NodeId("node 2"))
202                         .setSourceTp("src tp")
203                         .build())
204             .setSupportingLink(supportingLinks)
205             .build();
206
207         Link link2 = new LinkBuilder()
208                 .setLinkId(new LinkId("link 2"))
209                 .setDestination(
210                     new DestinationBuilder()
211                         .setDestNode(new NodeId("node 3"))
212                         .setDestTp("dest tp")
213                         .build())
214                 .setSource(
215                     new SourceBuilder()
216                         .setSourceNode(new NodeId("node 4"))
217                         .setSourceTp("src tp")
218                         .build())
219                 .setSupportingLink(supportingLinks)
220                 .build();
221         links.put(link1.key(),link1);
222         links.put(link2.key(),link2);
223         Network1 network = new Network1Builder().setLink(links).build();
224         Optional.of(network);
225         return network;
226     }
227
228     public static Network1 getNetwork2() {
229         Map<LinkConcatenationKey,LinkConcatenation> linkConcentationValues = new HashMap<>();
230         LinkConcatenation linkConcatenation = new LinkConcatenationBuilder()
231             .setFiberType(LinkConcatenation.FiberType.Truewave)
232             .setPmd(new FiberPmd(BigDecimal.ONE))
233             .setSRLGId(Uint32.valueOf(1))
234             .setSRLGLength(Uint32.valueOf(1))
235             .build();
236         LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
237             .setFiberType(LinkConcatenation.FiberType.Truewave)
238             .setPmd(new FiberPmd(BigDecimal.ONE))
239             .setSRLGId(Uint32.valueOf(1))
240             .setSRLGLength(Uint32.valueOf(1))
241             .build();
242         linkConcentationValues.put(linkConcatenation.key(),linkConcatenation);
243         linkConcentationValues.put(linkConcatenation2.key(),linkConcatenation2);
244         Map<AmplifiedLinkKey,AmplifiedLink>
245             amplifiedLinkValues = new HashMap<>();
246         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al =
247             new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
248                     .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
249                 .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
250                     .attributes.amplified.link.section.element.section.element.SpanBuilder()
251                         .setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
252                                 .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
253                                     .setAdministrativeState(AdminStates.InService)
254                                     .setAutoSpanloss(true)
255                                     .setClfi("clfi")
256                                     .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
257                                     .setLinkConcatenation(linkConcentationValues)
258                                     .setSpanlossBase(new RatioDB(BigDecimal.ONE))
259                                     .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
260                                     .build())
261                     .build())
262                 .build())
263             .setSectionEltNumber(Uint16.valueOf(1)).build();
264         org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink al2 = new
265             org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes
266                 .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
267                 .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
268                      .attributes.amplified.link.section.element.section.element.SpanBuilder()
269                         .setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link
270                                 .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
271                                     .setAdministrativeState(AdminStates.InService)
272                                     .setAutoSpanloss(true)
273                                     .setClfi("clfi")
274                                     .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
275                                     .setLinkConcatenation(linkConcentationValues)
276                                     .setSpanlossBase(new RatioDB(BigDecimal.ONE))
277                                     .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
278                                     .build())
279                                     .build())
280             .build())
281             .setSectionEltNumber(Uint16.valueOf(1)).build();
282         amplifiedLinkValues.put(al.key(),al);
283         amplifiedLinkValues.put(al2.key(),al2);
284         Map<Class<? extends Augmentation<Link>>, Augmentation<Link>> map = Collections.emptyMap();
285         Augmentation<Link> aug1 = new Link1Builder().setAdministrativeGroup(Uint32.valueOf(123))
286             .setAdministrativeState(State.InService)
287             .setAmplified(true)
288             .setLinkLatency(Uint32.valueOf(123))
289             .setLinkLength(BigDecimal.valueOf(123))
290             .setLinkType(OpenroadmLinkType.ROADMTOROADM)
291             .setOMSAttributes(new OMSAttributesBuilder()
292                 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
293                 .setOppositeLink(new LinkId("link 1"))
294                 .setSpan(new SpanBuilder().build())
295                 .setTEMetric(Uint32.valueOf(123)).build())
296             .setOperationalState(State.InService).build();
297         Augmentation<Link> aug2 = new Link1Builder().setAdministrativeGroup(Uint32.valueOf(123))
298             .setAdministrativeState(State.InService)
299             .setAmplified(true)
300             .setLinkLatency(Uint32.valueOf(123))
301             .setLinkLength(BigDecimal.valueOf(123))
302             .setLinkType(OpenroadmLinkType.ROADMTOROADM)
303             .setOMSAttributes(new OMSAttributesBuilder()
304                 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
305                 .setOppositeLink(new LinkId("link 1"))
306                 .setSpan(new SpanBuilder().build())
307                 .setTEMetric(Uint32.valueOf(123)).build())
308             .setOperationalState(State.InService).build();
309
310         Map<SupportingLinkKey,SupportingLink> supportingLinks = new HashMap<>();
311         SupportingLink supportingLink = new SupportingLinkBuilder().setLinkRef("ref1")
312             .setNetworkRef(new NetworkId("net1")).build();
313         SupportingLink supportingLink2 = new SupportingLinkBuilder().setLinkRef("ref2")
314             .setNetworkRef(new NetworkId("net1")).build();
315         supportingLinks.put(supportingLink.key(),supportingLink);
316         supportingLinks.put(supportingLink2.key(),supportingLink2);
317         Map<LinkKey,Link> links = new HashMap<>();
318         Link link1 = new LinkBuilder().setLinkId(new LinkId("link 1"))
319             .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 1"))
320                 .setDestTp("dest tp").build())
321             .setSource(new SourceBuilder().setSourceNode(new NodeId("node 2"))
322                 .setSourceTp("src tp").build())
323             .setSupportingLink(supportingLinks)
324             .addAugmentation(aug1)
325             .addAugmentation(aug2).build();
326
327         Link link2 = new LinkBuilder().setLinkId(new LinkId("link 2"))
328             .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 3"))
329                 .setDestTp("dest tp").build())
330             .setSource(new SourceBuilder().setSourceNode(new NodeId("node 4"))
331                 .setSourceTp("src tp").build())
332             .setSupportingLink(supportingLinks).build();
333         links.put(link1.key(),link1);
334         links.put(link2.key(),link2);
335         Network1 network = new Network1Builder().setLink(links).build();
336         Optional.of(network);
337         return network;
338     }
339
340     public static List<NodeId> getNodeIds() {
341         List<NodeId> nodes = new ArrayList<>();
342         NodeId node = new NodeId("node 1");
343         NodeId node2 = new NodeId("node 1");
344         NodeId node3 = new NodeId("node 1");
345         NodeId node4 = new NodeId("node 1");
346         nodes.add(node);
347         nodes.add(node2);
348         nodes.add(node3);
349         nodes.add(node4);
350         return nodes;
351     }
352
353     public static Nodes getNodes(String nodeId, String mappingKey) {
354         Map<CpToDegreeKey,CpToDegree> cpList = new HashMap<>();
355         CpToDegree cp1 = new CpToDegreeBuilder()
356             .setCircuitPackName("circuit name1")
357             .setDegreeNumber(Uint32.valueOf(123))
358             .build();
359         CpToDegree cp2 = new CpToDegreeBuilder()
360             .setCircuitPackName("circuit name2")
361             .setDegreeNumber(Uint32.valueOf(123))
362             .build();
363         cpList.put(cp1.key(),cp1);
364         cpList.put(cp2.key(),cp2);
365         Mapping map1 = new MappingBuilder()
366             .setLogicalConnectionPoint("point")
367             .setSupportingCircuitPackName("circuit name")
368             .setSupportingOms("oms")
369             .setSupportingOts("ots")
370             .setSupportingPort("port")
371             .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
372             .build();
373         Nodes nodes = new NodesBuilder()
374             .setNodeId(nodeId)
375             .setNodeInfo(new NodeInfoBuilder()
376                 .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes.Xpdr)
377                 .setOpenroadmVersion(OpenroadmVersion._121)
378                 .build())
379             .setCpToDegree(cpList)
380             .setMapping(Map.of(map1.key(),map1))
381             .build();
382         return nodes;
383     }
384
385     public static Nodes getNodes2(String nodeId, String mappingKey) {
386         Map<CpToDegreeKey,CpToDegree> cpList = new HashMap<>();
387         CpToDegree cp1 = new CpToDegreeBuilder()
388             .setCircuitPackName("circuit name1")
389             .setDegreeNumber(Uint32.valueOf(123))
390             .build();
391         CpToDegree cp2 = new CpToDegreeBuilder()
392             .setCircuitPackName("circuit name2")
393             .setDegreeNumber(Uint32.valueOf(123))
394             .build();
395         cpList.put(cp1.key(),cp1);
396         cpList.put(cp2.key(),cp2);
397         Mapping map1 = new MappingBuilder()
398             .setLogicalConnectionPoint("point")
399             .setSupportingCircuitPackName("circuit name")
400             .setSupportingOms("oms")
401             .setSupportingOts("ots")
402             .setSupportingPort("port")
403             .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
404             .build();
405         Nodes nodes = new NodesBuilder()
406             .setNodeId(nodeId)
407             .setNodeInfo(new NodeInfoBuilder()
408                 .setNodeType(null)
409                 .setOpenroadmVersion(OpenroadmVersion._121)
410                 .build())
411             .setCpToDegree(cpList)
412             .setMapping(Map.of(map1.key(),map1))
413             .build();
414         return nodes;
415     }
416
417     public static Nodes getNodes3(String nodeId, String mappingKey) {
418         Map<CpToDegreeKey,CpToDegree> cpList = new HashMap<>();
419         CpToDegree cp1 = new CpToDegreeBuilder()
420             .setCircuitPackName("circuit name1")
421             .setDegreeNumber(Uint32.valueOf(123))
422             .build();
423         CpToDegree cp2 = new CpToDegreeBuilder()
424             .setCircuitPackName("circuit name2")
425             .setDegreeNumber(Uint32.valueOf(123))
426             .build();
427         cpList.put(cp1.key(),cp1);
428         cpList.put(cp2.key(),cp2);
429         Mapping map1 = new MappingBuilder()
430             .setLogicalConnectionPoint("point")
431             .setSupportingCircuitPackName("circuit name")
432             .setSupportingOms("oms")
433             .setSupportingOts("ots")
434             .setSupportingPort("port")
435             .withKey(new MappingKey((mappingKey != null) ? mappingKey : "null"))
436             .build();
437         Nodes nodes = new NodesBuilder()
438             .setNodeId(nodeId)
439             .setNodeInfo(new NodeInfoBuilder()
440                 .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes.Rdm)
441                 .setOpenroadmVersion(OpenroadmVersion._121)
442                 .build())
443             .setCpToDegree(cpList)
444             .setMapping(Map.of(map1.key(),map1))
445             .build();
446         return nodes;
447     }
448
449     public static void writeNodeTransaction(String nodeId, DataBroker dataBroker, String mappingKey) {
450         InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
451             .child(Nodes.class, new NodesKey(nodeId));
452         Nodes nodes = getNodes(nodeId, mappingKey);
453         writeTransaction(dataBroker, nodesIID, nodes);
454     }
455
456     public static void writeNodeTransaction2(String nodeId, DataBroker dataBroker, String mappingKey) {
457         InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
458             .child(Nodes.class, new NodesKey(nodeId));
459         Nodes nodes = getNodes2(nodeId, mappingKey);
460         writeTransaction(dataBroker, nodesIID, nodes);
461     }
462
463     public static void writeNodeTransaction3(String nodeId, DataBroker dataBroker, String mappingKey) {
464         InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
465             .child(Nodes.class, new NodesKey(nodeId));
466         Nodes nodes = getNodes3(nodeId, mappingKey);
467         writeTransaction(dataBroker, nodesIID, nodes);
468     }
469
470 }