Add unit test cases
[vfc/nfvo/driver/vnfm/svnfm.git] / nokia / vnfmdriver / vfcadaptorservice / vfcadaptor / src / main / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / adaptor / Cbam2DriverResponseConverter.java
1 /*
2 * Copyright 2016-2017 Nokia Corporation
3 *
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
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.adaptor;
17
18 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateSubscriptionResponse;
19 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateVnfResponse;
20 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMHealVnfResponse;
21 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMQueryVnfResponse;
22 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMScaleVnfResponse;
23 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMTerminateVnfResponse;
24 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.OperationExecution;
25 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.entity.OperationExecution.OperationType;
26 import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.bo.AdaptorEnv;
27 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants;
28 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonEnum;
29 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.ScaleType;
30 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.bean.VnfmJobExecutionInfo;
31 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.mapper.VnfmJobExecutionMapper;
32 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.CreateSubscriptionResponse;
33 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.HealVnfResponse;
34 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.InstantiateVnfResponse;
35 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.OperStatusVnfResponse;
36 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.QueryVnfResponse;
37 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.ScaleVnfResponse;
38 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.TerminateVnfResponse;
39 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.entity.ResponseDescriptor;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
42 import org.springframework.beans.factory.annotation.Autowired;
43 import org.springframework.stereotype.Component;
44
45 @Component
46 public class Cbam2DriverResponseConverter {
47         private static final Logger logger = LoggerFactory.getLogger(Cbam2DriverResponseConverter.class);
48         @Autowired
49         private VnfmJobExecutionMapper jobDbManager;
50
51         @Autowired
52         private AdaptorEnv adaptorEnv;
53
54         public InstantiateVnfResponse createRspConvert(CBAMCreateVnfResponse cbamResponse, Long jobId) {
55
56                 InstantiateVnfResponse response = new InstantiateVnfResponse();
57                 response.setJobId(jobId.longValue() + "");
58                 response.setVnfInstanceId(cbamResponse.getId());
59
60                 return response;
61         }
62
63         public TerminateVnfResponse terminateRspConvert(CBAMTerminateVnfResponse cbamResponse) {
64                 VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
65                 jobInfo.setVnfInstanceId(cbamResponse.getId());
66                 jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_TERMINATE);
67                 jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
68
69                 jobDbManager.insert(jobInfo);
70                 VnfmJobExecutionInfo jobInfo1 = jobDbManager.findNewestJobInfo();
71                 Long jobId = jobInfo1.getJobId();
72                 TerminateVnfResponse response = new TerminateVnfResponse();
73                 response.setJobId(jobId.longValue() + "");
74                 return response;
75         }
76
77         public QueryVnfResponse queryRspConvert(CBAMQueryVnfResponse cbamResponse) {
78                 QueryVnfResponse vnf = new QueryVnfResponse();
79                 vnf.setVnfdId(cbamResponse.getVnfdId());
80                 vnf.setVersion(cbamResponse.getVnfdVersion());
81                 vnf.setVnfInstanceId(cbamResponse.getId());
82                 vnf.setVnfInstanceName(cbamResponse.getName());
83                 vnf.setVnfInstanceDescription(cbamResponse.getDescription());
84                 vnf.setVnfPackageId(cbamResponse.getOnboardedVnfPkgInfoId());
85                 vnf.setVnfProvider(cbamResponse.getVnfProvider());
86                 vnf.setVnfStatus(cbamResponse.getInstantiationState());
87                 vnf.setVnfType(cbamResponse.getVnfSoftwareVersion());
88                 return vnf;
89         }
90
91         public OperStatusVnfResponse operRspConvert(OperationExecution oper, String jobId) {
92                 OperStatusVnfResponse response = new OperStatusVnfResponse();
93                 ResponseDescriptor er = new ResponseDescriptor();
94                 if (oper.getStatus() == CommonEnum.OperationStatus.STARTED) {
95                         er.setStatusDescription("Vim is processing");
96                         er.setStatus("started");
97                         int progress = calculateProgress(oper, jobId);
98
99                         er.setProgress("" + progress);
100                         er.setResponseId("" + +progress);
101                 } else if (oper.getStatus() == CommonEnum.OperationStatus.FINISHED) {
102                         er.setStatus("finished");
103                         er.setProgress("100");
104                         er.setResponseId("100");
105
106                 } else if (oper.getStatus() == CommonEnum.OperationStatus.OTHER) {
107                         er.setStatus("processing");
108                         er.setStatusDescription("Vim is processing");
109
110                         int progress = calculateProgress(oper, jobId);
111
112                         er.setProgress("" + progress);
113                         er.setResponseId("" + +progress);
114
115                 } else {
116                         er.setStatus("error");
117                         er.setStatus("finished");
118                         er.setProgress("100");
119                         er.setResponseId("100");
120                 }
121
122                 er.setErrorCode("null");
123
124                 response.setResponseDescriptor(er);
125                 return response;
126         }
127
128         public HealVnfResponse healRspConvert(CBAMHealVnfResponse cbamResponse) {
129                 VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
130                 jobInfo.setVnfInstanceId(cbamResponse.getId());
131                 jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
132                 jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_HEAL);
133                 
134                 jobDbManager.insert(jobInfo);
135                 VnfmJobExecutionInfo jobInfo1 = jobDbManager.findNewestJobInfo();
136                 Long jobId = jobInfo1.getJobId();
137                 
138                 HealVnfResponse response = new HealVnfResponse();
139                 response.setJobId(jobId.longValue() + "");
140                 return response;
141         }
142
143         public ScaleVnfResponse scaleRspConvert(CBAMScaleVnfResponse cbamResponse,ScaleType type) {
144                 VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
145                 jobInfo.setVnfInstanceId(cbamResponse.getId());
146                 if (type.equals(ScaleType.SCALE_OUT)) {
147                         jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_SCALE_OUT);
148                 } else {
149                         jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_SCALE_IN);
150                 }
151                 jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
152
153                 jobDbManager.insert(jobInfo);
154                 VnfmJobExecutionInfo jobInfo1 = jobDbManager.findNewestJobInfo();
155                 Long jobId = jobInfo1.getJobId();
156                 ScaleVnfResponse response = new ScaleVnfResponse();
157
158                 response.setJobId(jobId.longValue() + "");
159                 return response;
160         }
161
162         public int calculateProgress(OperationExecution oper, String jobId) {
163                 long nowTime = System.currentTimeMillis();
164                 VnfmJobExecutionInfo jobInfo = jobDbManager.findOne(Long.parseLong(jobId));
165                 int initialProgress = adaptorEnv.getInitialProgress();
166
167                 if (OperationType.INSTANTIATE == oper.getOperationType()) {
168                         double instantiateProgress = (nowTime - jobInfo.getOperateStartTime())
169                                         / (double)adaptorEnv.getInstantiateTimeInterval();
170                         initialProgress = (int) (instantiateProgress + initialProgress);
171                 } else if (OperationType.TERMINATE == oper.getOperationType()) {
172                         double terminateProgress = (nowTime - jobInfo.getOperateStartTime())
173                                         / (double)adaptorEnv.getTerminateTimeInterval();
174                         initialProgress = (int) (terminateProgress + initialProgress);
175                 } else {
176                         initialProgress = 0;
177                 }
178                 return initialProgress;
179
180         }
181
182         public void setAdaptorEnv(AdaptorEnv adaptorEnv) {
183                 this.adaptorEnv = adaptorEnv;
184         }
185
186         public CreateSubscriptionResponse queryRspConvert(CBAMCreateSubscriptionResponse cbamResponse) {
187                 CreateSubscriptionResponse response = new CreateSubscriptionResponse();
188                 
189                 response.set_links(cbamResponse.get_links());
190                 response.setId(cbamResponse.getId());
191                 response.setCallbackUri(cbamResponse.getCallbackUrl());
192                 response.setFilter(cbamResponse.getFilter());
193                 
194                 return response;
195         }
196
197 }