diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java')
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java | 97 |
1 files changed, 70 insertions, 27 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java index 2e67983194..a7ba9b549e 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionManager.java @@ -4,15 +4,16 @@ import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate; import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.sdc.tosca.services.DataModelUtil; import org.openecomp.sdc.tosca.services.ToscaAnalyzerService; +import org.openecomp.sdc.tosca.services.ToscaUtil; import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl; import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext; import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData; -import java.util.HashSet; import java.util.Map; +import java.util.Objects; import java.util.Optional; -import java.util.Set; public class UnifiedCompositionManager { @@ -43,38 +44,80 @@ public class UnifiedCompositionManager { Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates(); ServiceTemplate mainServiceTemplate = serviceTemplates.get(toscaServiceModel.getEntryDefinitionServiceTemplate()); - consolidationService.mainServiceTemplateConsolidation(mainServiceTemplate, translationContext); - ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); + createUnifiedComposition(toscaServiceModel, mainServiceTemplate, translationContext); + ToscaServiceModel unifiedToscaServiceModel = + HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext); + + mdcDataDebugMessage.debugExitMessage(null, null); + return unifiedToscaServiceModel; + } + + private void createUnifiedComposition(ToscaServiceModel toscaServiceModel, + ServiceTemplate serviceTemplate, + TranslationContext translationContext) { + mdcDataDebugMessage.debugEntryMessage(null, null); + + handleNestedServiceTemplates(toscaServiceModel, serviceTemplate, translationContext); + consolidationService.serviceTemplateConsolidation(serviceTemplate, translationContext); + unifiedCompositionService + .updateUnifiedAbstractNodesConnectivity(serviceTemplate, translationContext); + translationContext.addUnifiedHandledServiceTeamplte(serviceTemplate); + + mdcDataDebugMessage.debugExitMessage(null, null); + } + private void handleNestedServiceTemplates(ToscaServiceModel toscaServiceModel, + ServiceTemplate serviceTemplate, + TranslationContext translationContext) { + mdcDataDebugMessage.debugEntryMessage(null, null); - FileNestedConsolidationData mainFileNestedConsolidationData = + String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); + FileNestedConsolidationData fileNestedConsolidationData = translationContext.getConsolidationData().getNestedConsolidationData() - .getFileNestedConsolidationData(toscaServiceModel.getEntryDefinitionServiceTemplate()); - Set<String> substituteNodeTemplatesId = - mainFileNestedConsolidationData == null - || mainFileNestedConsolidationData.getAllNestedNodeTemplateIds() == null - ? new HashSet<>() : mainFileNestedConsolidationData.getAllNestedNodeTemplateIds(); - - for (String substituteNodeTemplateId : substituteNodeTemplatesId) { - NodeTemplate subNodeTemplate = mainServiceTemplate.getTopology_template().getNode_templates() - .get(substituteNodeTemplateId); - Optional<String> substituteServiceTemplateName = toscaAnalyzerService - .getSubstituteServiceTemplateName(substituteNodeTemplateId, subNodeTemplate); - if (substituteServiceTemplateName.isPresent()) { - ServiceTemplate substituteServiceTemplate = - serviceTemplates.get(substituteServiceTemplateName.get()); - - consolidationService.substitutionServiceTemplateConsolidation(substituteNodeTemplateId, - mainServiceTemplate, substituteServiceTemplate, translationContext); + .getFileNestedConsolidationData(serviceTemplateFileName); + + if (Objects.nonNull(fileNestedConsolidationData)) { + ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); + for (String substitutedNodeTemplateId : fileNestedConsolidationData + .getAllNestedNodeTemplateIds()) { + if (translationContext + .isNestedNodeWasHandled(serviceTemplateFileName, substitutedNodeTemplateId)) { + continue; + } + NodeTemplate nestedNodeTemplate = + DataModelUtil.getNodeTemplate(serviceTemplate, substitutedNodeTemplateId); + Optional<String> substituteServiceTemplateName = + toscaAnalyzerService.getSubstituteServiceTemplateName(substitutedNodeTemplateId, + nestedNodeTemplate); + if (substituteServiceTemplateName.isPresent()) { + ServiceTemplate substitutionServiceTemplate = + toscaServiceModel.getServiceTemplates().get(substituteServiceTemplateName.get()); + createUnifiedCompositionForNestedServiceTemplate(toscaServiceModel, serviceTemplate, + substitutionServiceTemplate, substitutedNodeTemplateId, translationContext); + } + translationContext.addNestedNodeAsHandled(serviceTemplateFileName, + substitutedNodeTemplateId); } } - unifiedCompositionService - .updateUnifiedAbstractNodesConnectivity(mainServiceTemplate, translationContext); - ToscaServiceModel unifiedToscaServiceModel = - HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext); mdcDataDebugMessage.debugExitMessage(null, null); - return unifiedToscaServiceModel; + } + + private void createUnifiedCompositionForNestedServiceTemplate( + ToscaServiceModel toscaServiceModel, + ServiceTemplate serviceTemplate, + ServiceTemplate substitutionServiceTemplate, + String substitutedNodeTemplateId, + TranslationContext translationContext) { + mdcDataDebugMessage.debugEntryMessage(null, null); + handleNestedServiceTemplates(toscaServiceModel, substitutionServiceTemplate, + translationContext); + consolidationService.substitutionServiceTemplateConsolidation(substitutedNodeTemplateId, + serviceTemplate, substitutionServiceTemplate, translationContext); + unifiedCompositionService + .updateUnifiedAbstractNodesConnectivity(substitutionServiceTemplate, translationContext); + translationContext.addUnifiedHandledServiceTeamplte(substitutionServiceTemplate); + mdcDataDebugMessage.debugExitMessage(null, null); } } |