aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java
diff options
context:
space:
mode:
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.java25
1 files changed, 18 insertions, 7 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 41dc3a6db3..d64349b0fa 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
@@ -183,25 +183,32 @@ public class YamlTemplateParsingHandler {
Map<String, Object> foundPolicies = findFirstToscaMapElement(toscaJson, POLICIES)
.left()
.on(err -> logPoliciesNotFound(fileName));
+ Map<String, Object> foundNodeTemplates = findFirstToscaMapElement(toscaJson, NODE_TEMPLATES)
+ .left()
+ .on(err -> failIfNoNodeTemplates(fileName));
+ Map<String, Object> foundGroups = findFirstToscaMapElement(toscaJson, GROUPS)
+ .left()
+ .on(err -> logGroupsNotFound(fileName));
if (MapUtils.isNotEmpty(foundPolicies)) {
return foundPolicies
.entrySet()
.stream()
- .map(this::createPolicy)
+ .map(policyNameValue -> createPolicy(policyNameValue, foundNodeTemplates, foundGroups))
.collect(Collectors.toMap(PolicyDefinition::getName, p -> p));
}
return Collections.emptyMap();
}
- private PolicyDefinition createPolicy(Map.Entry<String, Object> policyNameValue) {
+ private PolicyDefinition createPolicy(Map.Entry<String, Object> policyNameValue,
+ Map<String, Object> nodeTemplatesJson, Map<String, Object> groupsTemplateJson) {
PolicyDefinition emptyPolicyDef = new PolicyDefinition();
String policyName = policyNameValue.getKey();
emptyPolicyDef.setName(policyName);
try {
if (policyNameValue.getValue() != null && policyNameValue.getValue() instanceof Map) {
Map<String, Object> policyTemplateJsonMap = (Map<String, Object>) policyNameValue.getValue();
- validateAndFillPolicy(emptyPolicyDef, policyTemplateJsonMap);
+ validateAndFillPolicy(emptyPolicyDef, policyTemplateJsonMap, nodeTemplatesJson, groupsTemplateJson);
} else {
rollbackWithException(ActionStatus.NOT_TOPOLOGY_TOSCA_TEMPLATE);
}
@@ -217,7 +224,9 @@ public class YamlTemplateParsingHandler {
return Collections.emptyMap();
}
- private void validateAndFillPolicy(PolicyDefinition emptyPolicyDefinition, Map<String, Object> policyTemplateJsonMap) {
+ private void validateAndFillPolicy(PolicyDefinition emptyPolicyDefinition,
+ Map<String, Object> policyTemplateJsonMap, Map<String, Object> nodeTemplatesJson,
+ Map<String, Object> groupsTemplateJson) {
String policyTypeName = (String) policyTemplateJsonMap.get(TYPE.getElementName());
if(StringUtils.isEmpty(policyTypeName)){
log.debug("#validateAndFillPolicy - The 'type' member is not found under policy {}", emptyPolicyDefinition.getName());
@@ -225,7 +234,7 @@ public class YamlTemplateParsingHandler {
}
emptyPolicyDefinition.setType(policyTypeName);
// set policy targets
- emptyPolicyDefinition.setTargets(validateFillPolicyTargets(policyTemplateJsonMap));
+ emptyPolicyDefinition.setTargets(validateFillPolicyTargets(policyTemplateJsonMap, nodeTemplatesJson, groupsTemplateJson));
PolicyTypeDefinition policyTypeDefinition = validateGetPolicyTypeDefinition(policyTypeName);
// set policy properties
emptyPolicyDefinition.setProperties(validateFillPolicyProperties(policyTypeDefinition, policyTemplateJsonMap));
@@ -272,12 +281,14 @@ public class YamlTemplateParsingHandler {
return newPropertyDef;
}
- private Map<PolicyTargetType, List<String>> validateFillPolicyTargets(Map<String, Object> policyTemplateJson) {
+ private Map<PolicyTargetType, List<String>> validateFillPolicyTargets(Map<String, Object> policyTemplateJson,
+ Map<String, Object> nodeTemplatesJson, Map<String, Object> groupTemplateJson) {
Map<PolicyTargetType, List<String>> targets = new EnumMap<>(PolicyTargetType.class);
if (policyTemplateJson.containsKey(TARGETS.getElementName())
&& policyTemplateJson.get(TARGETS.getElementName()) instanceof List ) {
List<String> targetsElement = (List<String>) policyTemplateJson.get(TARGETS.getElementName());
- targets.put(PolicyTargetType.COMPONENT_INSTANCES, targetsElement);
+ targets.put(PolicyTargetType.COMPONENT_INSTANCES, targetsElement.stream().filter(nodeTemplatesJson::containsKey).collect(toList()));
+ targets.put(PolicyTargetType.GROUPS, targetsElement.stream().filter(groupTemplateJson::containsKey).collect(toList()));
}
return targets;
}