From 9162dd1116e482ccf3d2f833d56ffb133be4be82 Mon Sep 17 00:00:00 2001 From: Gilles Thouenon Date: Wed, 11 Jan 2023 15:27:55 +0100 Subject: [PATCH] Check input node parameter of getPM RPC - 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 Change-Id: I1b196c576c1298875c74dd90a47ca10921b32566 --- .../transportpce/olm/OlmPowerServiceRpcImpl.java | 10 ++++++++++ .../olm/service/OlmPowerServiceImpl.java | 13 ++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/olm/src/main/java/org/opendaylight/transportpce/olm/OlmPowerServiceRpcImpl.java b/olm/src/main/java/org/opendaylight/transportpce/olm/OlmPowerServiceRpcImpl.java index 604f7dbc8..c12491b58 100644 --- a/olm/src/main/java/org/opendaylight/transportpce/olm/OlmPowerServiceRpcImpl.java +++ b/olm/src/main/java/org/opendaylight/transportpce/olm/OlmPowerServiceRpcImpl.java @@ -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> getPm(GetPmInput input) { + if (this.olmPowerService.getPm(input).getNodeId() == null) { + LOG.error("getPm: Error with input parameters"); + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Error with input parameters") + .buildFuture(); + } return RpcResultBuilder.success(this.olmPowerService.getPm(input)).buildFuture(); } diff --git a/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java b/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java index 78ba9e63a..8b7dad5a0 100644 --- a/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java +++ b/olm/src/main/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImpl.java @@ -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(); } -- 2.36.6