aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java')
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java38
1 files changed, 35 insertions, 3 deletions
diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java
index d63d122..fe0938d 100644
--- a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java
+++ b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java
@@ -24,6 +24,7 @@ import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem;
import org.onap.nbi.apis.serviceorder.model.StateType;
import org.onap.nbi.apis.serviceorder.model.consumer.CreateE2EServiceInstanceResponse;
+import org.onap.nbi.apis.serviceorder.model.consumer.CreateMacroServiceInstanceResponse;
import org.onap.nbi.apis.serviceorder.model.consumer.CreateServiceInstanceResponse;
import org.onap.nbi.apis.serviceorder.model.orchestrator.ExecutionTask;
import org.onap.nbi.apis.serviceorder.model.orchestrator.ServiceOrderInfo;
@@ -92,8 +93,10 @@ public class SOTaskProcessor {
updateE2EServiceOrderItem(response, serviceOrderItem, serviceOrder);
} else if (macroService) {
LOGGER.info("Mode type macro");
- //TODO: Add logic to construct SO macro request body and call SO macro flow.(EXTAPI-368)
-
+ // call SO macro flow.(EXTAPI-368)
+ ResponseEntity<CreateMacroServiceInstanceResponse> response = postSoProcessor
+ .postMacroServiceOrderItem(serviceOrderInfo, serviceOrderItem);
+ updateMacroServiceOrderItem(response, serviceOrderItem, serviceOrder);
} else {
ResponseEntity<CreateServiceInstanceResponse> response =
@@ -216,6 +219,35 @@ public class SOTaskProcessor {
}
}
+ /**
+ * Update ServiceOrderItem with SO response by using serviceOrderRepository with the serviceOrderId
+ */
+ private void updateMacroServiceOrderItem(ResponseEntity<CreateMacroServiceInstanceResponse> response,
+ ServiceOrderItem orderItem, ServiceOrder serviceOrder) {
+
+ if (response == null || !response.getStatusCode().is2xxSuccessful()) {
+ LOGGER.warn("response ko for serviceOrderItem.id=" + orderItem.getId());
+ serviceOrderService.updateOrderItemState(serviceOrder, orderItem, StateType.FAILED);
+ buildOrderMessageIfNeeded(orderItem, serviceOrder, response);
+ } else {
+ CreateMacroServiceInstanceResponse createMacroServiceInstanceResponse = response.getBody();
+ if (createMacroServiceInstanceResponse != null && !orderItem.getState().equals(StateType.FAILED)) {
+ orderItem.getService().setId(createMacroServiceInstanceResponse.getRequestReferences().getInstanceId());
+ orderItem.setRequestId(createMacroServiceInstanceResponse.getRequestReferences().getRequestId());
+ }
+
+ if (!response.getStatusCode().is2xxSuccessful() || response.getBody() == null
+ || response.getBody().getRequestReferences() == null) {
+ serviceOrderService.updateOrderItemState(serviceOrder, orderItem, StateType.FAILED);
+ LOGGER
+ .warn("order item {} failed , status {} , response {}", orderItem.getId(), response.getStatusCode(),
+ response.getBody());
+ } else {
+ serviceOrderService.updateOrderItemState(serviceOrder, orderItem, StateType.INPROGRESS);
+ }
+ }
+ }
+
private void updateOrderItemToInProgress(ServiceOrder serviceOrder, ServiceOrderItem serviceOrderItem) {
if (serviceOrderItem.getAction() != ActionType.MODIFY) {
serviceOrderService.updateOrderItemState(serviceOrder, serviceOrderItem, StateType.INPROGRESS);
@@ -341,4 +373,4 @@ public class SOTaskProcessor {
LOGGER.debug("Difference {} and Polling Duration {}", differenceInMillis, pollingDurationInMins);
return (differenceInMillis > pollingDurationInMillis);
}
-}
+} \ No newline at end of file