diff options
author | 2018-07-23 17:01:41 +0300 | |
---|---|---|
committer | 2018-07-27 19:28:56 +0530 | |
commit | 9200382f2ce7b4bb729aa287d0878004b2d2b4f9 (patch) | |
tree | ceb5b59cad31fe7b9d507ca6399119aa398205e3 /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java | |
parent | ae5a3714376a5f4492470fbf9b54046c1229171d (diff) |
Refactoring Consolidation Service
Changes as per comments
Change-Id: Ic2c800513265daf4bbed1f15920864ba0cb28859
Issue-ID: SDC-1330
Signed-off-by: siddharth0905 <siddharth.singh4@amdocs.com>
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.java | 206 |
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: |