Search in sources :

Example 1 with E2EServiceInstanceDeleteRequest

use of org.onap.so.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceDeleteRequest in project so by onap.

the class E2EServiceInstances method deleteE2EserviceInstances.

private Response deleteE2EserviceInstances(String requestJSON, Action action, HashMap<String, String> instanceIdMap, String version) throws ApiException {
    // TODO should be a new one or the same service instance Id
    E2EServiceInstanceDeleteRequest e2eDelReq;
    ObjectMapper mapper = new ObjectMapper();
    try {
        e2eDelReq = mapper.readValue(requestJSON, E2EServiceInstanceDeleteRequest.class);
    } catch (Exception e) {
        logger.debug("Mapping of request to JSON object failed : ", e);
        Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST, MsoException.ServiceException, "Mapping of request to JSON object failed.  " + e.getMessage(), ErrorNumbers.SVC_BAD_PARAMETER, null, version);
        logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_REQUEST_VALIDATION_ERROR.toString(), MSO_PROP_APIHANDLER_INFRA, ErrorCode.SchemaError.getValue(), requestJSON, e);
        logger.debug(END_OF_THE_TRANSACTION + response.getEntity());
        return response;
    }
    String requestId = UUID.randomUUID().toString();
    RecipeLookupResult recipeLookupResult;
    try {
        // TODO Get the service template model version uuid from AAI.
        String modelVersionId = null;
        AAIResourcesClient client = new AAIResourcesClient();
        AAIResourceUri url = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(e2eDelReq.getGlobalSubscriberId()).serviceSubscription(e2eDelReq.getServiceType()).serviceInstance(instanceIdMap.get(SERVICE_ID)));
        Optional<ServiceInstance> serviceInstanceOpt = client.get(ServiceInstance.class, url);
        if (serviceInstanceOpt.isPresent()) {
            modelVersionId = serviceInstanceOpt.get().getModelVersionId();
        }
        recipeLookupResult = getServiceInstanceOrchestrationURI(modelVersionId, action);
    } catch (Exception e) {
        logger.error(MessageEnum.APIH_DB_ACCESS_EXC.toString(), MSO_PROP_APIHANDLER_INFRA, ErrorCode.AvailabilityError.getValue(), "Exception while communciate with Catalog DB", e);
        Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NOT_FOUND, MsoException.ServiceException, "No communication to catalog DB " + e.getMessage(), ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version);
        msoRequest.createErrorRequestRecord(Status.FAILED, requestId, "Exception while communciate with " + "Catalog DB", action, ModelType.service.name(), requestJSON, null, null);
        logger.debug(END_OF_THE_TRANSACTION + response.getEntity());
        return response;
    }
    if (recipeLookupResult == null) {
        logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_DB_ATTRIBUTE_NOT_FOUND.toString(), MSO_PROP_APIHANDLER_INFRA, ErrorCode.DataError.getValue(), "No recipe found in DB");
        Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NOT_FOUND, MsoException.ServiceException, "Recipe does not exist in catalog DB", ErrorNumbers.SVC_GENERAL_SERVICE_ERROR, null, version);
        msoRequest.createErrorRequestRecord(Status.FAILED, requestId, "Recipe does not exist in catalog DB", action, ModelType.service.name(), requestJSON, null, null);
        logger.debug(END_OF_THE_TRANSACTION + response.getEntity());
        return response;
    }
    String bpmnRequest = null;
    RequestClientParameter clientParam = null;
    try {
        JSONObject jjo = new JSONObject(requestJSON);
        jjo.put("operationId", requestId);
        bpmnRequest = jjo.toString();
        String serviceId = instanceIdMap.get(SERVICE_ID);
        String serviceInstanceType = e2eDelReq.getServiceType();
        clientParam = new RequestClientParameter.Builder().setRequestId(requestId).setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).setRequestAction(action.name()).setServiceInstanceId(serviceId).setServiceType(serviceInstanceType).setRequestDetails(bpmnRequest).setApiVersion(version).setALaCarte(false).setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build();
    } catch (Exception e) {
        Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(), ErrorNumbers.SVC_NO_SERVER_RESOURCES, null, version);
        logger.error(LoggingAnchor.FOUR, MessageEnum.APIH_BPEL_COMMUNICATE_ERROR.toString(), MSO_PROP_APIHANDLER_INFRA, ErrorCode.AvailabilityError.getValue(), "Exception while communicate with BPMN engine");
        logger.debug("End of the transaction, the final response is: " + resp.getEntity());
        return resp;
    }
    return postRequest(recipeLookupResult.getOrchestrationURI(), clientParam, version);
}
Also used : ResponseBuilder(org.onap.so.apihandler.common.ResponseBuilder) AAIFluentTypeBuilder(org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder) AAIResourceUri(org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri) ServiceInstance(org.onap.aai.domain.yang.v16.ServiceInstance) ApiException(org.onap.so.apihandlerinfra.exceptions.ApiException) BPMNFailureException(org.onap.so.apihandlerinfra.exceptions.BPMNFailureException) ValidateException(org.onap.so.apihandlerinfra.exceptions.ValidateException) IOException(java.io.IOException) RequestClientParameter(org.onap.so.apihandler.common.RequestClientParameter) CamundaResponse(org.onap.so.apihandler.camundabeans.CamundaResponse) GetE2EServiceInstanceResponse(org.onap.so.apihandlerinfra.e2eserviceinstancebeans.GetE2EServiceInstanceResponse) Response(javax.ws.rs.core.Response) ApiResponse(io.swagger.v3.oas.annotations.responses.ApiResponse) JSONObject(org.json.JSONObject) E2EServiceInstanceDeleteRequest(org.onap.so.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceDeleteRequest) AAIResourcesClient(org.onap.aaiclient.client.aai.AAIResourcesClient) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Aggregations

ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ApiResponse (io.swagger.v3.oas.annotations.responses.ApiResponse)1 IOException (java.io.IOException)1 Response (javax.ws.rs.core.Response)1 JSONObject (org.json.JSONObject)1 ServiceInstance (org.onap.aai.domain.yang.v16.ServiceInstance)1 AAIResourcesClient (org.onap.aaiclient.client.aai.AAIResourcesClient)1 AAIResourceUri (org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri)1 AAIFluentTypeBuilder (org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder)1 CamundaResponse (org.onap.so.apihandler.camundabeans.CamundaResponse)1 RequestClientParameter (org.onap.so.apihandler.common.RequestClientParameter)1 ResponseBuilder (org.onap.so.apihandler.common.ResponseBuilder)1 E2EServiceInstanceDeleteRequest (org.onap.so.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceDeleteRequest)1 GetE2EServiceInstanceResponse (org.onap.so.apihandlerinfra.e2eserviceinstancebeans.GetE2EServiceInstanceResponse)1 ApiException (org.onap.so.apihandlerinfra.exceptions.ApiException)1 BPMNFailureException (org.onap.so.apihandlerinfra.exceptions.BPMNFailureException)1 ValidateException (org.onap.so.apihandlerinfra.exceptions.ValidateException)1