From 03e4ae0e29eff5bbcc65020f383762af9e3fd5cc Mon Sep 17 00:00:00 2001 From: Einat Vinouze Date: Mon, 4 May 2020 17:22:50 +0300 Subject: Add pause after completion for vfModule Issue-ID: VID-821 Signed-off-by: Einat Vinouze Change-Id: Ie3088cd2795c94121c45874d15c319151a10cc95 Signed-off-by: Einat Vinouze --- .../src/main/java/org/onap/vid/job/command/VnfCommand.kt | 7 +++++++ .../org/onap/vid/model/serviceInstantiation/VfModule.java | 14 ++++++++++++++ .../src/main/java/org/onap/vid/properties/Features.java | 2 +- .../src/main/java/org/onap/vid/utils/KotlinUtils.kt | 12 ++++++++++++ 4 files changed, 34 insertions(+), 1 deletion(-) (limited to 'vid-app-common/src/main/java') diff --git a/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt b/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt index 9023682f6..016c66cca 100644 --- a/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt +++ b/vid-app-common/src/main/java/org/onap/vid/job/command/VnfCommand.kt @@ -8,10 +8,12 @@ import org.onap.vid.job.impl.JobSharedData import org.onap.vid.model.Action import org.onap.vid.model.serviceInstantiation.BaseResource import org.onap.vid.model.serviceInstantiation.VfModule +import org.onap.vid.model.serviceInstantiation.VfModule.PauseInstantiation import org.onap.vid.model.serviceInstantiation.Vnf import org.onap.vid.mso.RestMsoImplementation import org.onap.vid.properties.Features import org.onap.vid.services.AsyncInstantiationBusinessLogic +import org.onap.vid.utils.takeUntilIncluding import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.config.ConfigurableBeanFactory import org.springframework.context.annotation.Scope @@ -71,9 +73,14 @@ class VnfCommand @Autowired constructor( private fun vfModulesForChildrenJobs(vfModules: List): List = vfModules + .takeUntilIncluding { shoudlPauseAfterInstantiation(it) } .filter { filterModuleByNeedToCreateBase(it) } .map { childVfModuleWithVnfRegionAndTenant(it) } + fun shoudlPauseAfterInstantiation(vfModule: VfModule) = + (vfModule.action == Action.Create && vfModule.pauseInstantiation == PauseInstantiation.afterCompletion + && featureManager.isActive(Features.FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION)) + internal fun childVfModuleWithVnfRegionAndTenant(vfModule: VfModule): VfModule { if (!shouldEntailRegionAndTenantToVfModule(vfModule)) { return vfModule diff --git a/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/VfModule.java b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/VfModule.java index 79ea7f147..46d4de800 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/VfModule.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/serviceInstantiation/VfModule.java @@ -48,6 +48,9 @@ public class VfModule extends BaseResource implements JobAdapter.AsyncJobRequest @JsonInclude(NON_NULL) private final Boolean retainVolumeGroups; + @JsonInclude(NON_NULL) + private final PauseInstantiation pauseInstantiation; + @JsonInclude(NON_NULL) private Boolean retainAssignments; @@ -69,6 +72,7 @@ public class VfModule extends BaseResource implements JobAdapter.AsyncJobRequest @Nullable @JsonProperty("retainAssignments") Boolean retainAssignments, @Nullable @JsonProperty("retainVolumeGroups") Boolean retainVolumeGroups, @JsonProperty("position") Integer position, + @JsonProperty("pauseInstantiation") PauseInstantiation pauseInstantiation, @JsonProperty("originalName") String originalName) { super(modelInfo, instanceName, action, lcpCloudRegionId, legacyRegion, tenantId, instanceParams, rollbackOnFailure, instanceId, trackById, isFailed, statusMessage, position, originalName); @@ -77,6 +81,7 @@ public class VfModule extends BaseResource implements JobAdapter.AsyncJobRequest this.supplementaryParams = supplementaryParams; this.retainAssignments = retainAssignments; this.retainVolumeGroups = retainVolumeGroups; + this.pauseInstantiation = pauseInstantiation; } public String getVolumeGroupInstanceName() { @@ -88,6 +93,10 @@ public class VfModule extends BaseResource implements JobAdapter.AsyncJobRequest return usePreload; } + public enum PauseInstantiation { + afterCompletion + } + public List getSupplementaryParams() { return supplementaryParams; } @@ -117,6 +126,9 @@ public class VfModule extends BaseResource implements JobAdapter.AsyncJobRequest return retainVolumeGroups; } + @Nullable + public PauseInstantiation getPauseInstantiation() {return pauseInstantiation;} + public VfModule cloneWith(ModelInfo modelInfo) { return new VfModule( modelInfo, @@ -137,6 +149,7 @@ public class VfModule extends BaseResource implements JobAdapter.AsyncJobRequest this.isRetainAssignments(), this.isRetainVolumeGroups(), this.getPosition(), + this.getPauseInstantiation(), this.getOriginalName() ); } @@ -161,6 +174,7 @@ public class VfModule extends BaseResource implements JobAdapter.AsyncJobRequest this.isRetainAssignments(), this.isRetainVolumeGroups(), this.getPosition(), + this.getPauseInstantiation(), this.getOriginalName() ); } diff --git a/vid-app-common/src/main/java/org/onap/vid/properties/Features.java b/vid-app-common/src/main/java/org/onap/vid/properties/Features.java index a83ca47b2..c8c4c73e3 100644 --- a/vid-app-common/src/main/java/org/onap/vid/properties/Features.java +++ b/vid-app-common/src/main/java/org/onap/vid/properties/Features.java @@ -95,7 +95,7 @@ public enum Features implements Feature { FLAG_2006_VNF_LOB_MULTI_SELECT, FLAG_2006_NEW_VIEW_EDIT_BUTTON_IN_INSTANTIATION_STATUS, FLAG_2006_PORT_MIRRORING_LET_SELECTING_SOURCE_SUBSCRIBER, - + FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION, FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD, ; diff --git a/vid-app-common/src/main/java/org/onap/vid/utils/KotlinUtils.kt b/vid-app-common/src/main/java/org/onap/vid/utils/KotlinUtils.kt index 83077f28c..35871856e 100644 --- a/vid-app-common/src/main/java/org/onap/vid/utils/KotlinUtils.kt +++ b/vid-app-common/src/main/java/org/onap/vid/utils/KotlinUtils.kt @@ -25,6 +25,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import org.apache.commons.lang3.StringUtils.isEmpty import org.togglz.core.Feature import org.togglz.core.manager.FeatureManager +import java.util.* inline fun > getEnumFromMapOfStrings(map: Map, key:String, defaultValue:E): E { return java.lang.Enum.valueOf(E::class.java, (map.getOrDefault(key, defaultValue.name) as String)) @@ -46,3 +47,14 @@ class JoshworksJacksonObjectMapper: io.joshworks.restclient.http.mapper.ObjectMa @JvmField val JOSHWORKS_JACKSON_OBJECT_MAPPER: io.joshworks.restclient.http.mapper.ObjectMapper = JoshworksJacksonObjectMapper() + +fun Iterable.takeUntilIncluding(predicate: (T) -> Boolean): List { + val list = ArrayList() + for (item in this) { + list.add(item) + if (predicate(item)) { + break + } + } + return list +} \ No newline at end of file -- cgit 1.2.3-korg