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