[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / lib / openecomp-sdc-validation-lib / openecomp-sdc-validation-impl / src / main / java / org / openecomp / sdc / validation / impl / validators / namingconvention / ContrailServiceInstanceNamingConventionValidator.java
1 package org.openecomp.sdc.validation.impl.validators.namingconvention;
2
3 import org.apache.commons.collections4.MapUtils;
4 import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
5 import org.openecomp.core.validation.types.GlobalValidationContext;
6 import org.openecomp.sdc.common.errors.Messages;
7 import org.openecomp.sdc.datatypes.error.ErrorLevel;
8 import org.openecomp.sdc.heat.datatypes.model.Resource;
9 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
10 import org.openecomp.sdc.logging.types.LoggerErrorDescription;
11 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
12 import org.openecomp.sdc.validation.ResourceValidator;
13 import org.openecomp.sdc.validation.ValidationContext;
14 import org.openecomp.sdc.validation.util.ValidationUtil;
15
16 import java.util.Map;
17
18 import static java.util.Objects.nonNull;
19
20 /**
21  * Created by TALIO on 2/24/2017.
22  */
23 public class ContrailServiceInstanceNamingConventionValidator implements ResourceValidator {
24   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
25
26   @Override
27   public void validate(String fileName, Map.Entry<String, Resource> resourceEntry,
28                        GlobalValidationContext globalContext, ValidationContext validationContext) {
29     validateAvailabilityZoneName(fileName, resourceEntry, globalContext);
30   }
31
32   private void validateAvailabilityZoneName(String fileName,
33                                             Map.Entry<String, Resource> resourceEntry,
34                                             GlobalValidationContext globalContext) {
35
36
37     mdcDataDebugMessage.debugEntryMessage("file", fileName);
38
39     String[] regexList = new String[]{"availability_zone_(\\d+)"};
40
41     if (MapUtils.isEmpty(resourceEntry.getValue().getProperties())) {
42       mdcDataDebugMessage.debugExitMessage("file", fileName);
43       return;
44     }
45
46     Object availabilityZoneMap =
47         resourceEntry.getValue().getProperties().containsKey("availability_zone") ? resourceEntry
48             .getValue().getProperties().get("availability_zone") : null;
49
50     if (nonNull(availabilityZoneMap)) {
51       if (availabilityZoneMap instanceof Map) {
52         String availabilityZoneName = ValidationUtil.getWantedNameFromPropertyValueGetParam
53             (availabilityZoneMap);
54
55         if (availabilityZoneName != null) {
56           if (!ValidationUtil.evalPattern(availabilityZoneName, regexList)) {
57             globalContext.addMessage(
58                 fileName,
59                 ErrorLevel.WARNING, ErrorMessagesFormatBuilder.getErrorWithParameters(
60                     Messages.PARAMETER_NAME_NOT_ALIGNED_WITH_GUIDELINES.getErrorMessage(),
61                     ValidationUtil.getMessagePartAccordingToResourceType(resourceEntry),
62                     "Availability Zone",
63                     availabilityZoneName, resourceEntry.getKey()),
64                 LoggerTragetServiceName.VALIDATE_AVAILABILITY_ZONE_NAME,
65                 LoggerErrorDescription.NAME_NOT_ALIGNED_WITH_GUIDELINES);
66           }
67         }
68       } else {
69         globalContext.addMessage(
70             fileName,
71             ErrorLevel.WARNING, ErrorMessagesFormatBuilder
72                 .getErrorWithParameters(Messages.MISSING_GET_PARAM.getErrorMessage(),
73                     "availability_zone", resourceEntry.getKey()),
74             LoggerTragetServiceName.VALIDATE_AVAILABILITY_ZONE_NAME,
75             LoggerErrorDescription.MISSING_GET_PARAM);
76       }
77     }
78     mdcDataDebugMessage.debugExitMessage("file", fileName);
79   }
80
81 }