summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java206
1 files changed, 70 insertions, 136 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
index 1000554975..45f12cea85 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
@@ -18,6 +18,7 @@ package org.openecomp.sdc.translator.services.heattotosca;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Multimap;
import java.util.ArrayList;
import java.util.Collection;
@@ -39,6 +40,7 @@ import org.apache.commons.lang3.StringUtils;
import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.utils.CommonUtil;
import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
import org.openecomp.sdc.tosca.services.DataModelUtil;
import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
@@ -56,7 +58,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
-import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationDataHandler;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
@@ -483,17 +485,16 @@ public class ConsolidationService {
secondEntity.getNodesConnectedOut());
}
- private boolean compareNodeConnectivity(
- Map<String, List<RequirementAssignmentData>> firstEntityMap,
- Map<String, List<RequirementAssignmentData>> secondEntityMap) {
+ private boolean compareNodeConnectivity(
+ Multimap<String, RequirementAssignmentData> firstEntityMap,
+ Multimap<String, RequirementAssignmentData> secondEntityMap) {
- if (MapUtils.isEmpty(firstEntityMap)
- && MapUtils.isEmpty(secondEntityMap)) {
- return true;
+ if (CommonUtil.isMultimapEmpty(firstEntityMap) && CommonUtil.isMultimapEmpty(secondEntityMap)) {
+ return true;
+ }
+ return !firstEntityMap.isEmpty() && !secondEntityMap.isEmpty()
+ && firstEntityMap.keySet().equals(secondEntityMap.keySet());
}
- return !MapUtils.isEmpty(firstEntityMap) && !MapUtils.isEmpty(secondEntityMap)
- && firstEntityMap.keySet().equals(secondEntityMap.keySet());
- }
private boolean checkGroupIdsRelations(EntityConsolidationData startingEntity,
EntityConsolidationData currentEntity) {
@@ -503,23 +504,23 @@ public class ConsolidationService {
}
- private boolean checkComputesRelationsToVolume(
- Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationEntities) {
- Iterator<ComputeTemplateConsolidationData> iterator =
- computeTemplateConsolidationEntities.iterator();
+ private boolean checkComputesRelationsToVolume(
+ Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationEntities) {
+ Iterator<ComputeTemplateConsolidationData> iterator =
+ computeTemplateConsolidationEntities.iterator();
- Map<String, List<RequirementAssignmentData>> startingVolumes =
- iterator.next().getVolumes();
+ Multimap<String, RequirementAssignmentData> startingVolumes =
+ iterator.next().getVolumes();
- for (ComputeTemplateConsolidationData compute : computeTemplateConsolidationEntities) {
- Map<String, List<RequirementAssignmentData>> currentVolumes =
- compute.getVolumes();
- if (!compareNodeConnectivity(startingVolumes, currentVolumes)) {
- return false;
- }
+ for (ComputeTemplateConsolidationData compute : computeTemplateConsolidationEntities) {
+ Multimap<String, RequirementAssignmentData> currentVolumes =
+ compute.getVolumes();
+ if (!compareNodeConnectivity(startingVolumes, currentVolumes)) {
+ return false;
+ }
+ }
+ return true;
}
- return true;
- }
private boolean checkPortConsolidation(ServiceTemplate serviceTemplate,
@@ -804,58 +805,60 @@ public class ConsolidationService {
private boolean isThereMoreThanOneNestedLevel(ServiceTemplate nestedServiceTemplate,
TranslationContext context) {
- FileNestedConsolidationData fileNestedConsolidationData = null;
String nestedServiceTemplateName = ToscaUtil.getServiceTemplateFileName(nestedServiceTemplate);
if (Objects.isNull(nestedServiceTemplateName)) {
return false;
}
- NestedConsolidationData nestedConsolidationData = context.getConsolidationData().getNestedConsolidationData();
- if (Objects.nonNull(nestedConsolidationData)) {
- fileNestedConsolidationData =
- nestedConsolidationData.getFileNestedConsolidationData(nestedServiceTemplateName);
- }
+ NestedConsolidationDataHandler nestedConsolidationDataHandler = context.getNestedConsolidationDataHandler();
//Condition to check if there is nested file and if file contains only sub interfaces then
// return false
- return Objects.nonNull(fileNestedConsolidationData) && !ifNestedFileContainsOnlySubInterface(
- nestedServiceTemplate, context);
+ return nestedConsolidationDataHandler.isNestedConsolidationDataExist(nestedServiceTemplateName)
+ && !ifNestedFileContainsOnlySubInterface(nestedServiceTemplate, context);
}
- private boolean ifNestedFileContainsOnlySubInterface(ServiceTemplate serviceTemplate,
- TranslationContext context) {
- Map<String, NodeTemplate> nestedNodeTemplateMap =
- DataModelUtil.getNodeTemplates(serviceTemplate);
-
- ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
- Set<Object> nestedHeatFileNames = nestedNodeTemplateMap.entrySet().stream()
- .filter(entry -> toscaAnalyzerService.isSubstitutableNodeTemplate(entry.getValue())
- && toscaAnalyzerService
- .getSubstituteServiceTemplateName(entry.getKey(), entry.getValue()).isPresent())
- .map(entry -> toscaAnalyzerService
- .getSubstituteServiceTemplateName(entry.getKey(), entry.getValue()).get())
- .collect(Collectors.toSet());
-
- if (CollectionUtils.isNotEmpty(nestedHeatFileNames)) {
- for (Object fileName : nestedHeatFileNames) {
- String heatFileName = context.getNestedHeatFileName().get(String.valueOf(fileName));
-
- if (Objects.nonNull(heatFileName)
- && !ifAllResourceAreSubInterface(context.getTranslatedServiceTemplates()
- .get(heatFileName).getTopology_template().getNode_templates().values())) {
- return false;
- }
- }
+ private boolean ifNestedFileContainsOnlySubInterface(ServiceTemplate serviceTemplate, TranslationContext context) {
+ Map<String, NodeTemplate> nestedNodeTemplateMap = DataModelUtil.getNodeTemplates(serviceTemplate);
+
+ Set<String> nestedHeatFileNames = getNestedHeatFileNames(nestedNodeTemplateMap);
+
+ return ifAllResourceAreSubInterface(nestedHeatFileNames, context);
}
- return true;
- }
+ private Set<String> getNestedHeatFileNames(Map<String, NodeTemplate> nestedNodeTemplateMap) {
+ ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
- // Method returns true if all of the resource are sub interface
- private boolean ifAllResourceAreSubInterface(Collection<NodeTemplate> nodeTemplates) {
- return nodeTemplates.stream().allMatch(nodeTemplate ->
- ToscaNodeType.CONTRAILV2_VLAN_SUB_INTERFACE.equals(nodeTemplate.getType()));
- }
+ return nestedNodeTemplateMap.entrySet().stream()
+ .filter(entry -> toscaAnalyzerService.isSubstitutableNodeTemplate(entry.getValue())
+ && toscaAnalyzerService.getSubstituteServiceTemplateName(
+ entry.getKey(), entry.getValue()).isPresent())
+ .map(entry -> toscaAnalyzerService.getSubstituteServiceTemplateName(
+ entry.getKey(), entry.getValue()).get())
+ .collect(Collectors.toSet());
+ }
+
+ // Method returns true if all of the resource are sub interface
+ private boolean ifAllResourceAreSubInterface(Set<String> nestedHeatFileNames,
+ TranslationContext context) {
+ if (nestedHeatFileNames.isEmpty()) {
+ return true;
+ }
+
+ for (String fileName : nestedHeatFileNames) {
+ String heatFileName = context.getNestedHeatFileName().get(fileName);
+
+ if (Objects.nonNull(heatFileName)
+ && !context.getTranslatedServiceTemplates().get(heatFileName).getTopology_template()
+ .getNode_templates().values().stream()
+ .allMatch(nodeTemplate -> ToscaNodeType.CONTRAILV2_VLAN_SUB_INTERFACE
+ .equals(nodeTemplate.getType()))) {
+ return false;
+ }
+ }
+
+ return true;
+ }
private List<UnifiedCompositionData> createUnifiedCompositionDataList(
ServiceTemplate serviceTemplate,
@@ -960,10 +963,10 @@ public class ConsolidationService {
ConsolidationData consolidationData,
TypeComputeConsolidationData typeComputeConsolidationData) {
- return (isThereMoreThanOneComputeTypeInstance(typeComputeConsolidationData)
- && isNumberOfPortsEqualsBetweenComputeNodes(typeComputeConsolidationData)
- && isNumberOfPortFromEachTypeLegal(typeComputeConsolidationData)
- && isPortTypesEqualsBetweenComputeNodes(typeComputeConsolidationData)
+ return (typeComputeConsolidationData.isThereMoreThanOneComputeTypeInstance()
+ && typeComputeConsolidationData.isNumberOfPortsEqualsBetweenComputeNodes()
+ && typeComputeConsolidationData.isNumberOfPortFromEachTypeLegal()
+ && typeComputeConsolidationData.isPortTypesEqualsBetweenComputeNodes()
&& checkGetAttrBetweenConsolidationDataEntitiesNotFromSameType(serviceTemplate,
typeComputeConsolidationData, consolidationData)
&& checkSubInterfaceConsolidationPreCondition(serviceTemplate, consolidationData,
@@ -971,75 +974,6 @@ public class ConsolidationService {
}
- private boolean isThereMoreThanOneComputeTypeInstance(
- TypeComputeConsolidationData typeComputeConsolidationData) {
- return typeComputeConsolidationData.getAllComputeNodeTemplateIds().size() > 1;
- }
-
- private boolean isNumberOfPortsEqualsBetweenComputeNodes(
- TypeComputeConsolidationData typeComputeConsolidationData) {
- int startingNumberOfPorts =
- getNumberOfPortsPerCompute(typeComputeConsolidationData
- .getAllComputeTemplateConsolidationData().iterator().next());
-
- for (ComputeTemplateConsolidationData compute : typeComputeConsolidationData
- .getAllComputeTemplateConsolidationData()) {
- if (getNumberOfPortsPerCompute(compute) != startingNumberOfPorts) {
- return false;
- }
- }
-
- return true;
- }
-
-
- private boolean isNumberOfPortFromEachTypeLegal(
- TypeComputeConsolidationData typeComputeConsolidationData) {
-
- Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationDataList =
- typeComputeConsolidationData.getAllComputeTemplateConsolidationData();
-
- for (ComputeTemplateConsolidationData computeTemplate : computeTemplateConsolidationDataList) {
- Map<String, List<String>> currPortsMap = computeTemplate.getPorts();
- if (MapUtils.isEmpty(currPortsMap)) {
- return true;
- }
- for (List<String> portList : currPortsMap.values()) {
- if (portList.size() > 1) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- private boolean isPortTypesEqualsBetweenComputeNodes(
- TypeComputeConsolidationData typeComputeConsolidationData) {
- Set<String> staringPortIds = getPortsIds(
- typeComputeConsolidationData.getAllComputeTemplateConsolidationData().iterator().next());
-
- for (ComputeTemplateConsolidationData compute : typeComputeConsolidationData
- .getAllComputeTemplateConsolidationData()) {
- Set<String> currentPortIds = getPortsIds(compute);
- if (!currentPortIds.equals(staringPortIds)) {
- return false;
- }
- }
- return true;
- }
-
- private int getNumberOfPortsPerCompute(
- ComputeTemplateConsolidationData computeTemplateConsolidationData) {
- return getPortsIds(computeTemplateConsolidationData).size();
- }
-
- private Set<String> getPortsIds(
- ComputeTemplateConsolidationData computeTemplateConsolidationData) {
- return MapUtils.isEmpty(computeTemplateConsolidationData.getPorts()) ? new HashSet<>()
- : computeTemplateConsolidationData.getPorts().keySet();
- }
-
List<String> getPropertiesWithIdenticalVal(UnifiedCompositionEntity entity) {
switch (entity) {
case COMPUTE: