Saved vnfOperationalEnvironmentId to be used later
[so.git] / mso-api-handlers / mso-api-handler-infra / src / main / java / org / onap / so / apihandlerinfra / tenantisolation / process / ActivateVnfStatusOperationalEnvironment.java
index 66cfd34..c12828a 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * 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
@@ -22,38 +24,45 @@ package org.onap.so.apihandlerinfra.tenantisolation.process;
 
 
 import java.util.List;
+import java.util.Optional;
 
 import javax.ws.rs.core.Response;
 
 import org.apache.http.HttpStatus;
 import org.json.JSONObject;
+import org.onap.aai.domain.yang.OperationalEnvironment;
 import org.onap.so.apihandler.common.ErrorNumbers;
 import org.onap.so.db.request.client.RequestsDbClient;
 import org.onap.so.apihandlerinfra.exceptions.ApiException;
 import org.onap.so.apihandlerinfra.exceptions.ValidateException;
 import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo;
 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
+import org.onap.so.apihandlerinfra.tenantisolation.helpers.AAIClientHelper;
 import org.onap.so.apihandlerinfra.tenantisolation.helpers.ActivateVnfDBHelper;
 import org.onap.so.apihandlerinfra.tenantisolation.helpers.SDCClientHelper;
 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
+import org.onap.so.client.aai.entities.AAIResultWrapper;
 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
 import org.onap.so.logger.MessageEnum;
 import org.onap.so.logger.MsoLogger;
 import org.onap.so.requestsdb.RequestsDBHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
 public class ActivateVnfStatusOperationalEnvironment {
 
-       private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH, ActivateVnfStatusOperationalEnvironment.class);
+       private static Logger logger = LoggerFactory.getLogger(ActivateVnfStatusOperationalEnvironment.class);
        private String origRequestId = "";
        private String errorMessage = ""; 
        private OperationalEnvDistributionStatus queryDistributionDbResponse = null;
        private OperationalEnvServiceModelStatus queryServiceModelResponse = null;              
-
+       private boolean isOverallSuccess = false;
+       
        private final int RETRY_COUNT_ZERO = 0; 
        private final String ERROR_REASON_ABORTED = "ABORTED";
        private final String RECOVERY_ACTION_RETRY  = "RETRY";
@@ -73,6 +82,8 @@ public class ActivateVnfStatusOperationalEnvironment {
        private SDCClientHelper sdcClientHelper;                
        @Autowired
        private RequestsDbClient client;
+       @Autowired 
+       private AAIClientHelper aaiHelper;      
        
        /**
         * The Point-Of-Entry from APIH with activate status from SDC
@@ -82,26 +93,42 @@ public class ActivateVnfStatusOperationalEnvironment {
         */
        public void execute(String requestId, CloudOrchestrationRequest request) throws ApiException {
 
-
-               String operationalEnvironmentId = "";
+                try {
+               
+                       String operationalEnvironmentId = "";
 
                        String sdcDistributionId = request.getDistributionId();
                        Distribution sdcStatus = request.getDistribution();
 
-                       // Distribution, Query for operationalEnvironmentId, serviceModelVersionId
+                       // Distribution, Query for operationalEnvironmentId, serviceModelVersionId, origRequestId
                        this.queryDistributionDbResponse = client.getDistributionStatusById(sdcDistributionId);
                        operationalEnvironmentId = this.queryDistributionDbResponse.getOperationalEnvId();
+                       this.origRequestId = this.queryDistributionDbResponse.getRequestId();
                        
-                       // ServiceModel, Query for dbRequestId, recoveryAction, retryCountString
-                       this.queryServiceModelResponse = client.findOneByOperationalEnvIdAndServiceModelVersionId(operationalEnvironmentId, queryDistributionDbResponse.getServiceModelVersionId());
-                       this.origRequestId = this.queryServiceModelResponse.getRequestId();
-                       
+                       // ServiceModel, Query for recoveryAction, retryCountString
+                       this.queryServiceModelResponse = client.findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId(operationalEnvironmentId, queryDistributionDbResponse.getServiceModelVersionId(), this.origRequestId);
+
                        processActivateSDCStatus(sdcDistributionId, sdcStatus, this.queryDistributionDbResponse, this.queryServiceModelResponse);
                        
                        // After EVERY status processed, need to query the status of all service modelId 
                        //  to determine the OVERALL status if "COMPLETE" or "FAILURE":
                        checkOrUpdateOverallStatus(operationalEnvironmentId, this.origRequestId);                       
-
+           
+                       // Update AAI to ACTIVE if Overall success
+                       if (isOverallSuccess) {
+                               OperationalEnvironment aaiOpEnv = getAAIOperationalEnvironment(this.queryServiceModelResponse.getVnfOperationalEnvId());
+                               if (aaiOpEnv != null) {
+                                       aaiOpEnv.setOperationalEnvironmentStatus("ACTIVE");
+                                       aaiHelper.updateAaiOperationalEnvironment(operationalEnvironmentId, aaiOpEnv);
+                               }else {
+                                       requestDb.updateInfraFailureCompletion("Unable to update ACTIVATE status in AAI. ", this.origRequestId, this.queryServiceModelResponse.getVnfOperationalEnvId());
+                               }
+                       }
+                       
+                } catch(Exception e) {
+                   requestDb.updateInfraFailureCompletion(e.getMessage(), this.origRequestId, this.queryServiceModelResponse.getVnfOperationalEnvId());
+        }
+                       
        }
        
        /**
@@ -157,13 +184,11 @@ public class ActivateVnfStatusOperationalEnvironment {
                                                }
                                                
                                                sdcStatusValue = modifiedStatus;
-                                           // should update 1 row, modified status & retryCount set 0
                                                OperationalEnvServiceModelStatus updateRetryCountZeroAndStatus = 
                                                                dbHelper.updateRetryCountAndStatusInOperationalEnvServiceModelStatus(queryServiceModelResponse, 
                                                                                                                                                                                                         modifiedStatus, 
-                                                                                                                                                                                                        RETRY_COUNT_ZERO);                                             
+                                                                                                                                                                                                        RETRY_COUNT_ZERO);
                                                client.save(updateRetryCountZeroAndStatus);
-                                               // should update 1 row, modified status
                                                OperationalEnvDistributionStatus updateDistStatus = 
                                                                dbHelper.updateStatusInOperationalEnvDistributionStatus(queryDistributionDbResponse, 
                                                                                                                                                                                modifiedStatus,
@@ -273,6 +298,7 @@ public class ActivateVnfStatusOperationalEnvironment {
                
                if (status.equals("Completed") && queryServiceModelResponseList.size() == count) {
                        String messageStatus = "Overall Activation process is complete. " + status;
+                       isOverallSuccess = true;
                        requestDb.updateInfraSuccessCompletion(messageStatus, origRequestId, operationalEnvironmentId);
                } else {        
                        if (status.equals("Failure") && queryServiceModelResponseList.size() == count) {
@@ -286,4 +312,15 @@ public class ActivateVnfStatusOperationalEnvironment {
                        
                }       
        }
+       
+       /**
+        * Get OperationalEnvironment object
+        * @param  operationalEnvironmentId - String 
+        * @return operationalEnv - OperationalEnvironment object
+        */
+       private OperationalEnvironment getAAIOperationalEnvironment(String operationalEnvironmentId) {
+               AAIResultWrapper aaiResult = aaiHelper.getAaiOperationalEnvironment(operationalEnvironmentId);
+               Optional<OperationalEnvironment> operationalEnvironmentOpt = aaiResult.asBean(OperationalEnvironment.class);
+               return operationalEnvironmentOpt.isPresent() ? operationalEnvironmentOpt.get() : null;
+       }       
 }