Add modify vnf feature on driver
[vfc/nfvo/driver/vnfm/svnfm.git] / nokia / vnfmdriver / vfcadaptorservice / vfcadaptor / src / main / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / adaptor / InstantiateVnfContinueRunnable.java
index 6fbb028..20c8bf5 100644 (file)
 
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.adaptor;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Executors;
 
-import org.apache.http.client.ClientProtocolException;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.catalog.bo.entity.VnfPackageInfo;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.catalog.inf.CatalogMgmrInf;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMInstantiateVnfRequest;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMInstantiateVnfResponse;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMModifyVnfRequest;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.inf.CbamMgmrInf;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.util.CommonUtil;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonEnum;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonEnum.LifecycleOperation;
@@ -35,14 +35,15 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.bean.VnfmJobExecutionInfo;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.db.repository.VnfmJobExecutionRepository;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client.HttpClientProcessorImpl;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.NslcmGrantVnfRequest;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.NslcmGrantVnfResponse;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.NslcmNotifyLCMEventsRequest;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.entity.AddResource;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.entity.ResourceDefinition;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.inf.NslcmMgmrInf;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.InstantiateVnfRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.zeroturnaround.zip.ZipUtil;
+
+import com.google.gson.Gson;
 
 
 public class InstantiateVnfContinueRunnable implements Runnable {
@@ -54,12 +55,15 @@ public class InstantiateVnfContinueRunnable implements Runnable {
        private InstantiateVnfRequest driverRequest;
        private String vnfInstanceId;
        private String jobId;
+       private String vnfmId;
        
        private VnfmJobExecutionRepository jobDbMgmr;
        
        private Driver2CbamRequestConverter requestConverter;
        
-       public InstantiateVnfContinueRunnable(InstantiateVnfRequest driverRequest, String vnfInstanceId, String jobId,
+       private Gson gson = new Gson();
+       
+       public InstantiateVnfContinueRunnable(String vnfmId, InstantiateVnfRequest driverRequest, String vnfInstanceId, String jobId,
                        NslcmMgmrInf nslcmMgmr, CatalogMgmrInf catalogMgmr, CbamMgmrInf cbamMgmr, Driver2CbamRequestConverter requestConverter, VnfmJobExecutionRepository dbManager)
        {
                this.driverRequest = driverRequest;
@@ -70,30 +74,66 @@ public class InstantiateVnfContinueRunnable implements Runnable {
                this.cbamMgmr = cbamMgmr;
                this.requestConverter = requestConverter;
                this.jobDbMgmr = dbManager;
+               this.vnfmId = vnfmId;
        }
        
        public void run() {
+               //step 1 handle vnf package
+               handleVnfPackage();
+               
+               handleGrant();
+               
+               handleModify();
                try {
-                       //step 1 handle vnf package
-                       handleVnfPackage();
-                       
-                       NslcmGrantVnfRequest grantRequest = buildNslcmGrantVnfRequest();
-                       NslcmGrantVnfResponse grantResponse = nslcmMgmr.grantVnf(grantRequest);
-                       
                        //step 5: instantiate vnf
-                       CBAMInstantiateVnfRequest  instantiateReq = requestConverter.InstantiateReqConvert(driverRequest, grantResponse, null, null);
-                       CBAMInstantiateVnfResponse cbamInstantiateResponse = cbamMgmr.instantiateVnf(instantiateReq, vnfInstanceId);
-                       handleCbamInstantiateResponse(cbamInstantiateResponse, jobId);
+                       CBAMInstantiateVnfResponse cbamInstantiateResponse = handleInstantiate();
                        
+                       handleNotify(cbamInstantiateResponse);
+               } catch (Exception e) {
+                       logger.error("InstantiateVnfContinueRunnable --> handleInstantiate or handleNotify error.", e);
+               }
+       }
+
+       private void handleNotify(CBAMInstantiateVnfResponse cbamInstantiateResponse) {
+               try {
                        NslcmNotifyLCMEventsRequest nslcmNotifyReq = buildNslcmNotifyLCMEventsRequest(cbamInstantiateResponse);
-                       nslcmMgmr.notifyVnf(nslcmNotifyReq, vnfInstanceId);
-                       
-               } catch (ClientProtocolException e) {
-                       logger.error("InstantiateVnfContinueRunnable run error ClientProtocolException", e);
-               } catch (IOException e) {
-                       logger.error("InstantiateVnfContinueRunnable run error IOException", e);
+                       nslcmMgmr.notifyVnf(nslcmNotifyReq, vnfmId, vnfInstanceId);
+               } catch (Exception e) {
+                       logger.error("InstantiateVnfContinueRunnable --> handleNotify error.", e);
+               }
+       }
+
+       private CBAMInstantiateVnfResponse handleInstantiate() throws Exception {
+               CBAMInstantiateVnfRequest  instantiateReq = requestConverter.instantiateRequestConvert(driverRequest, null, null, null);
+               CBAMInstantiateVnfResponse cbamInstantiateResponse = cbamMgmr.instantiateVnf(instantiateReq, vnfInstanceId);
+               handleCbamInstantiateResponse(cbamInstantiateResponse, jobId);
+               return cbamInstantiateResponse;
+       }
+
+       private void handleModify() {
+               try {
+                       CBAMModifyVnfRequest  modifyReq = generateModifyVnfRequest();
+                       cbamMgmr.modifyVnf(modifyReq, vnfInstanceId);
+               } catch (Exception e) {
+                       logger.error("InstantiateVnfContinueRunnable --> handleModify error.", e);
+               }
+       }
+
+       private void handleGrant(){
+               try {
+                       NslcmGrantVnfRequest grantRequest = buildNslcmGrantVnfRequest();
+                       nslcmMgmr.grantVnf(grantRequest);
+               } catch (Exception e) {
+                       logger.error("InstantiateVnfContinueRunnable --> handleGrant error.", e);
                }
+       }
+
+       private CBAMModifyVnfRequest generateModifyVnfRequest() throws IOException{
+               String filePath = "/etc/vnfpkginfo/cbam_extension.json";
+               String fileContent = CommonUtil.getJsonStrFromFile(filePath);
+               CBAMModifyVnfRequest req = gson.fromJson(fileContent, CBAMModifyVnfRequest.class);
                
+               return req;
        }
 
        private void handleVnfPackage() {
@@ -110,17 +150,16 @@ public class InstantiateVnfContinueRunnable implements Runnable {
                                        process.waitFor();
                                        
                                        if (HttpClientProcessorImpl.downLoadFromUrl(packageUrl, packageFileName, saveDir)) {
-                                               File csarFile = new File(saveDir + "/" + packageFileName);
-                                               //extract package
-                                               ZipUtil.explode(csarFile);
-                                               csarFile.delete();
-                                               String cbamPackageDirName = saveDir + "/" + packageFileName + "/Artifacts";
-                                               String cbamPackageName = new File(cbamPackageDirName).list()[0];
-                                               cbamMgmr.uploadVnfPackage(cbamPackageName);
-                                       } 
+                                               logger.info("handleVnfPackage download file " + packageUrl + " is successful.");
+//                                             File csarFile = new File(saveDir + "/" + packageFileName);
+//                                             //extract package
+//                                             ZipUtil.explode(csarFile);
+//                                             csarFile.delete();
+                                       }
                                } catch (Exception e) {
-                                       logger.error("Error to handleVnfPackage", e);
+                                       logger.error("Error to handleVnfPackage from SDC", e);
                                }
+                               
                        }
                        
                });
@@ -164,12 +203,21 @@ public class InstantiateVnfContinueRunnable implements Runnable {
        }
 
        private ResourceDefinition getFreeVnfResource() {
-               // TODO Auto-generated method stub
-               return null;
+               ResourceDefinition def = new ResourceDefinition();
+               def.setVnfInstanceId(vnfInstanceId);
+               def.setVimId("001");
+               List<AddResource> resources = new ArrayList<>();
+               AddResource res = new AddResource();
+               res.setVdu("1");
+               res.setType("vdu");
+               res.setResourceDefinitionId(2);
+               resources.add(res);
+               def.setAddResource(resources);
+               return def;
        }
 
        private void handleCbamInstantiateResponse(CBAMInstantiateVnfResponse cbamInstantiateResponse, String jobId) {
-               VnfmJobExecutionInfo jobInfo = jobDbMgmr.findOne(Long.getLong(jobId));
+               VnfmJobExecutionInfo jobInfo = jobDbMgmr.findOne(Long.parseLong(jobId));
                
                jobInfo.setVnfmExecutionId(cbamInstantiateResponse.getId());
                if(CommonEnum.OperationStatus.FAILED == cbamInstantiateResponse.getStatus()){
@@ -178,16 +226,4 @@ public class InstantiateVnfContinueRunnable implements Runnable {
                jobDbMgmr.save(jobInfo);
        }
 
-       public static void main(String[] argv) {
-               String saveDir = "D:/tmp/20170926/data";
-               String packageFileName = "vCSCF_v3.0.csar";
-               File csarFile = new File(saveDir + "/" + packageFileName);
-               ZipUtil.explode(csarFile);
-               csarFile.delete();
-               String cbamPackageDirName = saveDir + "/" + packageFileName + "/Artifacts";
-               String cbamPackageName = new File(cbamPackageDirName).list()[0];
-               System.out.println(cbamPackageName);
-               
-       }
-
 }