aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java69
1 files changed, 59 insertions, 10 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java b/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java
index 081e3c640..01b005c4b 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,25 +20,28 @@
package org.onap.vid.controller;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.vid.exceptions.AccessDeniedException;
import org.onap.vid.exceptions.OperationNotAllowedException;
import org.onap.vid.model.ExceptionResponse;
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.properties.Features;
+import org.onap.vid.roles.RoleProvider;
import org.onap.vid.services.AsyncInstantiationBusinessLogic;
import org.onap.vid.services.AuditService;
import org.onap.vid.utils.SystemPropertiesWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.togglz.core.manager.FeatureManager;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.UUID;
+import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER;
import static org.springframework.http.HttpStatus.METHOD_NOT_ALLOWED;
@@ -51,14 +54,18 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
protected final AsyncInstantiationBusinessLogic asyncInstantiationBL;
private final SystemPropertiesWrapper systemPropertiesWrapper;
- protected ObjectMapper objectMapper = new ObjectMapper();
+ private final RoleProvider roleProvider;
+
+ private final FeatureManager featureManager;
@Autowired
protected AuditService auditService;
@Autowired
- public AsyncInstantiationController(AsyncInstantiationBusinessLogic asyncInstantiationBL, SystemPropertiesWrapper systemPropertiesWrapper) {
+ public AsyncInstantiationController(AsyncInstantiationBusinessLogic asyncInstantiationBL, RoleProvider roleProvider, FeatureManager featureManager, SystemPropertiesWrapper systemPropertiesWrapper) {
this.asyncInstantiationBL = asyncInstantiationBL;
+ this.roleProvider = roleProvider;
+ this.featureManager = featureManager;
this.systemPropertiesWrapper = systemPropertiesWrapper;
}
@@ -82,14 +89,25 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
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));
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "incoming ServiceInstantiation request: "+ JACKSON_OBJECT_MAPPER.writeValueAsString(request));
}
catch (Exception e) {
LOGGER.error(EELFLoggerDelegate.errorLogger, "failed to log incoming ServiceInstantiation request ", e);
}
String userId = new ControllersUtils(systemPropertiesWrapper).extractUserId(httpServletRequest);
- List<UUID> uuids = asyncInstantiationBL.pushBulkJob(request, userId);
+ throwExceptionIfAccessDenied(request, httpServletRequest, userId);
+ List<UUID> uuids = asyncInstantiationBL.pushBulkJob(request, userId);
+ return new MsoResponseWrapper2(200, uuids);
+ }
+
+
+
+ @RequestMapping(value = "retryJobWithChangedData/{jobId}", method = RequestMethod.POST)
+ public MsoResponseWrapper2<List<String>> retryJobWithChangedData(@RequestBody ServiceInstantiation request, @PathVariable(value="jobId") UUID jobId, HttpServletRequest httpServletRequest) {
+
+ String userId = new ControllersUtils(systemPropertiesWrapper).extractUserId(httpServletRequest);
+ List<UUID> uuids = asyncInstantiationBL.retryJob(request, jobId, userId);
return new MsoResponseWrapper2(200, uuids);
}
@@ -105,7 +123,7 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
@RequestMapping(value = "auditStatus/{jobId}", method = RequestMethod.GET)
public List<JobAuditStatus> getJobAuditStatus(HttpServletRequest request, @PathVariable(value="jobId") UUID jobId, @RequestParam(value="source") JobAuditStatus.SourceStatus source){
- return asyncInstantiationBL.getAuditStatuses(jobId, source);
+ return auditService.getAuditStatuses(jobId, source);
}
@RequestMapping(value = "auditStatus/{jobId}/mso", method = RequestMethod.GET)
@@ -114,7 +132,7 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
@RequestParam(value="requestId", required = false) UUID requestId,
@RequestParam(value="serviceInstanceId", required = false) UUID serviceInstanceId){
if (serviceInstanceId != null) {
- return auditService.getAuditStatusFromMsoByServiceInstanceId(jobId, serviceInstanceId);
+ return auditService.getAuditStatusFromMsoByInstanceId(JobAuditStatus.ResourceTypeFilter.SERVICE, serviceInstanceId, jobId);
}
if (requestId != null){
return auditService.getAuditStatusFromMsoByRequestId(jobId, requestId);
@@ -123,5 +141,36 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
}
+ @RequestMapping(value = "auditStatus/{type}/{instanceId}/mso", method = RequestMethod.GET)
+ public List<JobAuditStatus> getAuditStatusFromMsoByInstanceId(HttpServletRequest request,
+ @PathVariable(value="type") JobAuditStatus.ResourceTypeFilter resourceTypeFilter,
+ @PathVariable(value="instanceId") UUID instanceId) {
+ return auditService.getAuditStatusFromMsoByInstanceId(resourceTypeFilter, instanceId, null);
+ }
+
+ @RequestMapping(value = "/bulkForRetry/{jobId}", method = RequestMethod.GET)
+ public ServiceInstantiation getBulkForRetry(HttpServletRequest request, @PathVariable(value="jobId") UUID jobId) {
+ return asyncInstantiationBL.getBulkForRetry(jobId);
+ }
+
+ @RequestMapping(value = "retry/{jobId}", method = RequestMethod.POST)
+ public MsoResponseWrapper2<List<UUID>> retryJobRequest(HttpServletRequest httpServletRequest,
+ @PathVariable(value="jobId") UUID jobId) {
+
+ String userId = new ControllersUtils(systemPropertiesWrapper).extractUserId(httpServletRequest);
+ List<UUID> uuids = asyncInstantiationBL.retryJob(jobId, userId);
+ return new MsoResponseWrapper2(200, uuids);
+ }
+
+ @RequestMapping(value = "/auditStatusForRetry/{trackById}", method = RequestMethod.GET)
+ public JobAuditStatus getResourceAuditStatus(HttpServletRequest request, @PathVariable(value="trackById") String trackById) {
+ return auditService.getResourceAuditStatus(trackById);
+ }
+
+ private void throwExceptionIfAccessDenied(ServiceInstantiation request, HttpServletRequest httpServletRequest, String userId) {
+ if (featureManager.isActive(Features.FLAG_1906_INSTANTIATION_API_USER_VALIDATION) && !roleProvider.getUserRolesValidator(httpServletRequest).isServicePermitted(request.getGlobalSubscriberId(), request.getSubscriptionServiceType())) {
+ throw new AccessDeniedException(String.format("User %s is not allowed to make this request", userId));
+ }
+ }
}