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;
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 {
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;
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);
- handleNslcmGrantResponse(grantResponse);
-
-
//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() {
String packageUrl = vnfPackageInfo.getDownloadUri();
String saveDir = "/service/vnfPackage";
String packageFileName = packageUrl.substring(packageUrl.lastIndexOf("/"));
- Process process = Runtime.getRuntime().exec("mkdir " + saveDir);
+ Process process = Runtime.getRuntime().exec("mkdir -p " + saveDir);
process.waitFor();
if (HttpClientProcessorImpl.downLoadFromUrl(packageUrl, packageFileName, saveDir)) {
- //extract package
- ZipUtil.unpack(new File(saveDir + "/" + packageFileName), new File(saveDir));
- //upload package
- String cbamPackageDirName = saveDir + "/"
- + packageFileName.substring(0, packageFileName.length() - 4) + "/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);
}
+
}
});
}
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()){
jobDbMgmr.save(jobInfo);
}
- private void handleNslcmGrantResponse(NslcmGrantVnfResponse grantResponse) {
- // TODO Auto-generated method stub
-
- }
-
}