package org.opendaylight.transportpce.pce.graph;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import org.opendaylight.transportpce.pce.constraints.PceConstraints.ResourcePair;
import org.opendaylight.transportpce.pce.networkanalyzer.PceNode;
import org.opendaylight.transportpce.pce.networkanalyzer.PceResult;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.SpectrumAssignment;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.SpectrumAssignmentBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmLinkType;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.SpectrumAssignment;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220615.SpectrumAssignmentBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmLinkType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.OpucnTribSlotDef;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
import org.opendaylight.yangtools.yang.common.Uint16;
double latency = 0;
for (PceGraphEdge edge : path.getEdgeList()) {
- try {
- latency += edge.link().getLatency();
- LOG.debug("- In checkLatency: latency of {} = {} units", edge.link().getLinkId().getValue(), latency);
- } catch (NullPointerException e) {
+ if (edge.link() == null || edge.link().getLatency() == null) {
LOG.warn("- In checkLatency: the link {} does not contain latency field",
edge.link().getLinkId().getValue());
+ return false;
}
+ latency += edge.link().getLatency();
+ LOG.debug("- In checkLatency: latency of {} = {} units", edge.link().getLinkId().getValue(), latency);
}
return (latency < maxLatency);
}
commonEdgeTpnPool.add(srcTpn);
}
}
- Collections.sort(commonEdgeTpnPool);
+
if (!commonEdgeTpnPool.isEmpty()) {
Integer startTribSlot = tribSlotMap.values().stream().findFirst().get().get(0).toJava();
Integer tribPort = (int) Math.ceil((double)startTribSlot / nbSlot);
pceNode.getNodeId(), pceNode.getVersion(), pceNode.getSlotWidthGranularity());
isFlexGrid = false;
}
- if ((pceNode.getSlotWidthGranularity().equals(GridConstant.SLOT_WIDTH_50))
- && (pceNode.getCentralFreqGranularity().equals(GridConstant.SLOT_WIDTH_50))) {
+ if ((pceNode.getSlotWidthGranularity().setScale(0, RoundingMode.CEILING)
+ .equals(GridConstant.SLOT_WIDTH_50))
+ && (pceNode.getCentralFreqGranularity().setScale(0, RoundingMode.CEILING)
+ .equals(GridConstant.SLOT_WIDTH_50))) {
LOG.info("Node {}: version is {} with slot width granularity {} and central "
+ "frequency granularity is {} -> fixed grid mode",
pceNode.getNodeId(), pceNode.getVersion(), pceNode.getSlotWidthGranularity(),