*/
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;
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) {
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() + "");
}
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());
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;
}
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;
+ }
+
}