diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src')
16 files changed, 404 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttHeatResourceTypes.java b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttHeatResourceTypes.java new file mode 100644 index 0000000000..427fc9c84a --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttHeatResourceTypes.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package com.att.sdc.validation.datatypes; + +import java.util.HashMap; +import java.util.Map; + +public enum AttHeatResourceTypes { + ATT_VALET_GROUP_ASSIGNMENT("ATT::Valet::GroupAssignment"); + + private static Map<String, AttHeatResourceTypes> stringToAttRsourceMap; + + static { + stringToAttRsourceMap = new HashMap<>(); + + for (AttHeatResourceTypes attHeatResourceType : AttHeatResourceTypes.values()) { + stringToAttRsourceMap.put(attHeatResourceType.type, attHeatResourceType); + } + } + + private String type; + + + AttHeatResourceTypes(String type) { + this.type = type; + } + + public String getType() { + return type; + } + + public static AttHeatResourceTypes findByResourceType(String type) { + return stringToAttRsourceMap.get(type); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttLoggerErrorDescription.java b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttLoggerErrorDescription.java new file mode 100644 index 0000000000..c4f1d0a4b4 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttLoggerErrorDescription.java @@ -0,0 +1,9 @@ +package com.att.sdc.validation.datatypes; + +/** + * Created by TALIO on 5/21/2017. + */ +public class AttLoggerErrorDescription { + + public static final String ATT_VALET_IN_USE = "ATT Valet group type is in use"; +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttLoggerTargetServiceName.java b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttLoggerTargetServiceName.java new file mode 100644 index 0000000000..111a9873fc --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttLoggerTargetServiceName.java @@ -0,0 +1,9 @@ +package com.att.sdc.validation.datatypes; + +/** + * Created by TALIO on 5/21/2017. + */ +public class AttLoggerTargetServiceName { + + public static final String VALIDATE_ATT_VALET_TYPE = "Validate OPENECOMP Valet Group Resosurce Type"; +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttValetGroupTypeValues.java b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttValetGroupTypeValues.java new file mode 100644 index 0000000000..08647b18af --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/datatypes/AttValetGroupTypeValues.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package com.att.sdc.validation.datatypes; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public enum AttValetGroupTypeValues { + EXCLUSIVITY("exclusivity"), + AFFINITY("affinity"), + DIVERSITY("diversity"); + + private static List<String> groupTypeAsStrings; + + static { + groupTypeAsStrings = new ArrayList<>(); + for (AttValetGroupTypeValues attGroupTypeValue : AttValetGroupTypeValues.values()) { + groupTypeAsStrings.add(attGroupTypeValue.groupTypeValue); + } + } + + private String groupTypeValue; + + AttValetGroupTypeValues(String groupTypeValue) { + this.groupTypeValue = groupTypeValue; + } + + public static boolean isGroupTypeValid(Object groupType) { + if (groupType instanceof Map) { + return true; + } + return groupTypeAsStrings.contains(groupType); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/impl/validators/AttValetGroupAssignmentResourceValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/impl/validators/AttValetGroupAssignmentResourceValidator.java new file mode 100644 index 0000000000..30b65f4b3e --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/impl/validators/AttValetGroupAssignmentResourceValidator.java @@ -0,0 +1,60 @@ +package com.att.sdc.validation.impl.validators; + +import com.att.sdc.validation.datatypes.AttLoggerErrorDescription; +import com.att.sdc.validation.datatypes.AttLoggerTargetServiceName; +import com.att.sdc.validation.datatypes.AttValetGroupTypeValues; +import com.att.sdc.validation.messages.Messages; +import org.apache.commons.collections4.MapUtils; +import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; +import org.openecomp.core.validation.types.GlobalValidationContext; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.heat.datatypes.model.Resource; +import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; +import org.openecomp.sdc.validation.ResourceValidator; +import org.openecomp.sdc.validation.ValidationContext; + +import java.util.Map; +import java.util.Objects; + +/** + * Created by TALIO on 2/26/2017. + */ +public class AttValetGroupAssignmentResourceValidator implements ResourceValidator { + private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); + + @Override + public void validate(String fileName, Map.Entry<String, Resource> resourceEntry, + GlobalValidationContext globalContext, ValidationContext validationContext) { + mdcDataDebugMessage.debugEntryMessage("file", fileName); + + Resource resource = resourceEntry.getValue(); + + Map<String, Object> propertiesMap = resource.getProperties(); + if (MapUtils.isEmpty(propertiesMap)) { + return; + } + + Object groupTypeValue = propertiesMap.get("group_type"); + if (Objects.isNull(groupTypeValue)) { + return; + } + + validateGroupTypeValue(fileName, resourceEntry.getKey(), groupTypeValue, globalContext); + mdcDataDebugMessage.debugExitMessage("file", fileName); + } + + private static void validateGroupTypeValue(String fileName, String resourceId, + Object groupTypeValue, + GlobalValidationContext globalContext) { + mdcDataDebugMessage.debugEntryMessage("file", fileName); + + if (!AttValetGroupTypeValues.isGroupTypeValid(groupTypeValue)) { + globalContext.addMessage(fileName, ErrorLevel.WARNING, ErrorMessagesFormatBuilder + .getErrorWithParameters(Messages.UNEXPECTED_GROUP_TYPE_ATT_VALET.getErrorMessage(), + resourceId), AttLoggerTargetServiceName.VALIDATE_ATT_VALET_TYPE, + AttLoggerErrorDescription.ATT_VALET_IN_USE); + } + + mdcDataDebugMessage.debugExitMessage("file", fileName); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/messages/Messages.java b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/messages/Messages.java new file mode 100644 index 0000000000..0b3274edf0 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/java/com/att/sdc/validation/messages/Messages.java @@ -0,0 +1,20 @@ +package com.att.sdc.validation.messages; + +/** + * Created by TALIO on 5/17/2017. + */ +public enum Messages { + + UNEXPECTED_GROUP_TYPE_ATT_VALET( + "Unexpected group_type for ATT::Valet::GroupAssignment, Resource ID [%s]"); + + private String errorMessage; + + Messages(String errorMessage) { + this.errorMessage = errorMessage; + } + + public String getErrorMessage() { + return errorMessage; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/resources/config-merge-validaton.json b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/resources/config-merge-validaton.json new file mode 100644 index 0000000000..179f13c344 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/main/resources/config-merge-validaton.json @@ -0,0 +1,18 @@ +{ + "validatorImplementations": { + "resourceHeatValidator": { + "properties": { + "resourceBaseValidator": { + "ATT::Valet::GroupAssignment": { + "enable": true, + "implementationClass": "com.att.sdc.validation.impl.validators.AttValetGroupAssignmentResourceValidator" + } + } + } + } + }, + "_config": { + "namespace": "validation", + "mergeStrategy": "merge" + } +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/java/com/att/sdc/validation/impl/validators/AttValetGroupAssignmentResourceValidatorTest.java b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/java/com/att/sdc/validation/impl/validators/AttValetGroupAssignmentResourceValidatorTest.java new file mode 100644 index 0000000000..76e10215e3 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/java/com/att/sdc/validation/impl/validators/AttValetGroupAssignmentResourceValidatorTest.java @@ -0,0 +1,61 @@ +package com.att.sdc.validation.impl.validators; + +import com.att.sdc.validation.datatypes.AttHeatResourceTypes; +import com.att.sdc.validation.datatypes.AttValetGroupTypeValues; +import org.openecomp.sdc.validation.Validator; +import org.openecomp.core.validation.api.ValidationManager; +import org.openecomp.core.validation.factory.ValidationManagerFactory; +import org.openecomp.core.validation.types.GlobalValidationContext; +import org.openecomp.core.validation.types.MessageContainer; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.validation.impl.validators.HeatResourceValidator; +import org.openecomp.sdc.validation.util.ValidationTestUtil; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + + +public class AttValetGroupAssignmentResourceValidatorTest { + + HeatResourceValidator baseValidator = new HeatResourceValidator(); + AttValetGroupAssignmentResourceValidator resourceValidator = new + AttValetGroupAssignmentResourceValidator(); + + @Test + public void testATTValetGroupType() { + Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator, + resourceValidator, AttHeatResourceTypes.ATT_VALET_GROUP_ASSIGNMENT.getType(), + "/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive"); + Assert.assertNotNull(messages); + Assert.assertEquals(messages.size(), 0); + + messages = ValidationTestUtil.testValidator(baseValidator, + resourceValidator, AttHeatResourceTypes.ATT_VALET_GROUP_ASSIGNMENT.getType(), + "/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative"); + Assert.assertNotNull(messages); + Assert.assertEquals(messages.size(), 1); + Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2); + Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(), + "WARNING: Unexpected group_type for ATT::Valet::GroupAssignment, Resource ID [valet_group_assignment_illegal_1]"); + Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(), + "WARNING: Unexpected group_type for ATT::Valet::GroupAssignment, Resource ID [valet_group_assignment_illegal_2]"); + } + + @Test + public void testValidationWithFullFlowFromValidationFactory() throws IOException { + GlobalValidationContext globalContext = ValidationTestUtil.createGlobalContextFromPath( + "/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative"); + ValidationManager validationManager = ValidationManagerFactory.getInstance().createInterface(); + validationManager.updateGlobalContext(globalContext); + Map<String, List<ErrorMessage>> messages = validationManager.validate(); + + Assert.assertNotNull(messages); + ErrorMessage excpectedMessage = new ErrorMessage(ErrorLevel.WARNING, + "WARNING: Unexpected group_type for ATT::Valet::GroupAssignment, Resource ID [valet_group_assignment_illegal_1]"); + Assert.assertTrue(messages.get("first.yaml").contains(excpectedMessage)); + } +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/MANIFEST.json new file mode 100644 index 0000000000..76ce6de6e6 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/MANIFEST.json @@ -0,0 +1,27 @@ +{ + "name": "validTest", + "description": "Valid Test", + "version": "1610", + "data": [ + { + "file": "first.yaml", + "type": "HEAT", + "isBase": true, + "data": [ + { + "file": "first.env", + "type": "HEAT_ENV" + }, + { + "file": "firstVol.yaml", + "type": "HEAT_VOL" + } + ] + }, + { + "file": "second.yaml", + "type": "HEAT", + "isBase": false + } + ] +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/first.env b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/first.env new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/first.env diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/first.yaml b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/first.yaml new file mode 100644 index 0000000000..99e707e91d --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/first.yaml @@ -0,0 +1,22 @@ +heat_template_version: 2013-05-23 + +description: heat expose volume resource + +resources: + valet_group_assignment_illegal_1: + type: ATT::Valet::GroupAssignment + properties: + group_type: blabla + + valet_group_assignment_illegal_2: + type: ATT::Valet::GroupAssignment + properties: + group_type: blabla + + valet_group_assignment_legal: + type: ATT::Valet::GroupAssignment + properties: + group_type: diversity + + + diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/second.yaml b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/second.yaml new file mode 100644 index 0000000000..bb06b9d60a --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/negative/second.yaml @@ -0,0 +1,14 @@ +heat_template_version: 2013-05-23 + +description: heat second + +resources: + network_expose: + type: OS::Neutron::Net + +outputs: + expose_resource_network_output: + description: the pcrf_server + value: { get_resource: network_expose } + + diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/MANIFEST.json new file mode 100644 index 0000000000..76ce6de6e6 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/MANIFEST.json @@ -0,0 +1,27 @@ +{ + "name": "validTest", + "description": "Valid Test", + "version": "1610", + "data": [ + { + "file": "first.yaml", + "type": "HEAT", + "isBase": true, + "data": [ + { + "file": "first.env", + "type": "HEAT_ENV" + }, + { + "file": "firstVol.yaml", + "type": "HEAT_VOL" + } + ] + }, + { + "file": "second.yaml", + "type": "HEAT", + "isBase": false + } + ] +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/first.env b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/first.env new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/first.env diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/first.yaml b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/first.yaml new file mode 100644 index 0000000000..14f8e7e550 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/first.yaml @@ -0,0 +1,17 @@ +heat_template_version: 2013-05-23 + +description: heat expose volume resource + +resources: + valet_group_assigment_legal_1: + type: ATT::Valet::GroupAssignment + properties: + group_type: affinity + + valet_group_assigment_legal_2: + type: ATT::Valet::GroupAssignment + properties: + group_type: diversity + + + diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/second.yaml b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/second.yaml new file mode 100644 index 0000000000..bb06b9d60a --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/att-sdc-validation-impl/src/test/resources/com/att/sdc/validation/impl/validators/att_heat_validator/att_valet_group_type/positive/second.yaml @@ -0,0 +1,14 @@ +heat_template_version: 2013-05-23 + +description: heat second + +resources: + network_expose: + type: OS::Neutron::Net + +outputs: + expose_resource_network_output: + description: the pcrf_server + value: { get_resource: network_expose } + + |