1 package org.openecomp.sdc.validation.impl.validators.namingconvention;
3 import org.apache.commons.collections4.MapUtils;
4 import org.openecomp.core.validation.ErrorMessageCode;
5 import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
6 import org.openecomp.core.validation.types.GlobalValidationContext;
7 import org.openecomp.sdc.common.errors.Messages;
8 import org.openecomp.sdc.datatypes.error.ErrorLevel;
9 import org.openecomp.sdc.heat.datatypes.model.Resource;
10 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
11 import org.openecomp.sdc.logging.types.LoggerErrorDescription;
12 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
13 import org.openecomp.sdc.validation.ResourceValidator;
14 import org.openecomp.sdc.validation.ValidationContext;
15 import org.openecomp.sdc.validation.util.ValidationUtil;
19 import static java.util.Objects.nonNull;
22 * Created by TALIO on 2/24/2017.
24 public class ContrailServiceInstanceNamingConventionValidator implements ResourceValidator {
25 private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
26 private static final ErrorMessageCode ERROR_CODE_NSI1 = new ErrorMessageCode("NSI1");
27 private static final ErrorMessageCode ERROR_CODE_NSI2 = new ErrorMessageCode("NSI2");
30 public void validate(String fileName, Map.Entry<String, Resource> resourceEntry,
31 GlobalValidationContext globalContext, ValidationContext validationContext) {
32 validateAvailabilityZoneName(fileName, resourceEntry, globalContext);
35 private void validateAvailabilityZoneName(String fileName,
36 Map.Entry<String, Resource> resourceEntry,
37 GlobalValidationContext globalContext) {
40 mdcDataDebugMessage.debugEntryMessage("file", fileName);
42 String[] regexList = new String[]{"availability_zone_(\\d+)"};
43 if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) {
44 mdcDataDebugMessage.debugExitMessage("file", fileName);
48 Object availabilityZoneMap =
49 resourceEntry.getValue().getProperties().containsKey("availability_zone") ? resourceEntry
50 .getValue().getProperties().get("availability_zone") : null;
52 if (nonNull(availabilityZoneMap)) {
53 if (availabilityZoneMap instanceof Map) {
54 String availabilityZoneName = ValidationUtil.getWantedNameFromPropertyValueGetParam
55 (availabilityZoneMap);
57 if (availabilityZoneName != null) {
58 if (!ValidationUtil.evalPattern(availabilityZoneName, regexList)) {
59 globalContext.addMessage(
61 ErrorLevel.WARNING, ErrorMessagesFormatBuilder.getErrorWithParameters(ERROR_CODE_NSI1,
62 Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(),
63 ValidationUtil.getMessagePartAccordingToResourceType(resourceEntry),
65 availabilityZoneName, resourceEntry.getKey()),
66 LoggerTragetServiceName.VALIDATE_AVAILABILITY_ZONE_NAME,
67 LoggerErrorDescription.NAME_NOT_ALIGNED_WITH_GUIDELINES);
71 globalContext.addMessage(
73 ErrorLevel.WARNING, ErrorMessagesFormatBuilder
74 .getErrorWithParameters(ERROR_CODE_NSI2, Messages.MISSING_GET_PARAM.getErrorMessage(),
75 "availability_zone", resourceEntry.getKey()),
76 LoggerTragetServiceName.VALIDATE_AVAILABILITY_ZONE_NAME,
77 LoggerErrorDescription.MISSING_GET_PARAM);
80 mdcDataDebugMessage.debugExitMessage("file", fileName);