From 0b3c65c18977212bc74b1f01cefe5ebecc2586f3 Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Wed, 5 Feb 2020 12:13:57 +0000 Subject: Onboard TOSCA data_types defined in package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Onboard TOSCA data_types defined in a CSAR package that does not exists in the SDC default data_types library. Those data_types were being lost. All data_types declared in the package will be included in the "GlobalSubstitutionServiceTemplate". This includes the data_types declared in the main topology template and in its imported definition files. Defines a maven profile to compile the catalog-be in the main SDC pom. Change-Id: I39445b0f42e924dc1015945b7e605e804c1d505b Issue-ID: SDC-2763 Signed-off-by: André Schmid Signed-off-by: Vasyl Razinkov --- .../core/impl/AbstractToscaConverter.java | 30 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java') diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java index 6619a4c580..43ae3c9f38 100644 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/AbstractToscaConverter.java @@ -33,7 +33,6 @@ import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.HEAT_IND import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.ONAP_INDEX_IMPORT_FILE; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ORIG_PATH_FILE_NAME; import static org.openecomp.sdc.tosca.csar.ToscaMetadataFileInfo.TOSCA_META_PATH_FILE_NAME; - import java.io.File; import java.util.ArrayList; import java.util.Collection; @@ -43,7 +42,9 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.regex.Pattern; +import javax.validation.constraints.NotNull; import org.apache.commons.collections.MapUtils; +import org.onap.sdc.tosca.datatypes.model.DataType; import org.onap.sdc.tosca.datatypes.model.Import; import org.onap.sdc.tosca.datatypes.model.NodeType; import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; @@ -60,11 +61,14 @@ import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; import org.openecomp.sdc.tosca.services.DataModelUtil; import org.openecomp.sdc.tosca.services.ToscaUtil; import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.error.YAMLException; public abstract class AbstractToscaConverter implements ToscaConverter { + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractToscaConverter.class); - public abstract void convertTopologyTemplate(ServiceTemplate serviceTemplate, + public abstract void convertTopologyTemplate(@NotNull ServiceTemplate serviceTemplate, ServiceTemplateReaderService readerService); protected void handleMetadataFile(Map csarFiles) { @@ -74,8 +78,8 @@ public abstract class AbstractToscaConverter implements ToscaConverter { } } - protected void handleDefintionTemplate(String key, Map csarFiles, - GlobalSubstitutionServiceTemplate gsst) { + protected void handleDefinitionTemplate(String key, Map csarFiles, + GlobalSubstitutionServiceTemplate gsst) { try { ServiceTemplateReaderService readerService = new ServiceTemplateReaderServiceImpl(csarFiles.get(key)); Object nodeTypes = readerService.getNodeTypes(); @@ -83,6 +87,7 @@ public abstract class AbstractToscaConverter implements ToscaConverter { Map nodeTypeMap = (Map) nodeTypes; gsst.appendNodes(nodeTypeMap); } + gsst.appendDataTypes((Map) readerService.getDataTypes()); } catch (YAMLException ye) { throw new CoreException(new ErrorCode.ErrorCodeBuilder() .withMessage("Invalid YAML content in file " + key) @@ -158,6 +163,7 @@ public abstract class AbstractToscaConverter implements ToscaConverter { convertToscaVersion(serviceTemplate, readerService); convertImports(serviceTemplate); convertNodeTypes(serviceTemplate, readerService); + convertDataTypes(serviceTemplate, readerService); convertTopologyTemplate(serviceTemplate, readerService); } catch (YAMLException ye) { throw new CoreException(new ErrorCode.ErrorCodeBuilder() @@ -228,6 +234,22 @@ public abstract class AbstractToscaConverter implements ToscaConverter { } } + protected void convertDataTypes(final ServiceTemplate serviceTemplate, + final ServiceTemplateReaderService readerService) { + try { + final Map dataTypes = readerService.getDataTypes(); + for (final Map.Entry entry : dataTypes.entrySet()) { + final Optional dataType = + ToscaConverterUtil.createObjectFromClass(entry.getKey(), entry.getValue(), DataType.class); + + dataType.ifPresent( + nodeTypeValue -> DataModelUtil.addDataType(serviceTemplate, entry.getKey(), nodeTypeValue)); + } + } catch (final Exception ex) { + LOGGER.error("Unable to process data types: ", ex); + } + } + protected CsarFileTypes getFileType(String fileName) { if (isMainServiceTemplate(fileName)) { return CsarFileTypes.mainServiceTemplate; -- cgit 1.2.3-korg