diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/namingconvention/NovaServerNamingConventionGuideLineValidator.java')
1 files changed, 315 insertions, 454 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/namingconvention/NovaServerNamingConventionGuideLineValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/namingconvention/NovaServerNamingConventionGuideLineValidator.java index e9f6257a88..e2ce555caa 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/namingconvention/NovaServerNamingConventionGuideLineValidator.java +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/namingconvention/NovaServerNamingConventionGuideLineValidator.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.namingconvention; import static java.util.Objects.nonNull; @@ -28,7 +27,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.TreeMap; - import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -50,508 +48,371 @@ import org.openecomp.sdc.validation.type.NamingConventionValidationContext; import org.openecomp.sdc.validation.util.ValidationUtil; public class NovaServerNamingConventionGuideLineValidator implements ResourceValidator { - private static final String AVAILABILITY_ZONE = "availability_zone"; - private static final String SERVER = "Server"; - private static final ErrorMessageCode ERROR_CODE_NNS1 = new ErrorMessageCode("NNS1"); - private static final ErrorMessageCode ERROR_CODE_NNS2 = new ErrorMessageCode("NNS2"); - private static final ErrorMessageCode ERROR_CODE_NNS3 = new ErrorMessageCode("NNS3"); - private static final ErrorMessageCode ERROR_CODE_NNS4 = new ErrorMessageCode("NNS4"); - private static final ErrorMessageCode ERROR_CODE_NNS5 = new ErrorMessageCode("NNS5"); - private static final ErrorMessageCode ERROR_CODE_NNS6 = new ErrorMessageCode("NNS6"); - private static final ErrorMessageCode ERROR_CODE_NNS7 = new ErrorMessageCode("NNS7"); - private static final ErrorMessageCode ERROR_CODE_NNS8 = new ErrorMessageCode("NNS8"); - private static final ErrorMessageCode ERROR_CODE_NNS9 = new ErrorMessageCode("NNS9"); - private static final ErrorMessageCode ERROR_CODE_NNS10 = new ErrorMessageCode("NNS10"); - private static final ErrorMessageCode ERROR_CODE_NNS11 = new ErrorMessageCode("NNS11"); - private static final ErrorMessageCode ERROR_CODE_NNS12 = new ErrorMessageCode("NNS12"); - private static final ErrorMessageCode ERROR_CODE_NNS13 = new ErrorMessageCode("NNS13"); - private static final ErrorMessageCode ERROR_CODE_NNS14 = new ErrorMessageCode("NNS14"); - - @Override - public void validate(String fileName, Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext, ValidationContext validationContext) { - NamingConventionValidationContext namingConventionValidationContext = - (NamingConventionValidationContext)validationContext; - validateHeatNovaResource(fileName, namingConventionValidationContext.getEnvFileName(), - namingConventionValidationContext.getHeatOrchestrationTemplate(), - globalContext); - } - - private void validateHeatNovaResource(String fileName, String envFileName, - HeatOrchestrationTemplate heatOrchestrationTemplate, - GlobalValidationContext globalContext) { - //if no resources exist return - if (MapUtils.isEmpty(heatOrchestrationTemplate.getResources())) { - return; + private static final String AVAILABILITY_ZONE = "availability_zone"; + private static final String SERVER = "Server"; + private static final ErrorMessageCode ERROR_CODE_NNS1 = new ErrorMessageCode("NNS1"); + private static final ErrorMessageCode ERROR_CODE_NNS2 = new ErrorMessageCode("NNS2"); + private static final ErrorMessageCode ERROR_CODE_NNS3 = new ErrorMessageCode("NNS3"); + private static final ErrorMessageCode ERROR_CODE_NNS4 = new ErrorMessageCode("NNS4"); + private static final ErrorMessageCode ERROR_CODE_NNS5 = new ErrorMessageCode("NNS5"); + private static final ErrorMessageCode ERROR_CODE_NNS6 = new ErrorMessageCode("NNS6"); + private static final ErrorMessageCode ERROR_CODE_NNS7 = new ErrorMessageCode("NNS7"); + private static final ErrorMessageCode ERROR_CODE_NNS8 = new ErrorMessageCode("NNS8"); + private static final ErrorMessageCode ERROR_CODE_NNS9 = new ErrorMessageCode("NNS9"); + private static final ErrorMessageCode ERROR_CODE_NNS10 = new ErrorMessageCode("NNS10"); + private static final ErrorMessageCode ERROR_CODE_NNS11 = new ErrorMessageCode("NNS11"); + private static final ErrorMessageCode ERROR_CODE_NNS12 = new ErrorMessageCode("NNS12"); + private static final ErrorMessageCode ERROR_CODE_NNS13 = new ErrorMessageCode("NNS13"); + private static final ErrorMessageCode ERROR_CODE_NNS14 = new ErrorMessageCode("NNS14"); + + @Override + public void validate(String fileName, Map.Entry<String, Resource> resourceEntry, GlobalValidationContext globalContext, + ValidationContext validationContext) { + NamingConventionValidationContext namingConventionValidationContext = (NamingConventionValidationContext) validationContext; + validateHeatNovaResource(fileName, namingConventionValidationContext.getEnvFileName(), + namingConventionValidationContext.getHeatOrchestrationTemplate(), globalContext); } - heatOrchestrationTemplate - .getResources() - .entrySet() - .stream() - .filter(entry -> entry.getValue().getType() - .equals(HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource())) - .forEach( entry -> validateNovaServerResourceType(entry.getKey(), fileName, envFileName, - entry, new HashMap<String, String>(), heatOrchestrationTemplate, globalContext)); - } - - private void validateNovaServerResourceType(String resourceId, String fileName, - String envFileName, - Map.Entry<String, Resource> resourceEntry, - Map<String, String> uniqueResourcePortNetworkRole, - HeatOrchestrationTemplate heatOrchestrationTemplate, - GlobalValidationContext globalContext) { - validateNovaServerResourceMetaData(fileName, resourceId, - heatOrchestrationTemplate.getResources().get(resourceId), globalContext); - validateNovaServerResourceNetworkUniqueRole(fileName, resourceId, uniqueResourcePortNetworkRole, - heatOrchestrationTemplate, globalContext); - validateAvailabilityZoneName(fileName, resourceEntry, globalContext); - validateNovaServerNameImageAndFlavor(fileName, envFileName, resourceEntry, globalContext); - } - - @SuppressWarnings("unchecked") - private void validateNovaServerResourceMetaData(String fileName, String resourceId, - Resource resource, - GlobalValidationContext globalValidationContext) { - Map<String, Object> novaServerProp = resource.getProperties(); - Object novaServerPropMetadata; - if (MapUtils.isNotEmpty(novaServerProp)) { - novaServerPropMetadata = novaServerProp.get("metadata"); - if (novaServerPropMetadata == null) { - globalValidationContext.addMessage( - fileName, - ErrorLevel.WARNING, - ErrorMessagesFormatBuilder - .getErrorWithParameters( - ERROR_CODE_NNS1, Messages.MISSING_NOVA_SERVER_METADATA.getErrorMessage(), - resourceId)); - } else if (novaServerPropMetadata instanceof Map) { - TreeMap<String, Object> propertyMap = new TreeMap((Comparator<String>) String::compareToIgnoreCase); - propertyMap.putAll((Map) novaServerPropMetadata); - if (!propertyMap.containsKey("vf_module_id")) { - globalValidationContext.addMessage( - fileName, - ErrorLevel.WARNING, - ErrorMessagesFormatBuilder.getErrorWithParameters( - ERROR_CODE_NNS2, Messages.MISSING_NOVA_SERVER_VF_MODULE_ID.getErrorMessage(), - resourceId)); - } - if (!propertyMap.containsKey("vnf_id")) { - globalValidationContext.addMessage( - fileName, ErrorLevel.WARNING, - ErrorMessagesFormatBuilder - .getErrorWithParameters( - ERROR_CODE_NNS3, Messages.MISSING_NOVA_SERVER_VNF_ID.getErrorMessage(), - resourceId)); + private void validateHeatNovaResource(String fileName, String envFileName, HeatOrchestrationTemplate heatOrchestrationTemplate, + GlobalValidationContext globalContext) { + //if no resources exist return + if (MapUtils.isEmpty(heatOrchestrationTemplate.getResources())) { + return; } - } + heatOrchestrationTemplate.getResources().entrySet().stream() + .filter(entry -> entry.getValue().getType().equals(HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource())).forEach( + entry -> validateNovaServerResourceType(entry.getKey(), fileName, envFileName, entry, new HashMap<String, String>(), + heatOrchestrationTemplate, globalContext)); } - } - private void validateNovaServerResourceNetworkUniqueRole(String fileName, String resourceId, - Map<String, String> uniqueResourcePortNetworkRole, - HeatOrchestrationTemplate heatOrchestrationTemplate, - GlobalValidationContext globalValidationContext) { - if (MapUtils.isEmpty(heatOrchestrationTemplate.getResources().get(resourceId).getProperties())) { - return; - } - Object propertyNetworkValue = - heatOrchestrationTemplate.getResources().get(resourceId).getProperties().get("networks"); - if (propertyNetworkValue != null && propertyNetworkValue instanceof List) { - List<String> portResourceIdList = - getNovaNetworkPortResourceList(fileName, (List) propertyNetworkValue, - globalValidationContext); - for (String portResourceId : portResourceIdList) { - Resource portResource = heatOrchestrationTemplate.getResources().get(portResourceId); + private void validateNovaServerResourceType(String resourceId, String fileName, String envFileName, Map.Entry<String, Resource> resourceEntry, + Map<String, String> uniqueResourcePortNetworkRole, + HeatOrchestrationTemplate heatOrchestrationTemplate, GlobalValidationContext globalContext) { + validateNovaServerResourceMetaData(fileName, resourceId, heatOrchestrationTemplate.getResources().get(resourceId), globalContext); + validateNovaServerResourceNetworkUniqueRole(fileName, resourceId, uniqueResourcePortNetworkRole, heatOrchestrationTemplate, globalContext); + validateAvailabilityZoneName(fileName, resourceEntry, globalContext); + validateNovaServerNameImageAndFlavor(fileName, envFileName, resourceEntry, globalContext); + } - if (portResource != null && portResource.getType() - .equals(HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource())) { - validateUniqueResourcePortNetworkRole(fileName, resourceId, - uniqueResourcePortNetworkRole, globalValidationContext, - portResourceId, portResource); + @SuppressWarnings("unchecked") + private void validateNovaServerResourceMetaData(String fileName, String resourceId, Resource resource, + GlobalValidationContext globalValidationContext) { + Map<String, Object> novaServerProp = resource.getProperties(); + Object novaServerPropMetadata; + if (MapUtils.isNotEmpty(novaServerProp)) { + novaServerPropMetadata = novaServerProp.get("metadata"); + if (novaServerPropMetadata == null) { + globalValidationContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS1, Messages.MISSING_NOVA_SERVER_METADATA.getErrorMessage(), resourceId)); + } else if (novaServerPropMetadata instanceof Map) { + TreeMap<String, Object> propertyMap = new TreeMap((Comparator<String>) String::compareToIgnoreCase); + propertyMap.putAll((Map) novaServerPropMetadata); + if (!propertyMap.containsKey("vf_module_id")) { + globalValidationContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS2, Messages.MISSING_NOVA_SERVER_VF_MODULE_ID.getErrorMessage(), resourceId)); + } + if (!propertyMap.containsKey("vnf_id")) { + globalValidationContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS3, Messages.MISSING_NOVA_SERVER_VNF_ID.getErrorMessage(), resourceId)); + } + } } - } } - } - private void validateUniqueResourcePortNetworkRole(String fileName, String resourceId, - Map<String, String> uniqueResourcePortNetworkRole, - GlobalValidationContext globalValidationContext, - String portResourceId, Resource portResource) { - String role = null; - Object network; - Map portNetwork = - getPortNetwork(fileName, resourceId, portResource, globalValidationContext); - if (Objects.nonNull(portNetwork)) { - network = portNetwork.get("get_param"); - if (Objects.nonNull(network)) { - if (network instanceof String ){ - role = getNetworkRole((String)network); - }else if (network instanceof List){ - role = getNetworkRole((String)((List) network).get(0)); + private void validateNovaServerResourceNetworkUniqueRole(String fileName, String resourceId, Map<String, String> uniqueResourcePortNetworkRole, + HeatOrchestrationTemplate heatOrchestrationTemplate, + GlobalValidationContext globalValidationContext) { + if (MapUtils.isEmpty(heatOrchestrationTemplate.getResources().get(resourceId).getProperties())) { + return; } - if (role != null && uniqueResourcePortNetworkRole.containsKey(role)) { - globalValidationContext.addMessage( - fileName, - ErrorLevel.WARNING, - ErrorMessagesFormatBuilder.getErrorWithParameters( - ERROR_CODE_NNS12, Messages.RESOURCE_CONNECTED_TO_TWO_EXTERNAL_NETWORKS_WITH_SAME_ROLE - .getErrorMessage(), role, resourceId)); - } else { - uniqueResourcePortNetworkRole.put(role, resourceId); + Object propertyNetworkValue = heatOrchestrationTemplate.getResources().get(resourceId).getProperties().get("networks"); + if (propertyNetworkValue != null && propertyNetworkValue instanceof List) { + List<String> portResourceIdList = getNovaNetworkPortResourceList(fileName, (List) propertyNetworkValue, globalValidationContext); + for (String portResourceId : portResourceIdList) { + Resource portResource = heatOrchestrationTemplate.getResources().get(portResourceId); + if (portResource != null && portResource.getType().equals(HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource())) { + validateUniqueResourcePortNetworkRole(fileName, resourceId, uniqueResourcePortNetworkRole, globalValidationContext, + portResourceId, portResource); + } + } } - } } - } - private List<String> getNovaNetworkPortResourceList(String filename, List propertyNetworkValue, - GlobalValidationContext globalContext) { - globalContext.setMessageCode(ERROR_CODE_NNS14); - List<String> portResourceIdList = new ArrayList<>(); - for (Object propValue : propertyNetworkValue) { - Object portPropValue = ((Map) propValue).get("port"); - Collection<String> portResourceIds = HeatStructureUtil - .getReferencedValuesByFunctionName(filename, "get_resource", portPropValue, - globalContext); - if (portResourceIds != null) { - portResourceIdList.addAll(portResourceIds); - } - } - - return portResourceIdList; - } - - private String getNetworkRole(String network) { - if (network == null) { - return null; - } - if (network.contains("_net_id")) { - return network.substring(0, network.indexOf("_net_id")); - } else if (network.contains("_net_name")) { - return network.substring(0, network.indexOf("_net_name")); - } else if (network.contains("_net_fqdn")) { - return network.substring(0, network.indexOf("_net_fqdn")); - } - return null; - } - - private Map getPortNetwork(String fileName, String resourceId, Resource portResource, - GlobalValidationContext globalValidationContext) { - Object portNetwork = portResource.getProperties().get("network_id"); - if (portNetwork == null) { - portNetwork = portResource.getProperties().get("network"); - } - if (!(portNetwork instanceof Map)) { - globalValidationContext.addMessage( - fileName, - ErrorLevel.WARNING, - ErrorMessagesFormatBuilder - .getErrorWithParameters( - ERROR_CODE_NNS4, Messages.MISSING_GET_PARAM.getErrorMessage(), - "network or network_id", resourceId)); - return null; + private void validateUniqueResourcePortNetworkRole(String fileName, String resourceId, Map<String, String> uniqueResourcePortNetworkRole, + GlobalValidationContext globalValidationContext, String portResourceId, + Resource portResource) { + String role = null; + Object network; + Map portNetwork = getPortNetwork(fileName, resourceId, portResource, globalValidationContext); + if (Objects.nonNull(portNetwork)) { + network = portNetwork.get("get_param"); + if (Objects.nonNull(network)) { + if (network instanceof String) { + role = getNetworkRole((String) network); + } else if (network instanceof List) { + role = getNetworkRole((String) ((List) network).get(0)); + } + if (role != null && uniqueResourcePortNetworkRole.containsKey(role)) { + globalValidationContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS12, + Messages.RESOURCE_CONNECTED_TO_TWO_EXTERNAL_NETWORKS_WITH_SAME_ROLE.getErrorMessage(), role, resourceId)); + } else { + uniqueResourcePortNetworkRole.put(role, resourceId); + } + } + } } - return (Map) portNetwork; - } - private void validateAvailabilityZoneName(String fileName, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - String[] regexList = new String[]{"availability_zone_(\\d+)"}; - - if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { - return; + private List<String> getNovaNetworkPortResourceList(String filename, List propertyNetworkValue, GlobalValidationContext globalContext) { + globalContext.setMessageCode(ERROR_CODE_NNS14); + List<String> portResourceIdList = new ArrayList<>(); + for (Object propValue : propertyNetworkValue) { + Object portPropValue = ((Map) propValue).get("port"); + Collection<String> portResourceIds = HeatStructureUtil + .getReferencedValuesByFunctionName(filename, "get_resource", portPropValue, globalContext); + if (portResourceIds != null) { + portResourceIdList.addAll(portResourceIds); + } + } + return portResourceIdList; } - Object availabilityZoneMap = resourceEntry.getValue().getProperties() - .get(AVAILABILITY_ZONE); - - if (nonNull(availabilityZoneMap)) { - if (availabilityZoneMap instanceof Map) { - String availabilityZoneName = ValidationUtil.getWantedNameFromPropertyValueGetParam - (availabilityZoneMap); - - if (availabilityZoneName != null && !ValidationUtil - .evalPattern(availabilityZoneName, regexList)) { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, ErrorMessagesFormatBuilder.getErrorWithParameters( - ERROR_CODE_NNS5, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), - ValidationUtil.getMessagePartAccordingToResourceType(resourceEntry), - "Availability Zone", availabilityZoneName, resourceEntry.getKey())); - } - } else { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, ErrorMessagesFormatBuilder - .getErrorWithParameters( - ERROR_CODE_NNS6, Messages.MISSING_GET_PARAM.getErrorMessage(), - AVAILABILITY_ZONE, resourceEntry.getKey())); - } + private String getNetworkRole(String network) { + if (network == null) { + return null; + } + if (network.contains("_net_id")) { + return network.substring(0, network.indexOf("_net_id")); + } else if (network.contains("_net_name")) { + return network.substring(0, network.indexOf("_net_name")); + } else if (network.contains("_net_fqdn")) { + return network.substring(0, network.indexOf("_net_fqdn")); + } + return null; } - } - - private void validateNovaServerNameImageAndFlavor(String fileName, String envFileName, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - String novaName = - validateNovaServerNamingConvention(fileName, envFileName, resourceEntry, globalContext); - Map<String, String> legalNovaNamingConventionMap = - validateImageAndFlavorFromNovaServer(fileName, resourceEntry, globalContext); - if (Objects.nonNull(novaName)) { - legalNovaNamingConventionMap.put("name", novaName); + private Map getPortNetwork(String fileName, String resourceId, Resource portResource, GlobalValidationContext globalValidationContext) { + Object portNetwork = portResource.getProperties().get("network_id"); + if (portNetwork == null) { + portNetwork = portResource.getProperties().get("network"); + } + if (!(portNetwork instanceof Map)) { + globalValidationContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS4, Messages.MISSING_GET_PARAM.getErrorMessage(), "network or network_id", resourceId)); + return null; + } + return (Map) portNetwork; } - if (legalNovaNamingConventionMap.keySet().size() > 1) { - validateNovaServerNameImageAndFlavorSync(fileName, resourceEntry, - legalNovaNamingConventionMap, globalContext); + private void validateAvailabilityZoneName(String fileName, Map.Entry<String, Resource> resourceEntry, GlobalValidationContext globalContext) { + String[] regexList = new String[]{"availability_zone_(\\d+)"}; + if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { + return; + } + Object availabilityZoneMap = resourceEntry.getValue().getProperties().get(AVAILABILITY_ZONE); + if (nonNull(availabilityZoneMap)) { + if (availabilityZoneMap instanceof Map) { + String availabilityZoneName = ValidationUtil.getWantedNameFromPropertyValueGetParam(availabilityZoneMap); + if (availabilityZoneName != null && !ValidationUtil.evalPattern(availabilityZoneName, regexList)) { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS5, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), + ValidationUtil.getMessagePartAccordingToResourceType(resourceEntry), "Availability Zone", availabilityZoneName, + resourceEntry.getKey())); + } + } else { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS6, Messages.MISSING_GET_PARAM.getErrorMessage(), AVAILABILITY_ZONE, + resourceEntry.getKey())); + } + } } - } - private String validateNovaServerNamingConvention(String fileName, String envFileName, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { - return null; + private void validateNovaServerNameImageAndFlavor(String fileName, String envFileName, Map.Entry<String, Resource> resourceEntry, + GlobalValidationContext globalContext) { + String novaName = validateNovaServerNamingConvention(fileName, envFileName, resourceEntry, globalContext); + Map<String, String> legalNovaNamingConventionMap = validateImageAndFlavorFromNovaServer(fileName, resourceEntry, globalContext); + if (Objects.nonNull(novaName)) { + legalNovaNamingConventionMap.put("name", novaName); + } + if (legalNovaNamingConventionMap.keySet().size() > 1) { + validateNovaServerNameImageAndFlavorSync(fileName, resourceEntry, legalNovaNamingConventionMap, globalContext); + } } - return checkIfNovaNameByGuidelines(fileName, envFileName, resourceEntry, globalContext); - } - private Map<String, String> validateImageAndFlavorFromNovaServer(String fileName, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - Map<String, String> imageAndFlavorLegalNames = new HashMap<>(); - - if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { - return imageAndFlavorLegalNames; + private String validateNovaServerNamingConvention(String fileName, String envFileName, Map.Entry<String, Resource> resourceEntry, + GlobalValidationContext globalContext) { + if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { + return null; + } + return checkIfNovaNameByGuidelines(fileName, envFileName, resourceEntry, globalContext); } - Pair<String, String> imagePair = new ImmutablePair<>("image", ".*_image_name"); - Pair<String, String> flavorPair = new ImmutablePair<>("flavor", ".*_flavor_name"); - List<Pair<String, String>> imageFlavorPairs = Arrays.asList(imagePair, flavorPair); - Map<String, Object> propertiesMap = resourceEntry.getValue().getProperties(); - - for (Pair<String, String> imageOrFlavor : imageFlavorPairs) { - boolean isErrorInImageOrFlavor = - isErrorExistWhenValidatingImageOrFlavorNames(fileName, imageOrFlavor, resourceEntry, - propertiesMap, globalContext); - if (!isErrorInImageOrFlavor) { - Object nameValue = propertiesMap.get(imageOrFlavor.getKey()); - String imageOrFlavorName = ValidationUtil.getWantedNameFromPropertyValueGetParam - (nameValue); - imageAndFlavorLegalNames.put(imageOrFlavor.getKey(), imageOrFlavorName); - } + private Map<String, String> validateImageAndFlavorFromNovaServer(String fileName, Map.Entry<String, Resource> resourceEntry, + GlobalValidationContext globalContext) { + Map<String, String> imageAndFlavorLegalNames = new HashMap<>(); + if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { + return imageAndFlavorLegalNames; + } + Pair<String, String> imagePair = new ImmutablePair<>("image", ".*_image_name"); + Pair<String, String> flavorPair = new ImmutablePair<>("flavor", ".*_flavor_name"); + List<Pair<String, String>> imageFlavorPairs = Arrays.asList(imagePair, flavorPair); + Map<String, Object> propertiesMap = resourceEntry.getValue().getProperties(); + for (Pair<String, String> imageOrFlavor : imageFlavorPairs) { + boolean isErrorInImageOrFlavor = isErrorExistWhenValidatingImageOrFlavorNames(fileName, imageOrFlavor, resourceEntry, propertiesMap, + globalContext); + if (!isErrorInImageOrFlavor) { + Object nameValue = propertiesMap.get(imageOrFlavor.getKey()); + String imageOrFlavorName = ValidationUtil.getWantedNameFromPropertyValueGetParam(nameValue); + imageAndFlavorLegalNames.put(imageOrFlavor.getKey(), imageOrFlavorName); + } + } + return imageAndFlavorLegalNames; } - return imageAndFlavorLegalNames; - } - private String checkIfNovaNameByGuidelines(String fileName, String envFileName, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { - return null; - } - Object novaNameGetParam = getNovaServerName(resourceEntry); - String novaName = null; - if (nonNull(novaNameGetParam)) { - novaName = - checkNovaNameGetParamValueMap(fileName, novaNameGetParam, resourceEntry, globalContext); - checkIfNovaNameParameterInEnvIsStringOrList(fileName, envFileName, novaName, resourceEntry, - globalContext); - } else { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, ErrorMessagesFormatBuilder - .getErrorWithParameters( - ERROR_CODE_NNS7, Messages.MISSING_GET_PARAM.getErrorMessage(), - "nova server name", resourceEntry.getKey())); + private String checkIfNovaNameByGuidelines(String fileName, String envFileName, Map.Entry<String, Resource> resourceEntry, + GlobalValidationContext globalContext) { + if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) { + return null; + } + Object novaNameGetParam = getNovaServerName(resourceEntry); + String novaName = null; + if (nonNull(novaNameGetParam)) { + novaName = checkNovaNameGetParamValueMap(fileName, novaNameGetParam, resourceEntry, globalContext); + checkIfNovaNameParameterInEnvIsStringOrList(fileName, envFileName, novaName, resourceEntry, globalContext); + } else { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS7, Messages.MISSING_GET_PARAM.getErrorMessage(), "nova server name", resourceEntry.getKey())); + } + return novaName; } - return novaName; - } - - private boolean isErrorExistWhenValidatingImageOrFlavorNames(String fileName, - Pair<String, String> propertyNameAndRegex, - Map.Entry<String, Resource> resourceEntry, - Map<String, Object> propertiesMap, - GlobalValidationContext globalContext) { - String propertyName = propertyNameAndRegex.getKey(); - Object nameValue = propertiesMap.get(propertyName); - String[] regexList = new String[]{propertyNameAndRegex.getValue()}; - - - if (nonNull(nameValue)) { - if (nameValue instanceof Map) { - globalContext.setMessageCode(ERROR_CODE_NNS13); - if (ValidationUtil.validateMapPropertyValue(fileName, resourceEntry, globalContext, - propertyName, - nameValue, regexList)) { - return true; + private boolean isErrorExistWhenValidatingImageOrFlavorNames(String fileName, Pair<String, String> propertyNameAndRegex, + Map.Entry<String, Resource> resourceEntry, Map<String, Object> propertiesMap, + GlobalValidationContext globalContext) { + String propertyName = propertyNameAndRegex.getKey(); + Object nameValue = propertiesMap.get(propertyName); + String[] regexList = new String[]{propertyNameAndRegex.getValue()}; + if (nonNull(nameValue)) { + if (nameValue instanceof Map) { + globalContext.setMessageCode(ERROR_CODE_NNS13); + if (ValidationUtil.validateMapPropertyValue(fileName, resourceEntry, globalContext, propertyName, nameValue, regexList)) { + return true; + } + } else { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS8, Messages.MISSING_GET_PARAM.getErrorMessage(), propertyName, resourceEntry.getKey())); + return true; + } + return false; } - } else { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, ErrorMessagesFormatBuilder - .getErrorWithParameters( - ERROR_CODE_NNS8, Messages.MISSING_GET_PARAM.getErrorMessage(), - propertyName, resourceEntry.getKey())); - return true; - } - - return false; + return false; } - return false; - } - - private Object getNovaServerName(Map.Entry<String, Resource> resourceEntry) { - Object novaServerName = resourceEntry.getValue().getProperties().get("name"); - Map novaNameMap; - if (nonNull(novaServerName) && novaServerName instanceof Map) { - novaNameMap = (Map) novaServerName; - return novaNameMap.get(ResourceReferenceFunctions.GET_PARAM.getFunction()); - } - return null; - } - - @SuppressWarnings("unchecked") - private String checkNovaNameGetParamValueMap(String fileName, Object getParamValue, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - if (getParamValue instanceof List) { - List<Object> getParamNameList = (List) getParamValue; - String[] regexName = new String[]{".*_names"}; - return isNovaNameAsListLegal(fileName, regexName, getParamNameList, resourceEntry, - globalContext); - } else if (getParamValue instanceof String) { - String[] regexName = new String[]{".*_name_(\\d+)"}; - return isNovaNameAsStringLegal(fileName, (String) getParamValue, regexName, resourceEntry, - globalContext); + private Object getNovaServerName(Map.Entry<String, Resource> resourceEntry) { + Object novaServerName = resourceEntry.getValue().getProperties().get("name"); + Map novaNameMap; + if (nonNull(novaServerName) && novaServerName instanceof Map) { + novaNameMap = (Map) novaServerName; + return novaNameMap.get(ResourceReferenceFunctions.GET_PARAM.getFunction()); + } + return null; } - return null; - } - - private void checkIfNovaNameParameterInEnvIsStringOrList(String fileName, - String envFileName, - String novaServerName, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - if (nonNull(envFileName)) { - Environment environment = ValidationUtil.validateEnvContent(envFileName, globalContext); - - if (environment != null && MapUtils.isNotEmpty(environment.getParameters())) { - Object novaServerNameEnvValue = environment.getParameters() - .get(novaServerName); - if (Objects.nonNull(novaServerNameEnvValue) && !DefinedHeatParameterTypes - .isNovaServerEnvValueIsFromRightType(novaServerNameEnvValue)) { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, ErrorMessagesFormatBuilder.getErrorWithParameters( - ERROR_CODE_NNS9, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), - SERVER, "Name", - novaServerNameEnvValue.toString(), resourceEntry.getKey())); - } - } + @SuppressWarnings("unchecked") + private String checkNovaNameGetParamValueMap(String fileName, Object getParamValue, Map.Entry<String, Resource> resourceEntry, + GlobalValidationContext globalContext) { + if (getParamValue instanceof List) { + List<Object> getParamNameList = (List) getParamValue; + String[] regexName = new String[]{".*_names"}; + return isNovaNameAsListLegal(fileName, regexName, getParamNameList, resourceEntry, globalContext); + } else if (getParamValue instanceof String) { + String[] regexName = new String[]{".*_name_(\\d+)"}; + return isNovaNameAsStringLegal(fileName, (String) getParamValue, regexName, resourceEntry, globalContext); + } + return null; } - } - - private String isNovaNameAsListLegal(String fileName, - String[] regexName, - List<Object> getParamNameList, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - if (getParamNameList.size() != 2 || !ValidationUtil.evalPattern(getParamNameList.get(0), - regexName)) { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, - ErrorMessagesFormatBuilder.getErrorWithParameters( - ERROR_CODE_NNS10, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), - SERVER, - "name", getParamNameList.toString(), resourceEntry.getKey())); - return null; + private void checkIfNovaNameParameterInEnvIsStringOrList(String fileName, String envFileName, String novaServerName, + Map.Entry<String, Resource> resourceEntry, GlobalValidationContext globalContext) { + if (nonNull(envFileName)) { + Environment environment = ValidationUtil.validateEnvContent(envFileName, globalContext); + if (environment != null && MapUtils.isNotEmpty(environment.getParameters())) { + Object novaServerNameEnvValue = environment.getParameters().get(novaServerName); + if (Objects.nonNull(novaServerNameEnvValue) && !DefinedHeatParameterTypes + .isNovaServerEnvValueIsFromRightType(novaServerNameEnvValue)) { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS9, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), SERVER, + "Name", novaServerNameEnvValue.toString(), resourceEntry.getKey())); + } + } + } } - return (String) getParamNameList.get(0); - } - - private String isNovaNameAsStringLegal(String fileName, - String novaName, - String[] regexName, - Map.Entry<String, Resource> resourceEntry, - GlobalValidationContext globalContext) { - if (!ValidationUtil.evalPattern(novaName, regexName)) { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, - ErrorMessagesFormatBuilder.getErrorWithParameters( - ERROR_CODE_NNS10, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), - SERVER, - "name", novaName, resourceEntry.getKey())); - return null; + private String isNovaNameAsListLegal(String fileName, String[] regexName, List<Object> getParamNameList, + Map.Entry<String, Resource> resourceEntry, GlobalValidationContext globalContext) { + if (getParamNameList.size() != 2 || !ValidationUtil.evalPattern(getParamNameList.get(0), regexName)) { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS10, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), SERVER, "name", + getParamNameList.toString(), resourceEntry.getKey())); + return null; + } + return (String) getParamNameList.get(0); } - return novaName; - } - - private void validateNovaServerNameImageAndFlavorSync(String fileName, - Map.Entry<String, Resource> resourceEntry, - Map<String, String> legalNovaNamingConventionNames, - GlobalValidationContext globalContext) { - List<String> vmNames = new LinkedList<>(); - for (Map.Entry<String, String> nameEntry : legalNovaNamingConventionNames.entrySet()) { - vmNames.add(getVmName(nameEntry.getValue(), nameEntry.getKey())); + private String isNovaNameAsStringLegal(String fileName, String novaName, String[] regexName, Map.Entry<String, Resource> resourceEntry, + GlobalValidationContext globalContext) { + if (!ValidationUtil.evalPattern(novaName, regexName)) { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS10, Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(), SERVER, "name", + novaName, resourceEntry.getKey())); + return null; + } + return novaName; } - vmNames.removeIf(Objects::isNull); - - if (!isVmNameSync(vmNames)) { - globalContext.addMessage( - fileName, - ErrorLevel.WARNING, - ErrorMessagesFormatBuilder.getErrorWithParameters( - ERROR_CODE_NNS11, Messages.NOVA_NAME_IMAGE_FLAVOR_NOT_CONSISTENT.getErrorMessage(), - resourceEntry.getKey())); + private void validateNovaServerNameImageAndFlavorSync(String fileName, Map.Entry<String, Resource> resourceEntry, + Map<String, String> legalNovaNamingConventionNames, GlobalValidationContext globalContext) { + List<String> vmNames = new LinkedList<>(); + for (Map.Entry<String, String> nameEntry : legalNovaNamingConventionNames.entrySet()) { + vmNames.add(getVmName(nameEntry.getValue(), nameEntry.getKey())); + } + vmNames.removeIf(Objects::isNull); + if (!isVmNameSync(vmNames)) { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(ERROR_CODE_NNS11, Messages.NOVA_NAME_IMAGE_FLAVOR_NOT_CONSISTENT.getErrorMessage(), resourceEntry.getKey())); + } } - } - private String getVmName(String nameToGetVmNameFrom, String stringToGetIndexOf) { - int vmIndex = - nameToGetVmNameFrom == null ? -1 : nameToGetVmNameFrom.indexOf(stringToGetIndexOf); - String vmName = null; - if (nameToGetVmNameFrom != null) { - vmName = vmIndex < 0 ? null - : trimNonAlphaNumericCharactersFromEndOfString(nameToGetVmNameFrom.substring(0, vmIndex)); + private String getVmName(String nameToGetVmNameFrom, String stringToGetIndexOf) { + int vmIndex = nameToGetVmNameFrom == null ? -1 : nameToGetVmNameFrom.indexOf(stringToGetIndexOf); + String vmName = null; + if (nameToGetVmNameFrom != null) { + vmName = vmIndex < 0 ? null : trimNonAlphaNumericCharactersFromEndOfString(nameToGetVmNameFrom.substring(0, vmIndex)); + } + return vmName; } - return vmName; - } - private boolean isVmNameSync(List<String> namesToCompare) { - int size = namesToCompare.size(); - for (int i = 0; i < size - 1; i++) { - if (!namesToCompare.get(i).equals(namesToCompare.get(i + 1))) { - return false; - } + private boolean isVmNameSync(List<String> namesToCompare) { + int size = namesToCompare.size(); + for (int i = 0; i < size - 1; i++) { + if (!namesToCompare.get(i).equals(namesToCompare.get(i + 1))) { + return false; + } + } + return true; } - return true; - } - - private String trimNonAlphaNumericCharactersFromEndOfString(String toTrim) { - int stringSize = toTrim.length(); - int stringLength = stringSize - 1; - String[] regexList = new String[]{"[^a-zA-Z0-9]"}; - while (stringLength >= 0) { - if (!ValidationUtil.evalPattern(String.valueOf(toTrim.charAt(stringLength)), regexList)) { - break; - } - stringLength--; + private String trimNonAlphaNumericCharactersFromEndOfString(String toTrim) { + int stringSize = toTrim.length(); + int stringLength = stringSize - 1; + String[] regexList = new String[]{"[^a-zA-Z0-9]"}; + while (stringLength >= 0) { + if (!ValidationUtil.evalPattern(String.valueOf(toTrim.charAt(stringLength)), regexList)) { + break; + } + stringLength--; + } + return toTrim.substring(0, stringLength + 1); } - - return toTrim.substring(0, stringLength + 1); - } } |