improve code coverage and update log directory
[vfc/nfvo/driver/vnfm/svnfm.git] / nokia / vnfmdriver / vfcadaptorservice / vfcadaptor / src / main / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / adaptor / Cbam2DriverResponseConverter.java
index b79104f..9f39c18 100644 (file)
 */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.adaptor;
 
-import java.util.ArrayList;
-import java.util.List;
-
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateSubscriptionResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMHealVnfResponse;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMInstantiateVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMQueryVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMScaleVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMTerminateVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.OperationExecution;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.OperationExecution.OperationType;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.bo.AdaptorEnv;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonEnum;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.ScaleType;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.bean.VnfmJobExecutionInfo;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.repository.VnfmJobExecutionRepository;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.mapper.VnfmJobExecutionMapper;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.CreateSubscriptionResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.HealVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.InstantiateVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.OperStatusVnfResponse;
@@ -35,16 +37,19 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.QueryVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.ScaleVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.TerminateVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.entity.ResponseDescriptor;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.entity.ResponseHistoryList;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.entity.VnfInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
 public class Cbam2DriverResponseConverter {
+       private static final Logger logger = LoggerFactory.getLogger(Cbam2DriverResponseConverter.class);
+       @Autowired
+       private VnfmJobExecutionMapper jobDbManager;
 
        @Autowired
-       private VnfmJobExecutionRepository jobDbManager;
+       private AdaptorEnv adaptorEnv;
 
        public InstantiateVnfResponse createRspConvert(CBAMCreateVnfResponse cbamResponse, Long jobId) {
 
@@ -55,24 +60,14 @@ public class Cbam2DriverResponseConverter {
                return response;
        }
 
-       public InstantiateVnfResponse instantiateRspConvert(CBAMInstantiateVnfResponse cbamResponse) {
-               InstantiateVnfResponse response = new InstantiateVnfResponse();
-
-               VnfmJobExecutionInfo jobInfo = jobDbManager.findOne(Long.getLong(cbamResponse.getId()));
-
-               response.setJobId("1");
-
-               response.setVnfInstanceId("");
-               return response;
-       }
-
        public TerminateVnfResponse terminateRspConvert(CBAMTerminateVnfResponse cbamResponse) {
                VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
                jobInfo.setVnfInstanceId(cbamResponse.getId());
                jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_TERMINATE);
                jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
 
-               VnfmJobExecutionInfo jobInfo1 = (VnfmJobExecutionInfo) jobDbManager.save(jobInfo);
+               jobDbManager.insert(jobInfo);
+               VnfmJobExecutionInfo jobInfo1 = (VnfmJobExecutionInfo) jobDbManager.findNewestJobInfo();
                Long jobId = jobInfo1.getJobId();
                TerminateVnfResponse response = new TerminateVnfResponse();
                response.setJobId(jobId.longValue() + "");
@@ -80,8 +75,7 @@ public class Cbam2DriverResponseConverter {
        }
 
        public QueryVnfResponse queryRspConvert(CBAMQueryVnfResponse cbamResponse) {
-               QueryVnfResponse response = new QueryVnfResponse();
-               VnfInfo vnf = new VnfInfo();
+               QueryVnfResponse vnf = new QueryVnfResponse();
                vnf.setVnfdId(cbamResponse.getVnfdId());
                vnf.setVersion(cbamResponse.getVnfdVersion());
                vnf.setVnfInstanceId(cbamResponse.getId());
@@ -91,39 +85,42 @@ public class Cbam2DriverResponseConverter {
                vnf.setVnfProvider(cbamResponse.getVnfProvider());
                vnf.setVnfStatus(cbamResponse.getInstantiationState());
                vnf.setVnfType(cbamResponse.getVnfSoftwareVersion());
-               return response;
+               return vnf;
        }
 
-       public OperStatusVnfResponse operRspConvert(OperationExecution oper) {
-
+       public OperStatusVnfResponse operRspConvert(OperationExecution oper, String jobId) {
                OperStatusVnfResponse response = new OperStatusVnfResponse();
-
-               response.setJobId(oper.getId());
                ResponseDescriptor er = new ResponseDescriptor();
-               // TODO er.setProgress(i);
-               if (oper.getStatus().equals("STARTED")) {
+               if (oper.getStatus() == CommonEnum.OperationStatus.STARTED) {
+                       er.setStatusDescription("Vim is processing");
                        er.setStatus("started");
-               } else if (oper.getStatus().equals("FINISHED")) {
+                       int progress = calculateProgress(oper, jobId);
+
+                       er.setProgress("" + progress);
+                       er.setResponseId("" + +progress);
+               } else if (oper.getStatus() == CommonEnum.OperationStatus.FINISHED) {
                        er.setStatus("finished");
-               } else if (oper.getStatus().equals("FAILED")) {
-                       er.setStatus("error");
-               } else if (oper.getStatus().equals("OTHER")) {
+                       er.setProgress("100");
+                       er.setResponseId("100");
+
+               } else if (oper.getStatus() == CommonEnum.OperationStatus.OTHER) {
                        er.setStatus("processing");
+                       er.setStatusDescription("Vim is processing");
+
+                       int progress = calculateProgress(oper, jobId);
+
+                       er.setProgress("" + progress);
+                       er.setResponseId("" + +progress);
+
                } else {
                        er.setStatus("error");
+                       er.setStatus("finished");
+                       er.setProgress("100");
+                       er.setResponseId("100");
                }
-               er.setStatusDescription("");
-               er.setErrorCode(null);
-               er.setResponseId(oper.getGrantId().hashCode());
-               List<ResponseHistoryList> list = new ArrayList<ResponseHistoryList>();
-               ResponseHistoryList relist = new ResponseHistoryList();
-               // TODO relist.setProgress(i);
-               relist.setStatus(er.getStatus());
-               relist.setStatusDescription("");
-               relist.setErrorCode(null);
-               relist.setResponseId(er.getResponseId());
-               list.add(relist);
-               er.setResponseHistoryList(list);
+
+               er.setErrorCode("null");
+
                response.setResponseDescriptor(er);
                return response;
        }
@@ -134,9 +131,59 @@ public class Cbam2DriverResponseConverter {
                return response;
        }
 
-       public ScaleVnfResponse scaleRspConvert(CBAMScaleVnfResponse cbamResponse) {
+       public ScaleVnfResponse scaleRspConvert(CBAMScaleVnfResponse cbamResponse,ScaleType type) {
+               VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
+               jobInfo.setVnfInstanceId(cbamResponse.getId());
+               if (type.equals(ScaleType.SCALE_OUT)) {
+                       jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_SCALE_OUT);
+               } else {
+                       jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_SCALE_IN);
+               }
+               jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
+
+               jobDbManager.insert(jobInfo);
+               VnfmJobExecutionInfo jobInfo1 = (VnfmJobExecutionInfo) jobDbManager.findNewestJobInfo();
+               Long jobId = jobInfo1.getJobId();
                ScaleVnfResponse response = new ScaleVnfResponse();
-               response.setJobId("1");
+
+               response.setJobId(jobId.longValue() + "");
                return response;
        }
+
+       public int calculateProgress(OperationExecution oper, String jobId) {
+               long nowTime = System.currentTimeMillis();
+               VnfmJobExecutionInfo jobInfo = jobDbManager.findOne(Long.parseLong(jobId));
+               int initialProgress = adaptorEnv.getInitialProgress();
+
+               if (OperationType.INSTANTIATE == oper.getOperationType()) {
+                       double instantiateProgress = (nowTime - jobInfo.getOperateStartTime())
+                                       / adaptorEnv.getInstantiateTimeInterval();
+                       initialProgress = (int) (instantiateProgress + initialProgress);
+               } else if (OperationType.TERMINATE == oper.getOperationType()) {
+                       double terminateProgress = (nowTime - jobInfo.getOperateStartTime())
+                                       / adaptorEnv.getTerminateTimeInterval();
+                       initialProgress = (int) (terminateProgress + initialProgress);
+               } else {
+                       initialProgress = 0;
+               }
+               return initialProgress;
+
+       }
+
+       public void setAdaptorEnv(AdaptorEnv adaptorEnv) {
+               this.adaptorEnv = adaptorEnv;
+       }
+
+       public CreateSubscriptionResponse queryRspConvert(CBAMCreateSubscriptionResponse cbamResponse) {
+               CreateSubscriptionResponse response = new CreateSubscriptionResponse();
+               
+               response.set_links(cbamResponse.get_links());
+               response.setId(cbamResponse.getId());
+               response.setCallbackUri(cbamResponse.getCallbackUrl());
+               response.setCallbackUrl(cbamResponse.getCallbackUrl());
+               response.setFilter(cbamResponse.getFilter());
+               
+               return response;
+       }
+
 }