import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
* the most commonly used components of the MD-SAL. Additionally the base class provides some basic logging and
* initialization / clean up methods.
*/
-public class VnfApiProvider implements AutoCloseable, VNFAPIService, DataChangeListener {
+public class VnfApiProvider implements AutoCloseable, VNFAPIService, DataChangeListener {
+ protected DataBroker dataBroker;
+ protected NotificationPublishService notificationService;
+ protected RpcProviderRegistry rpcRegistry;
+ protected BindingAwareBroker.RpcRegistration<VNFAPIService> rpcRegistration;
private final Logger log = LoggerFactory.getLogger(VnfApiProvider.class);
private final ExecutorService executor;
+ private static final String PRELOAD_DATA = "] PreloadData: ";
+ private static final String SENDING_SUCCESS_RPC = "Sending Success rpc result due to external error";
+ public static final String REASON = "', Reason: '";
+ public static final String ERROR_CODE = "] error code: '";
+ public static final String INVALID_INPUT_INVALID_PRELOAD_TYPE = "invalid input, invalid preload-type";
+ public static final String BECAUSE_OF_INVALID_PRELOAD_TYPE = " because of invalid preload-type";
+ public static final String INVALID_INPUT_NULL_OR_EMPTY_SERVICE_INSTANCE_ID = "invalid input, null or empty service-instance-id";
+ public static final String BECAUSE_OF_INVALID_INPUT_NULL_OR_EMPTY_SERVICE_INSTANCE_ID = " because of invalid input, null or empty service-instance-id";
private static final String APP_NAME = "vnfapi";
private static final String VNF_API = "VNF-API";
private static final String OPERATIONAL_DATA = "operational-data";
-
private static final String READ_MD_SAL_STR = "Read MD-SAL (";
private static final String DATA_FOR_STR = ") data for [";
private static final String SERVICE_DATA_STR = "] ServiceData: ";
private static final String INVALID_INPUT_VNF_INSTANCE_STR = "invalid input, null or empty vnf-instance-id";
private VNFSDNSvcLogicServiceClient svcLogicClient;
- protected DataBroker dataBroker;
- protected NotificationPublishService notificationService;
- protected RpcProviderRegistry rpcRegistry;
- protected BindingAwareBroker.RpcRegistration<VNFAPIService> rpcRegistration;
public VnfApiProvider(DataBroker dataBroker2, NotificationPublishService notificationPublishService,
RpcProviderRegistry rpcProviderRegistry, VNFSDNSvcLogicServiceClient client) {
if (data.isPresent()) {
PreloadData preloadData = (PreloadData) data.get().getPreloadData();
if (preloadData != null) {
- log.info(READ_MD_SAL_STR + type + DATA_FOR_STR + preloadName + "," + preloadType + "] PreloadData: "
+ log.info(READ_MD_SAL_STR + type + DATA_FOR_STR + preloadName + "," + preloadType + PRELOAD_DATA
+ preloadData);
preloadDataBuilder.setVnfTopologyInformation(preloadData.getVnfTopologyInformation());
preloadDataBuilder.setNetworkTopologyInformation(preloadData.getNetworkTopologyInformation());
}
//1610 vnf-instance-topology-operation
+
+ private Boolean validateVnfInstanceTopologyOperationInput(VnfInstanceTopologyOperationInput input) {
+ return input != null
+ && input.getVnfInstanceRequestInformation() != null
+ && input.getVnfInstanceRequestInformation().getVnfInstanceId() != null
+ && input.getVnfInstanceRequestInformation().getVnfInstanceId().length() != 0;
+ }
+
+ private Future<RpcResult<VnfInstanceTopologyOperationOutput>> buildVnfInstanceTopologyOperationOutputWithtError(
+ String responseCode, String responseMessage, String ackFinalIndicator) {
+ VnfInstanceTopologyOperationOutputBuilder responseBuilder = new VnfInstanceTopologyOperationOutputBuilder();
+ responseBuilder.setResponseCode(responseCode);
+ responseBuilder.setResponseMessage(responseMessage);
+ responseBuilder.setAckFinalIndicator(ackFinalIndicator);
+ return Futures.immediateFuture(RpcResultBuilder
+ .<VnfInstanceTopologyOperationOutput>status(true)
+ .withResult(responseBuilder.build())
+ .build());
+ }
+
@Override
public Future<RpcResult<VnfInstanceTopologyOperationOutput>> vnfInstanceTopologyOperation(
VnfInstanceTopologyOperationInput input) {
// create a new response object
VnfInstanceTopologyOperationOutputBuilder responseBuilder = new VnfInstanceTopologyOperationOutputBuilder();
- if (input == null || input.getVnfInstanceRequestInformation() == null
- || input.getVnfInstanceRequestInformation().getVnfInstanceId() == null) {
+ if (!validateVnfInstanceTopologyOperationInput(input)) {
log.debug(EXITING_STR + svcOperation + " because of " + INVALID_INPUT_VNF_INSTANCE_STR);
- responseBuilder.setResponseCode("403");
- responseBuilder.setResponseMessage(INVALID_INPUT_VNF_INSTANCE_STR);
- responseBuilder.setAckFinalIndicator("Y");
- RpcResult<VnfInstanceTopologyOperationOutput> rpcResult = RpcResultBuilder
- .<VnfInstanceTopologyOperationOutput>status(true)
- .withResult(responseBuilder.build())
- .build();
- // return error
- return Futures.immediateFuture(rpcResult);
+ return buildVnfInstanceTopologyOperationOutputWithtError("403",
+ INVALID_INPUT_VNF_INSTANCE_STR,
+ "Y" );
}
// Grab the service instance ID from the input buffer
String preloadName = input.getVnfInstanceRequestInformation().getVnfInstanceName();
String preloadType = input.getVnfInstanceRequestInformation().getVnfModelId();
- // Make sure we have a valid viid
- if (viid == null || viid.length() == 0) {
- log.debug(EXITING_STR + svcOperation + " because of invalid vnf-instance-id");
- responseBuilder.setResponseCode("403");
- responseBuilder.setResponseMessage(INVALID_INPUT_VNF_INSTANCE_STR);
- responseBuilder.setAckFinalIndicator("Y");
- RpcResult<VnfInstanceTopologyOperationOutput> rpcResult = RpcResultBuilder
- .<VnfInstanceTopologyOperationOutput>status(true)
- .withResult(responseBuilder.build())
- .build();
- // return error
- return Futures.immediateFuture(rpcResult);
- }
-
if (input.getSdncRequestHeader() != null) {
responseBuilder.setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId());
setRequestIdAsMDC(input.getSdncRequestHeader().getSvcRequestId());
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
-
- try {
- respProps = svcLogicClient
- .execute(VNF_API, svcOperation, null, "sync", vnfInstanceServiceDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", vnfInstanceServiceDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + svcOperation, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
-
- try {
- respProps = svcLogicClient
- .execute(VNF_API, svcOperation, null, "sync", vfModuleServiceDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic on vf-module for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
-
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", vfModuleServiceDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + svcOperation, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
|| input.getServiceInformation().getServiceInstanceId().length() == 0) {
log.debug(EXITING_STR + svcOperation + " because of invalid input, null or empty service-instance-id");
responseBuilder.setResponseCode("403");
- responseBuilder.setResponseMessage("invalid input, null or empty service-instance-id");
+ responseBuilder.setResponseMessage(INVALID_INPUT_NULL_OR_EMPTY_SERVICE_INSTANCE_ID);
responseBuilder.setAckFinalIndicator("Y");
RpcResult<VnfTopologyOperationOutput> rpcResult =
RpcResultBuilder.<VnfTopologyOperationOutput>status(true).withResult(responseBuilder.build()).build();
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
-
- try {
- respProps =
- svcLogicClient.execute(VNF_API, svcOperation, null, "sync", serviceDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", serviceDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + siid, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
|| input.getServiceInformation().getServiceInstanceId().length() == 0) {
log.debug(EXITING_STR + svcOperation + " because of invalid input, null or empty service-instance-id");
responseBuilder.setResponseCode("403");
- responseBuilder.setResponseMessage("invalid input, null or empty service-instance-id");
+ responseBuilder.setResponseMessage(INVALID_INPUT_NULL_OR_EMPTY_SERVICE_INSTANCE_ID);
responseBuilder.setAckFinalIndicator("Y");
RpcResult<NetworkTopologyOperationOutput> rpcResult =
RpcResultBuilder.<NetworkTopologyOperationOutput>status(true).withResult(responseBuilder.build())
|| input.getNetworkRequestInformation().getNetworkName() == null) {
log.debug(EXITING_STR + svcOperation + " because of invalid input, null or empty service-instance-id");
responseBuilder.setResponseCode("403");
- responseBuilder.setResponseMessage("invalid input, null or empty service-instance-id");
+ responseBuilder.setResponseMessage(INVALID_INPUT_NULL_OR_EMPTY_SERVICE_INSTANCE_ID);
responseBuilder.setAckFinalIndicator("Y");
RpcResult<NetworkTopologyOperationOutput> rpcResult =
RpcResultBuilder.<NetworkTopologyOperationOutput>status(true).withResult(responseBuilder.build())
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
-
- try {
- respProps =
- svcLogicClient.execute(VNF_API, svcOperation, null, "sync", preloadDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", preloadDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + svcOperation, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
if (preloadName == null || preloadName.length() == 0) {
log.debug(EXITING_STR + svcOperation + " because of invalid preload-name");
responseBuilder.setResponseCode("403");
- responseBuilder.setResponseMessage("invalid input, invalid preload-name");
+ responseBuilder.setResponseMessage(INVALID_INPUT_INVALID_PRELOAD_TYPE);
responseBuilder.setAckFinalIndicator("Y");
RpcResult<PreloadVnfTopologyOperationOutput> rpcResult =
RpcResultBuilder.<PreloadVnfTopologyOperationOutput>status(true).withResult(responseBuilder.build())
.build();
return Futures.immediateFuture(rpcResult);
}
+
if (preloadType == null || preloadType.length() == 0) {
log.debug(EXITING_STR + svcOperation + " because of invalid preload-type");
responseBuilder.setResponseCode("403");
- responseBuilder.setResponseMessage("invalid input, invalid preload-type");
+ responseBuilder.setResponseMessage(INVALID_INPUT_INVALID_PRELOAD_TYPE);
responseBuilder.setAckFinalIndicator("Y");
RpcResult<PreloadVnfTopologyOperationOutput> rpcResult =
RpcResultBuilder.<PreloadVnfTopologyOperationOutput>status(true).withResult(responseBuilder.build())
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
-
- try {
- respProps =
- svcLogicClient.execute(VNF_API, svcOperation, null, "sync", preloadDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", preloadDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + svcOperation, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
CAUGHT_EXCEPTION_STR + svcOperation + " [" + preloadName + "," + preloadType
+ "] \n", e);
}
- log.debug("Sending Success rpc result due to external error");
+ log.debug(SENDING_SUCCESS_RPC);
RpcResult<PreloadVnfTopologyOperationOutput> rpcResult =
RpcResultBuilder.<PreloadVnfTopologyOperationOutput>status(true).withResult(responseBuilder.build())
.build();
.withResult(responseBuilder.build()).build();
return Futures.immediateFuture(rpcResult);
}
+
if (preloadType == null || preloadType.length() == 0) {
log.debug(EXITING_STR + svcOperation + " because of invalid preload-type");
responseBuilder.setResponseCode("403");
VnfInstancePreloadDataBuilder vnfInstancePreloadDataBuilder = new VnfInstancePreloadDataBuilder();
getVnfInstancePreloadData(preloadName, preloadType, vnfInstancePreloadDataBuilder);
-
VnfInstancePreloadDataBuilder operDataBuilder = new VnfInstancePreloadDataBuilder();
getVnfInstancePreloadData(preloadName, preloadType, operDataBuilder, LogicalDatastoreType.OPERATIONAL);
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
-
- try {
- respProps = svcLogicClient
- .execute(VNF_API, svcOperation, null, "sync", vnfInstancePreloadDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", vnfInstancePreloadDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + svcOperation, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
CAUGHT_EXCEPTION_STR + svcOperation + " [" + preloadName + "," + preloadType
+ "] \n", e);
}
- log.debug("Sending Success rpc result due to external error");
+ log.debug(SENDING_SUCCESS_RPC);
RpcResult<PreloadVnfInstanceTopologyOperationOutput> rpcResult =
RpcResultBuilder.<PreloadVnfInstanceTopologyOperationOutput>status(true)
.withResult(responseBuilder.build()).build();
VfModulePreloadDataBuilder vfModulePreloadDataBuilder = new VfModulePreloadDataBuilder();
getVfModulePreloadData(preloadName, preloadType, vfModulePreloadDataBuilder);
-
VfModulePreloadDataBuilder operDataBuilder = new VfModulePreloadDataBuilder();
getVfModulePreloadData(preloadName, preloadType, operDataBuilder, LogicalDatastoreType.OPERATIONAL);
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
- try {
- respProps = svcLogicClient
- .execute(VNF_API, svcOperation, null, "sync", vfModulePreloadDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", vfModulePreloadDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + svcOperation, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
+
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
CAUGHT_EXCEPTION_STR + svcOperation + " [" + preloadName + "," + preloadType
+ "] \n", e);
}
- log.debug("Sending Success rpc result due to external error");
+ log.debug(SENDING_SUCCESS_RPC);
RpcResult<PreloadVfModuleTopologyOperationOutput> rpcResult =
RpcResultBuilder.<PreloadVfModuleTopologyOperationOutput>status(true)
.withResult(responseBuilder.build()).build();
return Futures.immediateFuture(rpcResult);
}
+
if (preloadType == null || preloadType.length() == 0) {
log.debug(EXITING_STR + svcOperation + " because of invalid preload-type");
responseBuilder.setResponseCode("403");
try {
if (svcLogicClient.hasGraph(VNF_API, svcOperation, null, "sync")) {
- try {
- respProps =
- svcLogicClient.execute(VNF_API, svcOperation, null, "sync", preloadDataBuilder, parms);
- } catch (Exception e) {
- log.error("Caught exception executing service logic for " + svcOperation, e);
- errorMessage = e.getMessage();
- errorCode = "500";
- }
+ respProps = svcLogicClient.execute(VNF_API, svcOperation, null, "sync", preloadDataBuilder, parms);
} else {
errorMessage = "No service logic active for VNF-API: '" + svcOperation + "'";
errorCode = "503";
}
+ } catch (SvcLogicException e) {
+ log.error("Caught exception executing service logic for " + svcOperation, e);
+ errorMessage = e.getMessage();
+ errorCode = "500";
} catch (Exception e) {
errorCode = "500";
errorMessage = e.getMessage();
+ "] \n", e);
}
- log.debug("Sending Success rpc result due to external error");
+ log.debug(SENDING_SUCCESS_RPC);
RpcResult<PreloadNetworkTopologyOperationOutput> rpcResult =
RpcResultBuilder.<PreloadNetworkTopologyOperationOutput>status(true).withResult(responseBuilder.build())
.build();