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