From 5c9d068e66264be8db6018cb551db7c05e8e2596 Mon Sep 17 00:00:00 2001 From: KrupaNagabhushan Date: Wed, 27 Oct 2021 16:37:19 +0100 Subject: Update import service to import substitution filters Issue-ID: SDC-3774 Signed-off-by: KrupaNagabhushan Change-Id: I7f747a07c82db6cec80db7ec1cb69fe9a5c8743a --- .../csar/YamlTemplateParsingHandler.java | 39 +++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java') 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 cb3057b49a..5120834b1e 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 @@ -44,6 +44,7 @@ import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.NODE_TYPE; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.POLICIES; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.PROPERTIES; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.REQUIREMENTS; +import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.SUBSTITUTION_FILTERS; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.SUBSTITUTION_MAPPINGS; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.TARGETS; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.TOPOLOGY_TEMPLATE; @@ -62,7 +63,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.Set; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -81,8 +81,10 @@ import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao; import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition; import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType; import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterPropertyDataDefinition; import org.openecomp.sdc.be.model.CapabilityDefinition; import org.openecomp.sdc.be.model.ComponentInstanceProperty; import org.openecomp.sdc.be.model.GroupDefinition; @@ -145,6 +147,7 @@ public class YamlTemplateParsingHandler { if (getSubstitutionMappings(mappedToscaTemplate) != null) { if (component.isService() && !interfaceTemplateYaml.isEmpty()) { parsedToscaYamlInfo.setProperties(getProperties(loadYamlAsStrictMap(interfaceTemplateYaml))); + parsedToscaYamlInfo.setSubstitutionFilterProperties(getSubstitutionFilterProperties(mappedToscaTemplate)); } parsedToscaYamlInfo.setSubstitutionMappingNodeType((String) getSubstitutionMappings(mappedToscaTemplate).get(NODE_TYPE.getElementName())); } @@ -189,6 +192,40 @@ public class YamlTemplateParsingHandler { return ImportUtils.getProperties(toscaJson).left().on(err -> new HashMap<>()); } + private ListDataDefinition getSubstitutionFilterProperties(Map toscaJson) { + ListDataDefinition propertyList = new ListDataDefinition<>(); + Map substitutionFilters = findFirstToscaMapElement(toscaJson, SUBSTITUTION_FILTERS).left().on(err -> new HashMap<>()); + if (MapUtils.isEmpty(substitutionFilters)) { + return propertyList; + } + ArrayList>>> substitutionFilterProperties = + (ArrayList>>>) substitutionFilters.get("properties"); + if (CollectionUtils.isEmpty(substitutionFilterProperties)) { + return propertyList; + } + for (Map>> filterProps : substitutionFilterProperties) { + for (Map.Entry>> filterPropsMap : filterProps.entrySet()) { + for (Map mapValue : filterPropsMap.getValue()) { + RequirementSubstitutionFilterPropertyDataDefinition requirementSubstitutionFilterPropertyDataDefinition = + new RequirementSubstitutionFilterPropertyDataDefinition(); + requirementSubstitutionFilterPropertyDataDefinition.setName(filterPropsMap.getKey()); + requirementSubstitutionFilterPropertyDataDefinition.setConstraints( + getSubstitutionFilterConstraints(filterPropsMap.getKey(), mapValue)); + propertyList.add(requirementSubstitutionFilterPropertyDataDefinition); + } + } + } + return propertyList; + } + + private List getSubstitutionFilterConstraints(String name, Map value) { + List constraints = new ArrayList<>(); + for (Map.Entry valueMap : value.entrySet()) { + constraints.add(name + ": {" + valueMap.getKey() + ": " + valueMap.getValue() + "}"); + } + return constraints; + } + private Map getPolicies(String fileName, Map toscaJson, String model) { Map foundPolicies = findFirstToscaMapElement(toscaJson, POLICIES).left().on(err -> logPoliciesNotFound(fileName)); if (MapUtils.isNotEmpty(foundPolicies)) { -- cgit 1.2.3-korg