X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fnetworkanalyzer%2FPceCalculation.java;h=facffa8c17085f09bf95dc7e8d2448f21a7f76a6;hb=3864192e72c83efcabc741d0cb84600dec58c357;hp=5aa2d29050548a6489845d75076309a0f1337a75;hpb=99e77cc8ba73a8e765eafdf0ba4e41d6a36b730f;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java index 5aa2d2905..facffa8c1 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceCalculation.java @@ -8,14 +8,13 @@ package org.opendaylight.transportpce.pce.networkanalyzer; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; @@ -30,14 +29,15 @@ import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.common.service.ServiceTypes; import org.opendaylight.transportpce.pce.PceComplianceCheck; import org.opendaylight.transportpce.pce.constraints.PceConstraints; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.PathComputationRequestInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.mc.capabilities.McCapabilities; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.reroute.request.input.Endpoints; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mc.capabilities.McCapabilities; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Link1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1; 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.NodeTypes; -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.rev230526.OpenroadmLinkType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType; 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.NodeId; @@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory; public class PceCalculation { /* Logging. */ private static final Logger LOG = LoggerFactory.getLogger(PceCalculation.class); - private NetworkTransactionService networkTransactionService = null; + private NetworkTransactionService networkTransactionService; ///////////// data parsed from Input///////////////// private PathComputationRequestInput input; @@ -71,7 +71,7 @@ public class PceCalculation { ///////////// Intermediate data///////////////// private List addLinks = new ArrayList<>(); private List dropLinks = new ArrayList<>(); - private HashSet azSrgs = new HashSet<>(); + private List azSrgs = new ArrayList<>(); private PceNode aendPceNode = null; private PceNode zendPceNode = null; @@ -84,9 +84,11 @@ public class PceCalculation { // this List serves calculation of ZtoA path description // TODO maybe better solution is possible private Map allPceLinks = new HashMap<>(); - private Set linksToExclude = new HashSet<>(); + private List linksToExclude = new ArrayList<>(); private PceResult returnStructure; private PortMapping portMapping; + // Define the termination points whose reservation status is not taken into account during the pruning process + private Endpoints endpoints; private enum ConstraintTypes { NONE, HARD_EXCLUDE, HARD_INCLUDE, HARD_DIVERSITY, SOFT_EXCLUDE, SOFT_INCLUDE, SOFT_DIVERSITY; @@ -95,21 +97,34 @@ public class PceCalculation { private MappingUtils mappingUtils; public PceCalculation(PathComputationRequestInput input, NetworkTransactionService networkTransactionService, - PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc, - PortMapping portMapping) { + PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc, + PortMapping portMapping) { this.input = input; this.networkTransactionService = networkTransactionService; this.returnStructure = rc; + this.pceHardConstraints = pceHardConstraints; + this.mappingUtils = new MappingUtilsImpl(networkTransactionService.getDataBroker()); + this.portMapping = portMapping; + this.endpoints = null; + parseInput(); + } + public PceCalculation(PathComputationRequestInput input, NetworkTransactionService networkTransactionService, + PceConstraints pceHardConstraints, PceConstraints pceSoftConstraints, PceResult rc, + PortMapping portMapping, Endpoints endpoints) { + this.input = input; + this.networkTransactionService = networkTransactionService; + this.returnStructure = rc; this.pceHardConstraints = pceHardConstraints; this.mappingUtils = new MappingUtilsImpl(networkTransactionService.getDataBroker()); this.portMapping = portMapping; + this.endpoints = endpoints; parseInput(); } public void retrievePceNetwork() { - LOG.info("In PceCalculation retrieveNetwork: "); + LOG.debug("In PceCalculation retrieveNetwork"); if (!readMdSal()) { returnStructure.setRC(ResponseCodes.RESPONSE_FAILED); @@ -124,7 +139,6 @@ public class PceCalculation { printNodesInfo(allPceNodes); returnStructure.setRC(ResponseCodes.RESPONSE_OK); - return; } private boolean parseInput() { @@ -137,16 +151,17 @@ public class PceCalculation { serviceFormatA = input.getServiceAEnd().getServiceFormat().getName(); serviceFormatZ = input.getServiceZEnd().getServiceFormat().getName(); serviceRate = input.getServiceAEnd().getServiceRate(); - serviceType = ServiceTypes.getServiceType(serviceFormatA, serviceRate, - (NodeTypes.Xpdr.equals(portMapping.getNode(input.getServiceAEnd().getNodeId()).getNodeInfo().getNodeType()) - && input.getServiceAEnd().getTxDirection() != null - && input.getServiceAEnd().getTxDirection().getPort() != null - && input.getServiceAEnd().getTxDirection().getPort().getPortName() != null) - ? portMapping.getMapping(input.getServiceAEnd().getNodeId(), + serviceType = ServiceTypes.getServiceType( + serviceFormatA, + serviceRate, + NodeTypes.Xpdr.equals(portMapping.getNode(input.getServiceAEnd().getNodeId()).getNodeInfo().getNodeType()) + && checkAendInputTxPortName() + ? portMapping.getMapping( + input.getServiceAEnd().getNodeId(), input.getServiceAEnd().getTxDirection().getPort().getPortName()) : null); - LOG.info("parseInput: A and Z :[{}] and [{}]", anodeId, znodeId); + LOG.debug("parseInput: A and Z :[{}] and [{}]", anodeId, znodeId); getAZnodeId(); @@ -155,22 +170,38 @@ public class PceCalculation { return true; } + private boolean checkAendInputTxPortName() { + return checkAendInputTxPort() + && input.getServiceAEnd().getTxDirection().getPort().getPortName() != null; + } + + private boolean checkAendInputTxPortDeviceName() { + return checkAendInputTxPort() + && input.getServiceAEnd().getTxDirection().getPort().getPortDeviceName() != null; + } + + private boolean checkAendInputTxPort() { + return input.getServiceAEnd() != null + && input.getServiceAEnd().getTxDirection() != null + && input.getServiceAEnd().getTxDirection().getPort() != null; + } + + private boolean checkZendInputTxPortDeviceName() { + return input.getServiceZEnd() != null + && input.getServiceZEnd().getTxDirection() != null + && input.getServiceZEnd().getTxDirection().getPort() != null + && input.getServiceZEnd().getTxDirection().getPort().getPortDeviceName() != null; + } + private void getAZnodeId() { - switch (serviceType) { - case StringConstants.SERVICE_TYPE_ODU4: - case StringConstants.SERVICE_TYPE_ODUC4: - case StringConstants.SERVICE_TYPE_100GE_M: - case StringConstants.SERVICE_TYPE_100GE_S: - case StringConstants.SERVICE_TYPE_10GE: - case StringConstants.SERVICE_TYPE_1GE: - anodeId = input.getServiceAEnd().getTxDirection().getPort().getPortDeviceName(); - znodeId = input.getServiceZEnd().getTxDirection().getPort().getPortDeviceName(); - break; - default: - anodeId = input.getServiceAEnd().getNodeId(); - znodeId = input.getServiceZEnd().getNodeId(); - break; - } + anodeId = + checkAendInputTxPortDeviceName() + ? input.getServiceAEnd().getTxDirection().getPort().getPortDeviceName() + : input.getServiceAEnd().getNodeId(); + znodeId = + checkZendInputTxPortDeviceName() + ? input.getServiceZEnd().getTxDirection().getPort().getPortDeviceName() + : input.getServiceZEnd().getNodeId(); } private boolean readMdSal() { @@ -179,18 +210,22 @@ public class PceCalculation { case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_400GE: case StringConstants.SERVICE_TYPE_OTU4: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: - LOG.info("readMdSal: network {}", NetworkUtils.OVERLAY_NETWORK_ID); + LOG.debug("readMdSal: network {}", NetworkUtils.OVERLAY_NETWORK_ID); nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))).build(); break; case StringConstants.SERVICE_TYPE_100GE_M: case StringConstants.SERVICE_TYPE_100GE_S: case StringConstants.SERVICE_TYPE_ODU4: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: case StringConstants.SERVICE_TYPE_10GE: case StringConstants.SERVICE_TYPE_1GE: - LOG.info("readMdSal: network {}", NetworkUtils.OTN_NETWORK_ID); + LOG.debug("readMdSal: network {}", NetworkUtils.OTN_NETWORK_ID); nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID))).build(); break; @@ -238,16 +273,12 @@ public class PceCalculation { Optional nwOptional = networkTransactionService.read(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier).get(); if (nwOptional.isPresent()) { - nw = nwOptional.get(); + nw = nwOptional.orElseThrow(); LOG.debug("readMdSal: network nodes: nwOptional.isPresent = true {}", nw); - networkTransactionService.close(); } } catch (InterruptedException | ExecutionException e) { LOG.error("readMdSal: Error reading topology {}", nwInstanceIdentifier); - networkTransactionService.close(); returnStructure.setRC(ResponseCodes.RESPONSE_FAILED); - throw new RuntimeException( - "readMdSal: Error reading from operational store, topology : " + nwInstanceIdentifier + " :" + e); } return nw; } @@ -259,6 +290,8 @@ public class PceCalculation { case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_OTU4: case StringConstants.SERVICE_TYPE_400GE: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: // 100GE service and OTU4 service are handled at the openroadm-topology layer for (Node node : allNodes) { @@ -358,7 +391,7 @@ public class PceCalculation { } private boolean validateLink(Link link) { - LOG.info("validateLink: link {} ", link); + LOG.debug("validateLink: link {} ", link); NodeId sourceId = link.getSource().getSourceNode(); NodeId destId = link.getDestination().getDestNode(); @@ -386,6 +419,8 @@ public class PceCalculation { switch (serviceType) { case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_OTU4: + case StringConstants.SERVICE_TYPE_OTUC2: + case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: case StringConstants.SERVICE_TYPE_400GE: return processPceLink(link, sourceId, destId, source, dest); @@ -393,6 +428,8 @@ public class PceCalculation { case StringConstants.SERVICE_TYPE_10GE: case StringConstants.SERVICE_TYPE_100GE_M: case StringConstants.SERVICE_TYPE_100GE_S: + case StringConstants.SERVICE_TYPE_ODUC2: + case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: case StringConstants.SERVICE_TYPE_1GE: return processPceOtnLink(link, source, dest); @@ -423,34 +460,53 @@ public class PceCalculation { deviceNodeId = node.getNodeId().getValue(); } - LOG.info("Device node id {} for {}", deviceNodeId, node); + LOG.debug("Device node id {} for {}", deviceNodeId, node); PceOpticalNode pceNode = new PceOpticalNode(deviceNodeId, this.serviceType, portMapping, node, nodeType, mappingUtils.getOpenRoadmVersion(deviceNodeId), getSlotWidthGranularity(deviceNodeId, node.getNodeId()), getCentralFreqGranularity(deviceNodeId, node.getNodeId())); + if (endpoints != null) { + pceNode.setEndpoints(endpoints); + } pceNode.validateAZxponder(anodeId, znodeId, input.getServiceAEnd().getServiceFormat()); pceNode.initFrequenciesBitSet(); if (!pceNode.isValid()) { - LOG.warn(" validateNode: Node is ignored"); + LOG.debug(" validateNode: Node {} is ignored", node.getNodeId().getValue()); return; } if (validateNodeConstraints(pceNode).equals(ConstraintTypes.HARD_EXCLUDE)) { return; } - if (endPceNode(nodeType, pceNode.getNodeId(), pceNode) && this.aendPceNode == null - && isAZendPceNode(this.serviceFormatA, pceNode, anodeId, "A")) { - this.aendPceNode = pceNode; - } - if (endPceNode(nodeType, pceNode.getNodeId(), pceNode) && this.zendPceNode == null - && isAZendPceNode(this.serviceFormatZ, pceNode, znodeId, "Z")) { - this.zendPceNode = pceNode; + + if (endPceNode(nodeType, pceNode.getNodeId(), pceNode)) { + if (this.aendPceNode == null && isAZendPceNode(this.serviceFormatA, pceNode, anodeId, "A")) { + // Added to ensure A-node has a addlink in the topology + List links = this.allLinks.stream() + .filter(x -> x.getSource().getSourceNode().getValue().contains(pceNode.getNodeId().getValue())) + .collect(Collectors.toList()); + if (!links.isEmpty()) { + this.aendPceNode = pceNode; + } + } + if (this.zendPceNode == null && isAZendPceNode(this.serviceFormatZ, pceNode, znodeId, "Z")) { + // Added to ensure Z-node has a droplink in the topology + List links = this.allLinks.stream() + .filter(x -> x.getDestination().getDestNode().getValue().contains(pceNode.getNodeId().getValue())) + .collect(Collectors.toList()); + if (!links.isEmpty()) { + this.zendPceNode = pceNode; + } + } } allPceNodes.put(pceNode.getNodeId(), pceNode); LOG.debug("validateNode: node is saved {}", pceNode.getNodeId().getValue()); - return; } + @SuppressWarnings("fallthrough") + @SuppressFBWarnings( + value = "SF_SWITCH_FALLTHROUGH", + justification = "intentional fallthrough") private boolean isAZendPceNode(String serviceFormat, PceOpticalNode pceNode, String azNodeId, String azEndPoint) { switch (serviceFormat) { case "Ethernet": @@ -458,17 +514,20 @@ public class PceCalculation { if (pceNode.getSupNetworkNodeId().equals(azNodeId)) { return true; } - return false; + //fallthrough case "OTU": - if ("A".equals(azEndPoint) && pceNode.getNodeId().getValue() - .equals(this.input.getServiceAEnd().getRxDirection().getPort().getPortDeviceName())) { - return true; + switch (azEndPoint) { + case "A": + return checkAendInputTxPortDeviceName() + && pceNode.getNodeId().getValue() + .equals(this.input.getServiceAEnd().getTxDirection().getPort().getPortDeviceName()); + case "Z": + return checkZendInputTxPortDeviceName() + && pceNode.getNodeId().getValue() + .equals(this.input.getServiceZEnd().getTxDirection().getPort().getPortDeviceName()); + default: + return false; } - if ("Z".equals(azEndPoint) && pceNode.getNodeId().getValue() - .equals(this.input.getServiceZEnd().getRxDirection().getPort().getPortDeviceName())) { - return true; - } - return false; default: LOG.debug("Unsupported service Format {} for node {}", serviceFormat, pceNode.getNodeId().getValue()); return false; @@ -484,8 +543,24 @@ public class PceCalculation { } OpenroadmNodeType nodeType = node.augmentation(Node1.class).getNodeType(); - - PceOtnNode pceOtnNode = new PceOtnNode(node, nodeType, node.getNodeId(), "otn", serviceType); + String clientPort = null; + if (node.getNodeId().getValue().equals(anodeId) + && this.aendPceNode == null + && input.getServiceAEnd() != null + && input.getServiceAEnd().getRxDirection() != null + && input.getServiceAEnd().getRxDirection().getPort() != null + && input.getServiceAEnd().getRxDirection().getPort().getPortName() != null) { + clientPort = input.getServiceAEnd().getRxDirection().getPort().getPortName(); + } else if (node.getNodeId().getValue().equals(znodeId) + && this.zendPceNode == null + && input.getServiceZEnd() != null + && input.getServiceZEnd().getRxDirection() != null + && input.getServiceZEnd().getRxDirection().getPort() != null + && input.getServiceZEnd().getRxDirection().getPort().getPortName() != null) { + clientPort = input.getServiceZEnd().getRxDirection().getPort().getPortName(); + } + + PceOtnNode pceOtnNode = new PceOtnNode(node, nodeType, node.getNodeId(), "otn", serviceType, clientPort); pceOtnNode.validateXponder(anodeId, znodeId); if (!pceOtnNode.isValid()) { @@ -503,7 +578,6 @@ public class PceCalculation { } allPceNodes.put(pceOtnNode.getNodeId(), pceOtnNode); LOG.info("validateOtnNode: node {} is saved", node.getNodeId().getValue()); - return; } private ConstraintTypes validateNodeConstraints(PceNode pcenode) { @@ -511,11 +585,11 @@ public class PceCalculation { return ConstraintTypes.NONE; } if (pceHardConstraints.getExcludeSupNodes().contains(pcenode.getSupNetworkNodeId())) { - LOG.info("validateNodeConstraints: {}", pcenode.getNodeId().getValue()); + LOG.debug("validateNodeConstraints: {}", pcenode.getNodeId().getValue()); return ConstraintTypes.HARD_EXCLUDE; } if (pceHardConstraints.getExcludeCLLI().contains(pcenode.getSupClliNodeId())) { - LOG.info("validateNodeConstraints: {}", pcenode.getNodeId().getValue()); + LOG.debug("validateNodeConstraints: {}", pcenode.getNodeId().getValue()); return ConstraintTypes.HARD_EXCLUDE; } return ConstraintTypes.NONE; @@ -534,7 +608,7 @@ public class PceCalculation { List constraints = new ArrayList<>(pceHardConstraints.getExcludeSRLG()); constraints.retainAll(link.getsrlgList()); if (!constraints.isEmpty()) { - LOG.info("validateLinkConstraints: {}", link.getLinkId().getValue()); + LOG.debug("validateLinkConstraints: {}", link.getLinkId().getValue()); return ConstraintTypes.HARD_EXCLUDE; } @@ -561,7 +635,7 @@ public class PceCalculation { pceNode.initXndrTps(input.getServiceAEnd().getServiceFormat()); break; default: - LOG.warn("endPceNode: Node {} is not SRG or XPONDER !", nodeId); + LOG.debug("endPceNode: Node {} is not SRG or XPONDER !", nodeId); return false; } @@ -594,12 +668,14 @@ public class PceCalculation { pcelink.getlinkType(), pcelink); break; case ADDLINK: - pcelink.setClient(source.getRdmSrgClient(pcelink.getSourceTP().getValue())); + pcelink.setClientA( + source.getRdmSrgClient(pcelink.getSourceTP().getValue(), StringConstants.SERVICE_DIRECTION_AZ)); addLinks.add(pcelink); LOG.debug("validateLink: ADD-LINK saved {}", pcelink); break; case DROPLINK: - pcelink.setClient(dest.getRdmSrgClient(pcelink.getDestTP().getValue())); + pcelink.setClientZ( + dest.getRdmSrgClient(pcelink.getDestTP().getValue(), StringConstants.SERVICE_DIRECTION_ZA)); dropLinks.add(pcelink); LOG.debug("validateLink: DROP-LINK saved {}", pcelink); break; @@ -613,7 +689,7 @@ public class PceCalculation { return false; } if (dest.getXpdrClient(pcelink.getDestTP().getValue()) != null) { - pcelink.setClient(dest.getXpdrClient(pcelink.getDestTP().getValue())); + pcelink.setClientZ(dest.getXpdrClient(pcelink.getDestTP().getValue())); } allPceLinks.put(linkId, pcelink); source.addOutgoingLink(pcelink); @@ -630,7 +706,7 @@ public class PceCalculation { return false; } if (source.getXpdrClient(pcelink.getSourceTP().getValue()) != null) { - pcelink.setClient(source.getXpdrClient(pcelink.getSourceTP().getValue())); + pcelink.setClientA(source.getXpdrClient(pcelink.getSourceTP().getValue())); } allPceLinks.put(linkId, pcelink); source.addOutgoingLink(pcelink); @@ -661,14 +737,14 @@ public class PceCalculation { switch (pceOtnLink.getlinkType()) { case OTNLINK: if (source.getXpdrClient(pceOtnLink.getSourceTP().getValue()) != null) { - pceOtnLink.setClient(source.getXpdrClient(pceOtnLink.getSourceTP().getValue())); + pceOtnLink.setClientA(source.getXpdrClient(pceOtnLink.getSourceTP().getValue())); } if (dest.getXpdrClient(pceOtnLink.getDestTP().getValue()) != null) { - pceOtnLink.setClient(dest.getXpdrClient(pceOtnLink.getDestTP().getValue())); + pceOtnLink.setClientZ(dest.getXpdrClient(pceOtnLink.getDestTP().getValue())); } allPceLinks.put(linkId, pceOtnLink); source.addOutgoingLink(pceOtnLink); - LOG.info("validateLink: OTN-LINK added to allPceLinks {}", pceOtnLink); + LOG.debug("validateLink: OTN-LINK added to allPceLinks {}", pceOtnLink); break; default: LOG.warn("validateLink: link type is not supported {}", pceOtnLink); @@ -702,7 +778,7 @@ public class PceCalculation { private static void printNodesInfo(Map allPceNodes) { allPceNodes.forEach(((nodeId, pceNode) -> { - LOG.info("In printNodes in node {} : outgoing links {} ", pceNode.getNodeId().getValue(), + LOG.debug("In printNodes in node {} : outgoing links {} ", pceNode.getNodeId().getValue(), pceNode.getOutgoingLinks()); })); } @@ -722,12 +798,12 @@ public class PceCalculation { String moduleName = params[params.length - 1]; for (McCapabilities mcCapabitility : mcCapabilities) { if (mcCapabitility.getMcNodeName().contains("XPDR") - && mcCapabitility.getSlotWidthGranularity() != null) { - return mcCapabitility.getSlotWidthGranularity().getValue(); + && mcCapabitility.getSlotWidthGranularity() != null) { + return mcCapabitility.getSlotWidthGranularity().getValue().decimalValue(); } if (mcCapabitility.getMcNodeName().contains(moduleName) && mcCapabitility.getSlotWidthGranularity() != null) { - return mcCapabitility.getSlotWidthGranularity().getValue(); + return mcCapabitility.getSlotWidthGranularity().getValue().decimalValue(); } } return GridConstant.SLOT_WIDTH_50; @@ -748,12 +824,12 @@ public class PceCalculation { String moduleName = params[params.length - 1]; for (McCapabilities mcCapabitility : mcCapabilities) { if (mcCapabitility.getMcNodeName().contains("XPDR") - && mcCapabitility.getCenterFreqGranularity() != null) { - return mcCapabitility.getCenterFreqGranularity().getValue(); + && mcCapabitility.getCenterFreqGranularity() != null) { + return mcCapabitility.getCenterFreqGranularity().getValue().decimalValue(); } if (mcCapabitility.getMcNodeName().contains(moduleName) - && mcCapabitility.getCenterFreqGranularity() != null) { - return mcCapabitility.getCenterFreqGranularity().getValue(); + && mcCapabitility.getCenterFreqGranularity() != null) { + return mcCapabitility.getCenterFreqGranularity().getValue().decimalValue(); } } return GridConstant.SLOT_WIDTH_50;