summaryrefslogtreecommitdiffstats
path: root/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java
diff options
context:
space:
mode:
authorDenes Nemeth <denes.nemeth@nokia.com>2018-03-06 11:24:26 +0100
committerDenes Nemeth <denes.nemeth@nokia.com>2018-03-06 14:26:49 +0100
commit1a29d7be6656f3fac3cacd73ddd5a2e050fb04e7 (patch)
tree1cf554cec08fd43cc95f6844131a316b01245f08 /nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java
parentbe56383397388d35f41089723e912856c03f4673 (diff)
Fix most sonar issues
Change-Id: I2dfae3f808aeaf94513a6e3c917eea52d6ab6322 Signed-off-by: Denes Nemeth <denes.nemeth@nokia.com> Issue-ID: VFC-728
Diffstat (limited to 'nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java')
-rw-r--r--nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java190
1 files changed, 110 insertions, 80 deletions
diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java
index e835e35c..e0ee8f83 100644
--- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java
+++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java
@@ -27,6 +27,7 @@ import com.nokia.cbam.lcm.v32.model.ScaleDirection;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.IGrantManager;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VimInfoProvider;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.StoreLoader;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.UserVisibleError;
import org.onap.vnfmdriver.model.ExtVirtualLinkInfo;
import org.onap.vnfmdriver.model.*;
import org.onap.vnfmdriver.model.VimInfo;
@@ -44,6 +45,9 @@ import java.util.concurrent.Executors;
import static com.google.common.base.Splitter.on;
import static com.google.common.collect.Iterables.find;
import static com.google.common.collect.Lists.newArrayList;
+import static com.google.common.collect.Sets.newHashSet;
+import static com.nokia.cbam.lcm.v32.model.InstantiationState.INSTANTIATED;
+import static com.nokia.cbam.lcm.v32.model.OperationStatus.FINISHED;
import static com.nokia.cbam.lcm.v32.model.OperationType.INSTANTIATE;
import static com.nokia.cbam.lcm.v32.model.VimInfo.VimInfoTypeEnum.*;
import static java.lang.Integer.parseInt;
@@ -51,7 +55,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.*;
import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions;
import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCM_API_VERSION;
-import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.ILifecycleChangeNotificationManager.*;
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.ILifecycleChangeNotificationManager.NEWEST_OPERATIONS_FIRST;
import static org.slf4j.LoggerFactory.getLogger;
import static org.springframework.util.StringUtils.isEmpty;
@@ -62,6 +66,10 @@ import static org.springframework.util.StringUtils.isEmpty;
public class LifecycleManager {
public static final String ONAP_CSAR_ID = "onapCsarId";
public static final long OPERATION_STATUS_POLLING_INTERVAL_IN_MS = 5000L;
+ /**
+ * The key of the CBAM VNF extension for the identifier of the VNFM in ONAP
+ */
+ public static final String EXTERNAL_VNFM_ID = "externalVnfmId";
private static Logger logger = getLogger(LifecycleManager.class);
private final CatalogManager catalogManager;
private final IGrantManager grantManager;
@@ -121,7 +129,9 @@ public class LifecycleManager {
* @return the instantiation response
*/
public VnfInstantiateResponse instantiate(String vnfmId, VnfInstantiateRequest request, HttpServletResponse httpResponse) {
- logger.info("Additional parameters for instantiation: " + new Gson().toJson(request.getAdditionalParam()));
+ if (logger.isDebugEnabled()) {
+ logger.debug("Additional parameters for instantiation: {}", new Gson().toJson(request.getAdditionalParam()));
+ }
AdditionalParams additionalParams = convertInstantiationAdditionalParams(request.getVnfPackageId(), request.getAdditionalParam());
validateVimType(additionalParams);
CatalogAdapterVnfpackage cbamPackage = catalogManager.preparePackageInCbam(vnfmId, request.getVnfPackageId());
@@ -133,49 +143,11 @@ public class LifecycleManager {
com.nokia.cbam.lcm.v32.model.VnfInfo vnfInfo = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsPost(vnfCreateRequest, NOKIA_LCM_API_VERSION);
VnfInstantiateResponse response = new VnfInstantiateResponse();
response.setVnfInstanceId(vnfInfo.getId());
- //FIXME the vimId should be send during grant response (VFC-604)
String vimId = getVimId(request.getAdditionalParam());
addVnfdIdToVnfModifyableAttributeExtensions(vnfmId, vnfInfo.getId(), request.getVnfPackageId());
- JobInfo spawnJob = scheduleExecution(vnfInfo.getId(), httpResponse, "instantiate", (jobInfo) -> {
- String vnfdContent = catalogManager.getCbamVnfdContent(vnfmId, cbamPackage.getId());
- GrantVNFResponseVim vim = grantManager.requestGrantForInstantiate(vnfmId, vnfInfo.getId(), vimId, request.getVnfPackageId(), additionalParams.getInstantiationLevel(), vnfdContent, jobInfo.getJobId());
- if (vim.getVimId() == null) {
- fatalFailure(logger, "VF-C did not send VIM identifier in grant response");
- }
- VimInfo vimInfo = vimInfoProvider.getVimInfo(vim.getVimId());
- InstantiateVnfRequest instantiationRequest = new InstantiateVnfRequest();
- addExernalLinksToRequest(request.getExtVirtualLink(), additionalParams, instantiationRequest, vimId);
- switch (additionalParams.getVimType()) {
- case OPENSTACK_V2_INFO:
- instantiationRequest.getVims().add(buildOpenStackV2INFO(vimId, vim, vimInfo));
- break;
- case OPENSTACK_V3_INFO:
- instantiationRequest.getVims().add(buildOpenStackV3INFO(vimId, additionalParams, vim, vimInfo));
- break;
- case VMWARE_VCLOUD_INFO:
- instantiationRequest.getVims().add(buildVcloudInfo(vimId, vim, vimInfo));
- break;
- }
- instantiationRequest.setFlavourId(getFlavorId(vnfdContent));
- instantiationRequest.setComputeResourceFlavours(additionalParams.getComputeResourceFlavours());
- instantiationRequest.setGrantlessMode(true);
- instantiationRequest.setInstantiationLevelId(additionalParams.getInstantiationLevel());
- instantiationRequest.setSoftwareImages(additionalParams.getSoftwareImages());
- instantiationRequest.setZones(additionalParams.getZones());
- instantiationRequest.setExtManagedVirtualLinks(additionalParams.getExtManagedVirtualLinks());
- for (ExtVirtualLinkData extVirtualLinkData : additionalParams.getExtVirtualLinks()) {
- instantiationRequest.addExtVirtualLinksItem(extVirtualLinkData);
- }
- JsonObject root = new Gson().toJsonTree(jobInfo).getAsJsonObject();
- if (additionalParams.getAdditionalParams() != null && !isEmpty(additionalParams.getAdditionalParams().toString())) {
- for (Map.Entry<String, JsonElement> item : new Gson().toJsonTree(additionalParams.getAdditionalParams()).getAsJsonObject().entrySet()) {
- root.add(item.getKey(), item.getValue());
- }
- }
- instantiationRequest.setAdditionalParams(root);
- OperationExecution operationExecution = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdInstantiatePost(vnfInfo.getId(), instantiationRequest, NOKIA_LCM_API_VERSION);
- waitForOperationToFinish(vnfmId, vnfInfo.getId(), operationExecution.getId(), jobInfo.getJobId());
- });
+ JobInfo spawnJob = scheduleExecution(vnfInfo.getId(), httpResponse, "instantiate", jobInfo ->
+ instantiateVnf(vnfmId, request, additionalParams, cbamPackage, vnfInfo, vimId, jobInfo)
+ );
response.setJobId(spawnJob.getJobId());
return response;
} catch (Exception e) {
@@ -183,6 +155,46 @@ public class LifecycleManager {
}
}
+ private void instantiateVnf(String vnfmId, VnfInstantiateRequest request, AdditionalParams additionalParams, CatalogAdapterVnfpackage cbamPackage, com.nokia.cbam.lcm.v32.model.VnfInfo vnfInfo, String vimId, JobInfo jobInfo) throws ApiException {
+ String vnfdContent = catalogManager.getCbamVnfdContent(vnfmId, cbamPackage.getId());
+ GrantVNFResponseVim vim = grantManager.requestGrantForInstantiate(vnfmId, vnfInfo.getId(), vimId, request.getVnfPackageId(), additionalParams.getInstantiationLevel(), vnfdContent, jobInfo.getJobId());
+ if (vim.getVimId() == null) {
+ fatalFailure(logger, "VF-C did not send VIM identifier in grant response");
+ }
+ VimInfo vimInfo = vimInfoProvider.getVimInfo(vim.getVimId());
+ InstantiateVnfRequest instantiationRequest = new InstantiateVnfRequest();
+ addExernalLinksToRequest(request.getExtVirtualLink(), additionalParams, instantiationRequest, vimId);
+ if (additionalParams.getVimType() == OPENSTACK_V2_INFO) {
+ instantiationRequest.getVims().add(buildOpenStackV2INFO(vimId, vim, vimInfo));
+
+ } else if (additionalParams.getVimType() == OPENSTACK_V3_INFO) {
+ instantiationRequest.getVims().add(buildOpenStackV3INFO(vimId, additionalParams, vim, vimInfo));
+
+ } else if (additionalParams.getVimType() == VMWARE_VCLOUD_INFO) {
+ instantiationRequest.getVims().add(buildVcloudInfo(vimId, vimInfo));
+
+ }
+ instantiationRequest.setFlavourId(getFlavorId(vnfdContent));
+ instantiationRequest.setComputeResourceFlavours(additionalParams.getComputeResourceFlavours());
+ instantiationRequest.setGrantlessMode(true);
+ instantiationRequest.setInstantiationLevelId(additionalParams.getInstantiationLevel());
+ instantiationRequest.setSoftwareImages(additionalParams.getSoftwareImages());
+ instantiationRequest.setZones(additionalParams.getZones());
+ instantiationRequest.setExtManagedVirtualLinks(additionalParams.getExtManagedVirtualLinks());
+ for (ExtVirtualLinkData extVirtualLinkData : additionalParams.getExtVirtualLinks()) {
+ instantiationRequest.addExtVirtualLinksItem(extVirtualLinkData);
+ }
+ JsonObject root = new Gson().toJsonTree(jobInfo).getAsJsonObject();
+ if (additionalParams.getAdditionalParams() != null && !isEmpty(additionalParams.getAdditionalParams().toString())) {
+ for (Map.Entry<String, JsonElement> item : new Gson().toJsonTree(additionalParams.getAdditionalParams()).getAsJsonObject().entrySet()) {
+ root.add(item.getKey(), item.getValue());
+ }
+ }
+ instantiationRequest.setAdditionalParams(root);
+ OperationExecution operationExecution = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdInstantiatePost(vnfInfo.getId(), instantiationRequest, NOKIA_LCM_API_VERSION);
+ waitForOperationToFinish(vnfmId, vnfInfo.getId(), operationExecution.getId());
+ }
+
private void validateVimType(AdditionalParams additionalParams) {
switch (additionalParams.getVimType()) {
case OPENSTACK_V2_INFO:
@@ -250,9 +262,9 @@ public class LifecycleManager {
request.setVnfConfigurableProperties(null);
try {
OperationExecution operationExecution = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdPatch(vnfId, request, NOKIA_LCM_API_VERSION);
- waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId(), NOKIA_LCM_API_VERSION);
+ waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId());
} catch (ApiException e) {
- throw fatalFailure(logger, "Unable to set the " + ONAP_CSAR_ID + " property on the VNF", e);
+ fatalFailure(logger, "Unable to set the " + ONAP_CSAR_ID + " property on the VNF", e);
}
}
@@ -271,6 +283,9 @@ public class LifecycleManager {
if (!isEmpty(vimInfo.getSslInsecure())) {
interfaceInfoV3.setSkipCertificateVerification(Boolean.parseBoolean(vimInfo.getSslInsecure()));
interfaceInfoV3.setSkipCertificateHostnameCheck(Boolean.parseBoolean(vimInfo.getSslInsecure()));
+ } else {
+ interfaceInfoV3.setSkipCertificateHostnameCheck(true);
+ interfaceInfoV3.setSkipCertificateVerification(true);
}
if (!interfaceInfoV3.isSkipCertificateVerification()) {
interfaceInfoV3.setTrustedCertificates(new ArrayList<>());
@@ -296,6 +311,9 @@ public class LifecycleManager {
if (!isEmpty(vimInfo.getSslInsecure())) {
interfaceEndpoint.setSkipCertificateHostnameCheck(Boolean.parseBoolean(vimInfo.getSslInsecure()));
interfaceEndpoint.setSkipCertificateVerification(Boolean.parseBoolean(vimInfo.getSslInsecure()));
+ } else {
+ interfaceEndpoint.setSkipCertificateHostnameCheck(true);
+ interfaceEndpoint.setSkipCertificateVerification(true);
}
interfaceEndpoint.setEndpoint(vimInfo.getUrl());
if (!interfaceEndpoint.isSkipCertificateVerification()) {
@@ -309,7 +327,7 @@ public class LifecycleManager {
return openstackv2INFO;
}
- private VMWAREVCLOUDINFO buildVcloudInfo(String vimId, GrantVNFResponseVim vim, org.onap.vnfmdriver.model.VimInfo vimInfo) {
+ private VMWAREVCLOUDINFO buildVcloudInfo(String vimId, org.onap.vnfmdriver.model.VimInfo vimInfo) {
VMWAREVCLOUDINFO vcloudInfo = new VMWAREVCLOUDINFO();
vcloudInfo.setVimInfoType(VMWARE_VCLOUD_INFO);
VCloudAccessInfo accessInfo = new VCloudAccessInfo();
@@ -321,6 +339,9 @@ public class LifecycleManager {
if (!isEmpty(vimInfo.getSslInsecure())) {
interfaceEndpoint.setSkipCertificateHostnameCheck(Boolean.parseBoolean(vimInfo.getSslInsecure()));
interfaceEndpoint.setSkipCertificateVerification(Boolean.parseBoolean(vimInfo.getSslInsecure()));
+ } else {
+ interfaceEndpoint.setSkipCertificateHostnameCheck(true);
+ interfaceEndpoint.setSkipCertificateVerification(true);
}
interfaceEndpoint.setEndpoint(vimInfo.getUrl());
if (!interfaceEndpoint.isSkipCertificateVerification()) {
@@ -349,7 +370,7 @@ public class LifecycleManager {
* @return the job for polling the progress of the termination
*/
public JobInfo terminateVnf(String vnfmId, String vnfId, VnfTerminateRequest request, HttpServletResponse httpResponse) {
- return scheduleExecution(vnfId, httpResponse, "terminate", (jobInfo) -> {
+ return scheduleExecution(vnfId, httpResponse, "terminate", jobInfo -> {
TerminateVnfRequest cbamRequest = new TerminateVnfRequest();
cbamRequest.setAdditionalParams(jobInfo);
if (request.getTerminationType() == null) {
@@ -363,30 +384,32 @@ public class LifecycleManager {
}
}
com.nokia.cbam.lcm.v32.model.VnfInfo vnf = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdGet(vnfId, NOKIA_LCM_API_VERSION);
- switch (vnf.getInstantiationState()) {
- case INSTANTIATED:
- String vimId = getVimIdFromInstantiationRequest(vnfmId, vnf);
- grantManager.requestGrantForTerminate(vnfmId, vnfId, vimId, getVnfdIdFromModifyableAttributes(vnf), vnf, jobInfo.getJobId());
- OperationExecution terminationOperation = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdTerminatePost(vnfId, cbamRequest, NOKIA_LCM_API_VERSION);
- OperationExecution finishedOperation = waitForOperationToFinish(vnfmId, vnfId, terminationOperation.getId(), jobInfo.getJobId());
- switch (finishedOperation.getStatus()) {
- case FINISHED:
- notificationManager.waitForTerminationToBeProcessed(finishedOperation.getId());
- logger.info("Deleting VNF with " + vnfId);
- cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION);
- logger.info("VNF with " + vnfId + " has been deleted");
- break;
- default:
- logger.error("Unable to terminate VNF the operation did not finish with success");
- }
- break;
- case NOT_INSTANTIATED:
- cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION);
- break;
+ if (vnf.getInstantiationState() == INSTANTIATED) {
+ terminateVnf(vnfmId, vnfId, jobInfo, cbamRequest, vnf);
+
+ } else {
+ cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION);
+
}
});
}
+ private void terminateVnf(String vnfmId, String vnfId, JobInfo jobInfo, TerminateVnfRequest cbamRequest, com.nokia.cbam.lcm.v32.model.VnfInfo vnf) throws ApiException {
+ String vimId = getVimIdFromInstantiationRequest(vnfmId, vnf);
+ grantManager.requestGrantForTerminate(vnfmId, vnfId, vimId, getVnfdIdFromModifyableAttributes(vnf), vnf, jobInfo.getJobId());
+ OperationExecution terminationOperation = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdTerminatePost(vnfId, cbamRequest, NOKIA_LCM_API_VERSION);
+ OperationExecution finishedOperation = waitForOperationToFinish(vnfmId, vnfId, terminationOperation.getId());
+ if (finishedOperation.getStatus() == FINISHED) {
+ notificationManager.waitForTerminationToBeProcessed(finishedOperation.getId());
+ logger.info("Deleting VNF with {}", vnfId);
+ cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdDelete(vnfId, NOKIA_LCM_API_VERSION);
+ logger.info("VNF with {} has been deleted", vnfId);
+
+ } else {
+ logger.error("Unable to terminate VNF the operation did not finish with success");
+ }
+ }
+
private String getVimIdFromInstantiationRequest(String vnfmId, com.nokia.cbam.lcm.v32.model.VnfInfo vnf) throws ApiException {
OperationExecution lastInstantiation = findLastInstantiation(vnf.getOperationExecutions());
Object operationParameters = cbamRestApiProvider.getCbamOperationExecutionApi(vnfmId).operationExecutionsOperationExecutionIdOperationParamsGet(lastInstantiation.getId(), NOKIA_LCM_API_VERSION);
@@ -441,8 +464,10 @@ public class LifecycleManager {
* @return the job for tracking the scale
*/
public JobInfo scaleVnf(String vnfmId, String vnfId, VnfScaleRequest request, HttpServletResponse httpResponse) {
- logger.info("Scale VNF " + vnfId + " " + new Gson().toJson(request));
- return scheduleExecution(vnfId, httpResponse, "scale", (jobInfo) -> {
+ if (logger.isInfoEnabled()) {
+ logger.info("Scale VNF with {} identifier REST: {}", vnfId, new Gson().toJson(request));
+ }
+ return scheduleExecution(vnfId, httpResponse, "scale", jobInfo -> {
ScaleVnfRequest cbamRequest = new ScaleVnfRequest();
cbamRequest.setAspectId(request.getAspectId());
cbamRequest.setNumberOfSteps(Integer.valueOf(request.getNumberOfSteps()));
@@ -458,11 +483,13 @@ public class LifecycleManager {
root.add(item.getKey(), item.getValue());
}
}
+ } else {
+ logger.warn("No additional parameters were passed for scaling");
}
cbamRequest.setAdditionalParams(root);
grantManager.requestGrantForScale(vnfmId, vnfId, getVimIdFromInstantiationRequest(vnfmId, vnf), getVnfdIdFromModifyableAttributes(vnf), request, jobInfo.getJobId());
OperationExecution operationExecution = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdScalePost(vnfId, cbamRequest, NOKIA_LCM_API_VERSION);
- waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId(), jobInfo.getJobId());
+ waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId());
});
}
@@ -476,7 +503,7 @@ public class LifecycleManager {
* @return the job for tracking the heal
*/
public JobInfo healVnf(String vnfmId, String vnfId, VnfHealRequest request, HttpServletResponse httpResponse) {
- return scheduleExecution(vnfId, httpResponse, "heal", (job) -> {
+ return scheduleExecution(vnfId, httpResponse, "heal", job -> {
HealVnfRequest cbamHealRequest = new HealVnfRequest();
Map<String, String> additionalParams = new HashMap<>();
additionalParams.put("vmName", request.getAffectedvm().getVmname());
@@ -487,7 +514,7 @@ public class LifecycleManager {
String vimId = getVimIdFromInstantiationRequest(vnfmId, vnf);
grantManager.requestGrantForHeal(vnfmId, vnfId, vimId, getVnfdIdFromModifyableAttributes(vnf), request, job.getJobId());
OperationExecution operationExecution = cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdHealPost(vnfId, cbamHealRequest, NOKIA_LCM_API_VERSION);
- waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId(), job.getJobId());
+ waitForOperationToFinish(vnfmId, vnfId, operationExecution.getId());
});
}
@@ -506,22 +533,20 @@ public class LifecycleManager {
logger.error(msg, e);
//the job can only be signaled to be finished after the error is logged
jobManager.jobFinished(jobInfo.getJobId());
- throw new RuntimeException(msg, e);
+ throw new UserVisibleError(msg, e);
}
jobManager.jobFinished(jobInfo.getJobId());
});
return jobInfo;
}
- private OperationExecution waitForOperationToFinish(String vnfmId, String vnfId, String operationExecutionId, String jobId) {
+ private OperationExecution waitForOperationToFinish(String vnfmId, String vnfId, String operationExecutionId) {
while (true) {
try {
OperationExecution operationExecution = find(cbamRestApiProvider.getCbamLcmApi(vnfmId).vnfsVnfInstanceIdOperationExecutionsGet(vnfId, NOKIA_LCM_API_VERSION), opEx -> operationExecutionId.equals(opEx.getId()));
- switch (operationExecution.getStatus()) {
- case FINISHED:
- case FAILED:
- logger.debug("Operation finished with " + operationExecution.getId());
- return operationExecution;
+ if (hasOperationFinished(operationExecution)) {
+ logger.debug("Operation finished with " + operationExecution.getId());
+ return operationExecution;
}
} catch (Exception e) {
//swallow exception and retry
@@ -531,7 +556,12 @@ public class LifecycleManager {
}
}
+ private boolean hasOperationFinished(OperationExecution operationExecution) {
+ return newHashSet(FINISHED, OperationStatus.FAILED).contains(operationExecution.getStatus());
+ }
+
+ @FunctionalInterface
private interface AsynchronousExecution {
- void execute(JobInfo job) throws Exception;
+ void execute(JobInfo job) throws ApiException;
}
}