51a174f9fa6ea83f9999e34aff7c5265f88210ae
[sdc.git] /
1 package org.openecomp.sdc.validation.impl.validators.namingconvention;
2
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;
16
17 import java.util.Map;
18
19 import static java.util.Objects.nonNull;
20
21 /**
22  * Created by TALIO on 2/24/2017.
23  */
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");
28
29   @Override
30   public void validate(String fileName, Map.Entry<String, Resource> resourceEntry,
31                        GlobalValidationContext globalContext, ValidationContext validationContext) {
32     validateAvailabilityZoneName(fileName, resourceEntry, globalContext);
33   }
34
35   private void validateAvailabilityZoneName(String fileName,
36                                             Map.Entry<String, Resource> resourceEntry,
37                                             GlobalValidationContext globalContext) {
38
39
40     mdcDataDebugMessage.debugEntryMessage("file", fileName);
41
42     String[] regexList = new String[]{"availability_zone_(\\d+)"};
43     if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) {
44       mdcDataDebugMessage.debugExitMessage("file", fileName);
45       return;
46     }
47
48     Object availabilityZoneMap =
49             resourceEntry.getValue().getProperties().containsKey("availability_zone") ? resourceEntry
50                     .getValue().getProperties().get("availability_zone") : null;
51
52     if (nonNull(availabilityZoneMap)) {
53       if (availabilityZoneMap instanceof Map) {
54         String availabilityZoneName = ValidationUtil.getWantedNameFromPropertyValueGetParam
55                 (availabilityZoneMap);
56
57         if (availabilityZoneName != null) {
58           if (!ValidationUtil.evalPattern(availabilityZoneName, regexList)) {
59             globalContext.addMessage(
60                     fileName,
61                     ErrorLevel.WARNING, ErrorMessagesFormatBuilder.getErrorWithParameters(ERROR_CODE_NSI1,
62                             Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(),
63                             ValidationUtil.getMessagePartAccordingToResourceType(resourceEntry),
64                             "Availability Zone",
65                             availabilityZoneName, resourceEntry.getKey()),
66                     LoggerTragetServiceName.VALIDATE_AVAILABILITY_ZONE_NAME,
67                     LoggerErrorDescription.NAME_NOT_ALIGNED_WITH_GUIDELINES);
68           }
69         }
70       } else {
71         globalContext.addMessage(
72                 fileName,
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);
78       }
79     }
80     mdcDataDebugMessage.debugExitMessage("file", fileName);
81   }
82
83 }