diff options
author | talio <tali.orenbach@amdocs.com> | 2017-09-14 10:54:21 +0300 |
---|---|---|
committer | talio <tali.orenbach@amdocs.com> | 2017-09-14 10:54:21 +0300 |
commit | 9c94d11d63d9016af74dcf3a2fd72d50955eace2 (patch) | |
tree | 5f56c433dabf17e5bca92a4f95711853f7b871a5 /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main | |
parent | de8841c36349510e1b4c773753afad0eb8061f8c (diff) |
Removing service templates without node templates
Bugfix for cases where we have substitution service templates without node templates
Issue - ID : SDC-330
Change-Id: Ia9f33ce90fe0dbcc8ca2596ca63da704a48c7e67
Signed-off-by: talio <tali.orenbach@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main')
3 files changed, 49 insertions, 17 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java index f5ad2a1d3c..a0034a3828 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java @@ -587,6 +587,15 @@ public class TranslationContext { } + public Set<String> getServiceTemplatesWithoutNodeTemplateSection() { + return serviceTemplatesWithoutNodeTemplateSection; + } + + public void setServiceTemplatesWithoutNodeTemplateSection( + Set<String> serviceTemplatesWithoutNodeTemplateSection) { + this.serviceTemplatesWithoutNodeTemplateSection = serviceTemplatesWithoutNodeTemplateSection; + } + public void addServiceTemplateWithoutNodeTemplates(String serviceTemplateName){ this.serviceTemplatesWithoutNodeTemplateSection.add(serviceTemplateName); } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNestedImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNestedImpl.java index 843d9fabc6..c29409fe48 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNestedImpl.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNestedImpl.java @@ -20,6 +20,7 @@ package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation; +import org.apache.commons.collections4.MapUtils; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.sdc.heat.datatypes.manifest.FileData; import org.openecomp.sdc.logging.api.Logger; @@ -31,12 +32,15 @@ import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate; import org.openecomp.sdc.tosca.services.DataModelUtil; 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.to.TranslateTo; import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil; import org.openecomp.sdc.translator.services.heattotosca.Constants; import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil; import org.openecomp.sdc.translator.services.heattotosca.TranslationService; +import java.util.Objects; + public class ResourceTranslationNestedImpl extends ResourceTranslationBase { protected static Logger logger = @@ -46,8 +50,9 @@ public class ResourceTranslationNestedImpl extends ResourceTranslationBase { public void translate(TranslateTo translateTo) { mdcDataDebugMessage.debugEntryMessage(null, null); + TranslationContext context = translateTo.getContext(); FileData nestedFileData = - HeatToToscaUtil.getFileData(translateTo.getResource().getType(), translateTo.getContext()); + HeatToToscaUtil.getFileData(translateTo.getResource().getType(), context); if (nestedFileData == null) { logger.warn("Nested File '" + translateTo.getResource().getType() + "' is not exist, therefore, the nested resource with the ID '" @@ -58,7 +63,7 @@ public class ResourceTranslationNestedImpl extends ResourceTranslationBase { String substitutionNodeTypeKey = ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + "heat." + templateName; - if (!translateTo.getContext().getTranslatedServiceTemplates() + if (!context.getTranslatedServiceTemplates() .containsKey(translateTo.getResource().getType())) { //substitution service template @@ -68,7 +73,7 @@ public class ResourceTranslationNestedImpl extends ResourceTranslationBase { //global substitution service template ServiceTemplate globalSubstitutionServiceTemplate = new HeatToToscaUtil() .fetchGlobalSubstitutionServiceTemplate(translateTo.getServiceTemplate(), - translateTo.getContext()); + context); //substitution node type NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl() @@ -78,14 +83,22 @@ public class ResourceTranslationNestedImpl extends ResourceTranslationBase { substitutionNodeType); //substitution mapping HeatToToscaUtil - .handleSubstitutionMapping(translateTo.getContext(), substitutionNodeTypeKey, + .handleSubstitutionMapping(context, substitutionNodeTypeKey, nestedSubstitutionServiceTemplate, substitutionNodeType); //add new nested service template - translateTo.getContext().getTranslatedServiceTemplates() + context.getTranslatedServiceTemplates() .put(translateTo.getResource().getType(), nestedSubstitutionServiceTemplate); } + ServiceTemplate substitutionServiceTemplate = context.getTranslatedServiceTemplates() + .get(translateTo.getResource().getType()); + + if(DataModelUtil.isNodeTemplateSectionMissingFromServiceTemplate(substitutionServiceTemplate)){ + handleSubstitutionServiceTemplateWithoutNodeTemplates(translateTo, context, templateName); + mdcDataDebugMessage.debugExitMessage(null, null); + return; + } NodeTemplate substitutionNodeTemplate = HeatToToscaUtil.createAbstractSubstitutionNodeTemplate(translateTo, templateName, substitutionNodeTypeKey); @@ -100,6 +113,13 @@ public class ResourceTranslationNestedImpl extends ResourceTranslationBase { mdcDataDebugMessage.debugExitMessage(null, null); } + private void handleSubstitutionServiceTemplateWithoutNodeTemplates(TranslateTo translateTo, + TranslationContext context, + String templateName) { + context.addServiceTemplateWithoutNodeTemplates(templateName); + context.getTranslatedServiceTemplates().remove(translateTo.getResource().getType()); + } + private ServiceTemplate createSubstitutionServiceTemplate(TranslateTo translateTo, FileData nestedFileData, String templateName) { diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationResourceGroupImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationResourceGroupImpl.java index 5d25c7ef25..bd672e387f 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationResourceGroupImpl.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationResourceGroupImpl.java @@ -45,6 +45,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; public class ResourceTranslationResourceGroupImpl extends ResourceTranslationBase { @@ -72,7 +73,7 @@ public class ResourceTranslationResourceGroupImpl extends ResourceTranslationBas logger.warn("Resource '" + translateTo.getResourceId() + "' of type'" + HeatResourcesTypes.RESOURCE_GROUP_RESOURCE_TYPE.getHeatResource() + "' with resourceDef which is not pointing to nested heat file is not supported and " - + "will be ignored in the translation "); + + "will be ignored in the translation "); mdcDataDebugMessage.debugExitMessage(null, null); return; @@ -88,17 +89,19 @@ public class ResourceTranslationResourceGroupImpl extends ResourceTranslationBas translateTo.getHeatOrchestrationTemplate(), nestedResource, translateTo.getResourceId(), translateTo.getContext()); if (substitutionNodeTemplateId.isPresent()) { - NodeTemplate substitutionNodeTemplate = DataModelUtil - .getNodeTemplate(translateTo.getServiceTemplate(), substitutionNodeTemplateId.get()); - Map serviceTemplateFilter = (Map<String, Object>) substitutionNodeTemplate.getProperties() - .get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME); - - populateServiceTemplateFilterProperties(translateTo, substitutionNodeTemplate, - serviceTemplateFilter); - handlingIndexVar(translateTo, substitutionNodeTemplate); - DataModelUtil - .addNodeTemplate(translateTo.getServiceTemplate(), substitutionNodeTemplateId.get(), - substitutionNodeTemplate); + NodeTemplate substitutionNodeTemplate = + DataModelUtil.getNodeTemplate(translateTo.getServiceTemplate(), substitutionNodeTemplateId.get()); + if(!Objects.isNull(substitutionNodeTemplate)) { + Map serviceTemplateFilter = (Map<String, Object>) substitutionNodeTemplate.getProperties() + .get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME); + + populateServiceTemplateFilterProperties(translateTo, substitutionNodeTemplate, + serviceTemplateFilter); + handlingIndexVar(translateTo, substitutionNodeTemplate); + DataModelUtil + .addNodeTemplate(translateTo.getServiceTemplate(), substitutionNodeTemplateId.get(), + substitutionNodeTemplate); + } } mdcDataDebugMessage.debugExitMessage(null, null); |