From c0cd58244635c610c604066e9542058b310a706d Mon Sep 17 00:00:00 2001 From: Sithara Nambiar Date: Tue, 29 Sep 2020 23:10:17 +0530 Subject: sdc changes for identifying helm package as a vfm Issue-ID: REQ-341 Signed-off-by: Sithara Nambiar Change-Id: Ide4736655c01dd25dae5afe1207a292a6bcd6951 --- .../impl/ComponentInstanceBusinessLogic.java | 2 +- .../sdc/be/info/ArtifactTemplateInfo.java | 4 +++ .../src/test/resources/Files/VNFs/helm.zip | Bin 0 -> 40052 bytes .../datatypes/structure/HeatStructureTree.java | 9 ++++++ .../sdc/heat/services/tree/HeatTreeManager.java | 5 ++- .../heattotosca/to/FileDataCollection.java | 12 +++++++ .../services/heattotosca/HeatToToscaUtil.java | 13 ++++++++ .../services/heattotosca/TranslationService.java | 35 +++++++++++++++++++++ .../types/candidateheat/Module.java | 2 ++ .../CandidateServiceImpl.java | 11 ++++++- .../ManifestCreatorNamingConventionImpl.java | 6 +++- 11 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 integration-tests/src/test/resources/Files/VNFs/helm.zip diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java index ffccc978db..baa794c6cc 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java @@ -859,7 +859,7 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic { if (!type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_ENV.getType())) { finalDeploymentArtifacts.put(artifact.getArtifactLabel(), artifact); } - if (type.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT.getType())) { + if (type.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HELM.getType())|| type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT.getType())) { artifact.setTimeout(defaultHeatTimeout); } else { continue; diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/info/ArtifactTemplateInfo.java b/catalog-be/src/main/java/org/openecomp/sdc/be/info/ArtifactTemplateInfo.java index 21589e0723..ab088ec3d8 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/info/ArtifactTemplateInfo.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/info/ArtifactTemplateInfo.java @@ -59,6 +59,7 @@ public class ArtifactTemplateInfo { private static final String ARTIFACT_TEMPLATE_ENV = "env"; private static final String IS_BASE = "isBase"; private static final String CSAR_HEAT = "HEAT"; + private static final String CSAR_HELM = "HELM"; private static final String CSAR_NETWORK = "network"; private static final String CSAR_VOLUME = "volume"; private static final String CSAR_NESTED = "nested"; @@ -140,6 +141,9 @@ public class ArtifactTemplateInfo { else if (type.equalsIgnoreCase(CSAR_HEAT)) { correctType = ArtifactTypeEnum.HEAT.getType(); } + else if (type.equalsIgnoreCase(CSAR_HELM)) { + correctType = ArtifactTypeEnum.HELM.getType(); + } else { correctType = ArtifactTypeEnum.OTHER.getType(); } diff --git a/integration-tests/src/test/resources/Files/VNFs/helm.zip b/integration-tests/src/test/resources/Files/VNFs/helm.zip new file mode 100644 index 0000000000..225143b873 Binary files /dev/null and b/integration-tests/src/test/resources/Files/VNFs/helm.zip differ diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java index 8d1b5912df..a65db6f2ea 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java @@ -50,6 +50,7 @@ public class HeatStructureTree implements Comparable { private Set nested; private Set other; private Set artifacts; + private Set helm; public HeatStructureTree() { } @@ -165,6 +166,14 @@ public class HeatStructureTree implements Comparable { this.other.add(other); } + public void addToHelmList(HeatStructureTree helm){ + if (this.helm == null) { + this.helm = new TreeSet<>(); + } + + this.helm.add(helm); + } + /** * Find item in set by name boolean. * diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java index 4ac09fbddd..b441fc8660 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java @@ -251,7 +251,10 @@ public class HeatTreeManager { } parentHeatStructureTree.getOther().add(childHeatStructureTree); } - } else { + } else if (FileData.Type.HELM.equals(type)) { + parentHeatStructureTree.addToHelmList(childHeatStructureTree); + } + else { artifact = new Artifact(fileName, type); if (!artifactRef.keySet().contains(fileName)) { artifactRef.put(fileName, artifact); diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/to/FileDataCollection.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/to/FileDataCollection.java index a9147b838f..b156078430 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/to/FileDataCollection.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/to/FileDataCollection.java @@ -32,11 +32,16 @@ public class FileDataCollection { Collection addOnFiles; Collection nestedFiles; Collection artifactFiles; + Collection HelmFiles; public Collection getBaseFile() { return baseFiles; } + public Collection getHelmFile() { + return HelmFiles; + } + public void setBaseFile(Collection baseFiles) { this.baseFiles = baseFiles; } @@ -109,6 +114,13 @@ public class FileDataCollection { this.baseFiles.add(baseFile); } + public void addHelmFiles(FileData helmFile) { + if (this.HelmFiles == null) { + this.HelmFiles = new ArrayList<>(); + } + this.HelmFiles.add(helmFile); + } + /** * Add artifact files. * diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java index 6649c90adb..d204281d6b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java @@ -220,6 +220,19 @@ public class HeatToToscaUtil { return null; } + static FileDataCollection getFileCollectionsByHelmFilter(List fileDataList, Set typeFilter) { + FileDataCollection fileDataCollection = new FileDataCollection(); + Map filteredFiles = filterFileDataListByType(fileDataList, typeFilter); + for (FileData fileData : filteredFiles.values()) { + String fileName = fileData.getFile(); + if((fileData.getType().equals(FileData.Type.HELM))) + { + fileDataCollection.addHelmFiles(fileData); + } + } + return fileDataCollection; + } + static FileDataCollection getFileCollectionsByFilter(List fileDataList, Set typeFilter, TranslationContext translationContext) { FileDataCollection fileDataCollection = new FileDataCollection(); diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java index 339d6ff023..6d22a3602c 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java @@ -70,6 +70,12 @@ public class TranslationService { return types; } + public static Set getTypesToProcessByHelmTranslator() { + Set types = new HashSet<>(); + types.add(FileData.Type.HELM); + return types; + } + /** * Translate heat files translator output. * @@ -81,6 +87,8 @@ public class TranslationService { List fileDataList = translationContext.getManifest().getContent().getData(); FileDataCollection fileDataCollection = HeatToToscaUtil.getFileCollectionsByFilter(fileDataList, TranslationService.getTypesToProcessByTranslator(), translationContext); + FileDataCollection fileDataCollectionHelm = HeatToToscaUtil.getFileCollectionsByHelmFilter(fileDataList, + TranslationService.getTypesToProcessByHelmTranslator()); if (fileDataCollection.getBaseFile() != null) { for (FileData fileData : fileDataCollection.getBaseFile()) { @@ -93,6 +101,13 @@ public class TranslationService { } } + if (fileDataCollectionHelm.getHelmFile() !=null) { + for (FileData fileData : fileDataCollectionHelm.getHelmFile()) { + translateHelmFile(mainServiceTemplate, fileData, translationContext); + + } + } + ToscaServiceModel toscaServiceModel = HeatToToscaUtil.createToscaServiceModel(mainServiceTemplate, translationContext); @@ -145,6 +160,26 @@ public class TranslationService { } } + + public void translateHelmFile(ServiceTemplate serviceTemplate, FileData heatFileData, + TranslationContext context) { + String heatFileName = heatFileData.getFile(); + Map inputs = serviceTemplate.getTopology_template().getInputs(); + if (!Objects.isNull(inputs)) { + + inputs.entrySet().forEach( + stringParameterDefinitionEntry -> { + List inputParamVFModuleList = getVFModulesList( + inputs.get(stringParameterDefinitionEntry.getKey())); + if (!inputParamVFModuleList.contains(FileUtils.getFileWithoutExtention(heatFileName)) ){ + inputParamVFModuleList.add(FileUtils.getFileWithoutExtention(heatFileName)); + } + } + ); + } + inputs.putAll(inputs); + } + private void handleHeatPseudoParam(String heatFileName, ServiceTemplate serviceTemplate, TranslationContext context) { Map translatedHeatPseudoParam = diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/candidateheat/Module.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/candidateheat/Module.java index d25341469f..25a004e890 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/candidateheat/Module.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/candidateheat/Module.java @@ -23,6 +23,7 @@ package org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.openecomp.sdc.heat.datatypes.manifest.FileData; @Getter @Setter @@ -35,5 +36,6 @@ public class Module { private String env; private String vol; private String volEnv; + private FileData.Type type; } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java index 5535416838..8bae5e8193 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/CandidateServiceImpl.java @@ -262,11 +262,20 @@ public class CandidateServiceImpl implements CandidateService { if (Objects.nonNull(fileData.getType()) && fileData.getType().equals(FileData.Type.HEAT)) { Module module = new Module(); + module.setType(FileData.Type.HEAT); module.setYaml(fileData.getFile()); module.setIsBase(fileData.getBase()); addHeatDependenciesToModule(module, fileData.getData()); structure.getModules().add(module); - } else if (HeatFileAnalyzer.isYamlOrEnvFile(fileData.getFile()) && + }else if (Objects.nonNull(fileData.getType()) && + fileData.getType().equals(FileData.Type.HELM)) { + Module module = new Module(); + module.setType(FileData.Type.HELM); + module.setYaml(fileData.getFile()); + module.setIsBase(fileData.getBase()); + structure.getModules().add(module); + } + else if (HeatFileAnalyzer.isYamlOrEnvFile(fileData.getFile()) && !FileData.Type.isArtifact(fileData.getType())) { structure.getUnassigned().add(fileData.getFile()); } else { diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/ManifestCreatorNamingConventionImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/ManifestCreatorNamingConventionImpl.java index 539e98df5a..3f061b059c 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/ManifestCreatorNamingConventionImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/filedatastructuremodule/ManifestCreatorNamingConventionImpl.java @@ -184,7 +184,11 @@ public class ManifestCreatorNamingConventionImpl implements ManifestCreator { FilesDataStructure filesDataStructure, List fileDataList) { if (CollectionUtils.isNotEmpty(filesDataStructure.getModules())) { for (Module module : filesDataStructure.getModules()) { - FileData fileData = createBaseFileData(FileData.Type.HEAT, module.getYaml()); + FileData.Type type = module.getType(); + if (type == null) { + type = FileData.Type.HEAT; + } + FileData fileData = createBaseFileData(type, module.getYaml()); fileData.setBase(module.getIsBase()); addEnv(module, fileData); addVolume(module, fileData); -- cgit 1.2.3-korg