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