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