Check input node parameter of getPM RPC 90/103990/3
authorGilles Thouenon <gilles.thouenon@orange.com>
Wed, 11 Jan 2023 14:27:55 +0000 (15:27 +0100)
committerGilles Thouenon <gilles.thouenon@orange.com>
Fri, 13 Jan 2023 07:43:37 +0000 (08:43 +0100)
- do not invoke this RPC on a node which is not mounted to avoid a NPE
- make the RPC result being failed

JIRA: TRNSPRTPCE-716
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
Change-Id: I1b196c576c1298875c74dd90a47ca10921b32566

olm/src/main/java/org/opendaylight/transportpce/olm/OlmPowerServiceRpcImpl.java
olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java

index 604f7dbc8d633704fa3690a9f80a2e24d246415a..c12491b58945a9fa57dcdec709a9460ac8392e1d 100644 (file)
@@ -23,13 +23,17 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev21
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.ServicePowerTurndownOutput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The Class OlmPowerServiceRpcImpl.
  */
 public class OlmPowerServiceRpcImpl implements TransportpceOlmService {
+    private static final Logger LOG = LoggerFactory.getLogger(OlmPowerServiceRpcImpl.class);
     private final OlmPowerService olmPowerService;
 
     public OlmPowerServiceRpcImpl(OlmPowerService olmPowerService) {
@@ -55,6 +59,12 @@ public class OlmPowerServiceRpcImpl implements TransportpceOlmService {
      */
     @Override
     public ListenableFuture<RpcResult<GetPmOutput>> getPm(GetPmInput input) {
+        if (this.olmPowerService.getPm(input).getNodeId() == null) {
+            LOG.error("getPm: Error with input parameters");
+            return RpcResultBuilder.<GetPmOutput>failed()
+                    .withError(ErrorType.RPC, "Error with input parameters")
+                    .buildFuture();
+        }
         return RpcResultBuilder.success(this.olmPowerService.getPm(input)).buildFuture();
     }
 
index 78ba9e63a2d5464c783117afe376b84948037812..8b7dad5a08b73586303099fda45b8b0b82eb54d7 100644 (file)
@@ -126,17 +126,20 @@ public class OlmPowerServiceImpl implements OlmPowerService {
 
     @Override
     public GetPmOutput getPm(GetPmInput pmInput) {
-        OpenroadmNodeVersion openroadmVersion;
         GetPmOutputBuilder pmOutputBuilder = new GetPmOutputBuilder();
+        if (mappingUtils.getOpenRoadmVersion(pmInput.getNodeId()) == null) {
+            return pmOutputBuilder.build();
+        }
+        OpenroadmNodeVersion nodeVersion;
         switch (mappingUtils.getOpenRoadmVersion(pmInput.getNodeId())) {
             case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
-                openroadmVersion = OpenroadmNodeVersion._121;
+                nodeVersion = OpenroadmNodeVersion._121;
                 break;
             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
-                openroadmVersion = OpenroadmNodeVersion._221;
+                nodeVersion = OpenroadmNodeVersion._221;
                 break;
             case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
-                openroadmVersion = OpenroadmNodeVersion._71;
+                nodeVersion = OpenroadmNodeVersion._71;
                 break;
             default:
                 LOG.error("Unknown device version");
@@ -144,7 +147,7 @@ public class OlmPowerServiceImpl implements OlmPowerService {
         }
         LOG.info("Now calling get pm data");
         pmOutputBuilder = OlmUtils.pmFetch(pmInput, deviceTransactionManager,
-            openroadmVersion);
+            nodeVersion);
         return pmOutputBuilder.build();
     }