add artifacts support in TOSCA exported yml file
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / ResourceBusinessLogic.java
index 5a99720..12345e7 100644 (file)
@@ -47,6 +47,7 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 import fj.data.Either;
 import org.apache.commons.codec.binary.Base64;
@@ -83,6 +84,7 @@ import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
+import org.openecomp.sdc.be.datatypes.elements.ToscaArtifactDataDefinition;
 import org.openecomp.sdc.be.datatypes.enums.ComponentFieldsEnum;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
 import org.openecomp.sdc.be.datatypes.enums.CreatedFrom;
@@ -115,6 +117,7 @@ import org.openecomp.sdc.be.model.RelationshipInfo;
 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
 import org.openecomp.sdc.be.model.RequirementDefinition;
 import org.openecomp.sdc.be.model.Resource;
+import org.openecomp.sdc.be.model.UploadArtifactInfo;
 import org.openecomp.sdc.be.model.UploadCapInfo;
 import org.openecomp.sdc.be.model.UploadComponentInstanceInfo;
 import org.openecomp.sdc.be.model.UploadInfo;
@@ -3113,6 +3116,23 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
                     uploadComponentInstanceInfo.getCapabilities());
             componentInstance.setCapabilities(validComponentInstanceCapabilities);
         }
+
+        if (isNotEmpty(uploadComponentInstanceInfo.getArtifacts())) {
+            Map<String, Map<String, UploadArtifactInfo>> artifacts = uploadComponentInstanceInfo.getArtifacts();
+            Map<String, ToscaArtifactDataDefinition> toscaArtifacts = new HashMap<>();
+            Map<String, Map<String, UploadArtifactInfo>> arts = artifacts.entrySet().stream()
+                                       .filter(e -> e.getKey().contains(TypeUtils.ToscaTagNamesEnum.ARTIFACTS.getElementName()))
+                                        .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
+            Map<String, UploadArtifactInfo> artifact = arts.get(TypeUtils.ToscaTagNamesEnum.ARTIFACTS.getElementName());
+            for (Map.Entry<String, UploadArtifactInfo> entry : artifact.entrySet()) {
+                ToscaArtifactDataDefinition to = new ToscaArtifactDataDefinition();
+                to.setFile(entry.getValue().getFile());
+                to.setType(entry.getValue().getType());
+                toscaArtifacts.put(entry.getKey(), to);
+            }
+            componentInstance.setToscaArtifacts(toscaArtifacts);
+        }
+
         if (!existingnodeTypeMap.containsKey(uploadComponentInstanceInfo.getType())) {
             log.debug(
                     "createResourceInstances - not found lates version for resource instance with name {} and type ",