X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=networkmodel%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fnetworkmodel%2Futil%2FOpenRoadmOtnTopology.java;h=9843bd987473553859c3ddc99535b28aa00cbe24;hb=56d1795b647693ec1d620d6aca2c4003e3b302ca;hp=8eebe23e393356b216ca9965017276b1f0725013;hpb=fc359f01ad37745ba0a1de3db4d4acaf85258534;p=transportpce.git 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 8eebe23e3..9843bd987 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 @@ -11,53 +11,55 @@ package org.opendaylight.transportpce.networkmodel.util; import com.google.common.collect.ImmutableMap; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.networkmodel.dto.OtnTopoNode; import org.opendaylight.transportpce.networkmodel.dto.TopologyShard; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.mapping.Mapping; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.Nodes; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.Nodes; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes; import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.OduSwitchingPools; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.OduSwitchingPoolsKey; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmLinkType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapability; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODTU4TsAllocated; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODTUCnTs; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODU0; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODU2; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODU2e; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODU4; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.OdtuTypeIdentity; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.OduRateIdentity; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Node1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.TerminationPoint1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.TerminationPoint1Builder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.SwitchingPoolsBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.TpBandwidthSharingBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.XpdrAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.termination.point.TpSupportedInterfacesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.SupportedIfCapability; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.OduSwitchingPools; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.OduSwitchingPoolsKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmLinkType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmNodeType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmTpType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.xpdr.tp.supported.interfaces.SupportedInterfaceCapability; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODTU4TsAllocated; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODTUCnTs; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU0; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2e; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU4; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OdtuTypeIdentity; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OduRateIdentity; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.Link1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.Link1Builder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.Node1Builder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.TerminationPoint1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.TerminationPoint1Builder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.SwitchingPoolsBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.TpBandwidthSharingBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.XpdrAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.termination.point.TpSupportedInterfacesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.SupportedIfCapability; import org.opendaylight.yang.gen.v1.http.org.openroadm.switching.pool.types.rev191129.SwitchingPoolTypes; -import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev200529.xpdr.otn.tp.attributes.OdtuTpnPool; -import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev200529.xpdr.otn.tp.attributes.OdtuTpnPoolBuilder; -import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev211210.xpdr.otn.tp.attributes.OdtuTpnPool; +import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev211210.xpdr.otn.tp.attributes.OdtuTpnPoolBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; @@ -90,24 +92,28 @@ public final class OpenRoadmOtnTopology { private static final int NB_TRIB_PORTS = 80; private static final int NB_TRIB_SLOTS = 80; - private static Map> rateMap = Map.of( + private static final Map> RATE_MAP = Map.of( "If100GEODU4", ODU4.class, "IfOCHOTU4ODU4", ODU4.class, "If1GEODU0", ODU0.class, "If10GEODU2", ODU2.class, "If10GEODU2e", ODU2e.class); - private static Map otnLinkTypeBwMap = Map.of( + private static final Map OTNLINKTYPE_BW_MAP = Map.of( OtnLinkType.ODTU4, 100000L, OtnLinkType.ODUC4, 400000L, OtnLinkType.ODUC3, 300000L, OtnLinkType.ODUC2, 200000L); - private static Map otnOtuLinkTypeBwMap = Map.of( + private static final Map OTNLINKTYPE_OTU_BW_MAP = Map.of( OtnLinkType.OTU4, 100000L, OtnLinkType.OTUC4, 400000L); - private static Map serviceRateBwIncrMap = Map.of( + private static final Map SERVICERATE_BWINCR_MAP = Map.of( Uint32.valueOf(1), 1000L, Uint32.valueOf(10), 10000L, Uint32.valueOf(100), 100000L); + private static final Map> SERVICERATE_ODTUTYPECLASS_MAP = Map.of( + Uint32.valueOf(1), ODTU4TsAllocated.class, + Uint32.valueOf(10), ODTU4TsAllocated.class, + Uint32.valueOf(100), ODTUCnTs.class); private OpenRoadmOtnTopology() { } @@ -140,7 +146,7 @@ public final class OpenRoadmOtnTopology { return new TopologyShard( null, - otnOtuLinkTypeBwMap.containsKey(linkType) + OTNLINKTYPE_OTU_BW_MAP.containsKey(linkType) ? initialiseOtnLinks(nodeA, tpA, nodeZ, tpZ, linkType) : null); } @@ -164,13 +170,13 @@ public final class OpenRoadmOtnTopology { .Link notifLink, List supportedOtu4links, List supportedTPs, OtnLinkType linkType) { - if (otnOtuLinkTypeBwMap.containsKey(linkType)) { + if (OTNLINKTYPE_OTU_BW_MAP.containsKey(linkType)) { return new TopologyShard( null, initialiseOtnLinks( notifLink.getATermination().getNodeId(), notifLink.getATermination().getTpId(), notifLink.getZTermination().getNodeId(), notifLink.getZTermination().getTpId(), linkType)); - } else if (otnLinkTypeBwMap.containsKey(linkType)) { + } else if (OTNLINKTYPE_BW_MAP.containsKey(linkType)) { List links = initialiseOtnLinks( notifLink.getATermination().getNodeId(), notifLink.getATermination().getTpId(), notifLink.getZTermination().getNodeId(), notifLink.getZTermination().getTpId(), linkType); @@ -194,17 +200,15 @@ public final class OpenRoadmOtnTopology { LOG.error("Error with OTN parameters of supported link {}", link.getLinkId().getValue()); continue; } - if (!otnLinkTypeBwMap.containsKey(linkType)) { + if (!OTNLINKTYPE_BW_MAP.containsKey(linkType)) { LOG.error("Error with link {} : unsupported OTN link type", link.getLinkId().getValue()); continue; } - if (!link.augmentation(Link1.class).getAvailableBandwidth() - .equals(Uint32.valueOf(otnLinkTypeBwMap.get(linkType)))) { - //TODO shouldn't it be < rather than !equals() here ? + if (link.augmentation(Link1.class).getAvailableBandwidth().longValue() < OTNLINKTYPE_BW_MAP.get(linkType)) { LOG.error("Error with link {} : unsufficient available bandwith", link.getLinkId().getValue()); continue; } - links.add(updateOtnLinkBwParameters(link, 0L, otnLinkTypeBwMap.get(linkType))); + links.add(updateOtnLinkBwParameters(link, 0L, OTNLINKTYPE_BW_MAP.get(linkType))); } if (links.size() == 2) { links.addAll(initialiseOtnLinks(suppOtuLinks.get(0).getSource().getSourceNode().getValue(), @@ -226,11 +230,11 @@ public final class OpenRoadmOtnTopology { Uint32 serviceRate, Short tribPortNb, Short minTribSlotNb, Short maxTribSlotNb, boolean isDeletion) { List links = new ArrayList<>(); - if (!serviceRateBwIncrMap.containsKey(serviceRate)) { + if (!SERVICERATE_BWINCR_MAP.containsKey(serviceRate)) { LOG.warn("Error with not managed service rate {}", serviceRate.toString()); return new TopologyShard(null, null, null); } - Long bwIncr = serviceRateBwIncrMap.get(serviceRate); + Long bwIncr = SERVICERATE_BWINCR_MAP.get(serviceRate); for (Link link : suppOduLinks) { if (link.augmentation(Link1.class) == null || link.augmentation(Link1.class).getAvailableBandwidth() == null @@ -251,8 +255,7 @@ public final class OpenRoadmOtnTopology { } List tps = new ArrayList<>(); for (TerminationPoint tp : oldTps) { - if (bwIncr != 0) { - //TODO shouldn't it be 0L rather? + if (bwIncr > 0L) { tps.add(updateNodeTpTsPool(tp, serviceRate, tribPortNb, minTribSlotNb, maxTribSlotNb, isDeletion)); } } @@ -295,18 +298,20 @@ public final class OpenRoadmOtnTopology { for (Link link : suppOtuLinks) { if (link.augmentation(Link1.class) == null || link.augmentation( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1.class) == null) { + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630 + .Link1.class) == null) { LOG.error(OTN_PARAMS_ERROR, link.getLinkId().getValue()); return new TopologyShard(null, null, null); } OtnLinkType otnLinkType = link.augmentation( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1.class).getOtnLinkType(); - if (!otnOtuLinkTypeBwMap.containsKey(otnLinkType)) { - //TODO shouldn't other link type listed in otnLinkTypeBwMap be handled too ? + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.Link1.class) + .getOtnLinkType(); + if (!OTNLINKTYPE_OTU_BW_MAP.containsKey(otnLinkType)) { + //TODO shouldn't other link type listed in OTNLINKTYPE_BW_MAP be handled too ? LOG.warn("Unexpected otn-link-type {} for link {}", otnLinkType, link.getLinkId()); continue; } - links.add(updateOtnLinkBwParameters(link, otnOtuLinkTypeBwMap.get(otnLinkType) , 0L)); + links.add(updateOtnLinkBwParameters(link, OTNLINKTYPE_OTU_BW_MAP.get(otnLinkType) , 0L)); } List tps = new ArrayList<>(); for (TerminationPoint tp : oldTps) { @@ -324,46 +329,46 @@ public final class OpenRoadmOtnTopology { List links = new ArrayList<>(); String nodeATopo = formatNodeName(nodeA, tpA); String nodeZTopo = formatNodeName(nodeZ, tpZ); - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1 tpceLink1 - = new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.Link1Builder() + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.Link1 tpceLink1 + = new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.Link1Builder() .setOtnLinkType(linkType).build(); Link1Builder otnLink1Bldr = new Link1Builder() .setUsedBandwidth(Uint32.valueOf(0)); - if (otnOtuLinkTypeBwMap.containsKey(linkType)) { - otnLink1Bldr.setAvailableBandwidth(Uint32.valueOf(otnOtuLinkTypeBwMap.get(linkType))); - } else if (otnLinkTypeBwMap.containsKey(linkType)) { - otnLink1Bldr.setAvailableBandwidth(Uint32.valueOf(otnLinkTypeBwMap.get(linkType))); + if (OTNLINKTYPE_OTU_BW_MAP.containsKey(linkType)) { + otnLink1Bldr.setAvailableBandwidth(Uint32.valueOf(OTNLINKTYPE_OTU_BW_MAP.get(linkType))); + } else if (OTNLINKTYPE_BW_MAP.containsKey(linkType)) { + otnLink1Bldr.setAvailableBandwidth(Uint32.valueOf(OTNLINKTYPE_BW_MAP.get(linkType))); } else { LOG.error("unable to set available bandwidth to unknown link type"); } // create link A-Z LinkBuilder ietfLinkAZBldr = TopologyUtils.createLink(nodeATopo, nodeZTopo, tpA, tpZ, linkType.getName()); - ietfLinkAZBldr + links.add(ietfLinkAZBldr .addAugmentation(tpceLink1) .addAugmentation(otnLink1Bldr.build()) .addAugmentation( - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1Builder( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1Builder( ietfLinkAZBldr.augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)) + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1.class)) .setLinkType(OpenroadmLinkType.OTNLINK) .setOperationalState(State.InService) .setAdministrativeState(AdminStates.InService) - .build()); - links.add(ietfLinkAZBldr.build()); + .build()) + .build()); // create link Z-A LinkBuilder ietfLinkZABldr = TopologyUtils.createLink(nodeZTopo, nodeATopo, tpZ, tpA, linkType.getName()); - ietfLinkZABldr + links.add(ietfLinkZABldr .addAugmentation(tpceLink1) .addAugmentation(otnLink1Bldr.build()) .addAugmentation( - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1Builder( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1Builder( ietfLinkZABldr.augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class)) + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1.class)) .setLinkType(OpenroadmLinkType.OTNLINK) .setOperationalState(State.InService) .setAdministrativeState(AdminStates.InService) - .build()); - links.add(ietfLinkZABldr.build()); + .build()) + .build()); return links; } @@ -384,15 +389,16 @@ public final class OpenRoadmOtnTopology { LOG.debug("in updateOtnLinkBwParameters with supportedLinks = {}, linkType = {}", supportedLinks, linkType); List updatedlinks = new ArrayList<>(); for (Link link : supportedLinks) { - LinkBuilder updatedLinkBldr = new LinkBuilder(link); - updatedLinkBldr.addAugmentation(new Link1Builder(link.augmentation(Link1.class)) - .setAvailableBandwidth(Uint32.valueOf(0)) - .setUsedBandwidth( - otnLinkTypeBwMap.containsKey(linkType) - ? Uint32.valueOf(otnLinkTypeBwMap.get(linkType)) - : Uint32.valueOf(0)) - .build()); - updatedlinks.add(updatedLinkBldr.build()); + updatedlinks.add( + new LinkBuilder(link) + .addAugmentation(new Link1Builder(link.augmentation(Link1.class)) + .setAvailableBandwidth(Uint32.valueOf(0)) + .setUsedBandwidth( + OTNLINKTYPE_BW_MAP.containsKey(linkType) + ? Uint32.valueOf(OTNLINKTYPE_BW_MAP.get(linkType)) + : Uint32.valueOf(0)) + .build()) + .build()); } return updatedlinks; } @@ -407,12 +413,12 @@ public final class OpenRoadmOtnTopology { XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder(otnTp1Bldr.getXpdrTpPortConnectionAttributes()); if (addingTsTpnPoolTermination) { - List tsPool = new ArrayList<>(); + Set tsPool = new HashSet<>(); for (int i = 1; i <= NB_TRIB_SLOTS; i++) { tsPool.add(Uint16.valueOf(i)); } xtpcaBldr.setTsPool(tsPool); - List tpnPool = new ArrayList<>(); + Set tpnPool = new HashSet<>(); int nbTribPort = NB_TRIB_PORTS; if (OtnLinkType.ODUC4.equals(linkType)) { nbTribPort = 4; @@ -441,7 +447,7 @@ public final class OpenRoadmOtnTopology { XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder( tpBldr.augmentation(TerminationPoint1.class).getXpdrTpPortConnectionAttributes()); - List tsPool = new ArrayList<>(xtpcaBldr.getTsPool()); + Set tsPool = new HashSet<>(xtpcaBldr.getTsPool()); if (isDeletion) { for (int i = minTribSlotNb; i <= maxTribSlotNb; i++) { tsPool.add(Uint16.valueOf(i)); @@ -452,42 +458,38 @@ public final class OpenRoadmOtnTopology { } } xtpcaBldr.setTsPool(tsPool); - List tpnPool; + Set tpnPool; List odtuTpnPoolValues = new ArrayList<>(xtpcaBldr.getOdtuTpnPool().values()); if (odtuTpnPoolValues.get(0).getTpnPool() == null) { - tpnPool = new ArrayList<>(); + tpnPool = new HashSet<>(); } else { - tpnPool = new ArrayList<>(odtuTpnPoolValues.get(0).getTpnPool()); + tpnPool = new HashSet<>(odtuTpnPoolValues.get(0).getTpnPool()); if (isDeletion) { tpnPool.add(Uint16.valueOf(tribPortNb)); } else { tpnPool.remove(Uint16.valueOf(tribPortNb)); } } - Class odtuType = null; - switch (serviceRate.intValue()) { - case 1: - case 10: - odtuType = ODTU4TsAllocated.class; - break; - case 100: - odtuType = ODTUCnTs.class; - break; - default: - LOG.warn("Unable to set the odtu-type"); - break; + Class odtuType; + if (SERVICERATE_ODTUTYPECLASS_MAP.containsKey(serviceRate)) { + odtuType = SERVICERATE_ODTUTYPECLASS_MAP.get(serviceRate); + } else { + odtuType = null; + LOG.warn("Unable to set the odtu-type"); } OdtuTpnPool odtuTpnPool = new OdtuTpnPoolBuilder() .setOdtuType(odtuType) .setTpnPool(tpnPool) .build(); - xtpcaBldr.setOdtuTpnPool(ImmutableMap.of(odtuTpnPool.key(),odtuTpnPool)); - tpBldr.addAugmentation( - new TerminationPoint1Builder( - tp.augmentation(TerminationPoint1.class)) - .setXpdrTpPortConnectionAttributes(xtpcaBldr.build()) - .build()); - return tpBldr.build(); + return tpBldr + .addAugmentation( + new TerminationPoint1Builder(tp.augmentation(TerminationPoint1.class)) + .setXpdrTpPortConnectionAttributes( + xtpcaBldr + .setOdtuTpnPool(ImmutableMap.of(odtuTpnPool.key(),odtuTpnPool)) + .build()) + .build()) + .build(); } private static Map convertPortMappingToOtnNodeList(Nodes mappingNode) { @@ -540,8 +542,6 @@ public final class OpenRoadmOtnTopology { } private static Node createTpdr(OtnTopoNode node) { - - // prepare ietf node augmentation to add TP list Map tpMap = new HashMap<>(); createTP(tpMap, node, OpenroadmTpType.XPONDERCLIENT, false); createTP(tpMap, node, OpenroadmTpType.XPONDERNETWORK, true); @@ -558,7 +558,7 @@ public final class OpenRoadmOtnTopology { .build()) .build()) .addAugmentation( - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1Builder() + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder() .setNodeType(OpenroadmNodeType.TPDR) .setOperationalState(State.InService) .setAdministrativeState(AdminStates.InService) @@ -577,7 +577,7 @@ public final class OpenRoadmOtnTopology { // TODO: will need to be completed Map nbMap = new HashMap<>(); for (int i = 1; i <= node.getNbTpClient(); i++) { - List tpList = new ArrayList<>(); + Set tpList = new HashSet<>(); tpList.add(new TpId("XPDR" + node.getXpdrNb() + CLIENT + i)); tpList.add(new TpId("XPDR" + node.getXpdrNb() + "-NETWORK1")); NonBlockingList nbl = new NonBlockingListBuilder() @@ -593,7 +593,6 @@ public final class OpenRoadmOtnTopology { .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking) .setNonBlockingList(nbMap) .build(); - // prepare ietf node augmentation to add TP list Map tpMap = new HashMap<>(); createTP(tpMap, node, OpenroadmTpType.XPONDERCLIENT, true); createTP(tpMap, node, OpenroadmTpType.XPONDERNETWORK, true); @@ -615,7 +614,7 @@ public final class OpenRoadmOtnTopology { .build()) .build()) .addAugmentation( - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1Builder() + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder() .setNodeType(OpenroadmNodeType.MUXPDR) .setAdministrativeState(AdminStates.InService) .setOperationalState(State.InService) @@ -630,7 +629,7 @@ public final class OpenRoadmOtnTopology { private static Node createSwitch(OtnTopoNode node) { - List tpl = new ArrayList<>(); + Set tpl = new HashSet<>(); for (int i = 1; i <= node.getNbTpClient(); i++) { tpl.add(new TpId("XPDR" + node.getXpdrNb() + CLIENT + i)); } @@ -650,7 +649,6 @@ public final class OpenRoadmOtnTopology { .build(); Map oduSwitchPoolList = new HashMap<>(); oduSwitchPoolList.put(oduSwitchPool.key(),oduSwitchPool); - // prepare ietf node augmentation to add TP list Map tpMap = new HashMap<>(); createTP(tpMap, node, OpenroadmTpType.XPONDERCLIENT, true); createTP(tpMap, node, OpenroadmTpType.XPONDERNETWORK, true); @@ -672,7 +670,7 @@ public final class OpenRoadmOtnTopology { .build()) .build()) .addAugmentation( - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1Builder() + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1Builder() .setNodeType(OpenroadmNodeType.SWITCH) .setOperationalState(State.InService) .setAdministrativeState(AdminStates.InService) @@ -741,20 +739,20 @@ public final class OpenRoadmOtnTopology { new TpId(mapping.getLogicalConnectionPoint()), tpType, otnTp1Bldr.build(), - new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1Builder(), mapping); } } private static void setclientNwTpAttr(Map tpMap, OtnTopoNode node, TpId tpId, - OpenroadmTpType tpType, TerminationPoint1 otnTp1, - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1Builder tpceTp1Bldr, - Mapping mapping) { - + OpenroadmTpType tpType, TerminationPoint1 otnTp1, Mapping mapping) { + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder cnTP1BLdr + = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210 + .TerminationPoint1Builder(); switch (tpType) { case XPONDERNETWORK: if (node.getXpdrNetConnectionMap().get(tpId.getValue()) != null) { - tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrNetConnectionMap().get(tpId.getValue())); + cnTP1BLdr.setAssociatedConnectionMapTp(Set.of( + new TpId(node.getXpdrNetConnectionMap().get(tpId.getValue())))); } SupportingTerminationPoint stp = new SupportingTerminationPointBuilder() .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)) @@ -762,14 +760,15 @@ public final class OpenRoadmOtnTopology { .setTpRef(tpId) .build(); TerminationPoint ietfTpNw = - buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, Map.of(stp.key(), stp), mapping); + buildIetfTp(cnTP1BLdr, otnTp1, tpType, tpId, Map.of(stp.key(), stp), mapping); tpMap.put(ietfTpNw.key(),ietfTpNw); break; case XPONDERCLIENT: if (node.getXpdrCliConnectionMap().get(tpId.getValue()) != null) { - tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrCliConnectionMap().get(tpId.getValue())); + cnTP1BLdr.setAssociatedConnectionMapTp(Set.of( + new TpId(node.getXpdrCliConnectionMap().get(tpId.getValue())))); } - TerminationPoint ietfTpCl = buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, null, mapping); + TerminationPoint ietfTpCl = buildIetfTp(cnTP1BLdr, otnTp1, tpType, tpId, null, mapping); tpMap.put(ietfTpCl.key(),ietfTpCl); break; default: @@ -778,11 +777,11 @@ public final class OpenRoadmOtnTopology { } } - private static Class fixRate(List> list) { + private static Class fixRate(Set> list) { - for (Class class1 : list) { - if (rateMap.containsKey(class1.getSimpleName())) { - return rateMap.get(class1.getSimpleName()); + for (Class class1 : list) { + if (RATE_MAP.containsKey(class1.getSimpleName())) { + return RATE_MAP.get(class1.getSimpleName()); } } return null; @@ -822,14 +821,11 @@ public final class OpenRoadmOtnTopology { } private static TerminationPoint buildIetfTp( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.TerminationPoint1Builder tpceTp1Bldr, + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.TerminationPoint1Builder cnTP1BLdr, TerminationPoint1 otnTp1, OpenroadmTpType tpType, TpId tpId, Map supportTpMap, Mapping mapping) { TerminationPointBuilder ietfTpBldr = new TerminationPointBuilder(); - if (tpceTp1Bldr.getAssociatedConnectionMapPort() != null) { - ietfTpBldr.addAugmentation(tpceTp1Bldr.build()); - } if (supportTpMap != null) { ietfTpBldr.setSupportingTerminationPoint(supportTpMap); } @@ -837,13 +833,11 @@ public final class OpenRoadmOtnTopology { .setTpId(tpId) .withKey(new TerminationPointKey(tpId)) .addAugmentation(otnTp1) - .addAugmentation( - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1Builder() - .setTpType(tpType) + .addAugmentation(cnTP1BLdr.setTpType(tpType) .setAdministrativeState(TopologyUtils.setNetworkAdminState(mapping.getPortAdminState())) .setOperationalState(TopologyUtils.setNetworkOperState(mapping.getPortOperState())) .build()) - .build(); + .build(); } private static String formatNodeName(String nodeName, String tpName) {