1 package org.openecomp.sdc.validation.impl.validators.heatresource;
3 import org.apache.commons.collections4.MapUtils;
4 import org.openecomp.sdc.validation.ResourceValidator;
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.HeatOrchestrationTemplate;
10 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
11 import org.openecomp.sdc.heat.datatypes.model.PropertiesMapKeyTypes;
12 import org.openecomp.sdc.heat.datatypes.model.Resource;
13 import org.openecomp.sdc.heat.datatypes.model.ResourceReferenceFunctions;
14 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
15 import org.openecomp.sdc.logging.types.LoggerErrorDescription;
16 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
17 import org.openecomp.sdc.validation.ValidationContext;
18 import org.openecomp.sdc.validation.type.HeatResourceValidationContext;
23 * Created by TALIO on 2/22/2017.
25 public class NovaServerResourceValidator implements ResourceValidator {
26 private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
28 public void validate(String fileName, Map.Entry<String, Resource> resourceEntry,
29 GlobalValidationContext globalContext, ValidationContext validationContext) {
31 HeatResourceValidationContext heatResourceValidationContext = (HeatResourceValidationContext)
33 validateNovaServerResourceType
34 (fileName, resourceEntry, heatResourceValidationContext, globalContext);
37 private static void validateNovaServerResourceType(String fileName,
38 Map.Entry<String, Resource> resourceEntry,
39 HeatResourceValidationContext heatResourceValidationContext,
40 GlobalValidationContext globalContext) {
42 mdcDataDebugMessage.debugEntryMessage("file", fileName);
44 validateAssignedValueForImageOrFlavorFromNova(fileName, resourceEntry, globalContext);
45 validateAllServerGroupsPointedByServerExistAndDefined
46 (fileName, resourceEntry,
47 heatResourceValidationContext.getHeatOrchestrationTemplate(), globalContext);
49 mdcDataDebugMessage.debugExitMessage("file", fileName);
53 private static void validateAssignedValueForImageOrFlavorFromNova(String fileName,
54 Map.Entry<String, Resource>
56 GlobalValidationContext
59 mdcDataDebugMessage.debugEntryMessage("file", fileName);
61 Resource resource = resourceEntry.getValue();
62 Map<String, Object> propertiesMap = resource.getProperties();
63 if (propertiesMap.get(PropertiesMapKeyTypes.IMAGE.getKeyMap()) == null
64 && propertiesMap.get(PropertiesMapKeyTypes.FLAVOR.getKeyMap()) == null) {
65 globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
66 .getErrorWithParameters(Messages.MISSING_IMAGE_AND_FLAVOR.getErrorMessage(),
67 resourceEntry.getKey()),
68 LoggerTragetServiceName.VALIDATE_ASSIGNED_VALUES_FOR_NOVA_IMAGE_FLAVOR,
69 LoggerErrorDescription.MISSING_NOVA_PROPERTIES);
72 mdcDataDebugMessage.debugExitMessage("file", fileName);
75 @SuppressWarnings("unchecked")
76 private static void validateAllServerGroupsPointedByServerExistAndDefined(String fileName,
77 Map.Entry<String, Resource> resourceEntry,
78 HeatOrchestrationTemplate heatOrchestrationTemplate,
79 GlobalValidationContext globalContext) {
81 mdcDataDebugMessage.debugEntryMessage("file", fileName);
83 Map<String, Resource> resourcesMap = heatOrchestrationTemplate.getResources();
84 Map<String, Object> resourceProperties = resourceEntry.getValue().getProperties();
85 Map<String, Object> schedulerHintsMap =
86 resourceProperties == null ? null : (Map<String, Object>) resourceProperties.get(
87 ResourceReferenceFunctions.SCHEDULER_HINTS.getFunction());
89 if (MapUtils.isEmpty(schedulerHintsMap)) {
93 for (Object serverGroupValue : schedulerHintsMap.values()) {
94 if(!(serverGroupValue instanceof Map)){
97 Map<String, Object> currentServerMap = (Map<String, Object>) serverGroupValue;
98 String serverResourceName =
99 currentServerMap == null ? null : (String) currentServerMap
100 .get(ResourceReferenceFunctions.GET_RESOURCE.getFunction());
101 Resource serverResource =
102 serverResourceName == null || resourcesMap == null ? null
103 : resourcesMap.get(serverResourceName);
105 if (serverResource != null && !serverResource.getType()
106 .equals(HeatResourcesTypes.NOVA_SERVER_GROUP_RESOURCE_TYPE.getHeatResource())) {
107 globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
108 .getErrorWithParameters(Messages.SERVER_NOT_DEFINED_FROM_NOVA.getErrorMessage(),
109 serverResourceName, resourceEntry.getKey()),
110 LoggerTragetServiceName.VALIDATE_SERVER_GROUP_EXISTENCE,
111 LoggerErrorDescription.SERVER_NOT_DEFINED_NOVA);
115 mdcDataDebugMessage.debugExitMessage("file", fileName);