X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fgnpy%2FGnpyServiceImpl.java;h=02eade3f5dd2258a89ef13bfcc48d6f41dafc099;hb=66f6af8141d231619ad9d6e6133910e14f3a32e2;hp=8811df14f5f2c11f4e870e9036b53f1db80f1373;hpb=bbbb9c996a7ed10318bdf32f6ad301a0c240d787;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyServiceImpl.java b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyServiceImpl.java index 8811df14f..02eade3f5 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyServiceImpl.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/GnpyServiceImpl.java @@ -11,14 +11,17 @@ package org.opendaylight.transportpce.pce.gnpy; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.transportpce.common.ServiceRateConstant; @@ -54,7 +57,7 @@ import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.Syn import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.SynchronizationBuilder; import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.synchronization.Svec; import org.opendaylight.yang.gen.v1.gnpy.path.rev220615.synchronization.info.synchronization.SvecBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.PathComputationRequestInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.PathComputationRequestInput; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev211210.FrequencyTHz; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.ModulationFormat; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirection; @@ -62,6 +65,7 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdes import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZ; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToA; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.Resource; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -353,8 +357,9 @@ public class GnpyServiceImpl { mformat = optionalModulationFormat.get(); } spacing = GridConstant.FREQUENCY_SLOT_WIDTH_TABLE.get(Uint32.valueOf(rate), mformat); - FrequencyTHz centralFrequency = GridUtils - .getCentralFrequency(minFrequency.getValue(), maxFrequency.getValue()); + FrequencyTHz centralFrequency = GridUtils.getCentralFrequency( + minFrequency.getValue().decimalValue(), + maxFrequency.getValue().decimalValue()); int centralFrequencyBitSetIndex = GridUtils.getIndexFromFrequency(centralFrequency.getValue()); mvalue = (int) Math.ceil(spacing.doubleValue() / (GridConstant.GRANULARITY)); nvalue = GridUtils.getNFromFrequencyIndex(centralFrequencyBitSetIndex); @@ -365,20 +370,22 @@ public class GnpyServiceImpl { .setM(Uint32.valueOf(mvalue / 2)).setN(nvalue).build(); TeBandwidth teBandwidth = new TeBandwidthBuilder() - .setPathBandwidth(BigDecimal.valueOf(rate * 1e9)) + .setPathBandwidth(Decimal64.valueOf(BigDecimal.valueOf(rate * 1e9))) .setTechnology("flexi-grid").setTrxType("OpenROADM MSA ver. 5.0") .setTrxMode(TRX_MODE_TABLE.get(Uint32.valueOf(rate), spacing)) - .setOutputPower(GridUtils.convertDbmW(GridConstant.OUTPUT_POWER_100GB_DBM - + 10 * Math.log10(mvalue / (double)GridConstant.NB_SLOTS_100G))) + .setOutputPower(Decimal64.valueOf(GridUtils.convertDbmW(GridConstant.OUTPUT_POWER_100GB_DBM + + 10 * Math.log10(mvalue / (double)GridConstant.NB_SLOTS_100G)) + .setScale(6, RoundingMode.CEILING))) .setEffectiveFreqSlot(Map.of(effectiveFreqSlot.key(), effectiveFreqSlot)) - .setSpacing(spacing.multiply(BigDecimal.valueOf(1e9))).build(); + .setSpacing(Decimal64.valueOf(spacing.multiply(BigDecimal.valueOf(1e9)))) + .build(); return new PathConstraintsBuilder().setTeBandwidth(teBandwidth).build(); } //Create the synchronization private List extractSynchronization(Uint32 requestId) { // Create RequestIdNumber - List requestIdNumber = new ArrayList<>(); + Set requestIdNumber = new HashSet<>(); requestIdNumber.add(requestId.toString()); // Create a synchronization Svec svec = new SvecBuilder().setRelaxable(true)