X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fgnpy%2FGnpyTopoImpl.java;h=abdcb703801eff7f0d6571f09edd7c4cf663dddd;hb=6b6a445c84c2eb1c85d4e48c2d10a89c3d598bc5;hp=d880ab9439032074c2ab1841f2918e966ee374f0;hpb=a0c703ac04217369edcc80c55d2fafd1a0efefe4;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyTopoImpl.java b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyTopoImpl.java index d880ab943..abdcb7038 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyTopoImpl.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyTopoImpl.java @@ -10,50 +10,48 @@ package org.opendaylight.transportpce.pce.gnpy; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; -import java.util.regex.Pattern; import java.util.stream.IntStream; - 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.gnpy.gnpy.network.topology.rev181214.Coordinate; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Km; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.edfa.params.Operational; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.edfa.params.OperationalBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.Edfa; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.EdfaBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.FiberRoadmBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.Transceiver; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.TransceiverBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.fiberroadm.Params; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.fiberroadm.ParamsBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.fiberroadm.params.fiberroadm.Fiber; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.fiberroadm.params.fiberroadm.FiberBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.fiberroadm.params.fiberroadm.Roadm; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.element.type.choice.element.type.fiberroadm.params.fiberroadm.RoadmBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.location.attributes.Location; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.location.attributes.LocationBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.Connections; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.ConnectionsBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.Elements; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.ElementsBuilder; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.elements.Metadata; -import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.topo.elements.MetadataBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.SpanAttributes; -import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.AmplifiedLink; -import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.section.element.section.element.Span; -import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.amplified.link.attributes.amplified.link.section.element.section.element.ila.Ila; -import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev181130.Node1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.OMSAttributes; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Coordinate; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Km; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.edfa.params.Operational; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.edfa.params.OperationalBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.Edfa; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.EdfaBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.FiberRoadmBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.Transceiver; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.TransceiverBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.fiberroadm.Params; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.fiberroadm.ParamsBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.Fiber; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.FiberBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.Roadm; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.RoadmBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.location.attributes.Location; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.location.attributes.LocationBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.topo.Connections; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.topo.ConnectionsBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.topo.Elements; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.topo.ElementsBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.topo.ElementsKey; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.topo.elements.Metadata; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.topo.elements.MetadataBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Link1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev211210.SpanAttributes; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev211210.amplified.link.attributes.AmplifiedLink; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev211210.amplified.link.attributes.amplified.link.section.element.section.element.Span; +import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev211210.amplified.link.attributes.amplified.link.section.element.section.element.ila.Ila; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.rev211210.Node1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210.networks.network.link.OMSAttributes; +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.link.concatenation.LinkConcatenation; 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.Networks; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network; @@ -77,24 +75,16 @@ public class GnpyTopoImpl { private static final Logger LOG = LoggerFactory.getLogger(GnpyTopoImpl.class); private final NetworkTransactionService networkTransactionService; //List of elements - private List elements = new ArrayList<>(); + private Map elements = new HashMap<>(); private List connections = new ArrayList<>(); + private List elementsList = new ArrayList<>(); //Mapping elements //Mapping between the ord-topo and ord-ntw node private Map mapDisgNodeRefNode = new HashMap<>(); - //Mapping between the ord-ntw and node ip - private Map mapNodeRefIp = new HashMap<>(); //Mapping between the ROADM-ROADM linkId/secElement and the linkId private Map> mapLinkFiber = new HashMap<>(); - //Mapping between the ROADM-ROADM linkId/secElement and ipAddress - private Map mapFiberIp = new HashMap<>(); //List of Xponders private List trxList = new ArrayList<>(); - //Initialize the 32 bit identifiers for the edfa and the fiber. - //These 32-bit identifiers are not ipv4 addresses (despite having ipv4Adresses format, dotted-decimal notation). - //They are imposed by the GNPy yang model to identify network elements and not used for any routing purposes. - private Ipv4Address edfaId; - private Ipv4Address fiberId; private static final double LATITUDE = 0; private static final double LONGITUTE = 0; private static final String REGION = "N/A"; @@ -107,20 +97,11 @@ public class GnpyTopoImpl { */ public GnpyTopoImpl(final NetworkTransactionService networkTransactionService) throws GnpyException { this.networkTransactionService = networkTransactionService; - //32-bit identifier for the fiber. The dotted decimal notation has the format 243.x.x.x (0<=x<=255) - fiberId = new Ipv4Address("243.0.0.1"); - //32-bit identifier for the edfa. The dotted decimal notation has the format 244.x.x.x (0<=x<=255) - edfaId = new Ipv4Address("244.0.0.1"); - try { - extractTopo(); - } catch (NullPointerException e) { - throw new GnpyException("In GnpyTopoImpl: one of the elements is null",e); - } + extractTopo(); } /* - * extract the topology: all the elements have ipAddress as uid and maintain - * a mapping structure to map between the nodeId and the ipAddress (uid) + * extract the topology * */ private void extractTopo() throws GnpyException { @@ -161,9 +142,8 @@ public class GnpyTopoImpl { throw new GnpyException("In gnpyTopoImpl: openRoadmNet or openRoadmTopo is not present"); } // Create the list of nodes - List openRoadmNetNodeList = openRoadmNet.get().getNode(); - List openRoadmTopoNodeList = openRoadmTopo.get().getNode(); - List nodesList = new ArrayList<>(); + Collection openRoadmNetNodeList = openRoadmNet.get().nonnullNode().values(); + Collection openRoadmTopoNodeList = openRoadmTopo.get().nonnullNode().values(); if (openRoadmTopoNodeList.isEmpty() || openRoadmNetNodeList.isEmpty()) { throw new GnpyException("In gnpyTopoImpl: no nodes in the openradm topology or openroadm network"); @@ -171,13 +151,12 @@ public class GnpyTopoImpl { // Create elements for (Node openRoadmTopoNode : openRoadmTopoNodeList) { // Retrieve the supporting node and the type of the node in openRoadm network - List supportingNodeList = openRoadmTopoNode.getSupportingNode(); + Collection supportingNodeList = openRoadmTopoNode.nonnullSupportingNode().values(); for (SupportingNode supportingNode : supportingNodeList) { if (!supportingNode.getNetworkRef().getValue().equals("openroadm-network")) { continue; } - IpAddress ipAddress = null; String nodeRef = supportingNode.getNodeRef().getValue(); if (nodeRef == null) { throw new GnpyException("In gnpyTopoImpl: nodeRef is null"); @@ -185,19 +164,13 @@ public class GnpyTopoImpl { // Retrieve the mapping between the openRoadm topology and openRoadm network mapDisgNodeRefNode.put(openRoadmTopoNode.getNodeId().getValue(), nodeRef); Node1 openRoadmNetNode1 = null; - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210 .Node1 commonNetworkNode1 = null; for (Node openRoadmNetNode : openRoadmNetNodeList) { if (openRoadmNetNode.getNodeId().getValue().equals(nodeRef)) { openRoadmNetNode1 = openRoadmNetNode.augmentation(Node1.class); commonNetworkNode1 = openRoadmNetNode.augmentation(org.opendaylight.yang.gen.v1 - .http.org.openroadm.common.network.rev181130.Node1.class); - ipAddress = openRoadmNetNode1.getIp(); - if (ipAddress == null) { - throw new GnpyException(String.format( - "In gnpyTopoImpl: ipAddress of node %s is null",nodeRef)); - } - mapNodeRefIp.put(nodeRef, ipAddress); + .http.org.openroadm.common.network.rev211210.Node1.class); break; } } @@ -205,18 +178,18 @@ public class GnpyTopoImpl { throw new GnpyException(String.format("In gnpyTopoImpl: the node type of %s is null",nodeRef)); } if (commonNetworkNode1.getNodeType().getName().equals("ROADM")) { - if (!nodesList.contains(nodeRef)) { + if (!elementsList.contains(nodeRef)) { Elements element = createElementsRoadm(LATITUDE, LONGITUTE, nodeRef, - openRoadmNetNode1.getShelf(),TARGET_PCH_OUT_DB, ipAddress.getIpv4Address().getValue()); - this.elements.add(element); - nodesList.add(nodeRef); + openRoadmNetNode1.getShelf(),TARGET_PCH_OUT_DB, nodeRef); + this.elements.put(element.key(),element); + elementsList.add(nodeRef); } } else if (commonNetworkNode1.getNodeType().getName().equals("XPONDER")) { - if (!nodesList.contains(nodeRef)) { + if (!elementsList.contains(nodeRef)) { Elements element = createElementsTransceiver(LATITUDE, LONGITUTE, nodeRef, - openRoadmNetNode1.getShelf(),ipAddress.getIpv4Address().getValue()); - this.elements.add(element); - nodesList.add(nodeRef); + openRoadmNetNode1.getShelf(), nodeRef); + this.elements.put(element.key(),element); + elementsList.add(nodeRef); trxList.add(nodeRef); } } else { @@ -232,7 +205,7 @@ public class GnpyTopoImpl { throw new GnpyException("In gnpyTopoImpl: openroadmTopo is not present"); } Network1 nw1 = openRoadmTopo.get().augmentation(Network1.class); - List linksList = nw1.getLink(); + Collection linksList = nw1.nonnullLink().values(); // 1:EXPRESS-LINK 2:ADD-LINK 3:DROP-LINK // 4:ROADM-To-ROADM 5:XPONDER-INPUT 6:XPONDER-OUTPUT int[] externalLink = {OpenroadmLinkType.ROADMTOROADM.getIntValue(),OpenroadmLinkType.XPONDERINPUT.getIntValue(), @@ -244,9 +217,9 @@ public class GnpyTopoImpl { for (Link link : linksList) { Link1 link1 = link.augmentation(Link1.class); - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130 - .Link1 openroadmNetworkLink1 = link.augmentation(org.opendaylight.yang.gen.v1.http.org - .openroadm.network.topology.rev181130.Link1.class); + org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev211210 + .Link1 openroadmNetworkLink1 = link.augmentation(org.opendaylight.yang.gen.v1.http + .org.openroadm.network.topology.rev211210.Link1.class); if (link1.getLinkType() == null) { throw new GnpyException("In gnpyTopoImpl: the link type is null"); } @@ -256,10 +229,8 @@ public class GnpyTopoImpl { } String srcId = mapDisgNodeRefNode.get(link.getSource().getSourceNode().getValue()); - IpAddress srcIp = mapNodeRefIp.get(srcId); String linkId = link.getLinkId().getValue(); String destId = null; - IpAddress destIp = null; if (linkType == OpenroadmLinkType.ROADMTOROADM.getIntValue()) { OMSAttributes omsAttributes = openroadmNetworkLink1.getOMSAttributes(); if (omsAttributes == null) { @@ -268,91 +239,84 @@ public class GnpyTopoImpl { } //Case of amplified link if (omsAttributes.getAmplifiedLink() != null) { - srcIp = extractAmplifiedLink(omsAttributes, linkId, srcIp); + srcId = extractAmplifiedLink(omsAttributes, linkId, srcId); } //Case of one span link if (omsAttributes.getSpan() != null) { - srcIp = extractSpanLink(omsAttributes, linkId, srcIp); + srcId = extractSpanLink(omsAttributes, linkId, srcId); } } // Create a new link destId = mapDisgNodeRefNode.get(link.getDestination().getDestNode().getValue()); - destIp = mapNodeRefIp.get(destId); - createNewConnection(srcIp,destIp); + createNewConnection(srcId,destId); } } - private IpAddress extractAmplifiedLink(OMSAttributes omsAttributes, String linkId, IpAddress srcIp) + private String extractAmplifiedLink(OMSAttributes omsAttributes, String linkId, String srcId) throws GnpyException { - List amplifiedLinkList = omsAttributes.getAmplifiedLink() - .getAmplifiedLink(); - IpAddress destIp = null; + List amplifiedLinkList = new ArrayList<>(omsAttributes.getAmplifiedLink() + .nonnullAmplifiedLink().values()); + String destId = null; if (!amplifiedLinkList.isEmpty()) { - for (AmplifiedLink amplifiedLink : amplifiedLinkList) { - String secElt = amplifiedLink.getSectionEltNumber().toString(); + for (AmplifiedLink amplifiedLink: amplifiedLinkList) { + String secElt = amplifiedLink .getSectionEltNumber().toString(); //Case of ILA if (amplifiedLink.getSectionElement().getSectionElement() instanceof Ila) { Ila ila = (Ila) amplifiedLink.getSectionElement().getSectionElement(); - destIp = extractILAFromAmpLink(ila); + destId = extractILAFromAmpLink(ila); } //Case of Span if (amplifiedLink.getSectionElement().getSectionElement() instanceof Span) { Span span = (Span) amplifiedLink.getSectionElement().getSectionElement(); - destIp = extractSpan(span.getSpan(), linkId, secElt); + destId = extractSpan(span.getSpan(), linkId, secElt); } // Create a new link - if (createNewConnection(srcIp,destIp)) { - srcIp = destIp; + if (createNewConnection(srcId,destId)) { + srcId = destId; } } } - return srcIp; + return srcId; } - private IpAddress extractSpanLink(OMSAttributes omsAttributes, String linkId, IpAddress srcIp) + private String extractSpanLink(OMSAttributes omsAttributes, String linkId, String srcId) throws GnpyException { SpanAttributes span = omsAttributes.getSpan(); - IpAddress destIp = extractSpan(span, linkId, linkId); - if (createNewConnection(srcIp, destIp)) { - return destIp; + String destId = extractSpan(span, linkId, linkId); + if (createNewConnection(srcId, destId)) { + return destId; } - return srcIp; + return srcId; } - private IpAddress extractILAFromAmpLink(Ila ila) throws GnpyException { + private String extractILAFromAmpLink(Ila ila) throws GnpyException { String nodeId = ila.getNodeId().getValue(); - IpAddress ipEdfa = new IpAddress(edfaId); - edfaId = incrementIdentifier(edfaId); mapDisgNodeRefNode.put(nodeId, nodeId); - mapNodeRefIp.put(nodeId, ipEdfa); Elements element = createElementsEdfa(LATITUDE, LONGITUTE, REGION, CITY, ila.getGain().getValue(), ila.getTilt().getValue(), ila.getOutVoaAtt().getValue(), "std_medium_gain", - ipEdfa.getIpv4Address().getValue()); - this.elements.add(element); - return ipEdfa; + nodeId); + this.elements.put(element.key(),element); + return nodeId; } - private IpAddress extractSpan(SpanAttributes span, String linkId, String subLinkId) throws GnpyException { - IpAddress ipFiber = new IpAddress(fiberId); - + private String extractSpan(SpanAttributes span, String linkId, String subLinkId) throws GnpyException { if (!mapLinkFiber.containsKey(linkId)) { - mapLinkFiber.put(linkId, new ArrayList()); + mapLinkFiber.put(linkId, new ArrayList<>()); } mapLinkFiber.get(linkId).add(subLinkId); - mapFiberIp.put(subLinkId, ipFiber); - fiberId = incrementIdentifier(fiberId); + //mapFiberIp.put(subLinkId, ipFiber); + //fiberId = incrementIdentifier(fiberId); double attIn = 0; double connIn = 0; double connOut = 0; String typeVariety = "SSMF"; double length = 0; // Compute the length of the link - List linkConcatenationList = span.getLinkConcatenation(); - for (LinkConcatenation linkConcatenation : linkConcatenationList) { - double srlgLength = linkConcatenation.getSRLGLength().toJava(); + for (LinkConcatenation linkConcatenation : span.nonnullLinkConcatenation().values()) { + double srlgLength = linkConcatenation.getSRLGLength().doubleValue(); //convert to kilometer length += srlgLength / CONVERT_KM_M; } @@ -362,10 +326,9 @@ public class GnpyTopoImpl { } double lossCoef = span.getSpanlossCurrent().getValue().doubleValue() / length; Elements element = createElementsFiber(LATITUDE, LONGITUTE, REGION, CITY, - ipFiber.getIpv4Address().getValue(), length, attIn, lossCoef, connIn, connOut, typeVariety); - this.elements.add(element); - return ipFiber; - + subLinkId, length, attIn, lossCoef, connIn, connOut, typeVariety); + this.elements.put(element.key(),element); + return subLinkId; } /* @@ -383,9 +346,9 @@ public class GnpyTopoImpl { .setAttIn(BigDecimal.valueOf(attIn)).setLossCoef(BigDecimal.valueOf(lossCoef)) .setConIn(BigDecimal.valueOf(connIn)) .setConOut(BigDecimal.valueOf(connOut)).build(); - Params params1 = new ParamsBuilder().setFiberroadm(fiber).build(); + Params params1 = new ParamsBuilder().setFiberroadmfused(fiber).build(); return new ElementsBuilder().setUid(uidFiber) - .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Fiber.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Fiber.class) .setTypeVariety(typeVariety).setMetadata(metadata1) .setElementType(new FiberRoadmBuilder().setParams(params1).build()).build(); } @@ -406,7 +369,7 @@ public class GnpyTopoImpl { Edfa edfa = new EdfaBuilder() .setOperational(operational).build(); return new ElementsBuilder().setUid(uidEdfa) - .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Edfa.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Edfa.class) .setMetadata(metadata1).setElementType(edfa).setTypeVariety(typeVariety).build(); } @@ -415,16 +378,15 @@ public class GnpyTopoImpl { */ private Elements createElementsRoadm(double latitude, double longitude, String region, String city, double targetPchOutDb, String uidRoadm) { - Coordinate c1 = new Coordinate(BigDecimal.valueOf(latitude)); Coordinate c2 = new Coordinate(BigDecimal.valueOf(longitude)); Location location1 = new LocationBuilder().setRegion(region).setCity(city).setLatitude(c1).setLongitude(c2) .build(); Metadata metadata1 = new MetadataBuilder().setLocation(location1).build(); Roadm roadm = new RoadmBuilder().setTargetPchOutDb(BigDecimal.valueOf(targetPchOutDb)).build(); - Params params1 = new ParamsBuilder().setFiberroadm(roadm).build(); + Params params1 = new ParamsBuilder().setFiberroadmfused(roadm).build(); return new ElementsBuilder().setUid(uidRoadm) - .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Roadm.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Roadm.class) .setMetadata(metadata1).setElementType(new FiberRoadmBuilder().setParams(params1).build()).build(); } @@ -440,19 +402,17 @@ public class GnpyTopoImpl { Metadata metadata1 = new MetadataBuilder().setLocation(location1).build(); Transceiver transceiver = new TransceiverBuilder().build(); return new ElementsBuilder().setUid(uidTrans) - .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev181214.Transceiver.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Transceiver.class) .setMetadata(metadata1).setElementType(transceiver).build(); } /* * Method to create Connection */ - private boolean createNewConnection(IpAddress srcIp, IpAddress destIp) throws GnpyException { - if (srcIp == null || destIp == null) { + private boolean createNewConnection(String fromNode, String toNode) throws GnpyException { + if (fromNode == null || toNode == null) { throw new GnpyException("create new connection : null node IpAddress"); } - String fromNode = srcIp.getIpv4Address().getValue(); - String toNode = destIp.getIpv4Address().getValue(); if (fromNode.equals(toNode)) { return false; } @@ -461,43 +421,11 @@ public class GnpyTopoImpl { return true; } - /* - * Increment 32-bit identifier - */ - private Ipv4Address incrementIdentifier(Ipv4Address id) throws GnpyException { - String ips = id.getValue(); - String [] fields = ips.split(Pattern.quote(".")); - int intF1 = Integer.parseInt(fields[1]); - int intF2 = Integer.parseInt(fields[2]); - int intF3 = Integer.parseInt(fields[3]); - if (intF3 < 255) { - intF3++; - } else { - if (intF2 < 255) { - intF2++; - intF3 = 0; - } else { - if (intF1 < 255) { - intF1++; - intF2 = 0; - intF3 = 0; - } else { - throw new GnpyException("GnpyTopoImpl : the topology is not supported by gnpy"); - } - fields[1] = Integer.toString(intF1); - } - fields[2] = Integer.toString(intF2); - } - fields[3] = Integer.toString(intF3); - String nidString = fields[0] + "." + fields[1] + "." + fields[2] + "." + fields[3]; - return new Ipv4Address(nidString); - } - - public List getElements() { + public Map getElements() { return elements; } - public void setElements(List elements) { + public void setElements(Map elements) { this.elements = elements; } @@ -509,20 +437,20 @@ public class GnpyTopoImpl { this.connections = connections; } - public Map getMapDisgNodeRefNode() { - return mapDisgNodeRefNode; + public List getElementsList() { + return elementsList; } - public void setMapDisgNodeRefNode(Map mapDisgNodeRefNode) { - this.mapDisgNodeRefNode = mapDisgNodeRefNode; + public void setElementsList(List elementsList) { + this.elementsList = elementsList; } - public Map getMapNodeRefIp() { - return mapNodeRefIp; + public Map getMapDisgNodeRefNode() { + return mapDisgNodeRefNode; } - public void setMapNodeRefIp(Map mapNodeRefIp) { - this.mapNodeRefIp = mapNodeRefIp; + public void setMapDisgNodeRefNode(Map mapDisgNodeRefNode) { + this.mapDisgNodeRefNode = mapDisgNodeRefNode; } public Map> getMapLinkFiber() { @@ -533,14 +461,6 @@ public class GnpyTopoImpl { this.mapLinkFiber = mapLinkFiber; } - public Map getMapFiberIp() { - return mapFiberIp; - } - - public void setMapFiberIp(Map mapFiberIp) { - this.mapFiberIp = mapFiberIp; - } - public List getTrxList() { return trxList; }