aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java127
1 files changed, 104 insertions, 23 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
index b4806f1ce..339a9edd7 100644
--- a/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
@@ -1,47 +1,42 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2018 Nokia. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
package org.onap.vid.services;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import org.onap.vid.exceptions.GenericUncheckedException;
+import org.onap.vid.model.JobAuditStatus;
+import org.onap.vid.mso.MsoBusinessLogicImpl;
+import org.onap.vid.mso.MsoProperties;
+import org.onap.vid.mso.RestMsoImplementation;
+import org.onap.vid.mso.RestObject;
+import org.onap.vid.mso.rest.AsyncRequestStatus;
+import org.onap.vid.mso.rest.AsyncRequestStatusList;
import org.springframework.stereotype.Service;
import javax.inject.Inject;
import java.io.IOException;
+import java.util.List;
import java.util.UUID;
+import java.util.stream.Collectors;
@Service
public class AuditServiceImpl implements AuditService{
+ private final AsyncInstantiationBusinessLogic asyncInstantiationBL;
+ private final RestMsoImplementation restMso;
+
@Inject
- private AsyncInstantiationBusinessLogic asyncInstantiationBL;
- public static final String FAILED_MSO_REQUEST_STATUS = "FAILED";
+ public AuditServiceImpl(AsyncInstantiationBusinessLogic asyncInstantiationBL, RestMsoImplementation restMso) {
+ this.asyncInstantiationBL = asyncInstantiationBL;
+ this.restMso = restMso;
+ }
@Override
public void setFailedAuditStatusFromMso(UUID jobUuid, String requestId, int statusCode, String msoResponse){
+ final String failedMsoRequestStatus = "FAILED";
String additionalInfo = formatExceptionAdditionalInfo(statusCode, msoResponse);
- asyncInstantiationBL.auditMsoStatus(jobUuid, FAILED_MSO_REQUEST_STATUS, requestId, additionalInfo);
+ asyncInstantiationBL.auditMsoStatus(jobUuid, failedMsoRequestStatus, requestId, additionalInfo);
}
private String formatExceptionAdditionalInfo(int statusCode, String msoResponse) {
@@ -64,4 +59,90 @@ public class AuditServiceImpl implements AuditService{
}
return errorMsg;
}
+
+ @Override
+ public List<JobAuditStatus> getAuditStatusFromMsoByRequestId(UUID jobId, UUID requestId) {
+ String filter = "requestId:EQUALS:" + requestId;
+ return getAuditStatusFromMso(jobId, filter, null);
+ }
+
+ @Override
+ public List<JobAuditStatus> getAuditStatusFromMsoByServiceInstanceId(UUID jobId, UUID serviceInstanceId) {
+ String filter = "serviceInstanceId:EQUALS:" + serviceInstanceId;
+ return getAuditStatusFromMso(jobId, filter, serviceInstanceId);
+ }
+
+ @Override
+ public List<JobAuditStatus> getAuditStatusFromMsoByJobId(UUID jobId) {
+ List<JobAuditStatus> auditStatuses = asyncInstantiationBL.getAuditStatuses(jobId, JobAuditStatus.SourceStatus.MSO);
+ String instanceName = getInstanceNameFromServiceInfo(jobId);
+ auditStatuses.stream().forEach(status ->
+ status.setInstanceName(instanceName)
+ );
+ return auditStatuses;
+ }
+
+
+
+ private List<JobAuditStatus> getAuditStatusFromMso(UUID jobId, String filter, UUID serviceInstanceId) {
+
+ String path = MsoBusinessLogicImpl.validateEndpointPath(MsoProperties.MSO_REST_API_GET_ORC_REQS) + "filter=" + filter;
+ RestObject<AsyncRequestStatusList> msoResponse = restMso.GetForObject(path , AsyncRequestStatusList.class);
+ if (msoResponse.getStatusCode() >= 400 || msoResponse.get() == null) {
+ throw new BadResponseFromMso(msoResponse);
+ }
+
+ //add service name from service info for each audit status (in case that serviceInstanceId is null all statuses belong to service)
+ String userInstanceName = serviceInstanceId == null ? getInstanceNameFromServiceInfo(jobId): null;
+ return convertMsoResponseStatusToJobAuditStatus(msoResponse.get().getRequestList(), userInstanceName);
+ }
+
+ private String getInstanceNameFromServiceInfo(UUID jobId) {
+ return asyncInstantiationBL.getServiceInfoByJobId(jobId).getServiceInstanceName();
+ }
+
+ protected List<JobAuditStatus> convertMsoResponseStatusToJobAuditStatus(List<AsyncRequestStatus> msoStatuses, String defaultName){
+ return msoStatuses.stream().map(status -> {
+ UUID requestId = null;
+ String instanceName = defaultName;
+ String jobStatus = null;
+ String additionalInfo = null;
+ String created = null;
+ String instanceType = null;
+
+ AsyncRequestStatus.Request request = status.request;
+ if(request != null) {
+ requestId = UUID.fromString(request.requestId);
+ instanceName = extractInstanceName(instanceName, request);
+ instanceType = request.requestScope;
+ if(request.requestStatus != null) {
+ jobStatus = request.requestStatus.getRequestState();
+ additionalInfo = request.requestStatus.getStatusMessage();
+ if(!request.requestStatus.getAdditionalProperties().isEmpty()) {
+ created = request.requestStatus.getAdditionalProperties().get("finishTime") != null? request.requestStatus.getAdditionalProperties().get("finishTime").toString() : request.requestStatus.getTimestamp();
+ }
+ }
+ }
+ return new JobAuditStatus(instanceName, jobStatus, requestId, additionalInfo, created, instanceType);
+ }).collect(Collectors.toList());
+ }
+
+ private String extractInstanceName(String instanceName, AsyncRequestStatus.Request request) {
+ if(request.requestDetails != null && request.requestDetails.requestInfo != null && request.requestDetails.requestInfo.instanceName != null) {
+ instanceName = request.requestDetails.requestInfo.instanceName;
+ }
+ return instanceName;
+ }
+
+ public static class BadResponseFromMso extends RuntimeException {
+ private final RestObject<AsyncRequestStatusList> msoResponse;
+
+ public BadResponseFromMso(RestObject<AsyncRequestStatusList> msoResponse) {
+ this.msoResponse = msoResponse;
+ }
+
+ public RestObject<AsyncRequestStatusList> getMsoResponse() {
+ return msoResponse;
+ }
+ }
}