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 / adaptorEnv.getInstantiateTimeInterval();
159 initialProgress = (int) (instantiateProgress + initialProgress);
160 } else if (OperationType.TERMINATE == oper.getOperationType()) {
161 double terminateProgress = (nowTime - jobInfo.getOperateStartTime())
162 / adaptorEnv.getTerminateTimeInterval();
163 initialProgress = (int) (terminateProgress + initialProgress);
167 return initialProgress;
171 public void setAdaptorEnv(AdaptorEnv adaptorEnv) {
172 this.adaptorEnv = adaptorEnv;