Update portmapping YANG model
[transportpce.git] / olm / src / main / java / org / opendaylight / transportpce / olm / service / OlmPowerServiceImpl.java
index 22fc04d9744b8266df1572404f756e2464f270e5..a7c72816efa7b6c9fc53e17a47cc7acb754eead1 100644 (file)
@@ -62,8 +62,8 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev17
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.Spans;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.calculate.spanloss.base.output.SpansBuilder;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev170418.get.pm.output.Measurements;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.OpenroadmNodeVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.mapping.Mapping;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
@@ -125,17 +125,24 @@ public class OlmPowerServiceImpl implements OlmPowerService {
 
     @Override
     public GetPmOutput getPm(GetPmInput pmInput) {
-        OpenroadmVersion openroadmVersion;
-        if (mappingUtils.getOpenRoadmVersion(pmInput.getNodeId())
-            .equals(StringConstants.OPENROADM_DEVICE_VERSION_1_2_1)) {
-            LOG.info("Device version is 1.2.1");
-            openroadmVersion = OpenroadmVersion._121;
-        } else {
-            openroadmVersion = OpenroadmVersion._221;
-            LOG.info("Device version is 2.2.1");
+        OpenroadmNodeVersion openroadmVersion;
+        GetPmOutputBuilder pmOutputBuilder = new GetPmOutputBuilder();
+        switch (mappingUtils.getOpenRoadmVersion(pmInput.getNodeId())) {
+            case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
+                openroadmVersion = OpenroadmNodeVersion._121;
+                break;
+            case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
+                openroadmVersion = OpenroadmNodeVersion._221;
+                break;
+            case StringConstants.OPENROADM_DEVICE_VERSION_7_1_0:
+                openroadmVersion = OpenroadmNodeVersion._710;
+                break;
+            default:
+                LOG.error("Unknown device version");
+                return pmOutputBuilder.build();
         }
         LOG.info("Now calling get pm data");
-        GetPmOutputBuilder pmOutputBuilder = OlmUtils.pmFetch(pmInput, deviceTransactionManager,
+        pmOutputBuilder = OlmUtils.pmFetch(pmInput, deviceTransactionManager,
             openroadmVersion);
         return pmOutputBuilder.build();
     }
@@ -355,13 +362,13 @@ public class OlmPowerServiceImpl implements OlmPowerService {
             .build();
         GetPmOutput otsPmOutput = getPm(getPmInput);
 
-        if (otsPmOutput == null) {
+        if (otsPmOutput == null || otsPmOutput.getMeasurements() == null) {
             LOG.info("OTS PM not found for NodeId: {} TP Id:{} PMName:{}", realNodeId, tpID, pmName);
             return null;
         }
         try {
             for (Measurements measurement : otsPmOutput.getMeasurements()) {
-                if (pmName.equals(measurement.getPmparameterName())) {
+                if (pmName.equalsIgnoreCase(measurement.getPmparameterName())) {
                     return new OtsPmHolder(pmName, Double.parseDouble(measurement.getPmparameterValue()),
                         mapping.getSupportingOts());
                 }
@@ -521,7 +528,14 @@ public class OlmPowerServiceImpl implements OlmPowerService {
             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");
+            }
+
             if (srcOtsPmHoler.getOtsInterfaceName() == null || destOtsPmHoler.getOtsInterfaceName() == null) {
                 LOG.warn("OTS is not present for the link {}", link);
                 continue;
@@ -533,6 +547,9 @@ public class OlmPowerServiceImpl implements OlmPowerService {
             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;