From 6291d31b674ac0f1de86211ec801772f3de3abd1 Mon Sep 17 00:00:00 2001 From: Alexey Sandler Date: Tue, 7 Jan 2020 10:03:30 +0200 Subject: Add isInstantiationTemplateExists to service model list During deploy from SDC added isInstantiationTemplateExists, that informs if template exists in service by model-service-id. Issue-ID: VID-739 Change-Id: I3de909c3976fe32cba25bcb39b9f35e566467760 Signed-off-by: Alexey Sandler --- .../main/java/org/onap/vid/asdc/beans/Service.java | 12 ++++ .../services/InstantiationTemplatesService.java | 27 ++++++++- .../InstantiationTemplatesServiceTest.java | 68 ++++++++++++++++++++++ 3 files changed, 106 insertions(+), 1 deletion(-) diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/Service.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/Service.java index 0d37fb39e..092cfe4e2 100644 --- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/Service.java +++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/Service.java @@ -76,6 +76,8 @@ public class Service { private Collection resources; private String orchestrationType; + + private Boolean isInstantiationTemplateExists; public static class ServiceBuilder { @@ -204,6 +206,11 @@ public class Service { return orchestrationType; } + public Boolean getIsInstantiationTemplateExists() { + return isInstantiationTemplateExists; + } + + public void setUuid(String uuid) { this.uuid = uuid; } @@ -256,12 +263,17 @@ public class Service { this.orchestrationType = orchestrationType; } + public void setIsInstantiationTemplateExists(Boolean isInstantiationTemplateExists) { + this.isInstantiationTemplateExists = isInstantiationTemplateExists; + } + @Override public String toString() { return uuid; } @Override + public int hashCode() { return UUID.fromString(getUuid()).hashCode(); } diff --git a/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java b/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java index aa0031104..c033fbd59 100644 --- a/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java +++ b/vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java @@ -22,28 +22,38 @@ package org.onap.vid.services; import static java.util.Collections.emptyMap; import static java.util.Objects.requireNonNull; +import static java.util.stream.Collectors.toList; +import java.util.Collection; import java.util.Map; +import java.util.Set; import java.util.UUID; import javax.inject.Inject; +import org.onap.vid.asdc.beans.Service; import org.onap.vid.dal.AsyncInstantiationRepository; import org.onap.vid.model.ModelUtil; import org.onap.vid.model.serviceInstantiation.BaseResource; import org.onap.vid.model.serviceInstantiation.ServiceInstantiation; import org.onap.vid.model.serviceInstantiation.ServiceInstantiationTemplate; +import org.onap.vid.properties.Features; import org.springframework.stereotype.Component; +import org.togglz.core.manager.FeatureManager; @Component public class InstantiationTemplatesService { private final ModelUtil modelUtil; private final AsyncInstantiationRepository asyncInstantiationRepository; + private FeatureManager featureManager; + @Inject public InstantiationTemplatesService(ModelUtil modelUtil, - AsyncInstantiationRepository asyncInstantiationRepository) { + AsyncInstantiationRepository asyncInstantiationRepository, + FeatureManager featureManager) { this.modelUtil = modelUtil; this.asyncInstantiationRepository = asyncInstantiationRepository; + this.featureManager = featureManager; } public ServiceInstantiationTemplate getJobRequestAsTemplate(UUID jobId) { @@ -64,4 +74,19 @@ public class InstantiationTemplatesService { ); } + public Collection setOnEachServiceIsTemplateExists(Collection services){ + if (!featureManager.isActive(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)){ + return services; + } + + Set serviceModelIdsFromDB = asyncInstantiationRepository.getAllTemplatesServiceModelIds(); + + return services.stream().map(it -> setTemplateExistForService(it, serviceModelIdsFromDB)).collect(toList()); + } + + protected Service setTemplateExistForService(Service service, Set serviceModelIdsFromDb) { + + service.setIsInstantiationTemplateExists(serviceModelIdsFromDb.contains(service.getUuid())); + return service; + } } diff --git a/vid-app-common/src/test/java/org/onap/vid/services/InstantiationTemplatesServiceTest.java b/vid-app-common/src/test/java/org/onap/vid/services/InstantiationTemplatesServiceTest.java index f09ea313c..0c66f9550 100644 --- a/vid-app-common/src/test/java/org/onap/vid/services/InstantiationTemplatesServiceTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/services/InstantiationTemplatesServiceTest.java @@ -20,30 +20,45 @@ package org.onap.vid.services; +import static java.lang.Boolean.FALSE; +import static java.lang.Boolean.TRUE; import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals; +import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.anEmptyMap; +import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.hasProperty; +import static org.hamcrest.Matchers.nullValue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import java.util.Collection; import java.util.Map; import java.util.UUID; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.onap.vid.asdc.beans.Service; import org.onap.vid.dal.AsyncInstantiationRepository; import org.onap.vid.model.ModelUtil; import org.onap.vid.model.serviceInstantiation.ServiceInstantiation; import org.onap.vid.model.serviceInstantiation.ServiceInstantiationTemplate; import org.onap.vid.model.serviceInstantiation.Vnf; +import org.onap.vid.properties.Features; import org.onap.vid.testUtils.TestUtils; +import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; +import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import org.togglz.core.manager.FeatureManager; public class InstantiationTemplatesServiceTest { @@ -53,6 +68,9 @@ public class InstantiationTemplatesServiceTest { @Mock private ModelUtil modelUtil; + @Mock + private FeatureManager featureManager; + @InjectMocks private InstantiationTemplatesService instantiationTemplatesService; @@ -61,6 +79,11 @@ public class InstantiationTemplatesServiceTest { TestUtils.initMockitoMocks(this); } + @AfterMethod + public void resetMocks() { + reset(featureManager); + } + @Test public void getJobRequestAsTemplate_whenIsCalled_asyncInstantiationRepositoryGetJobRequestIsInvoked() { UUID jobId = UUID.randomUUID(); @@ -99,4 +122,49 @@ public class InstantiationTemplatesServiceTest { assertThat(result, hasProperty("existingVRFCounterMap", anEmptyMap())); } + @DataProvider + public static Object[][] isTemplatesExistsByGivenServiceUuid() { + return new Object[][]{{"1",TRUE}, + {"3",FALSE}}; + } + + @Test(dataProvider = "isTemplatesExistsByGivenServiceUuid") + public void setInServicesTemplateValue_givenServiceWithServiceModelId_thenIsTemplateExistsIsEatherTrueOrFalse(String givenUuid, Boolean expectedTemplatesExist){ + + Service service = new Service(); + service.setUuid(givenUuid); + + Service newService = instantiationTemplatesService.setTemplateExistForService(service, ImmutableSet.of("1", "2")); + assertThat(newService.getIsInstantiationTemplateExists(), is(expectedTemplatesExist)); + } + + @Test + public void setTemplatesExistance_givenCollection__flagIsActive_thenSameCollectionReturnedWithTemplateExistsProperty(){ + when(featureManager.isActive(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)).thenReturn(true); + when(asyncInstantiationRepository.getAllTemplatesServiceModelIds()).thenReturn(ImmutableSet.of("1", "2")); + Collection actualCollection = instantiationTemplatesService.setOnEachServiceIsTemplateExists(createGivenCollection()); + assertThat(actualCollection, containsInAnyOrder( + allOf(hasProperty("uuid", is("1")), hasProperty("isInstantiationTemplateExists", is(true))), + allOf(hasProperty("uuid", is("3")), hasProperty("isInstantiationTemplateExists", is(false))) + )); + } + + @Test + public void setTemplatesExistance_givenCollection_flagIsNotActive_thenTemplatesExistNotAdded(){ + when(featureManager.isActive(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)).thenReturn(false); + Collection actualCollection = instantiationTemplatesService.setOnEachServiceIsTemplateExists(createGivenCollection()); + assertThat("was " + actualCollection, actualCollection, containsInAnyOrder( + allOf(hasProperty("uuid", is("1")), hasProperty("isInstantiationTemplateExists", nullValue())), + allOf(hasProperty("uuid", is("3")), hasProperty("isInstantiationTemplateExists", nullValue())) + )); + } + + private Collection createGivenCollection(){ + Service service1 = new Service(); + Service service2 = new Service(); + service1.setUuid("1"); + service2.setUuid("3"); + return ImmutableList.of(service1, service2); + } + } -- cgit 1.2.3-korg