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.
17 package com.nokia.vfcadaptor.adaptor;
19 import java.io.IOException;
20 import java.util.ArrayList;
21 import java.util.List;
23 import org.apache.http.HttpStatus;
24 import org.apache.http.client.ClientProtocolException;
25 import org.apache.log4j.Logger;
26 import org.springframework.beans.factory.annotation.Autowired;
27 import org.springframework.stereotype.Component;
29 import com.nokia.vfcadaptor.catalog.inf.CatalogMgmrInf;
30 import com.nokia.vfcadaptor.cbam.bo.CBAMCreateVnfRequest;
31 import com.nokia.vfcadaptor.cbam.bo.CBAMCreateVnfResponse;
32 import com.nokia.vfcadaptor.cbam.bo.CBAMHealVnfRequest;
33 import com.nokia.vfcadaptor.cbam.bo.CBAMHealVnfResponse;
34 import com.nokia.vfcadaptor.cbam.bo.CBAMQueryVnfResponse;
35 import com.nokia.vfcadaptor.cbam.bo.CBAMScaleVnfRequest;
36 import com.nokia.vfcadaptor.cbam.bo.CBAMScaleVnfResponse;
37 import com.nokia.vfcadaptor.cbam.bo.CBAMTerminateVnfRequest;
38 import com.nokia.vfcadaptor.cbam.bo.CBAMTerminateVnfResponse;
39 import com.nokia.vfcadaptor.cbam.inf.CbamMgmrInf;
40 import com.nokia.vfcadaptor.constant.CommonConstants;
41 import com.nokia.vfcadaptor.exception.VnfmDriverException;
42 import com.nokia.vfcadaptor.nslcm.bo.NslcmGrantVnfRequest;
43 import com.nokia.vfcadaptor.nslcm.bo.NslcmGrantVnfResponse;
44 import com.nokia.vfcadaptor.nslcm.bo.VnfmInfo;
45 import com.nokia.vfcadaptor.nslcm.inf.NslcmMgmrInf;
46 import com.nokia.vfcadaptor.vnfmdriver.bo.HealVnfRequest;
47 import com.nokia.vfcadaptor.vnfmdriver.bo.HealVnfResponse;
48 import com.nokia.vfcadaptor.vnfmdriver.bo.InstantiateVnfRequest;
49 import com.nokia.vfcadaptor.vnfmdriver.bo.InstantiateVnfResponse;
50 import com.nokia.vfcadaptor.vnfmdriver.bo.OperStatusVnfResponse;
51 import com.nokia.vfcadaptor.vnfmdriver.bo.QueryVnfResponse;
52 import com.nokia.vfcadaptor.vnfmdriver.bo.ScaleVnfRequest;
53 import com.nokia.vfcadaptor.vnfmdriver.bo.ScaleVnfResponse;
54 import com.nokia.vfcadaptor.vnfmdriver.bo.TerminateVnfRequest;
55 import com.nokia.vfcadaptor.vnfmdriver.bo.TerminateVnfResponse;
56 import com.nokia.vfcadaptor.vnfmdriver.bo.entity.ResponseDescriptor;
57 import com.nokia.vfcadaptor.vnfmdriver.bo.entity.ResponseHistoryList;
58 import com.nokia.vfcadaptor.vnfmdriver.inf.VnfmDriverMgmrInf;
61 public class VnfmDriverMgmrIml implements VnfmDriverMgmrInf{
62 private Logger logger = Logger.getLogger(VnfmDriverMgmrIml.class);
65 Driver2CbamRequestConverter requestConverter;
68 Cbam2DriverResponseConverter responseConverter;
71 private CbamMgmrInf cbamMgmr;
74 private CatalogMgmrInf catalogMgmr;
77 private NslcmMgmrInf nslcmMgmr;
79 public InstantiateVnfResponse instantiateVnf(InstantiateVnfRequest driverRequest, String vnfmId) throws VnfmDriverException {
80 InstantiateVnfResponse driverResponse;
82 //step 1: query vnfm info
83 VnfmInfo vnfmInfo = nslcmMgmr.queryVnfm(vnfmId);
85 if(vnfmInfo == null || vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()))
87 throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
91 CBAMCreateVnfRequest cbamRequest = requestConverter.createrqConvert(driverRequest);
92 CBAMCreateVnfResponse cbamResponse = cbamMgmr.createVnf(cbamRequest);
93 driverResponse = responseConverter.createspConvert(cbamResponse);
95 String vnfInstanceId = driverResponse.getVnfInstanceId();
96 String jobId = driverResponse.getJobId();
97 continueInstantiateVnf(driverRequest, vnfInstanceId, jobId);
100 } catch (Exception e) {
101 throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
104 return driverResponse;
107 public void continueInstantiateVnf(InstantiateVnfRequest driverRequest, String vnfInstanceId, String jobId) {
108 InstantiateVnfContinueRunnable runnable = new InstantiateVnfContinueRunnable(driverRequest, vnfInstanceId, jobId,
109 nslcmMgmr, catalogMgmr, cbamMgmr, requestConverter);
111 Thread thread = new Thread(runnable);
116 public TerminateVnfResponse terminateVnf(TerminateVnfRequest driverRequest, String vnfmId, String vnfInstanceId) {
117 TerminateVnfResponse driverResponse;
119 nslcmMgmr.queryVnfm(vnfmId);
120 driverResponse = generateTerminateVnfResponse(vnfInstanceId);
121 continueTerminateVnf(driverRequest, vnfInstanceId);
123 } catch (Exception e) {
124 throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
127 return driverResponse;
130 private TerminateVnfResponse generateTerminateVnfResponse(String vnfInstanceId) {
131 TerminateVnfResponse response = new TerminateVnfResponse();
133 response.setJobId("");
137 public void continueTerminateVnf(TerminateVnfRequest driverRequest, String vnfInstanceId) {
138 TerminateVnfContinueRunnable runnable = new TerminateVnfContinueRunnable(driverRequest, vnfInstanceId,
139 nslcmMgmr, cbamMgmr, requestConverter);
141 Thread thread = new Thread(runnable);
147 public QueryVnfResponse queryVnf(String vnfmId, String vnfInstanceId) {
148 QueryVnfResponse driverResponse;
150 nslcmMgmr.queryVnfm(vnfmId);
151 CBAMQueryVnfResponse cbamResponse = cbamMgmr.queryVnf(vnfInstanceId);
152 driverResponse = responseConverter.queryspConvert(cbamResponse);
153 } catch (Exception e) {
154 throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
157 return driverResponse;
160 public OperStatusVnfResponse getOperStatus(String vnfmId, String jobId) {
161 OperStatusVnfResponse response = new OperStatusVnfResponse();
163 List<ResponseHistoryList> list=new ArrayList<ResponseHistoryList>();
164 ResponseHistoryList relist=new ResponseHistoryList();
165 relist.setErrorCode(41);
166 relist.setProgress(40);
167 relist.setResponseId(1);
168 relist.setStatus("proccessing");
169 relist.setStatusDescription("OMC VMs are decommissioned in VIM");
170 ResponseDescriptor res=new ResponseDescriptor();
171 res.setErrorCode(41);
173 res.setResponseId(1);
174 res.setStatus("proccessing");
175 res.setStatusDescription("OMC VMs are decommissioned in VIM");
176 for(int i=0; i<2;i++) {
177 relist.setProgress(4+i);
180 res.setResponseHistoryList(list);
182 response.setJobId("Jobid="+jobId);
183 response.setResponseDescriptor(res);
188 public ScaleVnfResponse scaleVnf(ScaleVnfRequest driverRequest, String vnfmId, String vnfInstanceId) throws VnfmDriverException {
189 ScaleVnfResponse driverResponse;
191 nslcmMgmr.queryVnfm(vnfmId);
192 CBAMScaleVnfRequest cbamRequest = requestConverter.scaleconvert(driverRequest);
193 CBAMScaleVnfResponse cbamResponse = cbamMgmr.scaleVnf(cbamRequest, vnfInstanceId);
194 driverResponse = responseConverter.scalespconvert(cbamResponse);
195 } catch (Exception e) {
196 throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
199 return driverResponse;
202 public HealVnfResponse healVnf(HealVnfRequest driverRequest, String vnfmId, String vnfInstanceId) throws VnfmDriverException {
203 HealVnfResponse driverResponse;
205 nslcmMgmr.queryVnfm(vnfmId);
206 CBAMHealVnfRequest cbamRequest = requestConverter.healconvert(driverRequest);
207 CBAMHealVnfResponse cbamResponse = cbamMgmr.healVnf(cbamRequest, vnfInstanceId);
208 driverResponse = responseConverter.healspconvert(cbamResponse);
209 } catch (Exception e) {
210 throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
213 return driverResponse;