Add Volume Groups count ability during summarizing. 78/99878/2
authorAlexey Sandler <alexey.sandler@intl.att.com>
Sun, 22 Dec 2019 12:50:48 +0000 (14:50 +0200)
committerAlexey Sandler <alexey.sandler@intl.att.com>
Sun, 22 Dec 2019 15:25:25 +0000 (17:25 +0200)
Issue-ID: VID-724
Signed-off-by: Alexey Sandler <alexey.sandler@intl.att.com>
Change-Id: I0478469817f13609618c1597c654decac463474b

vid-app-common/src/main/java/org/onap/vid/services/AsyncInstantiationBusinessLogicImpl.java
vid-app-common/src/test/java/org/onap/vid/services/AsyncInstantiationBusinessLogicTest.java
vid-app-common/src/test/resources/payload_jsons/templateSummarize4vnfs6vfmodules.json

index c0ee7ea..787ad12 100644 (file)
 
 package org.onap.vid.services;
 
+import static com.google.common.collect.Streams.concat;
 import static java.util.function.Function.identity;
 import static java.util.stream.Collectors.counting;
 import static java.util.stream.Collectors.groupingBy;
-import static java.util.stream.Stream.concat;
+import static java.util.stream.Stream.empty;
 import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
+import static org.apache.commons.lang3.StringUtils.isNotEmpty;
 import static org.onap.vid.controller.MsoController.SVC_INSTANCE_ID;
 import static org.onap.vid.controller.MsoController.VNF_INSTANCE_ID;
 import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER;
@@ -41,7 +43,6 @@ import java.util.Objects;
 import java.util.UUID;
 import java.util.function.Consumer;
 import java.util.stream.Stream;
-import org.apache.commons.lang3.StringUtils;
 import org.hibernate.SessionFactory;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.vid.aai.AaiClientInterface;
@@ -63,6 +64,7 @@ import org.onap.vid.model.ResourceInfo;
 import org.onap.vid.model.ServiceInfo;
 import org.onap.vid.model.serviceInstantiation.BaseResource;
 import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
+import org.onap.vid.model.serviceInstantiation.VfModule;
 import org.onap.vid.mso.MsoBusinessLogicImpl;
 import org.onap.vid.mso.MsoProperties;
 import org.onap.vid.mso.MsoUtil;
@@ -188,9 +190,8 @@ public class AsyncInstantiationBusinessLogicImpl implements
     public Map<String, Long> getSummarizedChildrenMap(ServiceInstantiation serviceInstantiation){
         Stream<String> existingTypesStream =
             allDeepChildResources(serviceInstantiation)
-                .map(BaseResource::getModelInfo)
-                .filter(Objects::nonNull)
-                .map(ModelInfo::getModelType);
+                .map(this::getModelTypes)
+                .flatMap(identity());
 
         Map<String, Long> existingTypesCounters =
             existingTypesStream.collect(groupingBy(identity(), counting()));
@@ -198,6 +199,28 @@ public class AsyncInstantiationBusinessLogicImpl implements
         return existingTypesCounters;
     }
 
+    private Stream<String> getModelTypes(BaseResource resource) {
+        return concat(
+            Stream.of(resource)
+                .map(BaseResource::getModelInfo)
+                .filter(Objects::nonNull)
+                .map(ModelInfo::getModelType),
+            streamVolumeGroups(resource)
+        );
+    }
+
+    private Stream<String> streamVolumeGroups(BaseResource resource) {
+        return hasVolumeGroup(resource)
+            ? Stream.of("volumeGroup")
+            : empty();
+    }
+
+    private boolean hasVolumeGroup(BaseResource resource) {
+        return
+            resource instanceof VfModule
+            && isNotEmpty(((VfModule) resource).getVolumeGroupInstanceName());
+    }
+
     private Stream<BaseResource> allDeepChildResources(BaseResource resource) {
         return resource
             .getChildren()
@@ -216,7 +239,7 @@ public class AsyncInstantiationBusinessLogicImpl implements
 
 
     private String getOptimisticUniqueServiceInstanceName(String instanceName) {
-        return StringUtils.isNotEmpty(instanceName) ? getUniqueNameFromDbOnly(instanceName) : instanceName;
+        return isNotEmpty(instanceName) ? getUniqueNameFromDbOnly(instanceName) : instanceName;
     }
 
     protected ServiceInfo createServiceInfo(String userId, ServiceInstantiation serviceInstantiation, UUID jobId, UUID templateId, Date createdBulkDate, String optimisticUniqueServiceInstanceName, ServiceInfo.ServiceAction serviceAction) {
index b17b968..93208aa 100644 (file)
@@ -499,6 +499,7 @@ public class AsyncInstantiationBusinessLogicTest extends AsyncInstantiationBaseT
         Map<String, Long> expectedMap = ImmutableMap.of(
             "vnf", 4L,
             "vfModule", 6L,
+            "volumeGroup", 1L,
             "network", 2L
         );
         assertEquals(childrenMap,expectedMap);
index 89a1209..8579efe 100644 (file)
@@ -21,7 +21,8 @@
           "vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi": {
             "modelInfo": {
               "modelType": "vfModule"
-            }
+            },
+            "volumeGroupName": "my_special_hvf6arlba007_lba_dj_01_vol"
           }
         }
       }