- spanLoss = new BigDecimal(srcOtsPmHoler.getOtsParameterVal() - destOtsPmHoler.getOtsParameterVal())
- .setScale(0, RoundingMode.HALF_UP);
- LOG.info("Spanloss Calculated as :" + spanLoss + "=" + srcOtsPmHoler.getOtsParameterVal() + "-"
- + destOtsPmHoler.getOtsParameterVal());
- if ((spanLoss.doubleValue() < 28) && (spanLoss.doubleValue() > 0)) {
- if (!setSpanLoss(sourceNodeId, srcOtsPmHoler.getOtsInterfaceName(), spanLoss, "TX")) {
- LOG.info("Setting spanLoss failed for " + sourceNodeId);
- return null;
- }
- if (!setSpanLoss(destNodeId, destOtsPmHoler.getOtsInterfaceName(), spanLoss, "RX")) {
- LOG.info("Setting spanLoss failed for " + destNodeId);
- return null;
- }
- map.put(link.getLinkId(), spanLoss);
+ if (destOtsPmHoler == null) {
+ destOtsPmHoler = getPmMeasurements(destNodeId, destTpId, "OpticalPowerInputOSC");
+ }
+
+ if (srcOtsPmHoler.getOtsInterfaceName() == null || destOtsPmHoler.getOtsInterfaceName() == null) {
+ LOG.warn("OTS is not present for the link {}", link);
+ continue;
+ }
+ spanLoss = BigDecimal.valueOf(srcOtsPmHoler.getOtsParameterVal() - destOtsPmHoler.getOtsParameterVal())
+ .setScale(1, RoundingMode.HALF_UP);
+ LOG.info("Spanloss Calculated as :{}={}-{}",
+ spanLoss, srcOtsPmHoler.getOtsParameterVal(), destOtsPmHoler.getOtsParameterVal());
+ if (spanLoss.doubleValue() > 28) {
+ LOG.warn("Span Loss is out of range of OpenROADM specifications");
+ }
+ if (spanLoss.intValue() <= 0) {
+ spanLoss = BigDecimal.valueOf(0);
+ }
+ if (!setSpanLoss(sourceNodeId, srcOtsPmHoler.getOtsInterfaceName(), spanLoss, "TX")) {
+ LOG.info("Setting spanLoss failed for {}", sourceNodeId);
+ return null;
+ }
+ if (!setSpanLoss(destNodeId, destOtsPmHoler.getOtsInterfaceName(), spanLoss, "RX")) {
+ LOG.info("Setting spanLoss failed for {}", destNodeId);
+ return null;