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