package org.onap.vfc.nfvo.driver.vnfm.svnfm.adaptor;
+import java.io.IOException;
+
import org.apache.http.HttpStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.http.client.ClientProtocolException;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.aai.bo.AaiVnfmInfo;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.aai.bo.entity.EsrSystemInfo;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.aai.inf.AaiMgmrInf;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.catalog.inf.CatalogMgmrInf;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateVnfRequest;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMCreateVnfResponse;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMScaleVnfRequest;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.bo.CBAMScaleVnfResponse;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.cbam.inf.CbamMgmrInf;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.bo.AdaptorEnv;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants;
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.exception.VnfmDriverException;
-import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.bo.VnfmInfo;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nslcm.inf.NslcmMgmrInf;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.HealVnfRequest;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.HealVnfResponse;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.ScaleVnfResponse;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.TerminateVnfRequest;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.bo.TerminateVnfResponse;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.inf.VnfContinueProcessorInf;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.vnfmdriver.inf.VnfmDriverMgmrInf;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import com.google.gson.Gson;
+
@Component
public class VnfmDriverMgmrImpl implements VnfmDriverMgmrInf{
@Autowired
private NslcmMgmrInf nslcmMgmr;
+ @Autowired
+ private AaiMgmrInf aaiMgmr;
+
@Autowired
private VnfmJobExecutionRepository jobDbManager;
+ @Autowired
+ AdaptorEnv adaptorEnv;
+
+ @Autowired
+ private VnfContinueProcessorInf vnfContinueProcessorInf;
+
+ private Gson gson = new Gson();
+
public InstantiateVnfResponse instantiateVnf(InstantiateVnfRequest driverRequest, String vnfmId) throws VnfmDriverException {
InstantiateVnfResponse driverResponse;
try {
- //step 1: query vnfm info
- VnfmInfo vnfmInfo = nslcmMgmr.queryVnfm(vnfmId);
-
- if(vnfmInfo == null || vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()))
- {
- throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
- }
+ buildVnfmHttpPathById(vnfmId);
//step 3: create vnf
CBAMCreateVnfRequest cbamRequest = requestConverter.createReqConvert(driverRequest);
CBAMCreateVnfResponse cbamResponse = cbamMgmr.createVnf(cbamRequest);
- driverResponse = responseConverter.createRspConvert(cbamResponse);
-
- String vnfInstanceId = driverResponse.getVnfInstanceId();
- String jobId = driverResponse.getJobId();
- continueInstantiateVnf(driverRequest, vnfInstanceId, jobId);
+ String vnfInstanceId = cbamResponse.getId();
+ Long jobId = saveCreateVnfJob(vnfInstanceId);
+ driverResponse = responseConverter.createRspConvert(cbamResponse, jobId);
+ vnfContinueProcessorInf.continueInstantiateVnf(driverRequest, vnfInstanceId, jobId.toString(), nslcmMgmr, catalogMgmr, cbamMgmr, requestConverter, jobDbManager);
} catch (Exception e) {
+ logger.error("error VnfmDriverMgmrImpl --> instantiateVnf. ", e);
throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
}
return driverResponse;
}
+
+ private Long saveCreateVnfJob(String vnfInstanceId) {
+ VnfmJobExecutionInfo jobInfo = new VnfmJobExecutionInfo();
+ jobInfo.setVnfInstanceId(vnfInstanceId);
+ jobInfo.setVnfmInterfceName(CommonConstants.NSLCM_OPERATION_INSTANTIATE);
+ jobInfo.setStatus(CommonConstants.CBAM_OPERATION_STATUS_START);
- public void continueInstantiateVnf(InstantiateVnfRequest driverRequest, String vnfInstanceId, String jobId) {
- InstantiateVnfContinueRunnable runnable = new InstantiateVnfContinueRunnable(driverRequest, vnfInstanceId, jobId,
- nslcmMgmr, catalogMgmr, cbamMgmr, requestConverter, jobDbManager);
-
- Thread thread = new Thread(runnable);
-
- thread.run();
+ VnfmJobExecutionInfo jobInfo1 = (VnfmJobExecutionInfo) jobDbManager.save(jobInfo);
+ Long jobId = jobInfo1.getJobId();
+ return jobId;
}
public TerminateVnfResponse terminateVnf(TerminateVnfRequest driverRequest, String vnfmId, String vnfInstanceId) {
TerminateVnfResponse driverResponse;
try {
- VnfmInfo vnfmInfo = nslcmMgmr.queryVnfm(vnfmId);
-
- if(vnfmInfo == null || vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()))
- {
- throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
- }
+ buildVnfmHttpPathById(vnfmId);
driverResponse = generateTerminateVnfResponse(vnfInstanceId);
String jobId = driverResponse.getJobId();
- continueTerminateVnf(driverRequest, vnfInstanceId, jobId);
+ vnfContinueProcessorInf.continueTerminateVnf(driverRequest, vnfInstanceId, jobId, nslcmMgmr, cbamMgmr, requestConverter, jobDbManager);
} catch (Exception e) {
+ logger.error("error VnfmDriverMgmrImpl --> terminateVnf. ", e);
throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
}
return response;
}
- public void continueTerminateVnf(TerminateVnfRequest driverRequest, String vnfInstanceId, String jobId) {
- TerminateVnfContinueRunnable runnable = new TerminateVnfContinueRunnable(driverRequest, vnfInstanceId, jobId,
- nslcmMgmr, cbamMgmr, requestConverter, jobDbManager);
-
- Thread thread = new Thread(runnable);
-
- thread.run();
- }
-
-
public QueryVnfResponse queryVnf(String vnfmId, String vnfInstanceId) {
QueryVnfResponse driverResponse;
try {
- nslcmMgmr.queryVnfm(vnfmId);
- VnfmInfo vnfmInfo = nslcmMgmr.queryVnfm(vnfmId);
-
- if(vnfmInfo == null || vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()))
- {
- throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
- }
+ buildVnfmHttpPathById(vnfmId);
CBAMQueryVnfResponse cbamResponse = cbamMgmr.queryVnf(vnfInstanceId);
driverResponse = responseConverter.queryRspConvert(cbamResponse);
} catch (Exception e) {
+ logger.error("error VnfmDriverMgmrImpl --> queryVnf. ", e);
throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
}
}
public OperStatusVnfResponse getOperStatus(String vnfmId, String jobId) throws VnfmDriverException {
- VnfmInfo vnfmInfo;
- try {
- vnfmInfo = nslcmMgmr.queryVnfm(vnfmId);
- } catch (Exception e) {
- throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
- }
-
- if(vnfmInfo == null || vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()))
- {
- throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
- }
-
- VnfmJobExecutionInfo jobInfo = jobDbManager.findOne(Long.getLong(jobId));
- String execId = jobInfo.getVnfmExecutionId();
CBAMQueryOperExecutionResponse cbamResponse;
try {
+ buildVnfmHttpPathById(vnfmId);
+
+ VnfmJobExecutionInfo jobInfo = jobDbManager.findOne(Long.getLong(jobId));
+ String execId = jobInfo.getVnfmExecutionId();
cbamResponse = cbamMgmr.queryOperExecution(execId);
} catch (Exception e) {
+ logger.error("error VnfmDriverMgmrImpl --> getOperStatus. ", e);
throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
}
public ScaleVnfResponse scaleVnf(ScaleVnfRequest driverRequest, String vnfmId, String vnfInstanceId) throws VnfmDriverException {
ScaleVnfResponse driverResponse;
try {
- VnfmInfo vnfmInfo = nslcmMgmr.queryVnfm(vnfmId);
-
- if(vnfmInfo == null || vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()))
- {
- throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
- }
+ buildVnfmHttpPathById(vnfmId);
CBAMScaleVnfRequest cbamRequest = requestConverter.scaleReqconvert(driverRequest);
CBAMScaleVnfResponse cbamResponse = cbamMgmr.scaleVnf(cbamRequest, vnfInstanceId);
driverResponse = responseConverter.scaleRspConvert(cbamResponse);
} catch (Exception e) {
+ logger.error("error VnfmDriverMgmrImpl --> scaleVnf. ", e);
throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
}
public HealVnfResponse healVnf(HealVnfRequest driverRequest, String vnfmId, String vnfInstanceId) throws VnfmDriverException {
HealVnfResponse driverResponse;
try {
- VnfmInfo vnfmInfo = nslcmMgmr.queryVnfm(vnfmId);
-
- if(vnfmInfo == null || vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()))
- {
- throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
- }
+ buildVnfmHttpPathById(vnfmId);
CBAMHealVnfRequest cbamRequest = requestConverter.healReqConvert(driverRequest);
CBAMHealVnfResponse cbamResponse = cbamMgmr.healVnf(cbamRequest, vnfInstanceId);
driverResponse = responseConverter.healRspConvert(cbamResponse);
} catch (Exception e) {
+ logger.error("error VnfmDriverMgmrImpl --> healVnf. ", e);
throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
}
return driverResponse;
}
+ public String buildVnfmHttpPathById(String vnfmId) throws ClientProtocolException, IOException, VnfmDriverException {
+ AaiVnfmInfo vnfmInfo = aaiMgmr.queryVnfm(vnfmId);
+ logger.info("vnfmInfo in AAI is {}", gson.toJson(vnfmInfo));
+ if(isVnfmInfoValid(vnfmId, vnfmInfo))
+ {
+ throw new VnfmDriverException(HttpStatus.SC_INTERNAL_SERVER_ERROR, CommonConstants.HTTP_ERROR_DESC_500);
+ }
+
+ EsrSystemInfo systemInfo = vnfmInfo.getEsrSystemInfoList().get(0);
+
+ String urlHead = systemInfo.getServiceUrl();
+ adaptorEnv.setCbamApiUriFront(urlHead);
+ return urlHead;
+ }
+
+ private boolean isVnfmInfoValid(String vnfmId, AaiVnfmInfo vnfmInfo) {
+ return vnfmInfo == null || !vnfmId.equalsIgnoreCase(vnfmInfo.getVnfmId()) || vnfmInfo.getEsrSystemInfoList() == null || vnfmInfo.getEsrSystemInfoList().isEmpty();
+ }
+
+ public void setRequestConverter(Driver2CbamRequestConverter requestConverter) {
+ this.requestConverter = requestConverter;
+ }
+
+ public void setResponseConverter(Cbam2DriverResponseConverter responseConverter) {
+ this.responseConverter = responseConverter;
+ }
+
}