summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/ResourceValidationHeatValidator.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/util/ResourceValidationHeatValidator.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/ResourceValidationHeatValidator.java617
1 files changed, 0 insertions, 617 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/ResourceValidationHeatValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/ResourceValidationHeatValidator.java
deleted file mode 100644
index 3457bed1e9..0000000000
--- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/ResourceValidationHeatValidator.java
+++ /dev/null
@@ -1,617 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.validation.impl.util;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
-import org.openecomp.core.validation.errors.Messages;
-import org.openecomp.core.validation.types.GlobalValidationContext;
-import org.openecomp.sdc.datatypes.error.ErrorLevel;
-import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
-import org.openecomp.sdc.heat.datatypes.model.Output;
-import org.openecomp.sdc.heat.datatypes.model.PolicyTypes;
-import org.openecomp.sdc.heat.datatypes.model.PropertiesMapKeyTypes;
-import org.openecomp.sdc.heat.datatypes.model.Resource;
-import org.openecomp.sdc.heat.datatypes.model.ResourceReferenceFunctions;
-import org.openecomp.sdc.heat.datatypes.model.ResourceTypeToMessageString;
-import org.openecomp.sdc.heat.services.HeatStructureUtil;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-
-public class ResourceValidationHeatValidator {
-
- /**
- * Validate resource type.
- *
- * @param fileName the file name
- * @param baseFileName the base file name
- * @param securityGroupsNamesFromBaseFileOutputs the security groups names from base file outputs
- * @param heatOrchestrationTemplate the heat orchestration template
- * @param globalContext the global context
- */
- public static void validateResourceType(String fileName, String baseFileName,
- Set<String> securityGroupsNamesFromBaseFileOutputs,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- GlobalValidationContext globalContext) {
- Map<String, Resource> resourceMap =
- heatOrchestrationTemplate.getResources() == null ? new HashMap<>()
- : heatOrchestrationTemplate.getResources();
- Map<String, Integer> numberOfVisitsInPort = new HashMap<>();
- Set<String> resourcesNames = resourceMap.keySet();
- Set<String> sharedResourcesFromOutputMap =
- getSharedResourcesNamesFromOutputs(fileName, heatOrchestrationTemplate.getOutputs(),
- globalContext);
- boolean isBaseFile = baseFileName != null && fileName.equals(baseFileName);
-
- Map<HeatResourcesTypes, List<String>> resourceTypeToNamesListMap = HeatResourcesTypes
- .getListForResourceType(HeatResourcesTypes.NOVA_SERVER_GROUP_RESOURCE_TYPE,
- HeatResourcesTypes.NEUTRON_SECURITY_GROUP_RESOURCE_TYPE,
- HeatResourcesTypes.CONTRAIL_NETWORK_RULE_RESOURCE_TYPE);
-
- initResourceTypeListWithItsResourcesNames(fileName, resourceTypeToNamesListMap, resourceMap,
- sharedResourcesFromOutputMap, globalContext);
- initVisitedPortsMap(fileName, resourceMap, numberOfVisitsInPort, globalContext);
-
-
- for (Map.Entry<String, Resource> resourceEntry : resourceMap.entrySet()) {
- String resourceType = resourceEntry.getValue().getType();
- validateSecurityGroupsFromBaseOutput(fileName, resourceEntry, isBaseFile,
- securityGroupsNamesFromBaseFileOutputs, globalContext);
- checkResourceDependsOn(fileName, resourceEntry.getValue(), resourcesNames, globalContext);
-
- if (Objects.isNull(resourceType)) {
- globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.INVALID_RESOURCE_TYPE.getErrorMessage(), "null",
- resourceEntry.getKey()));
- } else {
- HeatResourcesTypes heatResourceType = HeatResourcesTypes.findByHeatResource(resourceType);
-
- if (heatResourceType != null) {
- switch (heatResourceType) {
- case NOVA_SERVER_RESOURCE_TYPE:
- validateNovaServerResourceType(fileName, resourceEntry, numberOfVisitsInPort,
- resourceTypeToNamesListMap
- .get(HeatResourcesTypes.NOVA_SERVER_GROUP_RESOURCE_TYPE),
- heatOrchestrationTemplate, globalContext);
- break;
-
- case NOVA_SERVER_GROUP_RESOURCE_TYPE:
- validateNovaServerGroupPolicy(fileName, resourceEntry, globalContext);
- break;
-
- case RESOURCE_GROUP_RESOURCE_TYPE:
- validateResourceGroupType(fileName, resourceEntry, globalContext);
- break;
-
- case NEUTRON_PORT_RESOURCE_TYPE:
- validateNeutronPortType(fileName, resourceEntry, resourceTypeToNamesListMap
- .get(HeatResourcesTypes.NEUTRON_SECURITY_GROUP_RESOURCE_TYPE), globalContext);
- break;
-
- case CONTRAIL_NETWORK_ATTACH_RULE_RESOURCE_TYPE:
- validateContrailAttachPolicyType(resourceEntry, resourceTypeToNamesListMap
- .get(HeatResourcesTypes.CONTRAIL_NETWORK_RULE_RESOURCE_TYPE));
- break;
- default:
- }
- } else {
- if (HeatValidationService.isNestedResource(resourceType)) {
- handleNestedResourceType(fileName, resourceEntry.getKey(), resourceEntry.getValue(),
- globalContext);
- }
- }
- }
- }
-
- checkForEmptyResourceNamesInMap(fileName,
- CollectionUtils.isEmpty(securityGroupsNamesFromBaseFileOutputs), resourceTypeToNamesListMap,
- globalContext);
- handleOrphanPorts(fileName, numberOfVisitsInPort, globalContext);
- }
-
-
- private static void validateNovaServerResourceType(String fileName,
- Map.Entry<String, Resource> resourceEntry,
- Map<String, Integer> numberOfVisitsInPort,
- List<String> serverGroupResourcesNames,
- HeatOrchestrationTemplate
- heatOrchestrationTemplate,
- GlobalValidationContext globalContext) {
- validateAssignedValueForImageOrFlavorFromNova(fileName, resourceEntry, globalContext);
- validateNovaServerPortBinding(fileName, resourceEntry.getValue(), numberOfVisitsInPort,
- globalContext);
- validateAllServerGroupsPointedByServerExistAndDefined(fileName, resourceEntry,
- serverGroupResourcesNames, heatOrchestrationTemplate, globalContext);
-
- }
-
-
- private static void handleNestedResourceType(String fileName, String resourceName,
- Resource resource,
- GlobalValidationContext globalContext) {
- validateAllPropertiesMatchNestedParameters(fileName, resourceName, resource, globalContext);
- validateLoopsOfNestingFromFile(fileName, resource.getType(), globalContext);
- }
-
-
- private static void validateResourceGroupType(String fileName,
- Map.Entry<String, Resource> resourceEntry,
- GlobalValidationContext globalContext) {
- Resource resourceDef = HeatStructureUtil
- .getResourceDef(fileName, resourceEntry.getKey(), resourceEntry.getValue(), globalContext);
- // validateResourceGroupTypeIsSupported(fileName, resourceEntry.getKey(),resourceDef.getType(),
- // globalContext);
- if (resourceDef != null) {
- if (Objects.nonNull(resourceDef.getType())
- && HeatValidationService.isNestedResource(resourceDef.getType())) {
- handleNestedResourceType(fileName, resourceDef.getType(), resourceDef, globalContext);
- }
- }
- }
-
-
- private static void validateAllPropertiesMatchNestedParameters(String fileName,
- String resourceName,
- Resource resource,
- GlobalValidationContext
- globalContext) {
-
- String resourceType = resource.getType();
- if (globalContext.getFileContextMap().containsKey(resourceType)) {
- Set<String> propertiesNames =
- resource.getProperties() == null ? null : resource.getProperties().keySet();
- if (CollectionUtils.isNotEmpty(propertiesNames)) {
- HeatValidationService
- .checkNestedParameters(fileName, resourceType, resourceName, globalContext,
- propertiesNames);
- }
- } else {
- globalContext.addMessage(resourceType, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.MISSING_NESTED_FILE.getErrorMessage(), resourceType));
- }
- }
-
-
- private static void validateAssignedValueForImageOrFlavorFromNova(String fileName,
- Map.Entry<String, Resource>
- resourceEntry,
- GlobalValidationContext
- globalContext) {
-
- Resource resource = resourceEntry.getValue();
- Map<String, Object> propertiesMap = resource.getProperties();
- if (propertiesMap.get(PropertiesMapKeyTypes.IMAGE.getKeyMap()) == null
- && propertiesMap.get(PropertiesMapKeyTypes.FLAVOR.getKeyMap()) == null) {
- globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.MISSING_IMAGE_AND_FLAVOR.getErrorMessage(),
- resourceEntry.getKey()));
- }
- }
-
-
- private static void validateLoopsOfNestingFromFile(String fileName, String resourceType,
- GlobalValidationContext globalContext) {
- List<String> filesInLoop = new ArrayList<>(Collections.singletonList(fileName));
- if (HeatValidationService
- .isNestedLoopExistInFile(fileName, resourceType, filesInLoop, globalContext)) {
- globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.NESTED_LOOP.getErrorMessage(),
- HeatValidationService.drawFilesLoop(filesInLoop)));
- }
- }
-
-
- /* validation 22*/
- @SuppressWarnings("unchecked")
- private static void validateNovaServerPortBinding(String fileName, Resource resource,
- Map<String, Integer> numberOfVisitsInPort,
- GlobalValidationContext globalContext) {
-
- Map<String, Object> propertiesMap = resource.getProperties();
- List<Object> networksList =
- (List<Object>) propertiesMap.get(PropertiesMapKeyTypes.NETWORKS.getKeyMap());
-
- if (CollectionUtils.isNotEmpty(networksList)) {
- networksList
- .stream()
- .filter(networkObject -> networkObject instanceof Map)
- .forEach(networkObject -> {
- Map<String, Object> portValueMap =
- (Map<String, Object>) ((Map) networkObject).get("port");
- if (MapUtils.isNotEmpty(portValueMap)) {
- checkPortBindingFromMap(fileName, portValueMap, numberOfVisitsInPort, globalContext);
- }
- });
- }
- }
-
- /* validation 23*/
- @SuppressWarnings("unchecked")
- private static void validateAllServerGroupsPointedByServerExistAndDefined(String fileName,
- Map.Entry<String, Resource> resourceEntry,
- List<String> serverGroupNamesList,
- HeatOrchestrationTemplate heatOrchestrationTemplate,
- GlobalValidationContext globalContext) {
- Map<String, Resource> resourcesMap = heatOrchestrationTemplate.getResources();
-
- Map<String, Object> resourceProperties = resourceEntry.getValue().getProperties();
- Map<String, Object> schedulerHintsMap = resourceProperties == null ? null
- : (Map<String, Object>) resourceProperties
- .get(ResourceReferenceFunctions.SCHEDULER_HINTS.getFunction());
-
- if (MapUtils.isNotEmpty(schedulerHintsMap)) {
- for (Object serverGroupMap : schedulerHintsMap.values()) {
- Map<String, Object> currentServerMap = (Map<String, Object>) serverGroupMap;
- String serverResourceName = currentServerMap == null ? null
- : (String) currentServerMap.get(ResourceReferenceFunctions.GET_RESOURCE.getFunction());
- Resource serverResource = serverResourceName == null || resourcesMap == null ? null
- : resourcesMap.get(serverResourceName);
- if (serverResource != null && !serverResource.getType()
- .equals(HeatResourcesTypes.NOVA_SERVER_GROUP_RESOURCE_TYPE.getHeatResource())) {
- globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.SERVER_NOT_DEFINED_FROM_NOVA.getErrorMessage(),
- serverResourceName, resourceEntry.getKey()));
- } else {
- serverGroupNamesList.remove(serverResourceName);
- }
- }
- }
- }
-
-
- /* validation 24*/
- @SuppressWarnings("unchecked")
- private static void validateNovaServerGroupPolicy(String fileName,
- Map.Entry<String, Resource> resourceEntry,
- GlobalValidationContext globalContext) {
-
- Resource resource = resourceEntry.getValue();
- List<String> policiesList = resource.getProperties() == null ? null
- : (List<String>) resource.getProperties().get("policies");
-
- if (CollectionUtils.isNotEmpty(policiesList)) {
- if (policiesList.size() == 1) {
- String policy = policiesList.get(0);
- if (!PolicyTypes.isGivenPolicyValid(policy)) {
- globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.WRONG_POLICY_IN_SERVER_GROUP.getErrorMessage(),
- resourceEntry.getKey()));
- }
- } else {
- globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.WRONG_POLICY_IN_SERVER_GROUP.getErrorMessage(),
- resourceEntry.getKey()));
- }
- }
- }
-
-
- private static void validateNeutronPortType(String filename,
- Map.Entry<String, Resource> resourceEntry,
- List<String> securityGroupResourceNameList,
- GlobalValidationContext globalContext) {
- validateAllSecurityGroupsAreUsed(filename, resourceEntry, securityGroupResourceNameList,
- globalContext);
-
- }
-
-
- @SuppressWarnings("unchecked")
- private static void validateAllSecurityGroupsAreUsed(String filename,
- Map.Entry<String, Resource> resourceEntry,
- List<String> securityGroupResourceNameList,
- GlobalValidationContext globalContext) {
- Map<String, Object> propertiesMap = resourceEntry.getValue().getProperties();
-
- if (MapUtils.isEmpty(propertiesMap)) {
- return;
- }
-
- Object securityGroupsValue = propertiesMap.get("security_groups");
-
- if (Objects.isNull(securityGroupsValue)) {
- return;
- }
-
- if (securityGroupsValue instanceof List) {
- List<Object> securityGroupsListFromCurrResource =
- (List<Object>) propertiesMap.get("security_groups");
- for (Object securityGroup : securityGroupsListFromCurrResource) {
- removeSecurityGroupNamesFromListByGivenFunction(filename,
- ResourceReferenceFunctions.GET_RESOURCE.getFunction(), securityGroup,
- securityGroupResourceNameList, globalContext);
- }
- }
- }
-
-
- private static void validateSecurityGroupsFromBaseOutput(String filename,
- Map.Entry<String, Resource> resourceEntry,
- boolean isBaseFile,
- Set<String> securityGroupNamesFromBaseOutput,
- GlobalValidationContext globalContext) {
- if (!isBaseFile && CollectionUtils.isNotEmpty(securityGroupNamesFromBaseOutput)) {
- Map<String, Object> propertiesMap = resourceEntry.getValue().getProperties();
-
- if (MapUtils.isEmpty(propertiesMap)) {
- return;
- }
-
- for (Map.Entry<String, Object> propertyEntry : propertiesMap.entrySet()) {
- removeSecurityGroupNamesFromListByGivenFunction(filename,
- ResourceReferenceFunctions.GET_PARAM.getFunction(), propertyEntry.getValue(),
- securityGroupNamesFromBaseOutput, globalContext);
- }
- }
- }
-
-
- private static void removeSecurityGroupNamesFromListByGivenFunction(String filename,
- String functionName,
- Object securityGroup,
- Collection<String> securityGroupResourceNameList,
- GlobalValidationContext globalContext) {
- Set<String> securityGroupsNamesFromFunction = HeatStructureUtil
- .getReferencedValuesByFunctionName(filename, functionName, securityGroup, globalContext);
- securityGroupsNamesFromFunction.forEach(securityGroupResourceNameList::remove);
- }
-
-
- @SuppressWarnings("unchecked")
- private static void validateContrailAttachPolicyType(Map.Entry<String, Resource> resourceEntry,
- List<String> networkPolicyResourceNames) {
- Map<String, Object> propertiesMap = resourceEntry.getValue().getProperties();
-
- if (MapUtils.isNotEmpty(propertiesMap)) {
- Map<String, Object> policyMap = (Map<String, Object>) propertiesMap.get("policy");
- if (MapUtils.isNotEmpty(policyMap)) {
- List<Object> securityGroupList =
- (List<Object>) policyMap.get(ResourceReferenceFunctions.GET_ATTR.getFunction());
- //noinspection SuspiciousMethodCalls
- if (CollectionUtils.isNotEmpty(securityGroupList)) {
- //noinspection SuspiciousMethodCalls
- networkPolicyResourceNames.remove(securityGroupList.get(0));
- }
- }
- }
- }
-
-
- private static void getResourceNamesListFromSpecificResource(String filename,
- List<String> resourcesNames,
- HeatResourcesTypes heatResourcesType,
- Map<String, Resource> resourcesMap,
- Set<String> sharedResourcesFromOutputMap,
- GlobalValidationContext globalContext) {
-
- for (Map.Entry<String, Resource> resourceEntry : resourcesMap.entrySet()) {
- String resourceType = resourceEntry.getValue().getType();
- if (Objects.isNull(resourceType)) {
- globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.INVALID_RESOURCE_TYPE.getErrorMessage(), null,
- resourceEntry.getKey()));
- } else {
- if (resourceType.equals(heatResourcesType.getHeatResource())
- && !isSharedResource(resourceEntry.getKey(), sharedResourcesFromOutputMap)) {
- resourcesNames.add(resourceEntry.getKey());
- }
- }
- }
- }
-
-
- private static boolean isSharedResource(String resourceName,
- Set<String> sharedResourcesFromOutputMap) {
- return !CollectionUtils.isEmpty(sharedResourcesFromOutputMap)
- && sharedResourcesFromOutputMap.contains(resourceName);
- }
-
- /**
- * Handle not empty resource names list.
- *
- * @param fileName the file name
- * @param resourcesNameList the resources name list
- * @param securityOrServerGroup the security or server group
- * @param globalContext the global context
- */
- public static void handleNotEmptyResourceNamesList(String fileName,
- Collection<String> resourcesNameList,
- String securityOrServerGroup,
- GlobalValidationContext globalContext) {
- if (CollectionUtils.isNotEmpty(resourcesNameList)) {
- resourcesNameList.forEach(name ->
- globalContext
- .addMessage(
- fileName,
- ErrorLevel.WARNING,
- ErrorMessagesFormatBuilder
- .getErrorWithParameters(
- Messages.SERVER_OR_SECURITY_GROUP_NOT_IN_USE.getErrorMessage(),
- securityOrServerGroup, name)));
- }
- }
-
-
- private static void initVisitedPortsMap(String filename, Map<String, Resource> resourceMap,
- Map<String, Integer> numberOfVisitsInPort,
- GlobalValidationContext globalContext) {
- for (Map.Entry<String, Resource> resourceEntry : resourceMap.entrySet()) {
- String resourceType = resourceEntry.getValue().getType();
-
- if (Objects.isNull(resourceType)) {
- globalContext.addMessage(filename, ErrorLevel.WARNING, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.INVALID_RESOURCE_TYPE.getErrorMessage(), "null",
- resourceEntry.getKey()));
- } else {
- if (resourceType.equals(HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource())) {
- numberOfVisitsInPort.put(resourceEntry.getKey(), 0);
- }
- }
- }
- }
-
- private static boolean checkIfPortWasVisited(String resourcePortName,
- Map<String, Integer> numberOfVisitsInPort) {
- return numberOfVisitsInPort.containsKey(resourcePortName)
- && numberOfVisitsInPort.get(resourcePortName) == 1;
- }
-
-
- private static void incrementNumberOfVisitsInPort(String resourcePortName,
- Map<String, Integer> numberOfVisitsInPort) {
- if (numberOfVisitsInPort.containsKey(resourcePortName)) {
- numberOfVisitsInPort.put(resourcePortName, numberOfVisitsInPort.get(resourcePortName) + 1);
- }
- }
-
-
- private static void handleOrphanPorts(String fileName, Map<String, Integer> numberOfVisitsInPort,
- GlobalValidationContext globalContext) {
- numberOfVisitsInPort
- .entrySet()
- .stream()
- .filter(entry -> entry.getValue() == 0)
- .forEach(entry ->
- globalContext
- .addMessage(
- fileName,
- ErrorLevel.WARNING,
- ErrorMessagesFormatBuilder
- .getErrorWithParameters(
- Messages.PORT_NO_BIND_TO_ANY_NOVA_SERVER.getErrorMessage(),
- entry.getKey())));
- }
-
- @SuppressWarnings("unchecked")
- private static void checkResourceDependsOn(String fileName, Resource resource,
- Set<String> resourcesNames,
- GlobalValidationContext globalContext) {
- Object dependencies = resource.getDepends_on();
- if (dependencies instanceof Collection) {
- ((Collection<String>) dependencies)
- .stream()
- .filter(resource_id -> !resourcesNames.contains(resource_id))
- .forEach(resource_id -> globalContext.addMessage(fileName, ErrorLevel.ERROR,
- ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.MISSING_RESOURCE_IN_DEPENDS_ON.getErrorMessage(),
- (String) resource_id)));
- } else if (dependencies instanceof String) {
- if (!resourcesNames.contains(dependencies)) {
- globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.MISSING_RESOURCE_IN_DEPENDS_ON.getErrorMessage(),
- (String) dependencies));
- }
- }
- }
-
-
- private static void checkPortBindingFromMap(String fileName, Map<String, Object> portValueMap,
- Map<String, Integer> numberOfVisitsInPort,
- GlobalValidationContext globalContext) {
- String resourcePortName =
- (String) portValueMap.get(ResourceReferenceFunctions.GET_RESOURCE.getFunction());
- if (checkIfPortWasVisited(resourcePortName, numberOfVisitsInPort)) {
- globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.MORE_THAN_ONE_BIND_FROM_NOVA_TO_PORT.getErrorMessage(),
- (String) portValueMap.get(ResourceReferenceFunctions.GET_RESOURCE.getFunction())));
- } else {
- incrementNumberOfVisitsInPort(resourcePortName, numberOfVisitsInPort);
- }
- }
-
-
- private static void initResourceTypeListWithItsResourcesNames(String filename,
- Map<HeatResourcesTypes, List<String>> resourcesTypesListMap,
- Map<String, Resource> resourcesMap,
- Set<String> sharedResourcesFromOutputsMap,
- GlobalValidationContext globalContext) {
- for (Map.Entry<HeatResourcesTypes, List<String>> resourcesTypesToListEntry
- : resourcesTypesListMap.entrySet()) {
- HeatResourcesTypes currentType = resourcesTypesToListEntry.getKey();
- List<String> currNamesList = new ArrayList<>();
- getResourceNamesListFromSpecificResource(filename, currNamesList, currentType, resourcesMap,
- sharedResourcesFromOutputsMap, globalContext);
- resourcesTypesListMap.put(currentType, currNamesList);
- }
- }
-
-
- private static void checkForEmptyResourceNamesInMap(String fileName,
- boolean isBaseFileContainPorts,
- Map<HeatResourcesTypes, List<String>> resourcesTypesListMap,
- GlobalValidationContext globalContext) {
- if (isBaseFileContainPorts) {
- for (Map.Entry<HeatResourcesTypes, List<String>> resourcesTypesListEntry
- : resourcesTypesListMap.entrySet()) {
- handleNotEmptyResourceNamesList(fileName, resourcesTypesListEntry.getValue(),
- ResourceTypeToMessageString
- .getTypeForMessageFromResourceType(resourcesTypesListEntry.getKey()),
- globalContext);
- }
- }
- }
-
-
- private static Set<String> getSharedResourcesNamesFromOutputs(String filename,
- Map<String, Output> outputsMap,
- GlobalValidationContext globalContext) {
- Set<String> sharedResources = new HashSet<>();
-
- if (MapUtils.isEmpty(outputsMap)) {
- return null;
- }
-
- for (Map.Entry<String, Output> outputEntry : outputsMap.entrySet()) {
- Output output = outputEntry.getValue();
- Object valueObject = output.getValue();
- if (valueObject instanceof Map) {
- Map<String, Object> outputValueMap = (Map<String, Object>) valueObject;
- Object getResourceValue =
- outputValueMap.get(ResourceReferenceFunctions.GET_RESOURCE.getFunction());
- if (Objects.nonNull(getResourceValue)) {
- if (getResourceValue instanceof String) {
- String resourceName =
- (String) outputValueMap.get(ResourceReferenceFunctions.GET_RESOURCE.getFunction());
- sharedResources.add(resourceName);
- } else {
- globalContext.addMessage(filename, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
- .getErrorWithParameters(Messages.INVALID_GET_RESOURCE_SYNTAX.getErrorMessage(),
- getResourceValue.toString()));
- }
- }
-
- }
- }
-
- return sharedResources;
- }
-}