aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl
diff options
context:
space:
mode:
authorwejs <maciej.wejs@nokia.com>2018-02-07 17:19:59 +0100
committerVitaly Emporopulo <Vitaliy.Emporopulo@amdocs.com>2018-02-19 17:16:48 +0000
commit3a88d01cee90090f7bf012ea33fe73576e55192a (patch)
treefdb75a4385784a273250d753ac5a88388efc47d5 /openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl
parent38b4e81eab76202bcafdec7e0b6374679090ce7e (diff)
Heat Validation - VirtualMachineInterface
Issue-ID: SDC-994 Change-Id: I0fd23862eebf65437ab0e1a1ad1d44c9a2944990 Signed-off-by: katy.rotman <katy.rotman@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl')
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HeatValidationService.java56
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidator.java153
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidatorTest.java163
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/main.yml102
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/nested.yml72
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/main.yml102
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/nested.yml73
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/main.yml102
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/nested.yml75
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/main.yml102
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/nested.yml75
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/main.yml187
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/nested.yml74
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/main.yml102
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/nested.yml75
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/main.yml187
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/nested.yml76
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/MANIFEST.json17
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/main.yml111
-rw-r--r--openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/nested.yml75
27 files changed, 2091 insertions, 7 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HeatValidationService.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HeatValidationService.java
index 469bfad3af..dbd13ed8e0 100644
--- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HeatValidationService.java
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/util/HeatValidationService.java
@@ -26,10 +26,12 @@ import org.openecomp.sdc.heat.datatypes.model.Environment;
import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
import org.openecomp.sdc.heat.datatypes.model.Parameter;
import org.openecomp.sdc.heat.datatypes.model.Resource;
+import org.openecomp.sdc.heat.services.HeatStructureUtil;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
import org.openecomp.sdc.tosca.services.YamlUtil;
import org.openecomp.sdc.validation.impl.validators.HeatValidator;
+import org.openecomp.sdc.validation.type.HeatResourceValidationContext;
import java.io.InputStream;
import java.util.Collection;
@@ -105,11 +107,11 @@ public class HeatValidationService {
* @param nestedParameters nested parameters.
* @param nestedParametersNames nested parameter names.
*/
- public static void checkNestedParameters(String parentFileName, String nestedFileName,
- GlobalValidationContext globalContext,
- Map<String, Parameter> parentParameters,
- Map<String, Parameter> nestedParameters,
- Set<String> nestedParametersNames) {
+ private static void checkNestedParameters(String parentFileName, String nestedFileName,
+ GlobalValidationContext globalContext,
+ Map<String, Parameter> parentParameters,
+ Map<String, Parameter> nestedParameters,
+ Set<String> nestedParametersNames) {
HeatOrchestrationTemplate parentHeatOrchestrationTemplate;
HeatOrchestrationTemplate nestedHeatOrchestrationTemplate;
@@ -276,6 +278,10 @@ public class HeatValidationService {
}
return false;
}
+
+
+
+
private static HeatOrchestrationTemplate getNestedHeatOrchestrationTemplate( String nestedFileName,
GlobalValidationContext globalContext) throws Exception {
Optional<InputStream> fileContent = globalContext.getFileContent(nestedFileName);
@@ -319,9 +325,45 @@ public class HeatValidationService {
return envContent;
}
+ /**
+ *
+ * @param fileName on which the validation is currently run
+ * @param globalContext gloabl validation context
+ * @param heatResourceValidationContext heat resource validation context
+ * @param propertyValue the value which is examined
+ * @return whether the vlan has single parent port
+ */
+ public static boolean hasSingleParentPort(String fileName, GlobalValidationContext globalContext,
+ HeatResourceValidationContext heatResourceValidationContext,
+ Object propertyValue) {
+ boolean hasSingleParentPort;
+ if (propertyValue instanceof List && ((List) propertyValue).size() == 1) {
+ final Object listValue = ((List) propertyValue).get(0);
+
+ final Set<String> getParamValues =
+ HeatStructureUtil.getReferencedValuesByFunctionName(fileName, "get_param",
+ listValue, globalContext);
+ hasSingleParentPort = getParamValues.isEmpty() || (getParamValues.size() == 1) &&
+ validateGetParamValueOfType(getParamValues, heatResourceValidationContext,
+ DefinedHeatParameterTypes.STRING.getType());
+ } else {
+ hasSingleParentPort = false;
+ }
+ return hasSingleParentPort;
+ }
+
+ private static boolean validateGetParamValueOfType(Set<String> values,
+ HeatResourceValidationContext
+ heatResourceValidationContext,String type) {
+ Optional<String> value = values.stream().findAny();
+ boolean isString = false;
+ if (value.isPresent()) {
+ isString =
+ Objects.equals(heatResourceValidationContext.getHeatOrchestrationTemplate
+ ().getParameters().get(value.get()).getType(), type);
+ }
- public static String getResourceGroupResourceName(String resourceCallingToResourceGroup) {
- return "OS::Heat::ResourceGroup in " + resourceCallingToResourceGroup;
+ return isString;
}
}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidator.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidator.java
new file mode 100644
index 0000000000..b5fa80e381
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/main/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidator.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright © 2016-2017 European Support Limited
+ *
+ * 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.
+ */
+
+package org.openecomp.sdc.validation.impl.validators.heatresource;
+
+import org.openecomp.core.validation.ErrorMessageCode;
+import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
+import org.openecomp.core.validation.types.GlobalValidationContext;
+import org.openecomp.sdc.common.togglz.ToggleableFeature;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.heat.datatypes.DefinedHeatParameterTypes;
+import org.openecomp.sdc.heat.datatypes.model.Resource;
+import org.openecomp.sdc.heat.services.HeatConstants;
+import org.openecomp.sdc.heat.services.HeatStructureUtil;
+import org.openecomp.sdc.validation.ResourceValidator;
+import org.openecomp.sdc.validation.ValidationContext;
+import org.openecomp.sdc.validation.impl.util.HeatValidationService;
+import org.openecomp.sdc.validation.type.HeatResourceValidationContext;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+
+public class VirtualMachineInterfaceValidator implements ResourceValidator {
+ private static final ErrorMessageCode ERROR_CODE_VLAN1 = new ErrorMessageCode("VLAN1");
+ private static final ErrorMessageCode ERROR_CODE_VLAN2 = new ErrorMessageCode("VLAN2");
+
+
+ @Override
+ public void validate(String fileName, Map.Entry<String, Resource> resourceEntry,
+ GlobalValidationContext globalContext, ValidationContext validationContext) {
+ if (ToggleableFeature.VLAN_TAGGING.isActive()) {
+ HeatResourceValidationContext heatResourceValidationContext =
+ (HeatResourceValidationContext) validationContext;
+ Optional<Object> tagPropertyValue = getVlanTagPropertyValue(resourceEntry.getValue());
+
+ tagPropertyValue
+ .ifPresent(o -> validateHasSingleParentPort(fileName, resourceEntry, globalContext,
+ heatResourceValidationContext));
+ validateHasTwoProperties(fileName, resourceEntry, globalContext);
+
+ }
+ }
+
+
+ private void validateHasSingleParentPort(String fileName,
+ Map.Entry<String, Resource> resourceEntry,
+ GlobalValidationContext globalContext,
+ HeatResourceValidationContext heatResourceValidationContext) {
+ Object refsPropertyValue = resourceEntry.getValue().getProperties()
+ .get(HeatConstants.VMI_REFS_PROPERTY_NAME);
+ if (Objects.isNull(refsPropertyValue)) {
+ return;
+ }
+ boolean hasSingleParentPort= HeatValidationService.hasSingleParentPort(fileName, globalContext,
+ heatResourceValidationContext,
+ refsPropertyValue);
+ if (!hasSingleParentPort) {
+ globalContext.addMessage(fileName, ErrorLevel.ERROR, ErrorMessagesFormatBuilder
+ .getErrorWithParameters(ERROR_CODE_VLAN1,
+ Messages.VLAN_SUBINTERFACE_MORE_THAN_ONE_PORT.getErrorMessage(),
+ resourceEntry.getKey()));
+ }
+
+
+ }
+
+
+ private void validateHasTwoProperties(String fileName, Map.Entry<String, Resource> resourceEntry,
+ GlobalValidationContext globalContext) {
+
+ Optional<Object> refsPropertyValue = getRefsPropertyValue(resourceEntry.getValue());
+ Optional<Object> tagPropertyValue = getVlanTagPropertyValue(resourceEntry.getValue());
+
+
+ if (refsPropertyValue.isPresent() && !tagPropertyValue.isPresent()) {
+ globalContext
+ .addMessage(fileName, ErrorLevel.WARNING,
+ ErrorMessagesFormatBuilder
+ .getErrorWithParameters(
+ ERROR_CODE_VLAN2,
+ Messages.VLAN_SUBINTERFACE_MISSING_TAG_PROPERTY.getErrorMessage(),
+ resourceEntry.getKey())
+ );
+
+ } else if (!refsPropertyValue.isPresent() && tagPropertyValue.isPresent()) {
+ globalContext
+ .addMessage(fileName, ErrorLevel.WARNING,
+ ErrorMessagesFormatBuilder
+ .getErrorWithParameters(
+ ERROR_CODE_VLAN2,
+ Messages.VLAN_SUBINTERFACE_MISSING_REFS_PROPERTY.getErrorMessage(),
+ resourceEntry.getKey()));
+
+ }
+
+ }
+
+
+ private Optional<Object> getVlanTagPropertyValue(Resource resource) {
+ Object vmiProperties = resource.getProperties()
+ .get(HeatConstants.VMI_PROPERTIES_PROPERTY_NAME);
+ if (Objects.nonNull(vmiProperties) && vmiProperties instanceof Map) {
+ return Optional.ofNullable(((Map) vmiProperties)
+ .get(HeatConstants.VMI_SUB_INTERFACE_VLAN_TAG_PROPERTY_NAME));
+ }
+ return Optional.empty();
+ }
+
+ private Optional<Object> getRefsPropertyValue(Resource resource) {
+ Object refsProperty = resource.getProperties()
+ .get(HeatConstants.VMI_REFS_PROPERTY_NAME);
+ return Optional.ofNullable(refsProperty);
+
+ }
+
+
+ private enum Messages {
+ VLAN_SUBINTERFACE_MORE_THAN_ONE_PORT(
+ "More than one parent port found, there should be only one parent port for a VLAN sub-interface ID [%s]"),
+ VLAN_SUBINTERFACE_MISSING_TAG_PROPERTY("VLAN Tag property " +
+ "virtual_machine_interface_properties_sub_interface_vlan_tag is missing in VLAN Resource ID [%s]"),
+ VLAN_SUBINTERFACE_MISSING_REFS_PROPERTY("Parent port property virtual_machine_interface_refs " +
+ "is missing in VLAN Resource ID [%s]");
+
+ String getErrorMessage() {
+ return errorMessage;
+ }
+
+ private final String errorMessage;
+
+ Messages(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
+ }
+
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidatorTest.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidatorTest.java
new file mode 100644
index 0000000000..c82271e1c7
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/java/org/openecomp/sdc/validation/impl/validators/heatresource/VirtualMachineInterfaceValidatorTest.java
@@ -0,0 +1,163 @@
+package org.openecomp.sdc.validation.impl.validators.heatresource;
+
+import org.openecomp.core.validation.types.MessageContainer;
+import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
+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.util.Map;
+
+/**
+ * @author KATYR
+ * @since January 22, 2018
+ */
+
+public class VirtualMachineInterfaceValidatorTest {
+ private static final String PATH =
+ "/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/";
+
+
+ @Test
+ public void hasSingleParentPortNegative() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_multiple_parent_ports/negative_test/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 1);
+
+ Assert.assertEquals(messages.get("nested.yml").getErrorMessageList().size(), 1);
+ Assert.assertEquals(
+ messages.get("nested.yml").getErrorMessageList().get(0).getMessage(),
+ "ERROR: [VLAN1]: More than one parent port found, " +
+ "there should be only one parent port for a VLAN sub-interface ID [template_Vlan_2]");
+ }
+
+ @Test
+ public void hasSingleParentPortNegativeWithGetResource() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_multiple_parent_ports/negative_get_resource/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 0);
+ }
+
+
+ @Test
+ public void hasSingleParentPortPositive() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_multiple_parent_ports/positive_test/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 0);
+
+
+ }
+
+
+ @Test
+ public void hasBothPropertiesMissingTagNegative() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_has_two_properties/negative_tag_missing/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 1);
+
+ Assert.assertEquals(messages.get("nested.yml").getErrorMessageList().size(), 1);
+ Assert.assertEquals(
+ messages.get("nested.yml").getErrorMessageList().get(0).getMessage(),
+ "WARNING: [VLAN2]: VLAN Tag property " +
+ "virtual_machine_interface_properties_sub_interface_vlan_tag " +
+ "is missing in VLAN Resource ID [template_Vlan_2]");
+ }
+
+ @Test
+ public void hasBothPropertiesMissingRefsNegative() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_has_two_properties/negative_refs_missing/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 1);
+
+ Assert.assertEquals(messages.get("nested.yml").getErrorMessageList().size(), 1);
+ Assert.assertEquals(
+ messages.get("nested.yml").getErrorMessageList().get(0).getMessage(),
+ "WARNING: [VLAN2]: Parent port property virtual_machine_interface_refs is " +
+ "missing in VLAN Resource ID [template_Vlan_2]");
+ }
+
+ @Test
+ public void hasBothPropertiesBothMissingPositiveNotVLAN() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_has_two_properties/negative_both_missing/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 0);
+
+ }
+
+
+ @Test
+ public void hasBothPropertiesPositive() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_has_two_properties/positive_test/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 0);
+
+
+ }
+
+ @Test
+ public void hasSingleParentPortNegativeHasBothPropertiesNegative() {
+ HeatResourceValidator baseValidator = new HeatResourceValidator();
+ VirtualMachineInterfaceValidator resourceValidator = new VirtualMachineInterfaceValidator();
+ Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(baseValidator,
+ resourceValidator,
+ HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource(),
+ PATH + "vlan_mixed/negative_test/input");
+
+ Assert.assertNotNull(messages);
+ Assert.assertEquals(messages.size(), 1);
+
+
+ Assert.assertEquals(messages.get("nested.yml").getErrorMessageList().size(), 1);
+ Assert.assertEquals(
+ messages.get("nested.yml").getErrorMessageList().get(0).getMessage(),
+ "WARNING: [VLAN2]: VLAN Tag property " +
+ "virtual_machine_interface_properties_sub_interface_vlan_tag is missing in " +
+ "VLAN Resource ID [template_Vlan_2]");
+
+ }
+
+
+} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/main.yml
new file mode 100644
index 0000000000..a2d5166c84
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/main.yml
@@ -0,0 +1,102 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/nested.yml
new file mode 100644
index 0000000000..a426cf9569
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_both_missing/input/nested.yml
@@ -0,0 +1,72 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+
+ template_Vlan_3_arrayParameter:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_param: [net2,1] }]
+
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/main.yml
new file mode 100644
index 0000000000..a2d5166c84
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/main.yml
@@ -0,0 +1,102 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/nested.yml
new file mode 100644
index 0000000000..5e838ec62c
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_refs_missing/input/nested.yml
@@ -0,0 +1,73 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+
+ template_Vlan_2:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_param: net2 }]
+
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/main.yml
new file mode 100644
index 0000000000..a2d5166c84
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/main.yml
@@ -0,0 +1,102 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/nested.yml
new file mode 100644
index 0000000000..342624e090
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/negative_tag_missing/input/nested.yml
@@ -0,0 +1,75 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+
+ template_Vlan_2:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_param: net2 }]
+ virtual_machine_interface_refs: [{ get_param: p2 }]
+
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/main.yml
new file mode 100644
index 0000000000..a2d5166c84
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/main.yml
@@ -0,0 +1,102 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/nested.yml
new file mode 100644
index 0000000000..b1a96d0228
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_has_two_properties/positive_test/input/nested.yml
@@ -0,0 +1,75 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+ template_Vlan_1:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_param: net1 }]
+ virtual_machine_interface_refs: [{ get_param: p1 }]
+
+
+ \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/main.yml
new file mode 100644
index 0000000000..8bdc627afc
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/main.yml
@@ -0,0 +1,187 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+ template_VMInt_OAM_lb_1:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_service_interface_type: { get_param: lb_st_interface_type_oam },
+ }
+ virtual_network_refs: [{ get_resource: test_net1 }]
+ port_tuple_refs: [{ get_param: template_PortTuple_LB1 }]
+ security_group_refs: [{ get_param: oam_sec_group_name}]
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_Vlan1:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name: vlan
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_resource: test_net1 }]
+ virtual_machine_interface_refs: [{ get_resource: test_Vlan2 }]
+
+ test_Vlan2:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name: vlan
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_resource: test_net1 }]
+ virtual_machine_interface_refs: [{ get_resource: template_VMInt_OAM_lb_1 }]
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/nested.yml
new file mode 100644
index 0000000000..29f8c20209
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_mixed/negative_test/input/nested.yml
@@ -0,0 +1,74 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+
+ template_Vlan_2:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_param: net2 },{ get_param: net1 }]
+ virtual_machine_interface_refs: [{ get_param: p2 }, { get_param: p1 }]
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/main.yml
new file mode 100644
index 0000000000..a2d5166c84
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/main.yml
@@ -0,0 +1,102 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/nested.yml
new file mode 100644
index 0000000000..97b0aec970
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_get_resource/input/nested.yml
@@ -0,0 +1,75 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+
+ template_Vlan_2:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_resource: template_VMInt_OAM_lb_1 }]
+ virtual_machine_interface_refs: [{ get_resource: template_VMInt_OAM_lb_1 }]
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/main.yml
new file mode 100644
index 0000000000..8bdc627afc
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/main.yml
@@ -0,0 +1,187 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+ template_VMInt_OAM_lb_1:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_service_interface_type: { get_param: lb_st_interface_type_oam },
+ }
+ virtual_network_refs: [{ get_resource: test_net1 }]
+ port_tuple_refs: [{ get_param: template_PortTuple_LB1 }]
+ security_group_refs: [{ get_param: oam_sec_group_name}]
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_Vlan1:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name: vlan
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_resource: test_net1 }]
+ virtual_machine_interface_refs: [{ get_resource: test_Vlan2 }]
+
+ test_Vlan2:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name: vlan
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_resource: test_net1 }]
+ virtual_machine_interface_refs: [{ get_resource: template_VMInt_OAM_lb_1 }]
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/nested.yml
new file mode 100644
index 0000000000..7a73014522
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/negative_test/input/nested.yml
@@ -0,0 +1,76 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+
+ template_Vlan_2:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_param: net2 },{ get_param: net1 }]
+ virtual_machine_interface_refs: [{ get_param: p2 }, { get_param: p1 }]
+
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/MANIFEST.json
new file mode 100644
index 0000000000..aca75b5055
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ },
+ {
+ "file": "nested.yml",
+ "type": "HEAT",
+ "isBase": "false"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/main.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/main.yml
new file mode 100644
index 0000000000..9b0c3ec0eb
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/main.yml
@@ -0,0 +1,111 @@
+heat_template_version: 2013-05-23
+
+description: >
+ Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+ jsa_net_name:
+ type: string
+ description: network name of jsa log network
+ security_group_name:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_names:
+ type: comma_delimited_list
+ description: CMAUI1, CMAUI2 server names
+ cmaui_image:
+ type: string
+ description: Image for CMAUI server
+ availability_zone_0:
+ type: string
+ label: availabilityzone name
+ description: availabilityzone name
+ cmaui_flavor:
+ type: string
+ description: Flavor for CMAUI server
+ cmaui_oam_ips:
+ type: string
+ oam_sec_group_name:
+ type: string
+ lb_st_interface_type_oam:
+ type: string
+ template_PortTuple_LB1:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+resources:
+ test_net1:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+ test_net2:
+ type: OS::Neutron::Net
+ properties:
+ name: {get_param: jsa_net_name}
+ shared: True
+
+ server_cmaui_nova:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [cmaui_names, 0]}
+ image: { get_param: cmaui_image }
+ availability_zone: { get_param: availability_zone_0 }
+ flavor: { get_param: cmaui_flavor }
+ networks:
+ - port: { get_resource: template_VMInt_OAM_lb_1 }
+ - port: { get_resource: cmaui_port_2 }
+
+
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_service_interface_type: { get_param: lb_st_interface_type_oam },
+ }
+ virtual_network_refs: [{ get_resource: test_net1 }]
+ port_tuple_refs: [{ get_param: template_PortTuple_LB1 }]
+ security_group_refs: [{ get_param: oam_sec_group_name}]
+
+ cmaui_port_2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: test_net1 }
+ fixed_ips: [{"ip_address": {get_param: [cmaui_oam_ips, 0]}}]
+ security_groups: [{get_param: security_group_name}]
+ replacement_policy: AUTO
+
+ test_nested:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_resourceGroup:
+ type: OS::Heat::ResourceGroup
+ properties:
+ count: 9
+ resource_def:
+ type: nested.yml
+ properties:
+ p1: { get_resource: template_VMInt_OAM_lb_1}
+ p2: { get_resource: cmaui_port_2}
+ net1: { get_resource: test_net1}
+ net2: { get_resource: test_net2}
+
+ test_nested_invalidConnection:
+ type: nested.yml
+ properties:
+ p1: { get_resource: test_Vlan1}
+ p2: { get_resource: server_cmaui_nova}
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/nested.yml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/nested.yml
new file mode 100644
index 0000000000..b1a96d0228
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/src/test/resources/org/openecomp/validation/validators/heat_validator/vlan_resource_validation/vlan_multiple_parent_ports/positive_test/input/nested.yml
@@ -0,0 +1,75 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ p1:
+ type: string
+ p2:
+ type: string
+ net1:
+ type: string
+ net2:
+ type: string
+ lb_st_vlan_type_oam:
+ description: dummy
+ type: string
+ mac_address:
+ type: string
+ virtual_ip_address:
+ type: string
+ virtual_ipv6_address:
+ type: string
+ vlan_ids:
+ type: string
+ subinterface_name_prefix:
+ type: string
+ subinterface_instance_index:
+ type: number
+resources:
+
+ template_Vlan_1:
+ type: OS::ContrailV2::VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: $NAME$VLAN
+ params:
+ $NAME: { get_param: subinterface_name_prefix }
+ $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: lb_st_vlan_type_oam }
+ }
+ virtual_machine_interface_mac_addresses:
+ {
+ virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }],
+ }
+ virtual_machine_interface_allowed_address_pairs:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32
+ }
+ },
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby,
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+ {
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address },
+ virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
+ }
+ }
+ ]
+ }
+ virtual_network_refs: [{ get_param: net1 }]
+ virtual_machine_interface_refs: [{ get_param: p1 }]
+
+
+ \ No newline at end of file