Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / controller / AsyncInstantiationController.java
@@ -1,22 +1,23 @@
-package org.onap.vid.controllers;
+package org.onap.vid.controller;
 
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.vid.exceptions.OperationNotAllowedException;
 import org.onap.vid.model.ExceptionResponse;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.exception.ExceptionUtils;
-
 import org.onap.vid.model.JobAuditStatus;
 import org.onap.vid.model.ServiceInfo;
 import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
 import org.onap.vid.mso.MsoResponseWrapper2;
 import org.onap.vid.services.AsyncInstantiationBusinessLogic;
+import org.onap.vid.services.AuditService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.UUID;
+
 import static org.springframework.http.HttpStatus.METHOD_NOT_ALLOWED;
 
 
@@ -28,6 +29,11 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
 
     protected final AsyncInstantiationBusinessLogic asyncInstantiationBL;
 
+    protected ObjectMapper objectMapper = new ObjectMapper();
+
+    @Autowired
+    protected AuditService auditService;
+
     @Autowired
     public AsyncInstantiationController(AsyncInstantiationBusinessLogic asyncInstantiationBL) {
         this.asyncInstantiationBL = asyncInstantiationBL;
@@ -52,7 +58,12 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
     @RequestMapping(value = "bulk", method = RequestMethod.POST)
     public MsoResponseWrapper2<List<String>> createBulkOfServices(@RequestBody ServiceInstantiation request, HttpServletRequest httpServletRequest) {
         //Push to DB according the model
-
+        try {
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "incoming ServiceInstantiation request: "+ objectMapper.writeValueAsString(request));
+        }
+        catch (Exception e) {
+            LOGGER.error(EELFLoggerDelegate.errorLogger, "failed to log incoming ServiceInstantiation request ", e);
+        }
         String userId = ControllersUtils.extractUserId(httpServletRequest);
         List<UUID> uuids =  asyncInstantiationBL.pushBulkJob(request, userId);
 
@@ -74,5 +85,20 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
         return asyncInstantiationBL.getAuditStatuses(jobId, source);
     }
 
+    @RequestMapping(value = "auditStatus/{jobId}/mso", method = RequestMethod.GET)
+    public List<JobAuditStatus> getJobMsoAuditStatusForAlaCarte(HttpServletRequest request,
+                                                                @PathVariable(value="jobId") UUID jobId,
+                                                                @RequestParam(value="requestId", required = false) UUID requestId,
+                                                                @RequestParam(value="serviceInstanceId", required = false) UUID serviceInstanceId){
+        if (serviceInstanceId != null) {
+            return auditService.getAuditStatusFromMsoByServiceInstanceId(jobId, serviceInstanceId);
+        }
+        if (requestId != null){
+            return auditService.getAuditStatusFromMsoByRequestId(jobId, requestId);
+        }
+        return auditService.getAuditStatusFromMsoByJobId(jobId);
+
+    }
+
 
 }