diff options
author | Liang Ding <liang.ding@intel.com> | 2019-04-15 00:05:05 -0700 |
---|---|---|
committer | Ofir Sonsino <ofir.sonsino@intl.att.com> | 2019-10-30 07:56:21 +0000 |
commit | 8ff60789e080dd99c604d31a6e754be164fba11e (patch) | |
tree | bae4286ab2b19a0d0a3a6ebedd57e17aa42dceea /catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java | |
parent | c42c9f75adb72f80e57694b5bf67db7c94f33a89 (diff) |
add artifacts support in TOSCA exported yml file
Change-Id: I56f8a6a1ce758876e83a7ee8318b79644ae7d5cb
Issue-ID: SDC-1952
Signed-off-by: Liang Ding <liang.ding@intel.com>
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java index 7b3d4fac25..cff6c26e58 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java @@ -467,6 +467,7 @@ public class YamlTemplateParsingHandler { setToscaResourceType(createdNodesToscaResourceNames, nodeTemplateInfo, nodeTemplateJsonMap); setRequirements(nodeTemplateInfo, nodeTemplateJsonMap); setCapabilities(nodeTemplateInfo, nodeTemplateJsonMap); + setArtifacts(nodeTemplateInfo, nodeTemplateJsonMap); updateProperties(nodeTemplateInfo, nodeTemplateJsonMap); setDirectives(nodeTemplateInfo, nodeTemplateJsonMap); setNodeFilter(nodeTemplateInfo, nodeTemplateJsonMap); @@ -515,6 +516,15 @@ public class YamlTemplateParsingHandler { } } + private void setArtifacts(UploadComponentInstanceInfo nodeTemplateInfo, Map<String, Object> nodeTemplateJsonMap) { + if (nodeTemplateJsonMap.containsKey(ARTIFACTS.getElementName())) { + Map<String, Map<String, UploadArtifactInfo>> eitherArtifactsRes = createArtifactsModuleFromYaml(nodeTemplateJsonMap); + if (!eitherArtifactsRes.isEmpty()) { + nodeTemplateInfo.setArtifacts(eitherArtifactsRes); + } + } + } + private void setRequirements(UploadComponentInstanceInfo nodeTemplateInfo, Map<String, Object> nodeTemplateJsonMap) { if (nodeTemplateJsonMap.containsKey(REQUIREMENTS.getElementName())) { Map<String, List<UploadReqInfo>> regResponse = createReqModuleFromYaml(nodeTemplateJsonMap); @@ -591,6 +601,63 @@ public class YamlTemplateParsingHandler { } @SuppressWarnings("unchecked") + private Map<String, Map<String, UploadArtifactInfo>> createArtifactsModuleFromYaml(Map<String, Object> nodeTemplateJsonMap) { + Map<String, Map<String, UploadArtifactInfo>> moduleArtifacts = new HashMap<>(); + Either<List<Object>, ResultStatusEnum> ArtifactsListRes = + findFirstToscaListElement(nodeTemplateJsonMap, ARTIFACTS); + if (ArtifactsListRes.isLeft()) { + for (Object jsonArtifactObj : ArtifactsListRes.left().value()) { + String key = ((Map<String, Object>) jsonArtifactObj).keySet().iterator().next(); + Object artifactJson = ((Map<String, Object>) jsonArtifactObj).get(key); + addModuleNodeTemplateArtifacts(moduleArtifacts, artifactJson, key); + } + } else { + Either<Map<String, Map<String, Object>>, ResultStatusEnum> ArtifactsMapRes = + findFirstToscaMapElement(nodeTemplateJsonMap, ARTIFACTS); + if (ArtifactsMapRes.isLeft()) { + for (Map.Entry<String, Map<String, Object>> entry : ArtifactsMapRes.left().value().entrySet()) { + String artifactName = entry.getKey(); + Object artifactJson = entry.getValue(); + addModuleNodeTemplateArtifacts(moduleArtifacts, artifactJson, artifactName); + } + } + } + return moduleArtifacts; + } + + private void addModuleNodeTemplateArtifacts(Map<String, Map<String, UploadArtifactInfo>> moduleArtifacts, Object artifactJson, String artifactName) { + + UploadArtifactInfo artifact = buildModuleNodeTemplateArtifact(artifactJson); + artifact.setName(artifactName); + if (moduleArtifacts.containsKey(ARTIFACTS.getElementName())) { + moduleArtifacts.get(ARTIFACTS.getElementName()).put(artifactName, artifact); + } else { + Map<String, UploadArtifactInfo> map = new HashMap<>(); + map.put(artifactName, artifact); + moduleArtifacts.put(ARTIFACTS.getElementName(), map); + } + } + + @SuppressWarnings("unchecked") + private UploadArtifactInfo buildModuleNodeTemplateArtifact(Object artifactObject) { + UploadArtifactInfo artifactTemplateInfo = new UploadArtifactInfo(); + if (artifactObject instanceof Map) { + fillArtifact(artifactTemplateInfo, (Map<String, Object>) artifactObject); + } + return artifactTemplateInfo; + } + + private void fillArtifact(UploadArtifactInfo artifactTemplateInfo, Map<String, Object> nodeTemplateJsonMap) { + if (nodeTemplateJsonMap.containsKey(TYPE.getElementName())) { + artifactTemplateInfo.setType((String) nodeTemplateJsonMap.get(TYPE.getElementName())); + } + if (nodeTemplateJsonMap.containsKey(FILE.getElementName())) { + artifactTemplateInfo.setFile((String) nodeTemplateJsonMap.get(FILE.getElementName())); + } + } + + + @SuppressWarnings("unchecked") private Map<String, List<UploadCapInfo>> createCapModuleFromYaml(Map<String, Object> nodeTemplateJsonMap) { Map<String, List<UploadCapInfo>> moduleCap = new HashMap<>(); Either<List<Object>, ResultStatusEnum> capabilitiesListRes = |