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=5687e4b7365de49e8ad75f0634b12a8747ff3528;hb=66f6af8141d231619ad9d6e6133910e14f3a32e2;hp=744e8ee6424999a49c47933b1e4fc8ed1b27a5c9;hpb=21d35937b8a2d9f6930985485a1b54eb7bec9a91;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 744e8ee64..5687e4b73 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 @@ -9,6 +9,7 @@ package org.opendaylight.transportpce.pce.gnpy; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -19,30 +20,30 @@ 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.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.gnpy.gnpy.network.topology.rev220615.Coordinate; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.Km; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.edfa.params.Operational; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.edfa.params.OperationalBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.Edfa; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.EdfaBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.FiberRoadmBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.Transceiver; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.TransceiverBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.fiberroadm.Params; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.fiberroadm.ParamsBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.Fiber; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.FiberBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.Roadm; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.element.type.choice.element.type.fiberroadm.params.fiberroadmfused.RoadmBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.location.attributes.Location; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.location.attributes.LocationBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.topo.Connections; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.topo.ConnectionsBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.topo.Elements; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.topo.ElementsBuilder; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.topo.ElementsKey; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.topo.elements.Metadata; +import org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.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; @@ -61,6 +62,7 @@ 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.topology.rev180226.Network1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -97,11 +99,7 @@ public class GnpyTopoImpl { */ public GnpyTopoImpl(final NetworkTransactionService networkTransactionService) throws GnpyException { this.networkTransactionService = networkTransactionService; - try { - extractTopo(); - } catch (NullPointerException e) { - throw new GnpyException("In GnpyTopoImpl: one of the elements is null",e); - } + extractTopo(); } /* @@ -299,8 +297,8 @@ public class GnpyTopoImpl { String nodeId = ila.getNodeId().getValue(); mapDisgNodeRefNode.put(nodeId, nodeId); Elements element = createElementsEdfa(LATITUDE, LONGITUTE, REGION, CITY, - ila.getGain().getValue(), ila.getTilt().getValue(), - ila.getOutVoaAtt().getValue(), "std_medium_gain", + ila.getGain().getValue().decimalValue(), ila.getTilt().getValue().decimalValue(), + ila.getOutVoaAtt().getValue().decimalValue(), "std_medium_gain", nodeId); this.elements.put(element.key(),element); return nodeId; @@ -341,18 +339,22 @@ public class GnpyTopoImpl { private Elements createElementsFiber(double latitude, double longitude, String region, String city, String uidFiber, double length, double attIn, double lossCoef, double connIn, double connOut, String typeVariety) { // Create an amplifier after the ROADM - Coordinate c1 = new Coordinate(BigDecimal.valueOf(latitude)); - Coordinate c2 = new Coordinate(BigDecimal.valueOf(longitude)); + Coordinate c1 = new Coordinate(Decimal64.valueOf(String.valueOf(latitude))); + Coordinate c2 = new Coordinate(Decimal64.valueOf(String.valueOf(longitude))); Location location1 = new LocationBuilder().setRegion(region).setCity(city).setLatitude(c1).setLongitude(c2) .build(); Metadata metadata1 = new MetadataBuilder().setLocation(location1).build(); - Fiber fiber = new FiberBuilder().setLength(BigDecimal.valueOf(length)).setLengthUnits(Km.class) - .setAttIn(BigDecimal.valueOf(attIn)).setLossCoef(BigDecimal.valueOf(lossCoef)) - .setConIn(BigDecimal.valueOf(connIn)) - .setConOut(BigDecimal.valueOf(connOut)).build(); + Fiber fiber = new FiberBuilder() + .setLength(Decimal64.valueOf(String.valueOf(length))) + .setLengthUnits(Km.class) + .setAttIn(Decimal64.valueOf(String.valueOf(attIn))) + .setLossCoef(Decimal64.valueOf(String.valueOf(lossCoef)).scaleTo(5, RoundingMode.CEILING)) + .setConIn(Decimal64.valueOf(String.valueOf(connIn))) + .setConOut(Decimal64.valueOf(String.valueOf(connOut))) + .build(); Params params1 = new ParamsBuilder().setFiberroadmfused(fiber).build(); return new ElementsBuilder().setUid(uidFiber) - .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Fiber.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.Fiber.class) .setTypeVariety(typeVariety).setMetadata(metadata1) .setElementType(new FiberRoadmBuilder().setParams(params1).build()).build(); } @@ -363,17 +365,20 @@ public class GnpyTopoImpl { private Elements createElementsEdfa(double latitude, double longitude, String region, String city, BigDecimal gainTarget, BigDecimal tiltTarget, BigDecimal outVoa, String typeVariety, String uidEdfa) { // Create an amplifier after the ROADM - Coordinate c1 = new Coordinate(BigDecimal.valueOf(latitude)); - Coordinate c2 = new Coordinate(BigDecimal.valueOf(longitude)); + Coordinate c1 = new Coordinate(Decimal64.valueOf(String.valueOf(latitude))); + Coordinate c2 = new Coordinate(Decimal64.valueOf(String.valueOf(longitude))); Location location1 = new LocationBuilder().setRegion(region).setCity(city).setLatitude(c1).setLongitude(c2) .build(); Metadata metadata1 = new MetadataBuilder().setLocation(location1).build(); - Operational operational = new OperationalBuilder().setGainTarget(gainTarget).setTiltTarget(tiltTarget) - .setOutVoa(outVoa).build(); + Operational operational = new OperationalBuilder() + .setGainTarget(Decimal64.valueOf(gainTarget)) + .setTiltTarget(Decimal64.valueOf(tiltTarget)) + .setOutVoa(Decimal64.valueOf(outVoa)) + .build(); Edfa edfa = new EdfaBuilder() .setOperational(operational).build(); return new ElementsBuilder().setUid(uidEdfa) - .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Edfa.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.Edfa.class) .setMetadata(metadata1).setElementType(edfa).setTypeVariety(typeVariety).build(); } @@ -382,15 +387,17 @@ 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)); + Coordinate c1 = new Coordinate(Decimal64.valueOf(String.valueOf(latitude))); + Coordinate c2 = new Coordinate(Decimal64.valueOf(String.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(); + Roadm roadm = new RoadmBuilder() + .setTargetPchOutDb(Decimal64.valueOf(String.valueOf(targetPchOutDb))) + .build(); Params params1 = new ParamsBuilder().setFiberroadmfused(roadm).build(); return new ElementsBuilder().setUid(uidRoadm) - .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220221.Roadm.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.Roadm.class) .setMetadata(metadata1).setElementType(new FiberRoadmBuilder().setParams(params1).build()).build(); } @@ -399,14 +406,14 @@ public class GnpyTopoImpl { */ private Elements createElementsTransceiver(double latitude, double longitude, String region, String city, String uidTrans) { - Coordinate c1 = new Coordinate(BigDecimal.valueOf(latitude)); - Coordinate c2 = new Coordinate(BigDecimal.valueOf(longitude)); + Coordinate c1 = new Coordinate(Decimal64.valueOf(String.valueOf(latitude))); + Coordinate c2 = new Coordinate(Decimal64.valueOf(String.valueOf(longitude))); Location location1 = new LocationBuilder().setRegion(region).setCity(city).setLatitude(c1).setLongitude(c2) .build(); 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.rev220221.Transceiver.class) + .setType(org.opendaylight.yang.gen.v1.gnpy.gnpy.network.topology.rev220615.Transceiver.class) .setMetadata(metadata1).setElementType(transceiver).build(); }