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