2 * Copyright © 2018 Orange Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.transportpce.olm.util;
11 import java.math.BigDecimal;
12 import java.util.ArrayList;
13 import java.util.HashMap;
14 import java.util.List;
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;
71 public final class TransactionUtils {
73 private TransactionUtils() {
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,
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();
90 // public static boolean writeTransaction(DataBroker dataBroker, LogicalDatastoreType logicalDatastoreType,
91 // InstanceIdentifier instanceIdentifier,
94 // public static DataObject readTransaction(DeviceTransactionManager deviceTransactionManager,
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()) {
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()) {
110 // return readOpt.get();
113 public static Network1 getNullNetwork() {
114 Map<LinkKey, Link> nullMap = null;
115 Network1 network = new Network1Builder().setLink(nullMap).build();
116 Optional.of(network);
120 public static Network1 getEmptyNetwork() {
121 Network1 network = new Network1Builder().setLink(Map.of()).build();
122 Optional.of(network);
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))
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))
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))
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))
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
171 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks
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);
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"))
187 SupportingLink supportingLink2 = new SupportingLinkBuilder()
188 .setLinkRef(new LinkId("ref2"))
189 .setNetworkRef(new NetworkId("net2"))
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"))
197 new DestinationBuilder()
198 .setDestNode(new NodeId("node 1"))
199 .setDestTp(new TpId("dest tp")).build())
202 .setSourceNode(new NodeId("node 2"))
203 .setSourceTp(new TpId("src tp"))
205 .setSupportingLink(supportingLinks)
208 Link link2 = new LinkBuilder()
209 .setLinkId(new LinkId("link 2"))
211 new DestinationBuilder()
212 .setDestNode(new NodeId("node 3"))
213 .setDestTp(new TpId("dest tp"))
217 .setSourceNode(new NodeId("node 4"))
218 .setSourceTp(new TpId("src tp"))
220 .setSupportingLink(supportingLinks)
222 links.put(link1.key(),link1);
223 links.put(link2.key(),link2);
224 Network1 network = new Network1Builder().setLink(links).build();
225 Optional.of(network);
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))
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))
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))
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))
280 .setSectionEltNumber(Uint16.valueOf(1)).build();
281 amplifiedLinkValues.put(al.key(),al);
282 amplifiedLinkValues.put(al2.key(),al2);
283 Augmentation<Link> aug1 = new Link1Builder()
285 .setOMSAttributes(new OMSAttributesBuilder()
286 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
287 .setSpan(new SpanBuilder().build())
290 Augmentation<Link> aug2 = new Link1Builder()
292 .setOMSAttributes(new OMSAttributesBuilder()
293 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
294 .setSpan(new SpanBuilder().build())
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();
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);
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");
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))
347 CpToDegree cp2 = new CpToDegreeBuilder()
348 .setCircuitPackName("circuit name2")
349 .setDegreeNumber(Uint32.valueOf(123))
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"))
361 return new NodesBuilder()
363 .setNodeInfo(new NodeInfoBuilder()
364 .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes.Xpdr)
365 .setOpenroadmVersion(OpenroadmNodeVersion._121)
367 .setCpToDegree(cpList)
368 .setMapping(Map.of(map1.key(),map1))
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))
378 CpToDegree cp2 = new CpToDegreeBuilder()
379 .setCircuitPackName("circuit name2")
380 .setDegreeNumber(Uint32.valueOf(123))
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"))
392 return new NodesBuilder()
394 .setNodeInfo(new NodeInfoBuilder()
396 .setOpenroadmVersion(OpenroadmNodeVersion._121)
398 .setCpToDegree(cpList)
399 .setMapping(Map.of(map1.key(),map1))
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))
409 CpToDegree cp2 = new CpToDegreeBuilder()
410 .setCircuitPackName("circuit name2")
411 .setDegreeNumber(Uint32.valueOf(123))
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"))
423 return new NodesBuilder()
425 .setNodeInfo(new NodeInfoBuilder()
426 .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes.Rdm)
427 .setOpenroadmVersion(OpenroadmNodeVersion._121)
429 .setCpToDegree(cpList)
430 .setMapping(Map.of(map1.key(),map1))
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);
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);
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);