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.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+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.constant.CommonEnum.LifecycleOperation;
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.ResourceDefinition;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.entity.VnfPackageInfo;
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;
public class InstantiateVnfContinueRunnable implements Runnable {
- private static final Logger logger = LogManager.getLogger("InstantiateVnfContinueRunnable");
+ private static final Logger logger = LoggerFactory.getLogger(InstantiateVnfContinueRunnable.class);
private CbamMgmrInf cbamMgmr;
private CatalogMgmrInf catalogMgmr;
private NslcmMgmrInf nslcmMgmr;
public void run() {
try {
+ //step 1 handle vnf package
+ handleVnfPackage();
+
NslcmGrantVnfRequest grantRequest = buildNslcmGrantVnfRequest();
NslcmGrantVnfResponse grantResponse = nslcmMgmr.grantVnf(grantRequest);
- handleNslcmGrantResponse(grantResponse);
-
- //step 2: query vnfPackage uri
- VnfPackageInfo vnfPackageInfo = catalogMgmr.queryVnfPackage(driverRequest.getVnfPackageId());
//step 5: instantiate vnf
CBAMInstantiateVnfRequest instantiateReq = requestConverter.InstantiateReqConvert(driverRequest, grantResponse, null, null);
}
}
+
+ private void handleVnfPackage() {
+ Executors.newSingleThreadExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ //step 1: query vnfPackage uri -- download package -- extract it -- upload CBAM package to CBAM
+ VnfPackageInfo vnfPackageInfo = catalogMgmr.queryVnfPackage(driverRequest.getVnfPackageId());
+ String packageUrl = vnfPackageInfo.getDownloadUri();
+ String saveDir = "/service/vnfPackage";
+ String packageFileName = packageUrl.substring(packageUrl.lastIndexOf("/"));
+ Process process = Runtime.getRuntime().exec("mkdir -p " + saveDir);
+ 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);
+ }
+ } catch (Exception e) {
+ logger.error("Error to handleVnfPackage", e);
+ }
+ }
+
+ });
+ }
private NslcmNotifyLCMEventsRequest buildNslcmNotifyLCMEventsRequest(CBAMInstantiateVnfResponse cbamInstantiateResponse) {
NslcmNotifyLCMEventsRequest request = new NslcmNotifyLCMEventsRequest();
VnfmJobExecutionInfo jobInfo = jobDbMgmr.findOne(Long.getLong(jobId));
jobInfo.setVnfmExecutionId(cbamInstantiateResponse.getId());
+ if(CommonEnum.OperationStatus.FAILED == cbamInstantiateResponse.getStatus()){
+ jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_ERROR);
+ }
jobDbMgmr.save(jobInfo);
}
- private void handleNslcmGrantResponse(NslcmGrantVnfResponse grantResponse) {
- // TODO Auto-generated method stub
+ 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);
}