VNFM adapter handle getOperation after VNF delete
[so.git] / adapters / mso-vnfm-adapter / mso-vnfm-etsi-adapter / src / main / java / org / onap / so / adapters / vnfmadapter / jobmanagement / JobManager.java
index b3552c7..537bb77 100644 (file)
@@ -84,42 +84,53 @@ public class JobManager {
             throw new JobNotFoundException("No job found with ID: " + jobId);
         }
 
-        final Optional<InlineResponse200> operationOptional =
-                vnfmServiceProvider.getOperation(vnfmOperation.getVnfmId(), vnfmOperation.getOperationId());
-        if (!operationOptional.isPresent()) {
-            return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.OPERATION_NOT_FOUND);
+        if (vnfmOperation.isVnfDeleted()) {
+            response.setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
+            return response.operationState(getOperationState(vnfmOperation, null));
         }
-        final InlineResponse200 operation = operationOptional.get();
 
-        logger.debug("Job Id: " + jobId + ", operationId: " + operation.getId() + ", operation details: " + operation);
+        try {
+            final Optional<InlineResponse200> operationOptional =
+                    vnfmServiceProvider.getOperation(vnfmOperation.getVnfmId(), vnfmOperation.getOperationId());
 
-        if (operation.getOperationState() == null) {
-            return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.WAITING_FOR_STATUS);
-        }
+            if (!operationOptional.isPresent()) {
+                return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.OPERATION_NOT_FOUND);
+            }
+            final InlineResponse200 operation = operationOptional.get();
+
+            logger.debug(
+                    "Job Id: " + jobId + ", operationId: " + operation.getId() + ", operation details: " + operation);
+
+            if (operation.getOperationState() == null) {
+                return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.WAITING_FOR_STATUS);
+            }
 
-        response.setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
-        response.setId(operation.getId());
-        response.setOperation(OperationEnum.fromValue(operation.getOperation().getValue()));
-        response.setOperationState(getOperationState(vnfmOperation, operation));
-        response.setStartTime(operation.getStartTime());
-        response.setStateEnteredTime(operation.getStateEnteredTime());
-        response.setVnfInstanceId(operation.getVnfInstanceId());
+            response.setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
+            response.setId(operation.getId());
+            response.setOperation(OperationEnum.fromValue(operation.getOperation().getValue()));
+            response.setOperationState(getOperationState(vnfmOperation, operation));
+            response.setStartTime(operation.getStartTime());
+            response.setStateEnteredTime(operation.getStateEnteredTime());
+            response.setVnfInstanceId(operation.getVnfInstanceId());
 
-        return response;
+            return response;
+        } catch (final Exception exception) {
+            logger.error("Exception encountered trying to get operation status for operation id "
+                    + vnfmOperation.getOperationId(), exception);
+            return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.WAITING_FOR_STATUS);
+        }
     }
 
     private OperationStateEnum getOperationState(final VnfmOperation vnfmOperation,
             final InlineResponse200 operationResponse) {
-        final OperationStateEnum operationState =
-                OperationStateEnum.fromValue(operationResponse.getOperationState().getValue());
         switch (vnfmOperation.getNotificationStatus()) {
             case NOTIFICATION_PROCESSING_NOT_REQUIRED:
             default:
-                return operationState;
+                return OperationStateEnum.fromValue(operationResponse.getOperationState().getValue());
             case NOTIFICATION_PROCESSING_PENDING:
                 return org.onap.vnfmadapter.v1.model.OperationStateEnum.PROCESSING;
             case NOTIFICATION_PROCEESING_SUCCESSFUL:
-                return operationState;
+                return org.onap.vnfmadapter.v1.model.OperationStateEnum.COMPLETED;
             case NOTIFICATION_PROCESSING_FAILED:
                 return org.onap.vnfmadapter.v1.model.OperationStateEnum.FAILED;
         }
@@ -138,4 +149,15 @@ public class JobManager {
         }
     }
 
+    public void vnfDeleted(final String operationId) {
+        logger.debug("VNF deleyed for operation ID {}", operationId);
+        final java.util.Optional<VnfmOperation> relatedOperation = mapOfJobIdToVnfmOperation.values().stream()
+                .filter(operation -> operation.getOperationId().equals(operationId)).findFirst();
+        if (relatedOperation.isPresent()) {
+            relatedOperation.get().setVnfDeleted();;
+        } else {
+            logger.debug("No operation found for operation ID " + operationId);
+        }
+    }
+
 }