Merge "Fix bug in OLM during spanloss computation"
authorGuillaume Lambert <guillaume.lambert@orange.com>
Fri, 29 Oct 2021 13:32:04 +0000 (13:32 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Fri, 29 Oct 2021 13:32:04 +0000 (13:32 +0000)
olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java
olm/src/main/java/org/opendaylight/transportpce/olm/util/OlmUtils221.java

index 4db9a6102b6e396fd41c6941b566dc57e040b5d1..6f2431a3473738f933b30d125bdcb096f204ece5 100644 (file)
@@ -527,34 +527,37 @@ public class OlmPowerServiceImpl implements OlmPowerService {
             String sourceTpId = link.getSrcTpId();
             String destNodeId = link.getDestNodeId();
             String destTpId = link.getDestTpid();
-            OtsPmHolder srcOtsPmHoler = getPmMeasurements(sourceNodeId, sourceTpId, "OpticalPowerOutput");
-            if (srcOtsPmHoler == null) {
-                srcOtsPmHoler = getPmMeasurements(sourceNodeId, sourceTpId, "OpticalPowerOutputOSC");
-            }
-            OtsPmHolder destOtsPmHoler = getPmMeasurements(destNodeId, destTpId, "OpticalPowerInput");
-            if (destOtsPmHoler == null) {
-                destOtsPmHoler = getPmMeasurements(destNodeId, destTpId, "OpticalPowerInputOSC");
+            OtsPmHolder srcOtsPmHolder = getPmMeasurements(sourceNodeId, sourceTpId, "OpticalPowerOutput");
+            if (srcOtsPmHolder == null) {
+                srcOtsPmHolder = getPmMeasurements(sourceNodeId, sourceTpId, "OpticalPowerOutputOSC");
+                if (srcOtsPmHolder == null) {
+                    LOG.warn("OTS configuration issue at {} - {}", sourceNodeId, sourceTpId);
+                    continue;
+                }
             }
-
-            if (srcOtsPmHoler.getOtsInterfaceName() == null || destOtsPmHoler.getOtsInterfaceName() == null) {
-                LOG.warn("OTS is not present for the link {}", link);
-                continue;
+            OtsPmHolder destOtsPmHolder = getPmMeasurements(destNodeId, destTpId, "OpticalPowerInput");
+            if (destOtsPmHolder == null) {
+                destOtsPmHolder = getPmMeasurements(destNodeId, destTpId, "OpticalPowerInputOSC");
+                if (destOtsPmHolder == null) {
+                    LOG.warn("OTS configuration issue at {} - {}", destNodeId, destTpId);
+                    continue;
+                }
             }
-            spanLoss = BigDecimal.valueOf(srcOtsPmHoler.getOtsParameterVal() - destOtsPmHoler.getOtsParameterVal())
+            spanLoss = BigDecimal.valueOf(srcOtsPmHolder.getOtsParameterVal() - destOtsPmHolder.getOtsParameterVal())
                 .setScale(1, RoundingMode.HALF_UP);
             LOG.info("Spanloss Calculated as :{}={}-{}",
-                spanLoss, srcOtsPmHoler.getOtsParameterVal(), destOtsPmHoler.getOtsParameterVal());
+                spanLoss, srcOtsPmHolder.getOtsParameterVal(), destOtsPmHolder.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")) {
+            if (!setSpanLoss(sourceNodeId, srcOtsPmHolder.getOtsInterfaceName(), spanLoss, "TX")) {
                 LOG.info("Setting spanLoss failed for {}", sourceNodeId);
                 return null;
             }
-            if (!setSpanLoss(destNodeId, destOtsPmHoler.getOtsInterfaceName(), spanLoss, "RX")) {
+            if (!setSpanLoss(destNodeId, destOtsPmHolder.getOtsInterfaceName(), spanLoss, "RX")) {
                 LOG.info("Setting spanLoss failed for {}", destNodeId);
                 return null;
             }
index cca27425d5cfb9e2b0f10fb598eed599428fd692..45e0673a38eee7261783ccc0233de8497fa402e3 100644 (file)
@@ -84,6 +84,9 @@ final class OlmUtils221 {
 
         InstanceIdentifier<?> resourceKeyIID =
                 findClassKeyIdentifiers(input.getResourceType(), input.getResourceIdentifier());
+        if (resourceKeyIID == null) {
+            return pmOutputBuilder;
+        }
         CurrentPmEntryKey resourceKey = new CurrentPmEntryKey(resourceKeyIID,
                 convertResourceTypeEnum(input.getResourceType()),"");
         InstanceIdentifier<CurrentPmList> iidCurrentPmList = InstanceIdentifier.create(CurrentPmList.class);
@@ -182,6 +185,10 @@ final class OlmUtils221 {
 
     private static InstanceIdentifier<?> findClassKeyIdentifiers(ResourceTypeEnum wantedResourceType,
             ResourceIdentifier wantedResourceIdentifier) {
+        if (wantedResourceIdentifier.getResourceName() == null) {
+            LOG.debug("resource {} is null", wantedResourceType);
+            return null;
+        }
         switch (wantedResourceType) {
             case Device:
                 return InstanceIdentifier.create(OrgOpenroadmDevice.class);