sdc changes for identifying helm package as a vfm 34/113334/5
authorSithara Nambiar <sitharav.aredath@huawei.com>
Tue, 29 Sep 2020 17:40:17 +0000 (23:10 +0530)
committerSithara Nambiar <sitharav.aredath@huawei.com>
Sat, 3 Oct 2020 09:33:26 +0000 (15:03 +0530)
Issue-ID: REQ-341

Signed-off-by: Sithara Nambiar <sitharav.aredath@huawei.com>
Change-Id: Ide4736655c01dd25dae5afe1207a292a6bcd6951

catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/info/ArtifactTemplateInfo.java
integration-tests/src/test/resources/Files/VNFs/helm.zip [new file with mode: 0644]
openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java
openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/services/tree/HeatTreeManager.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/to/FileDataCollection.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/TranslationService.java
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
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
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 ffccc97..baa794c 100644 (file)
@@ -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;
index 21589e0..ab088ec 100644 (file)
@@ -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 (file)
index 0000000..225143b
Binary files /dev/null and b/integration-tests/src/test/resources/Files/VNFs/helm.zip differ
index 8d1b591..a65db6f 100644 (file)
@@ -50,6 +50,7 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> {
     private Set<HeatStructureTree> nested;
     private Set<HeatStructureTree> other;
     private Set<Artifact> artifacts;
+    private Set<HeatStructureTree> helm;
 
     public HeatStructureTree() {
     }
@@ -165,6 +166,14 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> {
         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.
      *
index 4ac09fb..b441fc8 100644 (file)
@@ -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);
index a9147b8..b156078 100644 (file)
@@ -32,11 +32,16 @@ public class FileDataCollection {
   Collection<FileData> addOnFiles;
   Collection<FileData> nestedFiles;
   Collection<FileData> artifactFiles;
+  Collection<FileData> HelmFiles;
 
   public Collection<FileData> getBaseFile() {
     return baseFiles;
   }
 
+  public Collection<FileData> getHelmFile() {
+    return HelmFiles;
+  }
+
   public void setBaseFile(Collection<FileData> 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.
    *
index 6649c90..d204281 100644 (file)
@@ -220,6 +220,19 @@ public class HeatToToscaUtil {
         return null;
     }
 
+    static FileDataCollection getFileCollectionsByHelmFilter(List<FileData> fileDataList, Set<FileData.Type> typeFilter) {
+        FileDataCollection fileDataCollection = new FileDataCollection();
+        Map<String, FileData> 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<FileData> fileDataList, Set<FileData.Type> typeFilter,
                                                                 TranslationContext translationContext) {
         FileDataCollection fileDataCollection = new FileDataCollection();
index 339d6ff..6d22a36 100644 (file)
@@ -70,6 +70,12 @@ public class TranslationService {
         return types;
     }
 
+    public static Set<FileData.Type> getTypesToProcessByHelmTranslator() {
+        Set<FileData.Type> types = new HashSet<>();
+        types.add(FileData.Type.HELM);
+        return types;
+    }
+
     /**
      * Translate heat files translator output.
      *
@@ -81,6 +87,8 @@ public class TranslationService {
         List<FileData> 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<String, ParameterDefinition> 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<String, String> translatedHeatPseudoParam =
index 5535416..8bae5e8 100644 (file)
@@ -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 {
index 539e98d..3f061b0 100644 (file)
@@ -184,7 +184,11 @@ public class ManifestCreatorNamingConventionImpl implements ManifestCreator {
       FilesDataStructure filesDataStructure, List<FileData> 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);