diff options
author | 2021-10-27 16:37:19 +0100 | |
---|---|---|
committer | 2021-12-07 09:24:54 +0000 | |
commit | 5c9d068e66264be8db6018cb551db7c05e8e2596 (patch) | |
tree | cf2e5408b1fe76bbd9c83d81883f99b0188e7666 /catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java | |
parent | e97081649ac9b8655d45fe7781800a5e717dea07 (diff) |
Update import service to import substitution filters
Issue-ID: SDC-3774
Signed-off-by: KrupaNagabhushan <krupa.nagabhushan@est.tech>
Change-Id: I7f747a07c82db6cec80db7ec1cb69fe9a5c8743a
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 | 39 |
1 files changed, 38 insertions, 1 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 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<RequirementSubstitutionFilterPropertyDataDefinition> getSubstitutionFilterProperties(Map<String, Object> toscaJson) { + ListDataDefinition<RequirementSubstitutionFilterPropertyDataDefinition> propertyList = new ListDataDefinition<>(); + Map<String, Object> substitutionFilters = findFirstToscaMapElement(toscaJson, SUBSTITUTION_FILTERS).left().on(err -> new HashMap<>()); + if (MapUtils.isEmpty(substitutionFilters)) { + return propertyList; + } + ArrayList<Map<String, List<Map<String, Object>>>> substitutionFilterProperties = + (ArrayList<Map<String, List<Map<String, Object>>>>) substitutionFilters.get("properties"); + if (CollectionUtils.isEmpty(substitutionFilterProperties)) { + return propertyList; + } + for (Map<String, List<Map<String, Object>>> filterProps : substitutionFilterProperties) { + for (Map.Entry<String, List<Map<String, Object>>> filterPropsMap : filterProps.entrySet()) { + for (Map<String, Object> mapValue : filterPropsMap.getValue()) { + RequirementSubstitutionFilterPropertyDataDefinition requirementSubstitutionFilterPropertyDataDefinition = + new RequirementSubstitutionFilterPropertyDataDefinition(); + requirementSubstitutionFilterPropertyDataDefinition.setName(filterPropsMap.getKey()); + requirementSubstitutionFilterPropertyDataDefinition.setConstraints( + getSubstitutionFilterConstraints(filterPropsMap.getKey(), mapValue)); + propertyList.add(requirementSubstitutionFilterPropertyDataDefinition); + } + } + } + return propertyList; + } + + private List<String> getSubstitutionFilterConstraints(String name, Map<String, Object> value) { + List<String> constraints = new ArrayList<>(); + for (Map.Entry<String, Object> valueMap : value.entrySet()) { + constraints.add(name + ": {" + valueMap.getKey() + ": " + valueMap.getValue() + "}"); + } + return constraints; + } + private Map<String, PolicyDefinition> getPolicies(String fileName, Map<String, Object> toscaJson, String model) { Map<String, Object> foundPolicies = findFirstToscaMapElement(toscaJson, POLICIES).left().on(err -> logPoliciesNotFound(fileName)); if (MapUtils.isNotEmpty(foundPolicies)) { |