2 * Copyright 2016-2017 Nokia Corporation
 
   4 * Licensed under the Apache License, Version 2.0 (the "License");
 
   5 * you may not use this file except in compliance with the License.
 
   6 * You may obtain a copy of the License at
 
   8 *     http://www.apache.org/licenses/LICENSE-2.0
 
  10 * Unless required by applicable law or agreed to in writing, software
 
  11 * distributed under the License is distributed on an "AS IS" BASIS,
 
  12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13 * See the License for the specific language governing permissions and
 
  14 * limitations under the License.
 
  16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.adaptor;
 
  18 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateVnfResponse;
 
  19 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMHealVnfResponse;
 
  20 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMQueryVnfResponse;
 
  21 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMScaleVnfResponse;
 
  22 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMTerminateVnfResponse;
 
  23 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.OperationExecution;
 
  24 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.OperationExecution.OperationType;
 
  25 import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.bo.AdaptorEnv;
 
  26 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants;
 
  27 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonEnum;
 
  28 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.ScaleType;
 
  29 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.bean.VnfmJobExecutionInfo;
 
  30 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.mapper.VnfmJobExecutionMapper;
 
  31 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.HealVnfResponse;
 
  32 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.InstantiateVnfResponse;
 
  33 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.OperStatusVnfResponse;
 
  34 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.QueryVnfResponse;
 
  35 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.ScaleVnfResponse;
 
  36 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.TerminateVnfResponse;
 
  37 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.entity.ResponseDescriptor;
 
  38 import org.slf4j.Logger;
 
  39 import org.slf4j.LoggerFactory;
 
  40 import org.springframework.beans.factory.annotation.Autowired;
 
  41 import org.springframework.stereotype.Component;
 
  44 public class Cbam2DriverResponseConverter {
 
  45         private static final Logger logger = LoggerFactory.getLogger(Cbam2DriverResponseConverter.class);
 
  47         private VnfmJobExecutionMapper jobDbManager;
 
  50         private AdaptorEnv adaptorEnv;
 
  52         public InstantiateVnfResponse createRspConvert(CBAMCreateVnfResponse cbamResponse, Long jobId) {
 
  54                 InstantiateVnfResponse response = new InstantiateVnfResponse();
 
  55                 response.setJobId(jobId.longValue() + "");
 
  56                 response.setVnfInstanceId(cbamResponse.getId());
 
  61         public TerminateVnfResponse terminateRspConvert(CBAMTerminateVnfResponse cbamResponse) {
 
  62                 VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
 
  63                 jobInfo.setVnfInstanceId(cbamResponse.getId());
 
  64                 jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_TERMINATE);
 
  65                 jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
 
  67                 jobDbManager.insert(jobInfo);
 
  68                 VnfmJobExecutionInfo jobInfo1 = (VnfmJobExecutionInfo) jobDbManager.findNewestJobInfo();
 
  69                 Long jobId = jobInfo1.getJobId();
 
  70                 TerminateVnfResponse response = new TerminateVnfResponse();
 
  71                 response.setJobId(jobId.longValue() + "");
 
  75         public QueryVnfResponse queryRspConvert(CBAMQueryVnfResponse cbamResponse) {
 
  76                 QueryVnfResponse vnf = new QueryVnfResponse();
 
  77                 vnf.setVnfdId(cbamResponse.getVnfdId());
 
  78                 vnf.setVersion(cbamResponse.getVnfdVersion());
 
  79                 vnf.setVnfInstanceId(cbamResponse.getId());
 
  80                 vnf.setVnfInstanceName(cbamResponse.getName());
 
  81                 vnf.setVnfInstanceDescription(cbamResponse.getDescription());
 
  82                 vnf.setVnfPackageId(cbamResponse.getOnboardedVnfPkgInfoId());
 
  83                 vnf.setVnfProvider(cbamResponse.getVnfProvider());
 
  84                 vnf.setVnfStatus(cbamResponse.getInstantiationState());
 
  85                 vnf.setVnfType(cbamResponse.getVnfSoftwareVersion());
 
  89         public OperStatusVnfResponse operRspConvert(OperationExecution oper, String jobId) {
 
  90                 OperStatusVnfResponse response = new OperStatusVnfResponse();
 
  91                 ResponseDescriptor er = new ResponseDescriptor();
 
  92                 if (oper.getStatus() == CommonEnum.OperationStatus.STARTED) {
 
  93                         er.setStatusDescription("Vim is processing");
 
  94                         er.setStatus("started");
 
  95                         int progress = calculateProgress(oper, jobId);
 
  97                         er.setProgress("" + progress);
 
  98                         er.setResponseId("" + +progress);
 
  99                 } else if (oper.getStatus() == CommonEnum.OperationStatus.FINISHED) {
 
 100                         er.setStatus("finished");
 
 101                         er.setProgress("100");
 
 102                         er.setResponseId("100");
 
 104                 } else if (oper.getStatus() == CommonEnum.OperationStatus.OTHER) {
 
 105                         er.setStatus("processing");
 
 106                         er.setStatusDescription("Vim is processing");
 
 108                         int progress = calculateProgress(oper, jobId);
 
 110                         er.setProgress("" + progress);
 
 111                         er.setResponseId("" + +progress);
 
 114                         er.setStatus("error");
 
 115                         er.setStatus("finished");
 
 116                         er.setProgress("100");
 
 117                         er.setResponseId("100");
 
 120                 er.setErrorCode("null");
 
 122                 response.setResponseDescriptor(er);
 
 126         public HealVnfResponse healRspConvert(CBAMHealVnfResponse cbamResponse) {
 
 127                 HealVnfResponse response = new HealVnfResponse();
 
 128                 response.setJobId("1");
 
 132         public ScaleVnfResponse scaleRspConvert(CBAMScaleVnfResponse cbamResponse,ScaleType type) {
 
 133                 VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
 
 134                 jobInfo.setVnfInstanceId(cbamResponse.getId());
 
 135                 if (type.equals(ScaleType.SCALE_OUT)) {
 
 136                         jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_SCALE_OUT);
 
 138                         jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_SCALE_IN);
 
 140                 jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
 
 142                 jobDbManager.insert(jobInfo);
 
 143                 VnfmJobExecutionInfo jobInfo1 = (VnfmJobExecutionInfo) jobDbManager.findNewestJobInfo();
 
 144                 Long jobId = jobInfo1.getJobId();
 
 145                 ScaleVnfResponse response = new ScaleVnfResponse();
 
 147                 response.setJobId(jobId.longValue() + "");
 
 151         public int calculateProgress(OperationExecution oper, String jobId) {
 
 152                 long nowTime = System.currentTimeMillis();
 
 153                 VnfmJobExecutionInfo jobInfo = jobDbManager.findOne(Long.parseLong(jobId));
 
 154                 int initialProgress = adaptorEnv.getInitialProgress();
 
 156                 if (OperationType.INSTANTIATE == oper.getOperationType()) {
 
 157                         double instantiateProgress = (nowTime - jobInfo.getOperateStartTime())
 
 158                                         / (double)(adaptorEnv.getInstantiateTimeInterval());
 
 159                         initialProgress = (int) (instantiateProgress + initialProgress);
 
 160                 } else if (OperationType.TERMINATE == oper.getOperationType()) {
 
 161                         double terminateProgress = (nowTime - jobInfo.getOperateStartTime())
 
 162                                         / (double)(adaptorEnv.getTerminateTimeInterval());
 
 163                         initialProgress = (int) (terminateProgress + initialProgress);
 
 167                 return initialProgress;
 
 171         public void setAdaptorEnv(AdaptorEnv adaptorEnv) {
 
 172                 this.adaptorEnv = adaptorEnv;