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.util.ArrayList;
12 import java.util.HashMap;
13 import java.util.List;
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;
73 public final class TransactionUtils {
75 private TransactionUtils() {
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,
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();
91 public static Network1 getNullNetwork() {
92 Map<LinkKey, Link> nullMap = null;
93 Network1 network = new Network1Builder().setLink(nullMap).build();
98 public static Network1 getEmptyNetwork() {
99 Network1 network = new Network1Builder().setLink(Map.of()).build();
100 Optional.of(network);
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))
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))
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))
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))
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
149 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks
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);
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"))
165 SupportingLink supportingLink2 = new SupportingLinkBuilder()
166 .setLinkRef(new LinkId("ref2"))
167 .setNetworkRef(new NetworkId("net2"))
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"))
175 new DestinationBuilder()
176 .setDestNode(new NodeId("node 1"))
177 .setDestTp(new TpId("dest tp")).build())
180 .setSourceNode(new NodeId("node 2"))
181 .setSourceTp(new TpId("src tp"))
183 .setSupportingLink(supportingLinks)
186 Link link2 = new LinkBuilder()
187 .setLinkId(new LinkId("link 2"))
189 new DestinationBuilder()
190 .setDestNode(new NodeId("node 3"))
191 .setDestTp(new TpId("dest tp"))
195 .setSourceNode(new NodeId("node 4"))
196 .setSourceTp(new TpId("src tp"))
198 .setSupportingLink(supportingLinks)
200 links.put(link1.key(),link1);
201 links.put(link2.key(),link2);
202 Network1 network = new Network1Builder().setLink(links).build();
203 Optional.of(network);
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")))
214 .setSRLGId(Uint32.valueOf(1))
215 .setSRLGLength(Decimal64.valueOf("1"))
217 LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
218 .addAugmentation(new LinkConcatenation1Builder()
219 .setFiberType(FiberType.Truewave)
220 .setPmd(new FiberPmd(Decimal64.valueOf("1")))
222 .setSRLGId(Uint32.valueOf(1))
223 .setSRLGLength(Decimal64.valueOf("1"))
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")))
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")))
262 .setSectionEltNumber(Uint16.valueOf(1)).build();
263 amplifiedLinkValues.put(al.key(),al);
264 amplifiedLinkValues.put(al2.key(),al2);
265 Augmentation<Link> aug1 = new Link1Builder()
267 .setOMSAttributes(new OMSAttributesBuilder()
268 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
269 .setSpan(new SpanBuilder().build())
272 Augmentation<Link> aug2 = new Link1Builder()
274 .setOMSAttributes(new OMSAttributesBuilder()
275 .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
276 .setSpan(new SpanBuilder().build())
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();
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);
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");
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))
329 CpToDegree cp2 = new CpToDegreeBuilder()
330 .setCircuitPackName("circuit name2")
331 .setDegreeNumber(Uint32.valueOf(123))
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"))
343 return new NodesBuilder()
345 .setNodeInfo(new NodeInfoBuilder()
346 .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes.Xpdr)
347 .setOpenroadmVersion(OpenroadmNodeVersion._121)
349 .setCpToDegree(cpList)
350 .setMapping(Map.of(map1.key(),map1))
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))
360 CpToDegree cp2 = new CpToDegreeBuilder()
361 .setCircuitPackName("circuit name2")
362 .setDegreeNumber(Uint32.valueOf(123))
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"))
374 return new NodesBuilder()
376 .setNodeInfo(new NodeInfoBuilder()
378 .setOpenroadmVersion(OpenroadmNodeVersion._121)
380 .setCpToDegree(cpList)
381 .setMapping(Map.of(map1.key(),map1))
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))
391 CpToDegree cp2 = new CpToDegreeBuilder()
392 .setCircuitPackName("circuit name2")
393 .setDegreeNumber(Uint32.valueOf(123))
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"))
405 return new NodesBuilder()
407 .setNodeInfo(new NodeInfoBuilder()
408 .setNodeType(org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes.Rdm)
409 .setOpenroadmVersion(OpenroadmNodeVersion._121)
411 .setCpToDegree(cpList)
412 .setMapping(Map.of(map1.key(),map1))
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);
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);
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);