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