summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatResourceValidator.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatResourceValidator.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatResourceValidator.java307
1 files changed, 121 insertions, 186 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatResourceValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatResourceValidator.java
index e445477498..abdb65670e 100644
--- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatResourceValidator.java
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/HeatResourceValidator.java
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.sdc.validation.impl.validators;
import java.util.ArrayList;
@@ -24,7 +23,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-
import org.openecomp.core.validation.types.GlobalValidationContext;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.Output;
@@ -39,210 +37,147 @@ import org.openecomp.sdc.validation.type.ConfigConstants;
import org.openecomp.sdc.validation.type.HeatResourceValidationContext;
public class HeatResourceValidator extends ResourceBaseValidator {
- private static final Logger LOGGER = LoggerFactory.getLogger(ResourceBaseValidator.class);
- private static final String GET_ATTR = "get_attr";
-
- @Override
- public void init(Map<String, Object> properties) {
- super.init((Map<String, Object>) properties.get(ConfigConstants.Resource_Base_Validator));
- }
-
- @Override
- public ValidationContext createValidationContext(String fileName,
- String envFileName,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- GlobalValidationContext globalContext) {
- Map<String, Resource> resourcesMap =
- heatOrchestrationTemplate.getResources() == null ? new HashMap<>()
- : heatOrchestrationTemplate.getResources();
-
- Map<String, Output> outputMap = heatOrchestrationTemplate.getOutputs() == null ? new HashMap<>()
- : heatOrchestrationTemplate.getOutputs();
-
- Map<String, Map<String, Map<String, List<String>>>>
- typeToPointingResourcesMap = new HashMap<>();
-
- initTypeRelationsMap (fileName, resourcesMap, outputMap,
- typeToPointingResourcesMap, globalContext);
-
- return new HeatResourceValidationContext (heatOrchestrationTemplate, typeToPointingResourcesMap,
- envFileName );
- }
-
- private void initTypeRelationsMap (String fileName,
- Map<String, Resource> resourceMap,
- Map<String, Output> outputMap,
- Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap,
- GlobalValidationContext globalContext ) {
- initTypeRelationsMapFromResourcesMap (fileName, resourceMap,
- typeToPointingResourcesMap, globalContext);
-
- initTypeRelationsMapFromOutputsMap (fileName, resourceMap, outputMap,
- typeToPointingResourcesMap, globalContext);
- }
-
- private void initTypeRelationsMapFromOutputsMap (String fileName,
- Map<String, Resource> resourceMap,
- Map<String, Output> outputMap,
- Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap,
- GlobalValidationContext globalContext ) {
- for (Map.Entry<String, Output> outputEntry : outputMap.entrySet()) {
- Object outputValue = outputEntry.getValue().getValue();
- Set<String> referencedResources = HeatStructureUtil
- .getReferencedValuesByFunctionName(fileName,
- ResourceReferenceFunctions.GET_RESOURCE.getFunction(), outputValue, globalContext);
-
- updateRelationsMapWithOutputsReferences (outputEntry, resourceMap, referencedResources, typeToPointingResourcesMap);
- }
- }
- private void updateRelationsMapWithOutputsReferences (Map.Entry<String, Output> outputEntry,
- Map<String, Resource> resourceMap,
- Set<String> referencedResources,
- Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap ) {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ResourceBaseValidator.class);
+ private static final String GET_ATTR = "get_attr";
- for (String pointedResourceName : referencedResources) {
- Resource pointedResource = resourceMap.get(pointedResourceName);
+ @Override
+ public void init(Map<String, Object> properties) {
+ super.init((Map<String, Object>) properties.get(ConfigConstants.Resource_Base_Validator));
+ }
- if (Objects.nonNull(pointedResource)) {
- initCurrentResourceTypeInMap(pointedResourceName, pointedResource.getType(),
- "output", typeToPointingResourcesMap);
+ @Override
+ public ValidationContext createValidationContext(String fileName, String envFileName, HeatOrchestrationTemplate heatOrchestrationTemplate,
+ GlobalValidationContext globalContext) {
+ Map<String, Resource> resourcesMap =
+ heatOrchestrationTemplate.getResources() == null ? new HashMap<>() : heatOrchestrationTemplate.getResources();
+ Map<String, Output> outputMap = heatOrchestrationTemplate.getOutputs() == null ? new HashMap<>() : heatOrchestrationTemplate.getOutputs();
+ Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap = new HashMap<>();
+ initTypeRelationsMap(fileName, resourcesMap, outputMap, typeToPointingResourcesMap, globalContext);
+ return new HeatResourceValidationContext(heatOrchestrationTemplate, typeToPointingResourcesMap, envFileName);
+ }
- typeToPointingResourcesMap
- .get(pointedResource.getType()).get(pointedResourceName)
- .get("output").add(outputEntry.getKey());
- }
+ private void initTypeRelationsMap(String fileName, Map<String, Resource> resourceMap, Map<String, Output> outputMap,
+ Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap,
+ GlobalValidationContext globalContext) {
+ initTypeRelationsMapFromResourcesMap(fileName, resourceMap, typeToPointingResourcesMap, globalContext);
+ initTypeRelationsMapFromOutputsMap(fileName, resourceMap, outputMap, typeToPointingResourcesMap, globalContext);
}
- }
- private void initTypeRelationsMapFromResourcesMap(String fileName,
- Map<String, Resource> resourceMap,
+ private void initTypeRelationsMapFromOutputsMap(String fileName, Map<String, Resource> resourceMap, Map<String, Output> outputMap,
Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap,
GlobalValidationContext globalContext) {
- for (Map.Entry<String, Resource> resourceEntry : resourceMap.entrySet()) {
- Resource pointingResource = resourceEntry.getValue();
- Map<String, Object> properties =
- pointingResource.getProperties() == null ? new HashMap<>()
- : pointingResource.getProperties();
-
- Set<String> referencedResourcesByGetResource =
- getResourcesIdsPointedByCurrentResource(fileName, ResourceReferenceFunctions.GET_RESOURCE,
- properties, globalContext);
-
- Set<String> referencedResourcesByGetAttr =
- handleGetAttrBetweenResources(properties);
-
- referencedResourcesByGetResource.addAll(referencedResourcesByGetAttr);
-
- updateRelationsMapWithCurrentResourceReferences
- (resourceMap, resourceEntry, referencedResourcesByGetResource, typeToPointingResourcesMap);
+ for (Map.Entry<String, Output> outputEntry : outputMap.entrySet()) {
+ Object outputValue = outputEntry.getValue().getValue();
+ Set<String> referencedResources = HeatStructureUtil
+ .getReferencedValuesByFunctionName(fileName, ResourceReferenceFunctions.GET_RESOURCE.getFunction(), outputValue, globalContext);
+ updateRelationsMapWithOutputsReferences(outputEntry, resourceMap, referencedResources, typeToPointingResourcesMap);
+ }
}
- }
-
- private void updateRelationsMapWithCurrentResourceReferences(Map<String, Resource> resourceMap,
- Map.Entry<String, Resource> currentResourceEntry,
- Set<String> referencedResourcesFromCurrentResource,
- Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap) {
-
- for (String pointedResourceName : referencedResourcesFromCurrentResource) {
- Resource pointedResource = resourceMap.get(pointedResourceName);
- if (Objects.nonNull(pointedResource)) {
- String pointedResourceType = pointedResource.getType();
- updateMapWithRelationsBetweenResources (pointedResourceName, pointedResourceType,
- currentResourceEntry, typeToPointingResourcesMap);
- }
+ private void updateRelationsMapWithOutputsReferences(Map.Entry<String, Output> outputEntry, Map<String, Resource> resourceMap,
+ Set<String> referencedResources,
+ Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap) {
+ for (String pointedResourceName : referencedResources) {
+ Resource pointedResource = resourceMap.get(pointedResourceName);
+ if (Objects.nonNull(pointedResource)) {
+ initCurrentResourceTypeInMap(pointedResourceName, pointedResource.getType(), "output", typeToPointingResourcesMap);
+ typeToPointingResourcesMap.get(pointedResource.getType()).get(pointedResourceName).get("output").add(outputEntry.getKey());
+ }
+ }
}
- }
-
- private void updateMapWithRelationsBetweenResources(String pointedResourceName,
- String pointedResourceType,
- Map.Entry<String, Resource> currentResourceEntry,
- Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap) {
-
- initCurrentResourceTypeInMap(pointedResourceName, pointedResourceType,
- currentResourceEntry.getValue().getType(), typeToPointingResourcesMap);
-
- typeToPointingResourcesMap.get(pointedResourceType).get(pointedResourceName)
- .get(currentResourceEntry.getValue().getType()).add(currentResourceEntry.getKey());
- }
-
- private void initCurrentResourceTypeInMap(String resourceName, String resourceType,
- String pointingResourceType,
- Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap) {
-
- typeToPointingResourcesMap.putIfAbsent(resourceType, new HashMap<>());
- typeToPointingResourcesMap.get(resourceType).putIfAbsent(resourceName, new HashMap<>());
- typeToPointingResourcesMap.get(resourceType).get(resourceName)
- .putIfAbsent (pointingResourceType, new ArrayList<>());
- }
-
- private Set<String> handleGetAttrBetweenResources (Map<String, Object> properties) {
- Set<String> referencedResourcesByGetAttr = new HashSet<>();
- for (Map.Entry<String, Object> proprtyEntry : properties.entrySet()) {
- referencedResourcesByGetAttr.addAll(getGetAttrReferencesInCaseOfContrail(proprtyEntry
- .getValue()));
+
+ private void initTypeRelationsMapFromResourcesMap(String fileName, Map<String, Resource> resourceMap,
+ Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap,
+ GlobalValidationContext globalContext) {
+ for (Map.Entry<String, Resource> resourceEntry : resourceMap.entrySet()) {
+ Resource pointingResource = resourceEntry.getValue();
+ Map<String, Object> properties = pointingResource.getProperties() == null ? new HashMap<>() : pointingResource.getProperties();
+ Set<String> referencedResourcesByGetResource = getResourcesIdsPointedByCurrentResource(fileName, ResourceReferenceFunctions.GET_RESOURCE,
+ properties, globalContext);
+ Set<String> referencedResourcesByGetAttr = handleGetAttrBetweenResources(properties);
+ referencedResourcesByGetResource.addAll(referencedResourcesByGetAttr);
+ updateRelationsMapWithCurrentResourceReferences(resourceMap, resourceEntry, referencedResourcesByGetResource, typeToPointingResourcesMap);
+ }
}
- return referencedResourcesByGetAttr;
- }
+ private void updateRelationsMapWithCurrentResourceReferences(Map<String, Resource> resourceMap, Map.Entry<String, Resource> currentResourceEntry,
+ Set<String> referencedResourcesFromCurrentResource,
+ Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap) {
+ for (String pointedResourceName : referencedResourcesFromCurrentResource) {
+ Resource pointedResource = resourceMap.get(pointedResourceName);
+ if (Objects.nonNull(pointedResource)) {
+ String pointedResourceType = pointedResource.getType();
+ updateMapWithRelationsBetweenResources(pointedResourceName, pointedResourceType, currentResourceEntry, typeToPointingResourcesMap);
+ }
+ }
+ }
+ private void updateMapWithRelationsBetweenResources(String pointedResourceName, String pointedResourceType,
+ Map.Entry<String, Resource> currentResourceEntry,
+ Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap) {
+ initCurrentResourceTypeInMap(pointedResourceName, pointedResourceType, currentResourceEntry.getValue().getType(), typeToPointingResourcesMap);
+ typeToPointingResourcesMap.get(pointedResourceType).get(pointedResourceName).get(currentResourceEntry.getValue().getType())
+ .add(currentResourceEntry.getKey());
+ }
- private Set<String> getGetAttrReferencesInCaseOfContrail(Object propertyValue) {
- Set<String> getAttrReferences = new HashSet<>();
+ private void initCurrentResourceTypeInMap(String resourceName, String resourceType, String pointingResourceType,
+ Map<String, Map<String, Map<String, List<String>>>> typeToPointingResourcesMap) {
+ typeToPointingResourcesMap.putIfAbsent(resourceType, new HashMap<>());
+ typeToPointingResourcesMap.get(resourceType).putIfAbsent(resourceName, new HashMap<>());
+ typeToPointingResourcesMap.get(resourceType).get(resourceName).putIfAbsent(pointingResourceType, new ArrayList<>());
+ }
- if (propertyValue instanceof Map) {
- if (((Map) propertyValue).containsKey(GET_ATTR)) {
- if (validatePropertyValueAndAddAttrReferencesInSet(propertyValue, getAttrReferences)) {
- return getAttrReferences;
+ private Set<String> handleGetAttrBetweenResources(Map<String, Object> properties) {
+ Set<String> referencedResourcesByGetAttr = new HashSet<>();
+ for (Map.Entry<String, Object> proprtyEntry : properties.entrySet()) {
+ referencedResourcesByGetAttr.addAll(getGetAttrReferencesInCaseOfContrail(proprtyEntry.getValue()));
}
- } else {
- Collection<Object> valCollection = ((Map) propertyValue).values();
- for (Object entryValue : valCollection) {
- getAttrReferences.addAll(getGetAttrReferencesInCaseOfContrail(entryValue));
+ return referencedResourcesByGetAttr;
+ }
+
+ private Set<String> getGetAttrReferencesInCaseOfContrail(Object propertyValue) {
+ Set<String> getAttrReferences = new HashSet<>();
+ if (propertyValue instanceof Map) {
+ if (((Map) propertyValue).containsKey(GET_ATTR)) {
+ if (validatePropertyValueAndAddAttrReferencesInSet(propertyValue, getAttrReferences)) {
+ return getAttrReferences;
+ }
+ } else {
+ Collection<Object> valCollection = ((Map) propertyValue).values();
+ for (Object entryValue : valCollection) {
+ getAttrReferences.addAll(getGetAttrReferencesInCaseOfContrail(entryValue));
+ }
+ }
+ } else if (propertyValue instanceof List) {
+ for (Object prop : (List) propertyValue) {
+ getAttrReferences.addAll(getGetAttrReferencesInCaseOfContrail(prop));
+ }
}
- }
- } else if (propertyValue instanceof List) {
- for (Object prop : (List) propertyValue) {
- getAttrReferences.addAll(getGetAttrReferencesInCaseOfContrail(prop));
- }
+ return getAttrReferences;
}
- return getAttrReferences;
- }
-
- private boolean validatePropertyValueAndAddAttrReferencesInSet(Object propertyValue,
- Set<String> getAttrReferences) {
- Object value = ((Map) propertyValue).get(GET_ATTR );
- if (value instanceof List && ((List) value).size() == 2
- && ("fq_name").equals(((List) value).get(1))) {
- if (((List) value).get(0) instanceof String) {
- String attrReference = (((List) value).get(0)).toString();
- getAttrReferences.add(attrReference);
- return true;
- } else {
- LOGGER.warn("invalid format of 'get_attr' function - " + propertyValue.toString());
- }
- }
- return false;
- }
-
-
- private Set<String> getResourcesIdsPointedByCurrentResource(String fileName,
- ResourceReferenceFunctions function,
- Map<String, Object> properties,
- GlobalValidationContext globalContext) {
-
- Set<String> referencedResources = new HashSet<>();
- for (Map.Entry<String, Object> propertyEntry : properties.entrySet()) {
- referencedResources
- .addAll(HeatStructureUtil
- .getReferencedValuesByFunctionName(fileName,
- function.getFunction(),
- propertyEntry.getValue(),
- globalContext));
+ private boolean validatePropertyValueAndAddAttrReferencesInSet(Object propertyValue, Set<String> getAttrReferences) {
+ Object value = ((Map) propertyValue).get(GET_ATTR);
+ if (value instanceof List && ((List) value).size() == 2 && ("fq_name").equals(((List) value).get(1))) {
+ if (((List) value).get(0) instanceof String) {
+ String attrReference = (((List) value).get(0)).toString();
+ getAttrReferences.add(attrReference);
+ return true;
+ } else {
+ LOGGER.warn("invalid format of 'get_attr' function - " + propertyValue.toString());
+ }
+ }
+ return false;
}
- return referencedResources;
- }
+ private Set<String> getResourcesIdsPointedByCurrentResource(String fileName, ResourceReferenceFunctions function, Map<String, Object> properties,
+ GlobalValidationContext globalContext) {
+ Set<String> referencedResources = new HashSet<>();
+ for (Map.Entry<String, Object> propertyEntry : properties.entrySet()) {
+ referencedResources.addAll(
+ HeatStructureUtil.getReferencedValuesByFunctionName(fileName, function.getFunction(), propertyEntry.getValue(), globalContext));
+ }
+ return referencedResources;
+ }
}