diff options
Diffstat (limited to 'bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnf/tasks/CnfAdapterCreateTasks.java')
-rw-r--r-- | bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnf/tasks/CnfAdapterCreateTasks.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnf/tasks/CnfAdapterCreateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnf/tasks/CnfAdapterCreateTasks.java index f49cf48ff5..2dda26718f 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnf/tasks/CnfAdapterCreateTasks.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnf/tasks/CnfAdapterCreateTasks.java @@ -35,6 +35,8 @@ import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey; import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext; import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB; import org.onap.so.client.adapter.cnf.CnfAdapterClient; +import org.onap.so.client.adapter.cnf.entities.CnfAaiUpdateRequest; +import org.onap.so.client.adapter.cnf.entities.CnfAaiUpdateResponse; import org.onap.so.client.adapter.cnf.entities.InstanceRequest; import org.onap.so.client.adapter.cnf.entities.InstanceResponse; import org.onap.so.client.adapter.vnf.mapper.AttributeNameValue; @@ -47,6 +49,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -54,6 +57,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class CnfAdapterCreateTasks { private static final Logger logger = LoggerFactory.getLogger(CnfAdapterCreateTasks.class); public static final String SDNCQUERY_RESPONSE = "SDNCQueryResponse_"; + private static final String CNF_ADAPTER_MESSAGE_TYPE = "CNFCallback"; + private static final String CNF_ADAPTER_CALLBACK_TIMEOUT = "PT30M"; @Autowired private ExtractPojosForBB extractPojosForBB; @@ -122,4 +127,80 @@ public class CnfAdapterCreateTasks { return request; } + public void prepareForCnfUpdateOrDelete(BuildingBlockExecution execution) { + + GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock(); + + String heatStackId = execution.getVariable("heatStackId"); + + logger.debug("heatStackId: {}", heatStackId); + CloudRegion cloudRegion = gBBInput.getCloudRegion(); + String requestId = execution.getVariable("mso-request-id"); + + String callbackUrl = + "http://so-bpmn-infra.onap:8081/mso/WorkflowMessage/" + CNF_ADAPTER_MESSAGE_TYPE + "/" + requestId; + + CnfAaiUpdateRequest aaiRequest = createCnfAaiUpdateRequest(heatStackId, cloudRegion, callbackUrl); + logger.debug("aaiRequest: {}", aaiRequest); + + String cnfRequestPayload = ""; + try { + cnfRequestPayload = mapper.writeValueAsString(aaiRequest); + } catch (JsonProcessingException e) { + logger.error("Exception occurred", e); + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, e); + } + + // Prepare values to pass in execution variable for CNF Adapter async Handling + execution.setVariable("messageType", CNF_ADAPTER_MESSAGE_TYPE); + execution.setVariable("correlator", requestId); + execution.setVariable("timeout", CNF_ADAPTER_CALLBACK_TIMEOUT); + + String currentFlow = execution.getFlowToBeCalled(); + logger.debug("currentFlow: {}", currentFlow); + + String apiPath = "http://so-cnf-adapter:8090"; + if ("CreateVfModuleBB".equals(currentFlow)) { + apiPath = apiPath + "/api/cnf-adapter/v1/aai-update/"; + } else if ("DeleteVfModuleBB".equals(currentFlow)) { + apiPath = apiPath + "/api/cnf-adapter/v1/aai-delete/"; + } + + // Set variables in execution variable\ + execution.setVariable("apiPath", apiPath); + execution.setVariable("cnfRequestPayload", cnfRequestPayload); + } + + public void processCnfUpdateOrDeleteAsyncResponse(BuildingBlockExecution execution) { + + String asyncResponse = execution.getVariable("asyncCallbackResponse"); + + CnfAaiUpdateResponse response = new CnfAaiUpdateResponse(); + + logger.debug("asyncResponse: {}", asyncResponse); + + try { + response = mapper.readValue(asyncResponse, CnfAaiUpdateResponse.class); + } catch (JsonProcessingException e) { + logger.error("Error in parsing Cnf AAI update Response"); + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, e); + } + + if (!"COMPLETED".equalsIgnoreCase(response.getStatus())) { + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, new RuntimeException("Cannot update in AAI")); + } + } + + protected CnfAaiUpdateRequest createCnfAaiUpdateRequest(String heatStackId, CloudRegion cloudRegion, + String callbackUrl) { + CnfAaiUpdateRequest request = new CnfAaiUpdateRequest(); + request.setCallbackUrl(callbackUrl); + request.setCloudOwner(cloudRegion.getCloudOwner()); + request.setCloudRegion(cloudRegion.getLcpCloudRegionId()); + request.setTenantId(cloudRegion.getTenantId()); + request.setInstanceId(heatStackId); + + return request; + } + } |