From: manuedelf Date: Tue, 18 Aug 2020 07:01:39 +0000 (+0200) Subject: Migrate networkmodel module to Aluminium X-Git-Tag: 2.0.0~14 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=a74ea5d87a2fe898b47a8f268e03522a6caaf3db;p=transportpce.git Migrate networkmodel module to Aluminium JIRA: TRNSPRTPCE-292 TRNSPRTPCE-298 Signed-off-by: guillaume.lambert Change-Id: I2603b7b304f90a1c85e23c21884ce90e49b34318 --- diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java index 5a6eb2c3c..df81082ff 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java @@ -16,7 +16,6 @@ import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.networkmodel.util.LinkIdUtil; import org.opendaylight.transportpce.networkmodel.util.TopologyUtils; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.InitRoadmNodesInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributesBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; @@ -60,9 +59,8 @@ final class OrdLink { //IETF link builder LinkBuilder linkBuilder = TopologyUtils.createLink(srcNode, destNode, srcTp, destTp, null); - linkBuilder.addAugmentation(Link1.class,link1Builder.build()); - linkBuilder.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .Link1.class, oppsiteLinkBuilder.build()); + linkBuilder.addAugmentation(link1Builder.build()); + linkBuilder.addAugmentation(oppsiteLinkBuilder.build()); LinkId linkId = LinkIdUtil.buildLinkId(srcNode, srcTp, destNode, destTp); // Building link instance identifier diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java index 699d8f801..c308ec9b5 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/R2RLinkDiscovery.java @@ -10,7 +10,7 @@ package org.opendaylight.transportpce.networkmodel; import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_1_2_1; import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_2_2_1; -import java.util.List; +import java.util.Collection; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; @@ -72,7 +72,7 @@ public class R2RLinkDiscovery { NbrList nbrList = protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList(); LOG.info("LLDP subtree is present. Device has {} neighbours", nbrList.getIfName().size()); boolean success = true; - for (IfName ifName : nbrList.getIfName()) { + for (IfName ifName : nbrList.nonnullIfName().values()) { if (ifName.getRemoteSysName() == null) { LOG.warn("LLDP subtree neighbour is empty for nodeId: {}, ifName: {}", nodeId.getValue(),ifName.getIfName()); @@ -117,7 +117,7 @@ public class R2RLinkDiscovery { LOG.info("LLDP subtree is present. Device has {} neighbours", nbrList.getIfName().size()); boolean success = true; for (org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.lldp.container.lldp.nbr.list.IfName - ifName : nbrList.getIfName()) { + ifName : nbrList.nonnullIfName().values()) { if (ifName.getRemoteSysName() == null) { LOG.warn("LLDP subtree neighbour is empty for nodeId: {}, ifName: {}", nodeId.getValue(),ifName.getIfName()); @@ -153,7 +153,7 @@ public class R2RLinkDiscovery { try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) { Optional nodesObject = readTx.read(LogicalDatastoreType.CONFIGURATION, nodesIID).get(); if (nodesObject.isPresent() && (nodesObject.get().getMapping() != null)) { - List mappingList = nodesObject.get().getMapping(); + Collection mappingList = nodesObject.get().nonnullMapping().values(); mappingList = mappingList.stream().filter(mp -> mp.getLogicalConnectionPoint().contains("DEG" + degreeCounter)).collect(Collectors.toList()); if (mappingList.size() == 1) { @@ -308,8 +308,8 @@ public class R2RLinkDiscovery { try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) { Optional nodesObject = readTx.read(LogicalDatastoreType.CONFIGURATION, nodesIID).get(); if (nodesObject.isPresent() && (nodesObject.get().getCpToDegree() != null)) { - List cpToDeg = nodesObject.get().getCpToDegree(); - Stream cpToDegStream = cpToDeg.stream().filter(cp -> cp.getInterfaceName() != null) + Collection cpToDeg = nodesObject.get().nonnullCpToDegree().values(); + Stream cpToDegStream = cpToDeg.stream().filter(cp -> cp.getInterfaceName() != null) .filter(cp -> cp.getInterfaceName().equals(interfaceName)); if (cpToDegStream != null) { @SuppressWarnings("unchecked") Optional firstCpToDegree = cpToDegStream.findFirst(); diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java index 363b5119f..f3447e826 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java @@ -8,7 +8,7 @@ package org.opendaylight.transportpce.networkmodel; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.FluentFuture; import java.util.Optional; import java.util.concurrent.ExecutionException; @@ -37,10 +37,10 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1Builder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder; @@ -127,12 +127,11 @@ final class Rdm2XpdrLink { tp1Bldr.setXpdrNetworkAttributes(new XpdrNetworkAttributesBuilder() .setTailEquipmentId(destNode + "--" + destTp).build()); } - xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build()); + xpdrTpBldr.addAugmentation(tp1Bldr.build()); + TerminationPoint newXpdrTp = xpdrTpBldr.build(); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1 = - new Node1Builder().setTerminationPoint(ImmutableList.of(xpdrTpBldr.build())).build(); - NodeBuilder nodeBldr = new NodeBuilder() - .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 - .Node1.class, node1); + new Node1Builder().setTerminationPoint(ImmutableMap.of(newXpdrTp.key(),newXpdrTp)).build(); + NodeBuilder nodeBldr = new NodeBuilder().addAugmentation(node1); if (isXponderInput) { nodeBldr.setNodeId(new NodeId(destNode)); } else { @@ -145,21 +144,21 @@ final class Rdm2XpdrLink { .setLinkType(isXponderInput ? OpenroadmLinkType.XPONDERINPUT : OpenroadmLinkType.XPONDEROUTPUT) .setOppositeLink(LinkIdUtil.getOppositeLinkId(srcNode, srcTp, destNode, destTp)); LinkBuilder linkBuilder = TopologyUtils.createLink(srcNode, destNode, srcTp, destTp, null) - .addAugmentation(Link1.class, lnk1bldr.build()) - .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class, - lnk2bldr.build()); + .addAugmentation(lnk1bldr.build()) + .addAugmentation(lnk2bldr.build()); LOG.info("Link id in the linkbldr {}", linkBuilder.getLinkId()); LOG.info("Link with oppo link {}", linkBuilder.augmentation(Link1.class)); - Network1Builder nwBldr1 = new Network1Builder().setLink(ImmutableList.of(linkBuilder.build())); + Link link = linkBuilder.build(); + Network1Builder nwBldr1 = new Network1Builder().setLink(ImmutableMap.of(link.key(),link)); NetworkId nwId = new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID); + Node node = nodeBldr.build(); NetworkBuilder nwBuilder = new NetworkBuilder() .setNetworkId(nwId) .withKey(new NetworkKey(nwId)) - .addAugmentation(Network1.class, nwBldr1.build()) - .setNode(ImmutableList.of(nodeBldr.build())); + .addAugmentation(nwBldr1.build()) + .setNode(ImmutableMap.of(node.key(),node)); return nwBuilder; } diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java index 2286bdbc4..ccc8b3247 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java @@ -57,13 +57,12 @@ public class AlarmNotificationListener implements OrgOpenroadmAlarmListener { public void onAlarmNotification(AlarmNotification notification) { List allNodeList = new ArrayList<>(); InstanceIdentifier serviceNodeListIID = InstanceIdentifier.create(ServiceNodelist.class); - try { - ReadTransaction rtx = dataBroker.newReadOnlyTransaction(); + try (ReadTransaction rtx = dataBroker.newReadOnlyTransaction()) { Optional serviceListObject = rtx.read(LogicalDatastoreType.OPERATIONAL, serviceNodeListIID).get(); if (serviceListObject.isPresent()) { - for (Nodelist nodelist : serviceListObject.get().getNodelist()) { - allNodeList.addAll(nodelist.getNodes()); + for (Nodelist nodelist : serviceListObject.get().nonnullNodelist().values()) { + allNodeList.addAll(nodelist.nonnullNodes().values()); } } } catch (InterruptedException | ExecutionException ex) { diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java index 98dd7157d..713c98c01 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java @@ -62,8 +62,8 @@ public class AlarmNotificationListener221 implements OrgOpenroadmAlarmListener { Optional serviceListObject = rtx.read(LogicalDatastoreType.OPERATIONAL, serviceNodeListIID).get(); if (serviceListObject.isPresent()) { - for (Nodelist nodelist : serviceListObject.get().getNodelist()) { - allNodeList.addAll(nodelist.getNodes()); + for (Nodelist nodelist : serviceListObject.get().nonnullNodelist().values()) { + allNodeList.addAll(nodelist.nonnullNodes().values()); } } } catch (InterruptedException | ExecutionException ex) { diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java index 84159c48f..086b85bc5 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/NetworkModelServiceImpl.java @@ -50,6 +50,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint32; @@ -60,7 +61,6 @@ import org.slf4j.LoggerFactory; public class NetworkModelServiceImpl implements NetworkModelService { private static final Logger LOG = LoggerFactory.getLogger(NetworkModelServiceImpl.class); - private static final boolean CREATE_MISSING_PARENTS = true; private NetworkTransactionService networkTransactionService; private final R2RLinkDiscovery linkDiscovery; @@ -105,8 +105,7 @@ public class NetworkModelServiceImpl implements NetworkModelService { .child(Node.class, clliNode.key()) .build(); LOG.info("creating node in {}", NetworkUtils.CLLI_NETWORK_ID); - networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiClliNode, clliNode, - CREATE_MISSING_PARENTS); + networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiClliNode, clliNode); // node creation in openroadm-network Node openroadmNetworkNode = OpenRoadmNetwork.createNode(nodeId, nodeInfo); @@ -116,7 +115,7 @@ public class NetworkModelServiceImpl implements NetworkModelService { .build(); LOG.info("creating node in {}", NetworkUtils.UNDERLAY_NETWORK_ID); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiopenroadmNetworkNode, - openroadmNetworkNode, CREATE_MISSING_PARENTS); + openroadmNetworkNode); // nodes/links creation in openroadm-topology TopologyShard topologyShard = OpenRoadmTopology.createTopologyShard(portMapping.getNode(nodeId)); @@ -130,7 +129,7 @@ public class NetworkModelServiceImpl implements NetworkModelService { .child(Node.class, openRoadmTopologyNode.key()) .build(); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmTopologyNode, - openRoadmTopologyNode, CREATE_MISSING_PARENTS); + openRoadmTopologyNode); } for (Link openRoadmTopologyLink : topologyShard.getLinks()) { LOG.info("creating link {} in {}", openRoadmTopologyLink.getLinkId().getValue(), @@ -141,7 +140,7 @@ public class NetworkModelServiceImpl implements NetworkModelService { .child(Link.class, openRoadmTopologyLink.key()) .build(); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOpenRoadmTopologyLink, - openRoadmTopologyLink, CREATE_MISSING_PARENTS); + openRoadmTopologyLink); } } else { LOG.error("Unable to create openroadm-topology shard for node {}!", nodeId); @@ -281,15 +280,17 @@ public class NetworkModelServiceImpl implements NetworkModelService { .child(Link.class, otnTopologyLink.key()) .build(); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOtnTopologyLink, - otnTopologyLink, CREATE_MISSING_PARENTS); + otnTopologyLink); } } if (otnTopologyShard.getTps() != null) { for (TerminationPoint otnTopologyTp : otnTopologyShard.getTps()) { LOG.info("updating otn nodes TP {} in otn-topology", otnTopologyTp.getTpId().getValue()); + List supportingTerminationPoint = + new ArrayList<>(otnTopologyTp.nonnullSupportingTerminationPoint().values()); InstanceIdentifier iiOtnTopologyTp = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID))) - .child(Node.class, new NodeKey(otnTopologyTp.getSupportingTerminationPoint().get(0).getNodeRef())) + .child(Node.class, new NodeKey(supportingTerminationPoint.get(0).getNodeRef())) .augmentation(Node1.class) .child(TerminationPoint.class, new TerminationPointKey(otnTopologyTp.getTpId())) .build(); @@ -353,16 +354,18 @@ public class NetworkModelServiceImpl implements NetworkModelService { .augmentation(Network1.class) .child(Link.class, otnTopologyLink.key()) .build(); - networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOtnTopologyLink, otnTopologyLink, - CREATE_MISSING_PARENTS); + networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, + iiOtnTopologyLink, otnTopologyLink); } } if (otnTopologyShard.getTps() != null) { for (TerminationPoint otnTopologyTp : otnTopologyShard.getTps()) { LOG.info("updating otn nodes TP {} in otn-topology", otnTopologyTp.getTpId().getValue()); + List supportingTerminationPoint = + new ArrayList<>(otnTopologyTp.nonnullSupportingTerminationPoint().values()); InstanceIdentifier iiOtnTopologyTp = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID))) - .child(Node.class, new NodeKey(otnTopologyTp.getSupportingTerminationPoint().get(0).getNodeRef())) + .child(Node.class, new NodeKey(supportingTerminationPoint.get(0).getNodeRef())) .augmentation(Node1.class) .child(TerminationPoint.class, new TerminationPointKey(otnTopologyTp.getTpId())) .build(); @@ -395,15 +398,17 @@ public class NetworkModelServiceImpl implements NetworkModelService { .child(Link.class, new LinkKey(new LinkId(otnTopologyLink.getLinkId().getValue()))) .build(); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOtnTopologyLink, - otnTopologyLink, CREATE_MISSING_PARENTS); + otnTopologyLink); } } if (otnTopologyShard.getTps() != null) { for (TerminationPoint otnTopologyTp : otnTopologyShard.getTps()) { LOG.info("updating otn nodes TP {} in otn-topology", otnTopologyTp.getTpId().getValue()); + List supportingTerminationPoint = + new ArrayList<>(otnTopologyTp.nonnullSupportingTerminationPoint().values()); InstanceIdentifier iiOtnTopologyTp = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID))) - .child(Node.class, new NodeKey(otnTopologyTp.getSupportingTerminationPoint().get(0).getNodeRef())) + .child(Node.class, new NodeKey(supportingTerminationPoint.get(0).getNodeRef())) .augmentation(Node1.class) .child(TerminationPoint.class, new TerminationPointKey( new TpId(otnTopologyTp.getTpId().getValue()))) @@ -585,7 +590,10 @@ public class NetworkModelServiceImpl implements NetworkModelService { } List odu4links = null; if (netw1Opt.isPresent() && netw1Opt.get().getLink() != null) { - odu4links = netw1Opt.get().getLink().stream().filter(lk -> lk.getLinkId().getValue().startsWith("ODU4")) + odu4links = netw1Opt + .get() + .nonnullLink().values() + .stream().filter(lk -> lk.getLinkId().getValue().startsWith("ODU4")) .collect(Collectors.toList()); } List links = new ArrayList<>(); @@ -639,7 +647,7 @@ public class NetworkModelServiceImpl implements NetworkModelService { .child(Link.class, otnTopologyLink.key()) .build(); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, iiOtnTopologyLink, - otnTopologyLink, CREATE_MISSING_PARENTS); + otnTopologyLink); } } else { LOG.error("Unable to create OTN topology shard for node {}!", nodeId); diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java index b15bfd4b3..69579bfa7 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/ClliNetwork.java @@ -51,7 +51,7 @@ public final class ClliNetwork { Node1 clliAugmentation = new Node1Builder() .setClli(nodeInfo.getNodeClli()) .build(); - nodeBldr.addAugmentation(Node1.class, clliAugmentation); + nodeBldr.addAugmentation(clliAugmentation); } else { LOG.warn("No CLLI configured in configuration of {}", deviceId); } diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java index 7074d29a8..8d2d8fd21 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetwork.java @@ -8,10 +8,9 @@ package org.opendaylight.transportpce.networkmodel.util; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.NodeInfo; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev181130.Node1; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev181130.Node1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; @@ -86,10 +85,9 @@ public final class OpenRoadmNetwork { return new NodeBuilder() .setNodeId(new NodeId(nodeId)) .withKey(new NodeKey(new NodeId(nodeId))) - .setSupportingNode(ImmutableList.of(supportingNode)) - .addAugmentation(Node1.class, node1Bldr.build()) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class, - node2Bldr.build()) + .setSupportingNode(ImmutableMap.of(supportingNode.key(),supportingNode)) + .addAugmentation(node1Bldr.build()) + .addAugmentation(node2Bldr.build()) .build(); } } diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java index e7c88bf9b..d0769f818 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopology.java @@ -8,7 +8,7 @@ package org.opendaylight.transportpce.networkmodel.util; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -23,8 +23,10 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.XpdrNodeTypes; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPoolsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType; @@ -56,6 +58,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If10 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.IfOCHOTU4ODU4; import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.SupportedIfCapability; import org.opendaylight.yang.gen.v1.http.org.openroadm.switching.pool.types.rev181130.SwitchingPoolTypes; +import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.otn.tp.attributes.OdtuTpnPool; import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.otn.tp.attributes.OdtuTpnPoolBuilder; import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.OtnLinkType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; @@ -74,6 +77,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPoint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPointBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPointKey; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; @@ -234,10 +238,9 @@ public final class OpenRoadmOtnTopology { } LinkBuilder ietfLinkAZBldr = TopologyUtils.createLink(nodeATopo, nodeZTopo, tpA, tpZ, linkIdPrefix); ietfLinkAZBldr - .addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class, tpceLink1) - .addAugmentation(Link1.class, otnLink1) + .addAugmentation(tpceLink1) + .addAugmentation(otnLink1) .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder( ietfLinkAZBldr.augmentation( org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class)) @@ -247,10 +250,9 @@ public final class OpenRoadmOtnTopology { // create link Z-A LinkBuilder ietfLinkZABldr = TopologyUtils.createLink(nodeZTopo, nodeATopo, tpZ, tpA, linkIdPrefix); ietfLinkZABldr - .addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class, tpceLink1) - .addAugmentation(Link1.class, otnLink1) + .addAugmentation(tpceLink1) + .addAugmentation(otnLink1) .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder( ietfLinkZABldr.augmentation( org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class)) @@ -266,7 +268,7 @@ public final class OpenRoadmOtnTopology { Link1Builder updatedLink1Bldr = new Link1Builder(link.augmentation(Link1.class)) .setAvailableBandwidth(Uint32.valueOf(availBw)) .setUsedBandwidth(Uint32.valueOf(usedBw)); - updatedLinkBldr.addAugmentation(Link1.class, updatedLink1Bldr.build()); + updatedLinkBldr.addAugmentation(updatedLink1Bldr.build()); return updatedLinkBldr.build(); } @@ -287,14 +289,14 @@ public final class OpenRoadmOtnTopology { for (int i = 1; i <= NB_TRIB_PORTS; i++) { tpnPool.add(Uint16.valueOf(i)); } - xtpcaBldr.setOdtuTpnPool(ImmutableList.of(new OdtuTpnPoolBuilder().setOdtuType(ODTU4TsAllocated.class) - .setTpnPool(tpnPool).build())); + OdtuTpnPool oduTpnPool = new OdtuTpnPoolBuilder().setOdtuType(ODTU4TsAllocated.class) + .setTpnPool(tpnPool).build(); + xtpcaBldr.setOdtuTpnPool(ImmutableMap.of(oduTpnPool.key(),oduTpnPool)); } else { xtpcaBldr.setTsPool(null); - xtpcaBldr.setOdtuTpnPool(null); + xtpcaBldr.setOdtuTpnPool(ImmutableMap.of()); } - return tpBldr.addAugmentation(TerminationPoint1.class, - otnTp1Bldr.setXpdrTpPortConnectionAttributes(xtpcaBldr.build()).build()).build(); + return tpBldr.addAugmentation(otnTp1Bldr.setXpdrTpPortConnectionAttributes(xtpcaBldr.build()).build()).build(); } private static TerminationPoint updateNodeTpTsPool(TerminationPoint tp, String serviceRate, Short tribPortNb, @@ -330,8 +332,9 @@ public final class OpenRoadmOtnTopology { } xtpcaBldr.setTsPool(tsPool); List tpnPool; - if (xtpcaBldr.getOdtuTpnPool().get(0).getTpnPool() != null) { - tpnPool = new ArrayList<>(xtpcaBldr.getOdtuTpnPool().get(0).getTpnPool()); + List odtuTpnPoolValues = new ArrayList<>(xtpcaBldr.getOdtuTpnPool().values()); + if (odtuTpnPoolValues.get(0).getTpnPool() != null) { + tpnPool = new ArrayList<>(odtuTpnPoolValues.get(0).getTpnPool()); if (isDeletion) { tpnPool.add(Uint16.valueOf(tribPortNb)); } else { @@ -340,25 +343,28 @@ public final class OpenRoadmOtnTopology { } else { tpnPool = new ArrayList<>(); } - xtpcaBldr.setOdtuTpnPool(ImmutableList.of(new OdtuTpnPoolBuilder().setOdtuType(ODTU4TsAllocated.class) - .setTpnPool(tpnPool).build())); + OdtuTpnPool odtuTpnPool = new OdtuTpnPoolBuilder().setOdtuType(ODTU4TsAllocated.class) + .setTpnPool(tpnPool).build(); + xtpcaBldr.setOdtuTpnPool(ImmutableMap.of(odtuTpnPool.key(),odtuTpnPool)); - tpBldr.addAugmentation(TerminationPoint1.class, - new TerminationPoint1Builder(tp.augmentation(TerminationPoint1.class)) + tpBldr.addAugmentation(new TerminationPoint1Builder(tp.augmentation(TerminationPoint1.class)) .setXpdrTpPortConnectionAttributes(xtpcaBldr.build()).build()); return tpBldr.build(); } private static Map convertPortMappingToOtnNodeList(Nodes mappingNode) { - List networkMappings = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint() + List networkMappings = mappingNode.nonnullMapping().values() + .stream().filter(k -> k.getLogicalConnectionPoint() .contains("NETWORK")).collect(Collectors.toList()); Map xpdrMap = new HashMap<>(); for (Mapping mapping : networkMappings) { Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]); if (!xpdrMap.containsKey(xpdrNb)) { - List xpdrNetMaps = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint() + List xpdrNetMaps = mappingNode.nonnullMapping().values() + .stream().filter(k -> k.getLogicalConnectionPoint() .contains("XPDR" + xpdrNb + NETWORK)).collect(Collectors.toList()); - List xpdrClMaps = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint() + List xpdrClMaps = mappingNode.nonnullMapping().values() + .stream().filter(k -> k.getLogicalConnectionPoint() .contains("XPDR" + xpdrNb + CLIENT)).collect(Collectors.toList()); OtnTopoNode otnNode = null; if (mapping.getXponderType() != null) { @@ -401,14 +407,14 @@ public final class OpenRoadmOtnTopology { new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder() .setNodeType(OpenroadmNodeType.TPDR).build(); // create ietf node augmentation to add TP list - List tpList = new ArrayList<>(); + Map tpMap = new HashMap<>(); // creation of tps - createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If100GE.class, false); - createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true); + createTP(tpMap, node, OpenroadmTpType.XPONDERCLIENT, If100GE.class, false); + createTP(tpMap, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder() - .setTerminationPoint(tpList) + .setTerminationPoint(tpMap) .build(); // return ietfNode @@ -416,12 +422,9 @@ public final class OpenRoadmOtnTopology { .setNodeId(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())) .withKey(new NodeKey(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))) .setSupportingNode(createSupportingNodes(node)) - .addAugmentation(Node1.class, otnNodeAug) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class, - ocnNodeAug) - .addAugmentation( - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class, - ietfNodeAug) + .addAugmentation(otnNodeAug) + .addAugmentation(ocnNodeAug) + .addAugmentation(ietfNodeAug) .build(); } @@ -433,7 +436,7 @@ public final class OpenRoadmOtnTopology { .setXpdrNumber(Uint16.valueOf(node.getXpdrNb())) .build(); - List nblList = new ArrayList<>(); + Map nbMap = new HashMap<>(); for (int i = 1; i <= node.getNbTpClient(); i++) { List tpList = new ArrayList<>(); TpId tpId = new TpId("XPDR" + node.getXpdrNb() + CLIENT + i); @@ -446,17 +449,15 @@ public final class OpenRoadmOtnTopology { .setAvailableInterconnectBandwidth(Uint32.valueOf(node.getNbTpNetwork() * 10L)) .setInterconnectBandwidthUnit(Uint32.valueOf(1000000000)) .build(); - nblList.add(nbl); + nbMap.put(nbl.key(),nbl); } OduSwitchingPools oduSwitchPool = new OduSwitchingPoolsBuilder() .setSwitchingPoolNumber(Uint16.valueOf(1)) .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking) - .setNonBlockingList(nblList) + .setNonBlockingList(nbMap) .build(); - List oduSwitchPoolList = new ArrayList<>(); - oduSwitchPoolList.add(oduSwitchPool); SwitchingPools switchingPools = new SwitchingPoolsBuilder() - .setOduSwitchingPools(oduSwitchPoolList) + .setOduSwitchingPools(Map.of(oduSwitchPool.key(),oduSwitchPool)) .build(); Node1 otnNodeAug = new Node1Builder() .setTpBandwidthSharing(tpBwSh) @@ -468,14 +469,14 @@ public final class OpenRoadmOtnTopology { .setNodeType(OpenroadmNodeType.MUXPDR).build(); // create ietf node augmentation to add TP list - List tpList = new ArrayList<>(); + Map tpMap = new HashMap<>(); // creation of tps - createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If10GEODU2e.class, true); - createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true); + createTP(tpMap, node, OpenroadmTpType.XPONDERCLIENT, If10GEODU2e.class, true); + createTP(tpMap, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder() - .setTerminationPoint(tpList) + .setTerminationPoint(tpMap) .build(); // return ietfNode @@ -483,12 +484,9 @@ public final class OpenRoadmOtnTopology { .setNodeId(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())) .withKey(new NodeKey(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))) .setSupportingNode(createSupportingNodes(node)) - .addAugmentation(Node1.class, otnNodeAug) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class, - ocnNodeAug) - .addAugmentation( - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class, - ietfNodeAug) + .addAugmentation(otnNodeAug) + .addAugmentation(ocnNodeAug) + .addAugmentation(ietfNodeAug) .build(); } @@ -503,20 +501,20 @@ public final class OpenRoadmOtnTopology { tpId = new TpId("XPDR" + node.getXpdrNb() + NETWORK + i); tpl.add(tpId); } - List nblList = new ArrayList<>(); + Map nbMap = new HashMap<>(); NonBlockingList nbl = new NonBlockingListBuilder() .setNblNumber(Uint16.valueOf(1)) .setTpList(tpl) .build(); - nblList.add(nbl); + nbMap.put(nbl.key(),nbl); OduSwitchingPools oduSwitchPool = new OduSwitchingPoolsBuilder() .setSwitchingPoolNumber(Uint16.valueOf(1)) .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking) - .setNonBlockingList(nblList) + .setNonBlockingList(nbMap) .build(); - List oduSwitchPoolList = new ArrayList<>(); - oduSwitchPoolList.add(oduSwitchPool); + Map oduSwitchPoolList = new HashMap<>(); + oduSwitchPoolList.put(oduSwitchPool.key(),oduSwitchPool); SwitchingPools switchingPools = new SwitchingPoolsBuilder() .setOduSwitchingPools(oduSwitchPoolList) .build(); @@ -538,13 +536,13 @@ public final class OpenRoadmOtnTopology { .setNodeType(OpenroadmNodeType.SWITCH).build(); // create ietf node augmentation to add TP list - List tpList = new ArrayList<>(); + Map tpMap = new HashMap<>(); // creation of tps - createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If100GEODU4.class, true); - createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true); + createTP(tpMap, node, OpenroadmTpType.XPONDERCLIENT, If100GEODU4.class, true); + createTP(tpMap, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder() - .setTerminationPoint(tpList) + .setTerminationPoint(tpMap) .build(); // return ietfNode @@ -552,16 +550,14 @@ public final class OpenRoadmOtnTopology { .setNodeId(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())) .withKey(new NodeKey(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))) .setSupportingNode(createSupportingNodes(node)) - .addAugmentation(Node1.class, otnNodeAug) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class, - ocnNodeAug) - .addAugmentation( - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class, - ietfNodeAug) + .addAugmentation(otnNodeAug) + .addAugmentation(ocnNodeAug) + .addAugmentation(ietfNodeAug) .build(); } - private static void createTP(List tpList, OtnTopoNode node, OpenroadmTpType tpType, + private static void createTP(Map tpMap, + OtnTopoNode node, OpenroadmTpType tpType, Class ifCapType, boolean withRate) { long nbTps = 0; if (OpenroadmTpType.XPONDERCLIENT.equals(tpType)) { @@ -577,10 +573,8 @@ public final class OpenRoadmOtnTopology { SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder() .setIfCapType(ifCapType) .build(); - List supIfCapaList = new ArrayList<>(); - supIfCapaList.add(supIfCapa); TpSupportedInterfaces tpSupIf = new TpSupportedInterfacesBuilder() - .setSupportedInterfaceCapability(supIfCapaList) + .setSupportedInterfaceCapability(Map.of(supIfCapa.key(),supIfCapa)) .build(); XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder(); @@ -603,15 +597,15 @@ public final class OpenRoadmOtnTopology { .setNodeRef(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())) .setTpRef("XPDR" + node.getXpdrNb() + NETWORK + i) .build(); - List supportTpList = new ArrayList<>(); - supportTpList.add(stp); - tpList.add(buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, supportTpList)); + TerminationPoint ietfTp = buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, Map.of(stp.key(), stp)); + tpMap.put(ietfTp.key(),ietfTp); } else if (OpenroadmTpType.XPONDERCLIENT.equals(tpType)) { TpId tpId = new TpId("XPDR" + node.getXpdrNb() + CLIENT + i); if (node.getXpdrCliConnectionMap().get(tpId.getValue()) != null) { tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrCliConnectionMap().get(tpId.getValue())); } - tpList.add(buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, null)); + TerminationPoint ietfTp = buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, null); + tpMap.put(ietfTp.key(),ietfTp); } } } @@ -630,7 +624,7 @@ public final class OpenRoadmOtnTopology { } } - private static List createSupportingNodes(OtnTopoNode node) { + private static Map createSupportingNodes(OtnTopoNode node) { SupportingNode suppNode1 = new SupportingNodeBuilder() .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID)) .setNodeRef(new NodeId(node.getNodeId())) @@ -649,26 +643,24 @@ public final class OpenRoadmOtnTopology { .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.CLLI_NETWORK_ID), new NodeId(node.getClli()))) .build(); - List suppNodeList = new ArrayList<>(); - suppNodeList.add(suppNode1); - suppNodeList.add(suppNode2); - suppNodeList.add(suppNode3); - return suppNodeList; + Map suppNodeMap = new HashMap<>(); + suppNodeMap.put(suppNode1.key(),suppNode1); + suppNodeMap.put(suppNode2.key(),suppNode2); + suppNodeMap.put(suppNode3.key(),suppNode3); + return suppNodeMap; } private static TerminationPoint buildIetfTp( org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1Builder tpceTp1Bldr, TerminationPoint1 otnTp1, OpenroadmTpType tpType, TpId tpId, - List supportTpList) { + Map supportTpMap) { TerminationPointBuilder ietfTpBldr = new TerminationPointBuilder(); if (tpceTp1Bldr.getAssociatedConnectionMapPort() != null) { - ietfTpBldr.addAugmentation( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1.class, - tpceTp1Bldr.build()); + ietfTpBldr.addAugmentation(tpceTp1Bldr.build()); } - if (supportTpList != null) { - ietfTpBldr.setSupportingTerminationPoint(supportTpList); + if (supportTpMap != null) { + ietfTpBldr.setSupportingTerminationPoint(supportTpMap); } org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 ocnTp = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder() @@ -676,10 +668,8 @@ public final class OpenRoadmOtnTopology { ietfTpBldr.setTpId(tpId) .withKey(new TerminationPointKey(tpId)) - .addAugmentation(TerminationPoint1.class, otnTp1) - .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1.class, - ocnTp); + .addAugmentation(otnTp1) + .addAugmentation(ocnTp); return ietfTpBldr.build(); } } diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java index 21ff055cd..ac06dd1cb 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java @@ -88,7 +88,7 @@ public final class OpenRoadmTopology { // transform flat mapping list to per degree and per srg mapping lists Map> mapDeg = new HashMap<>(); Map> mapSrg = new HashMap<>(); - List mappingList = new ArrayList<>(mappingNode.getMapping()); + List mappingList = new ArrayList<>(mappingNode.nonnullMapping().values()); mappingList.sort(Comparator.comparing(Mapping::getLogicalConnectionPoint)); List nodeShardList = new ArrayList<>(); @@ -131,7 +131,8 @@ public final class OpenRoadmTopology { return new TopologyShard(nodes, links); } else if (NodeTypes.Xpdr.getIntValue() == mappingNode.getNodeInfo().getNodeType().getIntValue()) { // Check if node is Xpdr is a Transponder - List networkMappings = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint() + List networkMappings = mappingNode.nonnullMapping().values() + .stream().filter(k -> k.getLogicalConnectionPoint() .contains("NETWORK")).collect(Collectors.toList()); List tpdrList = new ArrayList<>(); for (Mapping mapping : networkMappings) { @@ -139,7 +140,7 @@ public final class OpenRoadmTopology { Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]); if (!tpdrList.contains(xpdrNb)) { tpdrList.add(xpdrNb); - extractedMappings = mappingNode.getMapping().stream().filter(lcp -> lcp + extractedMappings = mappingNode.nonnullMapping().values().stream().filter(lcp -> lcp .getLogicalConnectionPoint().contains("XPDR" + xpdrNb)).collect(Collectors.toList()); NodeBuilder ietfNode; if (mapping.getXponderType() == null @@ -181,11 +182,10 @@ public final class OpenRoadmTopology { String nodeIdtopo = new StringBuilder().append(nodeId).append("-XPDR").append(xpdrNb).toString(); ietfNodeBldr.setNodeId(new NodeId(nodeIdtopo)) .withKey((new NodeKey(new NodeId(nodeIdtopo)))) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .Node1.class, ocnNode1); + .addAugmentation(ocnNode1); - // Create tp-list - List tpList = new ArrayList<>(); + // Create tp-map + Map tpMap = new HashMap<>(); TerminationPointBuilder ietfTpBldr; for (Mapping m : mappings) { if (!isOtn) { @@ -200,22 +200,20 @@ public final class OpenRoadmTopology { new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129 .TerminationPoint1Builder().setAssociatedConnectionMapPort(m.getConnectionMapLcp()).build(); ietfTpBldr - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network - .rev181130.TerminationPoint1.class, ocnTp1Bldr.build()) - .addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129 - .TerminationPoint1.class, tpceTp1); - tpList.add(ietfTpBldr.build()); + .addAugmentation(ocnTp1Bldr.build()) + .addAugmentation(tpceTp1); + TerminationPoint ietfTp = ietfTpBldr.build(); + tpMap.put(ietfTp.key(),ietfTp); } else if (m.getPortQual().equals("xpdr-client")) { ocnTp1Bldr.setTpType(OpenroadmTpType.XPONDERCLIENT); org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1 tpceTp1 = new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129 .TerminationPoint1Builder().setAssociatedConnectionMapPort(m.getConnectionMapLcp()).build(); ietfTpBldr - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .TerminationPoint1.class, ocnTp1Bldr.build()) - .addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129 - .TerminationPoint1.class, tpceTp1); - tpList.add(ietfTpBldr.build()); + .addAugmentation(ocnTp1Bldr.build()) + .addAugmentation(tpceTp1); + TerminationPoint ietfTp = ietfTpBldr.build(); + tpMap.put(ietfTp.key(),ietfTp); } } else { if (m.getPortQual().equals("xpdr-network") || m.getPortQual().equals("switch-network")) { @@ -224,9 +222,9 @@ public final class OpenRoadmTopology { .TerminationPoint1Builder ocnTp1Bldr = new org.opendaylight.yang.gen.v1.http.org.openroadm .common.network.rev181130.TerminationPoint1Builder().setTpType(OpenroadmTpType.XPONDERNETWORK); ietfTpBldr - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network - .rev181130.TerminationPoint1.class, ocnTp1Bldr.build()); - tpList.add(ietfTpBldr.build()); + .addAugmentation(ocnTp1Bldr.build()); + TerminationPoint ietfTp = ietfTpBldr.build(); + tpMap.put(ietfTp.key(),ietfTp); } } } @@ -234,16 +232,14 @@ public final class OpenRoadmTopology { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 .Node1Builder ietfNode1 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology .rev180226.Node1Builder() - .setTerminationPoint(tpList); - ietfNodeBldr.addAugmentation( - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class, - ietfNode1.build()); + .setTerminationPoint(tpMap); + ietfNodeBldr.addAugmentation(ietfNode1.build()); return ietfNodeBldr; } private static NodeBuilder createDegree(String degNb, List degListMap, String nodeId, String clli) { // Create tp-list - List tpList = new ArrayList<>(); + Map tpMap = new HashMap<>(); TerminationPointBuilder ietfTpBldr; for (Mapping m : degListMap) { ietfTpBldr = createTpBldr(m.getLogicalConnectionPoint()); @@ -264,18 +260,18 @@ public final class OpenRoadmTopology { default: LOG.error("impossible to set tp-type to {}", m.getLogicalConnectionPoint()); } - ietfTpBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .TerminationPoint1.class, ocnTp1Bldr.build()); - tpList.add(ietfTpBldr.build()); + ietfTpBldr.addAugmentation(ocnTp1Bldr.build()); + TerminationPoint ietfTp = ietfTpBldr.build(); + tpMap.put(ietfTp.key(),ietfTp); } // Add CTP to tp-list ietfTpBldr = createTpBldr(degNb + "-CTP-TXRX"); org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 ocnTp1 = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder() .setTpType(OpenroadmTpType.DEGREETXRXCTP).build(); - ietfTpBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .TerminationPoint1.class, ocnTp1); - tpList.add(ietfTpBldr.build()); + ietfTpBldr.addAugmentation(ocnTp1); + TerminationPoint ietfTp = ietfTpBldr.build(); + tpMap.put(ietfTp.key(),ietfTp); // set degree-attributes DegreeAttributes degAtt = new DegreeAttributesBuilder() .setDegreeNumber(Uint16.valueOf(degNb.split("DEG")[1])) @@ -284,7 +280,7 @@ public final class OpenRoadmTopology { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 .Node1Builder ietfNode1 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology .rev180226.Node1Builder() - .setTerminationPoint(tpList); + .setTerminationPoint(tpMap); // set node-id String nodeIdtopo = new StringBuilder().append(nodeId).append("-").append(degNb).toString(); Node1 ontNode1 = new Node1Builder().setDegreeAttributes(degAtt).build(); @@ -296,17 +292,14 @@ public final class OpenRoadmTopology { return createTopoLayerNode(nodeId, clli) .setNodeId(new NodeId(nodeIdtopo)) .withKey((new NodeKey(new NodeId(nodeIdtopo)))) - .addAugmentation(Node1.class, ontNode1) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .Node1.class, ocnNode1) - .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology - .rev180226.Node1.class, - ietfNode1.build()); + .addAugmentation(ontNode1) + .addAugmentation(ocnNode1) + .addAugmentation(ietfNode1.build()); } private static NodeBuilder createSrg(String srgNb, List srgListMap, String nodeId, String clli) { // Create tp-list - List tpList = new ArrayList<>(); + Map tpMap = new HashMap<>(); TerminationPointBuilder ietfTpBldr; for (Mapping m : srgListMap) { ietfTpBldr = createTpBldr(m.getLogicalConnectionPoint()); @@ -327,18 +320,18 @@ public final class OpenRoadmTopology { default: LOG.error("impossible to set tp-type to {}", m.getLogicalConnectionPoint()); } - ietfTpBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .TerminationPoint1.class, ocnTp1Bldr.build()); - tpList.add(ietfTpBldr.build()); + ietfTpBldr.addAugmentation(ocnTp1Bldr.build()); + TerminationPoint ietfTp = ietfTpBldr.build(); + tpMap.put(ietfTp.key(),ietfTp); } // Add CP to tp-list ietfTpBldr = createTpBldr(srgNb + "-CP-TXRX"); org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 .TerminationPoint1 ocnTp1 = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network .rev181130.TerminationPoint1Builder().setTpType(OpenroadmTpType.SRGTXRXCP).build(); - ietfTpBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .TerminationPoint1.class, ocnTp1); - tpList.add(ietfTpBldr.build()); + ietfTpBldr.addAugmentation(ocnTp1); + TerminationPoint ietfTp = ietfTpBldr.build(); + tpMap.put(ietfTp.key(),ietfTp); // Create openroadm-common-network augmentation to set node type to SRG org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 ocnNode1 = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder() @@ -350,17 +343,15 @@ public final class OpenRoadmTopology { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 .Node1Builder ietfNode1 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology .rev180226.Node1Builder() - .setTerminationPoint(tpList); + .setTerminationPoint(tpMap); // Create ietf node setting supporting-node data String nodeIdtopo = new StringBuilder().append(nodeId).append("-").append(srgNb).toString(); return createTopoLayerNode(nodeId, clli) .setNodeId(new NodeId(nodeIdtopo)) .withKey((new NodeKey(new NodeId(nodeIdtopo)))) - .addAugmentation(Node1.class, ontNode1) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 - .Node1.class, ocnNode1) - .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226 - .Node1.class, ietfNode1.build()); + .addAugmentation(ontNode1) + .addAugmentation(ocnNode1) + .addAugmentation(ietfNode1.build()); } private static NodeBuilder createTopoLayerNode(String nodeId, String clli) { @@ -374,9 +365,11 @@ public final class OpenRoadmTopology { .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.CLLI_NETWORK_ID), new NodeId(clli))) .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID)) .setNodeRef(new NodeId(clli)); - ArrayList supportlist = new ArrayList<>(); - supportlist.add(support1bldr.build()); - supportlist.add(support2bldr.build()); + Map supportlist = new HashMap<>(); + SupportingNode support1 = support1bldr.build(); + supportlist.put(support1.key(),support1); + SupportingNode support2 = support2bldr.build(); + supportlist.put(support2.key(),support2); return new NodeBuilder().setSupportingNode(supportlist); } @@ -413,11 +406,11 @@ public final class OpenRoadmTopology { destNode = nodes.get(j).getNodeId().getValue(); // A to Z direction srcTp = nodes.get(i).augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf - .network.topology.rev180226.Node1.class).getTerminationPoint().stream() + .network.topology.rev180226.Node1.class).nonnullTerminationPoint().values().stream() .filter(tp -> tp.getTpId().getValue().contains("CP") || tp.getTpId().getValue().contains("CTP")) .findFirst().get().getTpId().getValue(); destTp = nodes.get(j).augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf - .network.topology.rev180226.Node1.class).getTerminationPoint().stream() + .network.topology.rev180226.Node1.class).nonnullTerminationPoint().values().stream() .filter(tp -> tp.getTpId().getValue().contains("CP") || tp.getTpId().getValue().contains("CTP")) .findFirst().get().getTpId().getValue(); Link1Builder ocnAzLinkBldr = new Link1Builder(); @@ -449,9 +442,9 @@ public final class OpenRoadmTopology { LinkBuilder ietfAzLinkBldr = createLink(srcNode, destNode, srcTp, destTp); LinkBuilder ietfZaLinkBldr = createLink(destNode, srcNode, destTp, srcTp); ocnAzLinkBldr.setOppositeLink(ietfZaLinkBldr.getLinkId()); - ietfAzLinkBldr.addAugmentation(Link1.class, ocnAzLinkBldr.build()); + ietfAzLinkBldr.addAugmentation(ocnAzLinkBldr.build()); ocnZaLinkBldr.setOppositeLink(ietfAzLinkBldr.getLinkId()); - ietfZaLinkBldr.addAugmentation(Link1.class, ocnZaLinkBldr.build()); + ietfZaLinkBldr.addAugmentation(ocnZaLinkBldr.build()); links.add(ietfAzLinkBldr.build()); links.add(ietfZaLinkBldr.build()); } @@ -490,8 +483,7 @@ public final class OpenRoadmTopology { .Link1.class)) .setAdministrativeState(State.OutOfService); linkBuilder.removeAugmentation(Link1.class) - .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130 - .Link1.class,link1Builder.build()); + .addAugmentation(link1Builder.build()); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, linkIID.build(), linkBuilder.build()); networkTransactionService.commit().get(1, TimeUnit.SECONDS); @@ -508,34 +500,40 @@ public final class OpenRoadmTopology { } } - private static List create96AvalWaveDegree() { - List waveList = new ArrayList<>(); + private static Map create96AvalWaveDegree() { + Map waveMap = new HashMap<>(); for (int i = 1; i < 97; i++) { AvailableWavelengthsBuilder avalBldr = new AvailableWavelengthsBuilder() .setIndex(Uint32.valueOf(i)) .withKey(new AvailableWavelengthsKey(Uint32.valueOf(i))); - waveList.add(avalBldr.build()); + AvailableWavelengths aval = avalBldr.build(); + waveMap.put(aval.key(),aval); } - return waveList; + return waveMap; } - private static List create96AvalWaveSrg() { + private static Map create96AvalWaveSrg() { - List waveList = new ArrayList<>(); + Map waveMap = new HashMap<>(); for (int i = 1; i < 97; i++) { org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes - .AvailableWavelengthsBuilder avalBldr = new org.opendaylight.yang.gen.v1.http.org.openroadm.srg - .rev181130.srg.node.attributes.AvailableWavelengthsBuilder() - .setIndex(Uint32.valueOf(i)) - .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes - .AvailableWavelengthsKey(Uint32.valueOf(i))); - waveList.add(avalBldr.build()); + .AvailableWavelengthsBuilder avalBldr = + new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes + .AvailableWavelengthsBuilder() + .setIndex(Uint32.valueOf(i)) + .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes + .AvailableWavelengthsKey(Uint32.valueOf(i))); + org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths + aval = avalBldr.build(); + waveMap.put(aval.key(),aval); } - return waveList; + return waveMap; } } diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java index 7e9239c27..af2646f10 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TopologyUtils.java @@ -70,7 +70,7 @@ public final class TopologyUtils { .setSource(srcNodeBldr.build()) .setLinkId(linkId) .withKey(new LinkKey(linkId)) - .addAugmentation(Link1.class,lnk1); + .addAugmentation(lnk1); return lnkBldr; } @@ -101,7 +101,7 @@ public final class TopologyUtils { LinkBuilder linkBuilder = new LinkBuilder(link.get()); Link1Builder link1Builder = new Link1Builder(linkBuilder.augmentation(Link1.class)); linkBuilder.removeAugmentation(Link1.class); - linkBuilder.addAugmentation(Link1.class,link1Builder.build()); + linkBuilder.addAugmentation(link1Builder.build()); networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, linkIID.build(), linkBuilder.build()); networkTransactionService.commit().get(1, TimeUnit.SECONDS); diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TpceNetwork.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TpceNetwork.java index 4d7ad6229..ab8e1accf 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TpceNetwork.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TpceNetwork.java @@ -14,7 +14,6 @@ import java.util.concurrent.TimeoutException; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.common.network.NetworkTransactionService; -import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1; import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.NetworkTypes1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.clli.network.rev181130.networks.network.network.types.ClliNetworkBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.network.types.OpenroadmCommonNetworkBuilder; @@ -70,7 +69,7 @@ public class TpceNetwork { Augmentation ordClli = new NetworkTypes1Builder() .setClliNetwork(new ClliNetworkBuilder().build()) .build(); - networkTypesBldr.addAugmentation(NetworkTypes1.class, ordClli); + networkTypesBldr.addAugmentation(ordClli); break; case NetworkUtils.UNDERLAY_NETWORK_ID: case NetworkUtils.OVERLAY_NETWORK_ID: @@ -79,8 +78,7 @@ public class TpceNetwork { .network.rev181130.NetworkTypes1Builder() .setOpenroadmCommonNetwork(new OpenroadmCommonNetworkBuilder().build()) .build(); - networkTypesBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network - .rev181130.NetworkTypes1.class, ordTopology); + networkTypesBldr.addAugmentation(ordTopology); break; default: LOG.error("Unknown network type"); diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListenerTest.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListenerTest.java index 33bdf3930..009bc321f 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListenerTest.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListenerTest.java @@ -169,7 +169,7 @@ public class NetConfTopologyListenerTest { .build()) .build(); final NodeBuilder nn = new NodeBuilder().setNodeId(new NodeId(nodeId)) - .addAugmentation(NetconfNode.class, netconfNode); + .addAugmentation(netconfNode); return nn.build(); } diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetworkTest.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetworkTest.java index 49c36d044..ec3a3c34e 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetworkTest.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmNetworkTest.java @@ -11,6 +11,8 @@ package org.opendaylight.transportpce.networkmodel.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import java.util.ArrayList; +import java.util.List; import org.junit.Ignore; import org.junit.Test; import org.opendaylight.transportpce.common.NetworkUtils; @@ -90,6 +92,7 @@ public class OpenRoadmNetworkTest { private void supportingNodeTest(String clli, Node createdNode) { SupportingNode supportingNode = computeSupportingNode(clli); assertEquals(1, createdNode.getSupportingNode().size()); - assertEquals(supportingNode, createdNode.getSupportingNode().get(0)); + List supportingNodeList = new ArrayList<>(createdNode.nonnullSupportingNode().values()); + assertEquals(supportingNode, supportingNodeList.get(0)); } } \ No newline at end of file diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java index 0f75a6f5d..97b6ee7ad 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java @@ -24,7 +24,9 @@ import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import org.junit.Test; import org.opendaylight.transportpce.networkmodel.dto.TopologyShard; @@ -35,9 +37,11 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmappi import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.NodesBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.Mapping; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingKey; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.NodeInfoBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType; @@ -77,15 +81,16 @@ public class OpenRoadmOtnTopologyTest { JsonReader portMappingReader = new JsonReader(reader)) { Network portMapping = (Network) JsonUtil.getInstance().getDataObjectFromJson(portMappingReader, QName.create("http://org/opendaylight/transportpce/portmapping", "2020-08-27", "network")); - for (Nodes nodes : portMapping.getNodes()) { + for (Nodes nodes : portMapping.nonnullNodes().values()) { if (nodes.getNodeId().equals("XPDR-A1")) { this.portMappingTpdr = nodes; } else { this.portMappingSpdr = nodes; } } - List mappingList = new ArrayList<>(); - mappingList.add(new MappingBuilder().setLogicalConnectionPoint("XPDR0-NETWORK0").build()); + Map mappingList = new HashMap<>(); + Mapping mapping = new MappingBuilder().setLogicalConnectionPoint("XPDR0-NETWORK0").build(); + mappingList.put(mapping.key(),mapping); this.portMappingBad = new NodesBuilder() .setNodeId(this.portMappingTpdr.getNodeId()) .setNodeInfo(new NodeInfoBuilder(this.portMappingTpdr.getNodeInfo()).setNodeType(NodeTypes.Ila).build()) @@ -109,7 +114,7 @@ public class OpenRoadmOtnTopologyTest { Node node = topologyShard.getNodes().get(0); assertEquals("XPDR-A1-XPDR1", node.getNodeId().getValue()); // tests supporting nodes - List supportingNodes = node.getSupportingNode().stream() + List supportingNodes = node.nonnullSupportingNode().values().stream() .sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue())) .collect(Collectors.toList()); assertEquals("Should contain 3 supporting nodes", 3, supportingNodes.size()); @@ -129,7 +134,7 @@ public class OpenRoadmOtnTopologyTest { //tests list of TPs List tps = node.augmentation( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class) - .getTerminationPoint().stream() + .nonnullTerminationPoint().values().stream() .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue())) .collect(Collectors.toList()); assertEquals("node should contain 4 TPs", 4, tps.size()); @@ -152,8 +157,9 @@ public class OpenRoadmOtnTopologyTest { tps.get(0).augmentation( org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) - .getTpSupportedInterfaces().getSupportedInterfaceCapability() - .get(0).getIfCapType().getName()); + .getTpSupportedInterfaces().nonnullSupportedInterfaceCapability() + .values().stream().findFirst() + .get().getIfCapType().getName()); assertEquals( "first TP must be of type client", OpenroadmTpType.XPONDERCLIENT, @@ -182,7 +188,8 @@ public class OpenRoadmOtnTopologyTest { .TerminationPoint1.class) .getTpSupportedInterfaces() .getSupportedInterfaceCapability() - .get(0) + .values().stream().findFirst() + .get() .getIfCapType() .getName()); assertEquals( @@ -367,7 +374,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool()); assertEquals( "Tpn pool list should be full, with 80 trib ports", @@ -377,7 +385,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); } @@ -517,7 +526,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( @@ -527,7 +537,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), not(hasItem(Uint16.valueOf(1)))); @@ -576,7 +587,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( @@ -586,7 +598,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), hasItem(Uint16.valueOf(1))); } @@ -650,7 +663,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( @@ -660,7 +674,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), not(hasItem(Uint16.valueOf(1)))); @@ -712,7 +727,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( @@ -722,7 +738,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), hasItem(Uint16.valueOf(1))); } @@ -770,7 +787,7 @@ public class OpenRoadmOtnTopologyTest { assertEquals(OpenroadmNodeType.SWITCH, node.augmentation(Node1.class).getNodeType()); } // tests supporting nodes - List supportingNodes = node.getSupportingNode().stream() + List supportingNodes = node.nonnullSupportingNode().values().stream() .sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue())) .collect(Collectors.toList()); assertEquals("Should contain 3 supporting nodes", 3, supportingNodes.size()); @@ -787,34 +804,38 @@ public class OpenRoadmOtnTopologyTest { .getSwitchingPools()); List tpList = node.augmentation( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class) - .getTerminationPoint().stream() + .nonnullTerminationPoint().values().stream() .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue())) .collect(Collectors.toList()); checkSpdrTpList(xpdrNb, tpList); } private void checkSpdrSwitchingPools(Uint16 xpdrNb, SwitchingPools sp) { + List oduSwitchingPools = new ArrayList<>(sp.nonnullOduSwitchingPools().values()); assertEquals( "switching-pools augmentation should contain a single odu-switching-pools", 1, - sp.getOduSwitchingPools().size()); + oduSwitchingPools.size()); assertEquals( "switching-pool-number should be 1", Uint16.valueOf(1), - sp.getOduSwitchingPools().get(0).getSwitchingPoolNumber()); + oduSwitchingPools.get(0).getSwitchingPoolNumber()); assertEquals( "switching-pool-type should be non-blocking", "non-blocking", - sp.getOduSwitchingPools().get(0).getSwitchingPoolType().getName()); + oduSwitchingPools.get(0).getSwitchingPoolType().getName()); + + List nonBlockingList = + new ArrayList<>(oduSwitchingPools.get(0).nonnullNonBlockingList().values()); if (xpdrNb.equals(Uint16.valueOf(1))) { assertEquals( "Mux should contain 4 non blocking list", 4, - sp.getOduSwitchingPools().get(0).getNonBlockingList().size()); + nonBlockingList.size()); assertEquals( Uint16.valueOf(1), - sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getNblNumber()); - List nblList = sp.getOduSwitchingPools().get(0).getNonBlockingList().stream() + nonBlockingList.get(0).getNblNumber()); + List nblList = oduSwitchingPools.get(0).nonnullNonBlockingList().values().stream() .sorted((nbl1, nbl2) -> nbl1.getNblNumber().compareTo(nbl2.getNblNumber())) .collect(Collectors.toList()); for (NonBlockingList nbl : nblList) { @@ -837,16 +858,16 @@ public class OpenRoadmOtnTopologyTest { assertEquals( "Switch should contain a single non blocking list", 1, - sp.getOduSwitchingPools().get(0).getNonBlockingList().size()); + nonBlockingList.size()); assertEquals( Uint16.valueOf(1), - sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getNblNumber()); + nonBlockingList.get(0).getNblNumber()); assertThat( "for a 100G Switch, non blocking list should contain 8 entries (4 clients + 4 network ports)", - sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getTpList(), + nonBlockingList.get(0).getTpList(), hasSize(8)); assertThat( - sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getTpList(), + nonBlockingList.get(0).getTpList(), containsInAnyOrder( new TpId("XPDR2-CLIENT1"), new TpId("XPDR2-NETWORK1"), new TpId("XPDR2-CLIENT2"), new TpId("XPDR2-NETWORK2"), new TpId("XPDR2-CLIENT3"), new TpId("XPDR2-NETWORK3"), @@ -863,7 +884,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getTpSupportedInterfaces() - .getSupportedInterfaceCapability().get(0) + .getSupportedInterfaceCapability().values().stream().findFirst() + .get() .getIfCapType()); assertEquals( "the rate should be ODU4", @@ -876,13 +898,16 @@ public class OpenRoadmOtnTopologyTest { .getRate()); assertEquals( "openroadm-topology", - tpList.get(4).getSupportingTerminationPoint().get(0).getNetworkRef().getValue()); + tpList.get(4).getSupportingTerminationPoint().values().stream().findFirst() + .get().getNetworkRef().getValue()); assertEquals( "SPDR-SA1-XPDR" + xpdrNb, - tpList.get(4).getSupportingTerminationPoint().get(0).getNodeRef().getValue()); + tpList.get(4).getSupportingTerminationPoint().values().stream().findFirst() + .get().getNodeRef().getValue()); assertEquals( "XPDR" + xpdrNb + "-NETWORK1", - tpList.get(4).getSupportingTerminationPoint().get(0).getTpRef()); + tpList.get(4).getSupportingTerminationPoint().values().stream().findFirst() + .get().getTpRef()); if (xpdrNb.equals(Uint16.valueOf(1))) { assertEquals("should contain 5 TPs", 5, tpList.size()); assertEquals("XPDR1-CLIENT1", tpList.get(0).getTpId().getValue()); @@ -896,7 +921,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getTpSupportedInterfaces() - .getSupportedInterfaceCapability().get(0) + .getSupportedInterfaceCapability().values().stream().findFirst() + .get() .getIfCapType()); assertEquals( "the rate should be ODU2e", @@ -937,7 +963,8 @@ public class OpenRoadmOtnTopologyTest { org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 .TerminationPoint1.class) .getTpSupportedInterfaces() - .getSupportedInterfaceCapability().get(0) + .getSupportedInterfaceCapability().values().stream().findFirst() + .get() .getIfCapType()); assertEquals( "the rate should be ODU4", diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopologyTest.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopologyTest.java index 5e651ceef..14fab9cb0 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopologyTest.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopologyTest.java @@ -196,8 +196,7 @@ public class OpenRoadmTopologyTest { .setLinkId(linkId) .setSource(new SourceBuilder().setSourceNode(new NodeId(srcNode)).setSourceTp(srcTp).build()) .setDestination(new DestinationBuilder().setDestNode(new NodeId(dstNode)).setDestTp(destTp).build()) - .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Link1.class, link1) + .addAugmentation(link1) .build(); InstanceIdentifier linkIID = InstanceIdentifier.builder(Networks.class).child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))).augmentation(Network1.class) @@ -259,7 +258,7 @@ public class OpenRoadmTopologyTest { private void checkDegreeNode(String nodeNb, Node node) { assertEquals("ROADMA01-DEG" + nodeNb, node.getNodeId().getValue()); - List supportingNodes = node.getSupportingNode().stream() + List supportingNodes = node.nonnullSupportingNode().values().stream() .sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue())) .collect(Collectors.toList()); assertEquals(2, supportingNodes.size()); @@ -276,7 +275,7 @@ public class OpenRoadmTopologyTest { .getDegreeAttributes().getAvailableWavelengths().size()); List tps = node.augmentation( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class) - .getTerminationPoint().stream() + .nonnullTerminationPoint().values().stream() .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue())) .collect(Collectors.toList()); assertEquals(2, tps.size()); @@ -288,7 +287,7 @@ public class OpenRoadmTopologyTest { private void checkSrgNode(String nodeNb, Node node) { assertEquals("ROADMA01-SRG" + nodeNb, node.getNodeId().getValue()); - List supportingNodes = node.getSupportingNode().stream() + List supportingNodes = node.nonnullSupportingNode().values().stream() .sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue())) .collect(Collectors.toList()); assertEquals(2, supportingNodes.size()); @@ -302,7 +301,7 @@ public class OpenRoadmTopologyTest { .getSrgAttributes().getAvailableWavelengths().size()); List tps = node.augmentation( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class) - .getTerminationPoint().stream() + .nonnullTerminationPoint().values().stream() .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue())) .collect(Collectors.toList()); assertEquals(5, tps.size()); @@ -314,7 +313,7 @@ public class OpenRoadmTopologyTest { private void checkTpdrNode(Node node) { assertEquals("XPDRA01-XPDR1", node.getNodeId().getValue()); - List supportingNodes = node.getSupportingNode().stream() + List supportingNodes = node.nonnullSupportingNode().values().stream() .sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue())) .collect(Collectors.toList()); assertEquals(2, supportingNodes.size()); @@ -325,7 +324,7 @@ public class OpenRoadmTopologyTest { assertEquals(OpenroadmNodeType.XPONDER, node.augmentation(Node1.class).getNodeType()); List tps = node.augmentation( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class) - .getTerminationPoint().stream() + .nonnullTerminationPoint().values().stream() .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue())) .collect(Collectors.toList()); assertEquals(4, tps.size()); @@ -343,7 +342,7 @@ public class OpenRoadmTopologyTest { private void checkOtnXpdrNode(Node node) { assertEquals("XPDRA01-XPDR1", node.getNodeId().getValue()); - List supportingNodes = node.getSupportingNode().stream() + List supportingNodes = node.nonnullSupportingNode().values().stream() .sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue())) .collect(Collectors.toList()); assertEquals(2, supportingNodes.size()); @@ -354,7 +353,7 @@ public class OpenRoadmTopologyTest { assertEquals(OpenroadmNodeType.XPONDER, node.augmentation(Node1.class).getNodeType()); List tps = node.augmentation( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class) - .getTerminationPoint().stream() + .nonnullTerminationPoint().values().stream() .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue())) .collect(Collectors.toList()); assertEquals(2, tps.size()); diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/JsonUtil.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/JsonUtil.java index e81d6e6cc..ada76cbb1 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/JsonUtil.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/JsonUtil.java @@ -12,9 +12,11 @@ import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.ServiceLoader; -import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry; -import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; -import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext; +import org.opendaylight.binding.runtime.api.BindingRuntimeContext; +import org.opendaylight.binding.runtime.spi.BindingRuntimeHelpers; +import org.opendaylight.mdsal.binding.dom.adapter.CurrentAdapterSerializer; +import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; @@ -25,7 +27,7 @@ import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier; import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,9 +37,9 @@ public final class JsonUtil { private static final Logger LOG = LoggerFactory.getLogger(JsonUtil.class); private static JsonUtil instance; - private SchemaContext schemaCtx; + private EffectiveModelContext schemaCtx; - private BindingNormalizedNodeCodecRegistry codecRegistry; + private BindingNormalizedNodeSerializer codecRegistry; private JsonUtil() { List moduleInfos = new LinkedList<>(); @@ -46,15 +48,14 @@ public final class JsonUtil { moduleInfos.add(yangModelBindingProvider.getModuleInfo()); } /* Create the schema context for loaded models */ - ModuleInfoBackedContext moduleInfoBackedCntxt = ModuleInfoBackedContext.create(); - moduleInfoBackedCntxt.addModuleInfos(moduleInfos); - schemaCtx = moduleInfoBackedCntxt.getSchemaContext(); + schemaCtx = BindingRuntimeHelpers.createEffectiveModel(moduleInfos); if (schemaCtx == null) { throw new IllegalStateException("Failed to load schema context"); } // Create the binding binding normalized node codec registry - BindingRuntimeContext bindingRuntimeContext = BindingRuntimeContext.create(moduleInfoBackedCntxt, schemaCtx); - codecRegistry = new BindingNormalizedNodeCodecRegistry(bindingRuntimeContext); + BindingRuntimeContext bindingContext = + BindingRuntimeHelpers.createRuntimeContext(); + codecRegistry = new CurrentAdapterSerializer(new BindingCodecContext(bindingContext)); } public static JsonUtil getInstance() { diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/NetworkmodelTestUtil.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/NetworkmodelTestUtil.java index e6bfb808f..dca31a41b 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/NetworkmodelTestUtil.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/NetworkmodelTestUtil.java @@ -7,16 +7,18 @@ */ package org.opendaylight.transportpce.networkmodel.util.test; -import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.Nodes; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.NodesBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.Mapping; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingKey; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.NodeInfoBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual; @@ -25,6 +27,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.O import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapability; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODTU4TsAllocated; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU4; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.TerminationPoint1; @@ -36,6 +39,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181019.If10 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181019.IfOCH; import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181019.SupportedIfCapability; import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.IfOCHOTU4ODU4; +import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.otn.tp.attributes.OdtuTpnPool; import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.otn.tp.attributes.OdtuTpnPoolBuilder; import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.OtnLinkType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; @@ -50,6 +54,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPoint; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPointBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPointKey; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; @@ -60,7 +65,7 @@ public final class NetworkmodelTestUtil { private static final Logger LOG = LoggerFactory.getLogger(NetworkmodelTestUtil.class); public static Nodes createMappingForRdm(String nodeId, String clli, int degNb, int srgNb) { - List mappingList = new ArrayList<>(); + Map mappingList = new HashMap<>(); createDegreeMappings(mappingList, 1, degNb); createSrgMappings(mappingList, 1, srgNb); Nodes mappingNode = new NodesBuilder() @@ -73,12 +78,12 @@ public final class NetworkmodelTestUtil { public static Nodes createMappingForXpdr(String nodeId, String clli, int networkPortNb, int clientPortNb, XpdrNodeTypes xpdrNodeType) { - List mappingList = new ArrayList<>(); - createXpdrMappings(mappingList, networkPortNb, clientPortNb, xpdrNodeType); + Map mappingMap = new HashMap<>(); + createXpdrMappings(mappingMap, networkPortNb, clientPortNb, xpdrNodeType); Nodes mappingNode = new NodesBuilder() .setNodeId(nodeId) .setNodeInfo(new NodeInfoBuilder().setNodeType(NodeTypes.Xpdr).setNodeClli(clli).build()) - .setMapping(mappingList) + .setMapping(mappingMap) .build(); LOG.info("mapping = {}", mappingNode.toString()); return mappingNode; @@ -100,19 +105,16 @@ public final class NetworkmodelTestUtil { .setDestNode(new NodeId("SPDRZ-XPDR1")) .setDestTp("XPDR1-NETWORK1").build()) .addAugmentation( - Link1.class, new Link1Builder() .setLinkType(OpenroadmLinkType.OTNLINK) .setOppositeLink(new LinkId(prefix + "SPDRZ-XPDR1-XPDR1-NETWORK1toSPDRA-XPDR1-XPDR1-NETWORK1")) .build()) .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1Builder() .setAvailableBandwidth(Uint32.valueOf(availBW)) .setUsedBandwidth(Uint32.valueOf(100000 - availBW)) .build()) .addAugmentation( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class, new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1Builder() .setOtnLinkType(type) .build()) @@ -126,19 +128,16 @@ public final class NetworkmodelTestUtil { .setDestNode(new NodeId("SPDRA-XPDR1")) .setDestTp("XPDR1-NETWORK1").build()) .addAugmentation( - Link1.class, new Link1Builder() .setLinkType(OpenroadmLinkType.OTNLINK) .setOppositeLink(new LinkId(prefix + "SPDRA-XPDR1-XPDR1-NETWORK1toSPDRZ-XPDR1-XPDR1-NETWORK1")) .build()) .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1Builder() .setAvailableBandwidth(Uint32.valueOf(availBW)) .setUsedBandwidth(Uint32.valueOf(100000 - availBW)) .build()) .addAugmentation( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class, new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1Builder() .setOtnLinkType(type) .build()) @@ -153,8 +152,9 @@ public final class NetworkmodelTestUtil { SupportedInterfaceCapability supCapa = new SupportedInterfaceCapabilityBuilder() .setIfCapType(IfOCHOTU4ODU4.class) .build(); - List supInterCapaList = new ArrayList<>(); - supInterCapaList.add(supCapa); + Map supInterCapaList = + new HashMap<>(); + supInterCapaList.put(supCapa.key(),supCapa); TpSupportedInterfaces tpSuppInter = new TpSupportedInterfacesBuilder() .setSupportedInterfaceCapability(supInterCapaList) .build(); @@ -170,9 +170,10 @@ public final class NetworkmodelTestUtil { for (int i = 1; i <= 80; i++) { tpnPool.add(Uint16.valueOf(i)); } - xtpcaBldr.setOdtuTpnPool( - ImmutableList.of( - new OdtuTpnPoolBuilder().setOdtuType(ODTU4TsAllocated.class).setTpnPool(tpnPool).build())); + OdtuTpnPool odtuTpn = new OdtuTpnPoolBuilder() + .setOdtuType(ODTU4TsAllocated.class) + .setTpnPool(tpnPool).build(); + xtpcaBldr.setOdtuTpnPool(ImmutableMap.of(odtuTpn.key(),odtuTpn)); } TerminationPoint1 otnTp1 = new TerminationPoint1Builder() .setTpSupportedInterfaces(tpSuppInter) @@ -183,14 +184,13 @@ public final class NetworkmodelTestUtil { .setNodeRef(new NodeId("SPDRA-XPDR1")) .setTpRef("XPDR1-NETWORK1") .build(); - List supTermPointListA = new ArrayList<>(); - supTermPointListA.add(supTermPointA); + Map supTermPointMapA = + Map.of(supTermPointA.key(), supTermPointA); TerminationPoint tpA = new TerminationPointBuilder() .setTpId(new TpId("XPDR1-NETWORK1")) - .setSupportingTerminationPoint(supTermPointListA) - .addAugmentation(TerminationPoint1.class, otnTp1) + .setSupportingTerminationPoint(supTermPointMapA) + .addAugmentation(otnTp1) .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder() .setTpType(OpenroadmTpType.XPONDERNETWORK) .build()) @@ -200,14 +200,13 @@ public final class NetworkmodelTestUtil { .setNodeRef(new NodeId("SPDRZ-XPDR1")) .setTpRef("XPDR1-NETWORK1") .build(); - List supTermPointListZ = new ArrayList<>(); - supTermPointListZ.add(supTermPointZ); + Map supTermPointMapZ = + Map.of(supTermPointZ.key(), supTermPointZ); TerminationPoint tpZ = new TerminationPointBuilder() .setTpId(new TpId("XPDR1-NETWORK1")) - .setSupportingTerminationPoint(supTermPointListZ) - .addAugmentation(TerminationPoint1.class, otnTp1) + .setSupportingTerminationPoint(supTermPointMapZ) + .addAugmentation(otnTp1) .addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder() .setTpType(OpenroadmTpType.XPONDERNETWORK) .build()) @@ -218,7 +217,8 @@ public final class NetworkmodelTestUtil { return tps; } - private static List createDegreeMappings(List mappingList, int degNbStart, int degNbStop) { + private static Map createDegreeMappings(Map mappingMap, + int degNbStart, int degNbStop) { for (int i = degNbStart; i <= degNbStop; i++) { Mapping mapping = new MappingBuilder() .setLogicalConnectionPoint("DEG" + i + "-TTP-TXRX") @@ -228,12 +228,13 @@ public final class NetworkmodelTestUtil { .setSupportingOts("OTS-DEG" + i + "-TTP-TXRX") .setSupportingOms("OMS-DEG" + i + "-TTP-TXRX") .build(); - mappingList.add(mapping); + mappingMap.put(mapping.key(),mapping); } - return mappingList; + return mappingMap; } - private static List createSrgMappings(List mappingList, int srgNbStart, int srgNbStop) { + private static Map createSrgMappings(Map mappingMap, + int srgNbStart, int srgNbStop) { for (int i = srgNbStart; i <= srgNbStop; i++) { for (int j = 1; j <= 4; j++) { Mapping mapping = new MappingBuilder() @@ -242,13 +243,14 @@ public final class NetworkmodelTestUtil { .setSupportingPort("C" + j) .setSupportingCircuitPackName(3 + i + "/0") .build(); - mappingList.add(mapping); + mappingMap.put(mapping.key(),mapping); } } - return mappingList; + return mappingMap; } - private static List createXpdrMappings(List mappingList, int networkPortNb, int clientPortNb, + private static Map createXpdrMappings(Map mappingMap, + int networkPortNb, int clientPortNb, XpdrNodeTypes xpdrNodeType) { for (int i = 1; i <= networkPortNb; i++) { List> supportedIntf = new ArrayList<>(); @@ -264,7 +266,8 @@ public final class NetworkmodelTestUtil { if (xpdrNodeType != null) { mappingBldr.setXponderType(xpdrNodeType); } - mappingList.add(mappingBldr.build()); + Mapping mapping = mappingBldr.build(); + mappingMap.put(mapping.key(),mapping); } for (int i = 1; i <= clientPortNb; i++) { List> supportedIntf = new ArrayList<>(); @@ -278,9 +281,9 @@ public final class NetworkmodelTestUtil { .setPortQual(PortQual.XpdrClient.getName()) .setSupportingCircuitPackName("1/0/" + i + "-PLUG-CLIENT") .build(); - mappingList.add(mapping); + mappingMap.put(mapping.key(),mapping); } - return mappingList; + return mappingMap; } private NetworkmodelTestUtil() {