Add isInstantiationTemplateExists to service model list 11/100011/6
authorAlexey Sandler <alexey.sandler@intl.att.com>
Tue, 7 Jan 2020 08:03:30 +0000 (10:03 +0200)
committerIttay Stern <ittay.stern@att.com>
Tue, 7 Jan 2020 08:11:45 +0000 (08:11 +0000)
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 <alexey.sandler@intl.att.com>
vid-app-common/src/main/java/org/onap/vid/asdc/beans/Service.java
vid-app-common/src/main/java/org/onap/vid/services/InstantiationTemplatesService.java
vid-app-common/src/test/java/org/onap/vid/services/InstantiationTemplatesServiceTest.java

index 0d37fb3..092cfe4 100644 (file)
@@ -76,6 +76,8 @@ public class Service {
     private Collection<SubResource> 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();
     }
index aa00311..c033fbd 100644 (file)
@@ -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<Service> setOnEachServiceIsTemplateExists(Collection<Service> services){
+        if (!featureManager.isActive(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)){
+            return services;
+        }
+
+        Set<String> serviceModelIdsFromDB  = asyncInstantiationRepository.getAllTemplatesServiceModelIds();
+
+        return services.stream().map(it -> setTemplateExistForService(it, serviceModelIdsFromDB)).collect(toList());
+    }
+
+    protected Service setTemplateExistForService(Service service, Set<String> serviceModelIdsFromDb) {
+
+        service.setIsInstantiationTemplateExists(serviceModelIdsFromDb.contains(service.getUuid()));
+        return service;
+    }
 }
index f09ea31..0c66f95 100644 (file)
 
 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<Service> 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<Service> 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<Service> createGivenCollection(){
+        Service service1 = new Service();
+        Service service2 = new Service();
+        service1.setUuid("1");
+        service2.setUuid("3");
+        return ImmutableList.of(service1, service2);
+    }
+
 }