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;