aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml65
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml.versionsBackup70
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/tosca/datatypes/AttToscaPolicyType.java21
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImpl.java301
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaMapping.json15
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaTranslator.json13
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-override-heatToToscaTranslator.json36
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java324
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImplTest.java159
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/logback.xml13
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/expectedoutputfiles/MainServiceTemplate.yaml304
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/main.yml144
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/expectedoutputfiles/MainServiceTemplate.yaml292
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/main.yml124
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/expectedoutputfiles/MainServiceTemplate.yaml303
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/main.yml132
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/expectedoutputfiles/MainServiceTemplate.yaml202
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/main.yml111
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/expectedoutputfiles/MainServiceTemplate.yaml610
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/MANIFEST.json28
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.env14
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.yaml318
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.env28
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.yaml299
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/expectedoutputfiles/MainServiceTemplate.yaml292
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/main.yml132
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/expectedoutputfiles/MainServiceTemplate.yaml209
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/main.yml88
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/expectedoutputfiles/MainServiceTemplate.yaml209
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/main.yml96
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/expectedoutputfiles/MainServiceTemplate.yaml209
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/main.yml103
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/expectedoutputfiles/MainServiceTemplate.yaml210
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/main.yml91
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/expectedoutputfiles/MainServiceTemplate.yaml209
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/MANIFEST.json12
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/main.yml90
46 files changed, 5984 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml
new file mode 100644
index 0000000000..54cf8e21f1
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml
@@ -0,0 +1,65 @@
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>att-sdc-translator-impl</name>
+ <artifactId>att-sdc-translator-impl</artifactId>
+
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-lib</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <relativePath>../..</relativePath>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junit.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-translator-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.core</groupId>
+ <artifactId>openecomp-heat-lib</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.core</groupId>
+ <artifactId>openecomp-tosca-lib</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+
+ <!-- need to be changed to sdk -->
+ <dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-translator-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${mvn.surefire.version}</version>
+ <configuration>
+ <useSystemClassLoader>false</useSystemClassLoader>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml.versionsBackup
new file mode 100644
index 0000000000..e44d37ff8f
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/pom.xml.versionsBackup
@@ -0,0 +1,70 @@
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>att-sdc-translator-impl</name>
+ <artifactId>att-sdc-translator-impl</artifactId>
+
+
+ <parent>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-lib</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../..</relativePath>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>1.1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>RELEASE</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-translator-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.core</groupId>
+ <artifactId>openecomp-heat-lib</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.openecomp.core</groupId>
+ <artifactId>openecomp-tosca-lib</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+
+ <!-- need to be changed to sdk -->
+ <dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-translator-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!--dependency>
+ <groupId>org.openecomp.sdc</groupId>
+ <artifactId>openecomp-sdc-translator-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency-->
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.19.1</version>
+ <configuration>
+ <useSystemClassLoader>false</useSystemClassLoader>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/tosca/datatypes/AttToscaPolicyType.java b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/tosca/datatypes/AttToscaPolicyType.java
new file mode 100644
index 0000000000..8881ec5e40
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/tosca/datatypes/AttToscaPolicyType.java
@@ -0,0 +1,21 @@
+package com.att.sdc.tosca.datatypes;
+
+import org.openecomp.config.api.Configuration;
+import org.openecomp.config.api.ConfigurationManager;
+import org.openecomp.sdc.tosca.services.ConfigConstants;
+
+/**
+ * Created by TALIO on 5/17/2017.
+ */
+public class AttToscaPolicyType {
+ private static Configuration config = ConfigurationManager.lookup();
+
+ public static String POLICY_TYPE_PREFIX =
+ config.getAsString(ConfigConstants.NAMESPACE, ConfigConstants.PREFIX_POLICY_TYPE);
+
+
+ public static String PLACEMENT_VALET_AFFINITY = POLICY_TYPE_PREFIX + "placement.valet.Affinity";
+ public static String PLACEMENT_VALET_EXCLUSIVITY =
+ POLICY_TYPE_PREFIX + "placement.valet.Exclusivity";
+ public static String PLACEMENT_VALET_DIVERSITY = POLICY_TYPE_PREFIX + "placement.valet.Diversity";
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImpl.java
new file mode 100644
index 0000000000..e303276538
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImpl.java
@@ -0,0 +1,301 @@
+/*-
+ * ============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.translator.services.heattotosca.impl.resourcetranslation;
+
+import com.att.sdc.tosca.datatypes.AttToscaPolicyType;
+import com.google.common.base.Strings;
+import org.apache.commons.collections4.MapUtils;
+import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
+import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
+import org.openecomp.sdc.heat.datatypes.model.Resource;
+import org.openecomp.sdc.tosca.datatypes.ToscaGroupType;
+import org.openecomp.sdc.tosca.datatypes.ToscaTopologyTemplateElements;
+import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
+import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
+import org.openecomp.sdc.tosca.datatypes.model.PolicyDefinition;
+import org.openecomp.sdc.tosca.services.DataModelUtil;
+import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil;
+import org.openecomp.sdc.translator.services.heattotosca.ResourceTranslationFactory;
+import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationBase;
+import org.openecomp.sdc.translator.services.heattotosca.mapping.TranslatorHeatToToscaPropertyConverter;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+import static org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil.getResource;
+
+public class ResourceTranslationValetGroupAssignmentImpl extends ResourceTranslationBase {
+ private static final String AFFINITY = "affinity";
+ private static final String EXCLUSIVITY = "exclusivity";
+ private static final String DIVERSITY = "diversity";
+ private static List<String> supportedPolicies = Arrays.asList(AFFINITY, EXCLUSIVITY, DIVERSITY);
+
+ private boolean validateGroupType(TranslateTo translateTo) {
+ Map<String, Object> properties = translateTo.getResource().getProperties();
+ if (properties == null) {
+ return false;
+ }
+
+ Object groupType = properties.get("group_type");
+ if (Objects.isNull(groupType)) {
+ return false;
+ }
+ return isGroupTypeValid(groupType);
+ }
+
+ @Override
+ protected void translate(TranslateTo translateTo) {
+
+
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+
+ String resourceId = translateTo.getResourceId();
+ Optional<String> toscaPolicyType = getToscaPolicies(translateTo.getResource(), resourceId);
+ if (toscaPolicyType.isPresent()) {
+ List<String> members = getAttValetGroupAssignmentMembers(translateTo);
+ addGroupToTopology(translateTo, resourceId, members);
+ addPoliciesToTopology(translateTo, toscaPolicyType.get());
+ }
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ }
+
+ @Override
+ protected String generateTranslatedId(TranslateTo translateTo) {
+ return isEssentialRequirementsValid(translateTo) ? getValetGroupAssignmentTranslatedGroupId(
+ translateTo) : null;
+ }
+
+ @Override
+ protected Optional<ToscaTopologyTemplateElements> getTranslatedToscaTopologyElement(
+ TranslateTo translateTo) {
+ if (isEssentialRequirementsValid(translateTo)) {
+ return Optional.of(ToscaTopologyTemplateElements.GROUP);
+ } else {
+ return Optional.empty();
+ }
+ }
+
+ @Override
+ protected boolean isEssentialRequirementsValid(TranslateTo translateTo) {
+ return validateGroupType(translateTo);
+ }
+
+ private void addPoliciesToTopology(TranslateTo translateTo, String policyType) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+ ResourceTranslationBase.logger.info("******** Creating policy '%s' ********", policyType);
+ PolicyDefinition policyDefinition = new PolicyDefinition();
+ policyDefinition.setType(policyType);
+ policyDefinition
+ .setTargets(
+ Collections.singletonList(getValetGroupAssignmentTranslatedGroupId(translateTo)));
+ policyDefinition.setProperties(TranslatorHeatToToscaPropertyConverter
+ .getToscaPropertiesSimpleConversion(translateTo.getServiceTemplate(),
+ translateTo.getResourceId(),translateTo.getResource().getProperties(),
+ policyDefinition.getProperties(), translateTo.getHeatFileName(),
+ translateTo.getHeatOrchestrationTemplate(), translateTo.getResource().getType(),
+ policyDefinition, translateTo.getContext()));
+
+ DataModelUtil.addPolicyDefinition(translateTo.getServiceTemplate(),
+ getTranslatedPolicyId(translateTo), policyDefinition);
+ ResourceTranslationBase.logger.info("******** Policy '%s' created ********", policyType);
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ }
+
+ private String getTranslatedPolicyId(TranslateTo translateTo) {
+ return translateTo.getResourceId() + "_policy";
+ }
+
+ private void addGroupToTopology(TranslateTo translateTo, String resourceId,
+ List<String> members) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+ ResourceTranslationBase.logger
+ .info("******** Start creating group for resource '%s' ********", resourceId);
+ GroupDefinition group = new GroupDefinition();
+ group.setMembers(members);
+ group.setType(ToscaGroupType.NATIVE_ROOT);
+ String groupId = getValetGroupAssignmentTranslatedGroupId(translateTo);
+ DataModelUtil
+ .addGroupDefinitionToTopologyTemplate(translateTo.getServiceTemplate(), groupId, group);
+ ResourceTranslationBase.logger
+ .info("******** Creating group '%s' for resource '%s' ********", groupId, resourceId);
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ }
+
+ private List<String> getAttValetGroupAssignmentMembers(TranslateTo translateTo) {
+
+
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+
+ Map<String, Object> properties = translateTo.getResource().getProperties();
+ List<String> members = new ArrayList<>();
+ String refResourceId;
+ Optional<String> refAttachedResourceId;
+
+ if (MapUtils.isNotEmpty(properties)) {
+ Object resources = properties.get("resources");
+
+ //if null warning no resource
+ if (resources instanceof List) {
+ for (Object member : ((List) resources)) {
+ if (member instanceof Map) {
+ refResourceId = (String) ((Map) member).get("get_resource");
+
+ refAttachedResourceId =
+ ResourceTranslationBase.getResourceTranslatedId(translateTo.getHeatFileName(),
+ translateTo.getHeatOrchestrationTemplate(), refResourceId,
+ translateTo.getContext());
+ if (refAttachedResourceId.isPresent() ) {
+ members.add(refAttachedResourceId.get());
+ updateComputeConsolidationDataGroup(translateTo, refResourceId);
+ }
+ }
+ }
+ }
+ }
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ return members;
+ }
+
+ private void updateComputeConsolidationDataGroup(TranslateTo translateTo,
+ String refResourceId) {
+ Resource refResource =
+ getResource(translateTo.getHeatOrchestrationTemplate(), refResourceId,
+ translateTo.getHeatFileName());
+ if (isNovaServerResource(translateTo.getHeatOrchestrationTemplate(), refResourceId)) {
+ String heatFileName = translateTo.getHeatFileName();
+ Optional<String> translatedNovaServerId =
+ ResourceTranslationFactory.getInstance(refResource)
+ .translateResource(heatFileName, translateTo.getServiceTemplate(),
+ translateTo.getHeatOrchestrationTemplate(), refResource, refResourceId,
+ translateTo.getContext());
+ //Add nova server information to compute data
+ if (translatedNovaServerId.isPresent()) {
+ NodeTemplate translatedNovaServerNodeTemplate = DataModelUtil
+ .getNodeTemplate(translateTo.getServiceTemplate(),
+ translatedNovaServerId.get());
+ if (translatedNovaServerNodeTemplate != null) {
+ ComputeTemplateConsolidationData computeTemplateConsolidationData = ConsolidationDataUtil
+ .getComputeTemplateConsolidationData(translateTo.getContext(), translateTo
+ .getServiceTemplate(), translatedNovaServerNodeTemplate.getType(),
+ translatedNovaServerId.get());
+ ConsolidationDataUtil.updateGroupIdInConsolidationData(computeTemplateConsolidationData,
+ translateTo.getTranslatedId());
+ }
+ }
+ }
+ }
+
+ private boolean isNovaServerResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
+ Object resourceToTranslate) {
+ return heatOrchestrationTemplate.getResources().get(resourceToTranslate).getType()
+ .equals(HeatResourcesTypes.NOVA_SERVER_RESOURCE_TYPE.getHeatResource());
+ }
+
+
+ private Optional<String> getToscaPolicies(Resource resource, String resourceId) {
+
+
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+
+ Map<String, Object> properties = resource.getProperties();
+ if (Objects.isNull(properties) || Objects.isNull(properties.get("group_type"))) {
+ ResourceTranslationBase.logger
+ .warn("Resource '" + resourceId + "'(" + resource.getType() + ") missing group_type");
+ return Optional.empty();
+ }
+
+ Object groupType = properties.get("group_type");
+ if (!isGroupTypeValid(groupType)) {
+ ResourceTranslationBase.logger.warn("Resource '" + resourceId + "'(" + resource.getType()
+ + ") contains unsupported policy '" + groupType
+ + "'. This resource is been ignored during the translation");
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ return Optional.empty();
+ }
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ return getToscaPolicyByGroupType((String) groupType);
+
+ }
+
+ private boolean isGroupTypeValid(Object groupType) {
+ if (!(groupType instanceof String)) {
+ return false;
+ }
+ return supportedPolicies.contains(groupType);
+ }
+
+ private Optional<String> getToscaPolicyByGroupType(String groupType) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+
+ String toscaPolicyType;
+ switch (groupType) {
+ case AFFINITY:
+ toscaPolicyType = AttToscaPolicyType.PLACEMENT_VALET_AFFINITY;
+ break;
+ case EXCLUSIVITY:
+ toscaPolicyType = AttToscaPolicyType.PLACEMENT_VALET_EXCLUSIVITY;
+ break;
+ default:
+ toscaPolicyType = AttToscaPolicyType.PLACEMENT_VALET_DIVERSITY;
+ }
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ return Optional.of(toscaPolicyType);
+ }
+
+
+ private String getValetGroupAssignmentTranslatedGroupId(TranslateTo translateTo) {
+ mdcDataDebugMessage.debugEntryMessage(null, null);
+
+ String resourceId = super.generateTranslatedId(translateTo);
+ String groupName = null;
+ Map<String, Object> properties = translateTo.getResource().getProperties();
+
+ if (properties == null) {
+ return resourceId + "_group";
+ }
+
+ Object groupNameProperty = properties.get("group_name");
+ if (groupNameProperty instanceof String) {
+ groupName = (String) groupNameProperty;
+ }
+
+ if (!Strings.isNullOrEmpty(groupName)) {
+ groupName = groupName.replace(" ", "_");
+ resourceId += "_" + groupName;
+
+ }
+
+ mdcDataDebugMessage.debugExitMessage(null, null);
+ return resourceId + "_group";
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaMapping.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaMapping.json
new file mode 100644
index 0000000000..2b20db7e9f
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaMapping.json
@@ -0,0 +1,15 @@
+{
+ "resourceMapping": {
+ "ATT::Valet::GroupAssignment": {
+ "properties": {
+ "level": "level"
+ },
+ "attributes": {
+ }
+ }
+ },
+ "_config": {
+ "namespace": "heatToToscaMapping",
+ "mergeStrategy": "merge"
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaTranslator.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaTranslator.json
new file mode 100644
index 0000000000..33fb21e5e9
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-merge-heatToToscaTranslator.json
@@ -0,0 +1,13 @@
+{
+ "resourceTranslationImpl": {
+ "ATT::Valet::GroupAssignment": {
+ "enable": true,
+ "implementationClass": "com.att.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationValetGroupAssignmentImpl"
+ }
+ },
+ "_config": {
+ "namespace": "heatToToscaTranslator",
+ "mergeStrategy": "merge"
+ }
+
+} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-override-heatToToscaTranslator.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-override-heatToToscaTranslator.json
new file mode 100644
index 0000000000..2c364fe8af
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/main/resources/config-override-heatToToscaTranslator.json
@@ -0,0 +1,36 @@
+{
+ "resourceTranslationImpl": {
+ "OS::Contrail::NetworkPolicy": {
+ "enable": true,
+ "implementationClass": "org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationContrailNetworkPolicyImpl"
+ },
+ "OS::Contrail::AttachPolicy": {
+ "enable": true,
+ "implementationClass": "org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationContrailAttachPolicyImpl"
+ },
+ "OS::ContrailV2::NetworkPolicy": {
+ "enable": true,
+ "implementationClass": "org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationContrailV2NetworkPolicyImpl"
+ },
+ "OS::Nova::ServerGroup": {
+ "enable": true,
+ "implementationClass": "org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationNovaServerGroupsImpl"
+ },
+ "OS::Neutron::SecurityGroup": {
+ "enable": true,
+ "implementationClass": "org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationNeutronSecurityGroupImpl"
+ }
+ },
+ "namingConventionExtractImpl": {
+ "NovaServerNodeTypeName": {
+ "implementationClass": "org.openecomp.sdc.translator.services.heattotosca.impl.nameextractor.NameExtractorNovaServerImpl"
+ },
+ "ContrailComputeNodeTypeName": {
+ "implementationClass": "org.openecomp.sdc.translator.services.heattotosca.impl.nameextractor.NameExtractorContrailComputeImpl"
+ }
+ },
+ "_config": {
+ "namespace": "heatToToscaTranslator",
+ "mergeStrategy": "override"
+ }
+} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
new file mode 100644
index 0000000000..56f0fc2bd6
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
@@ -0,0 +1,324 @@
+/*-
+ * ============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.translator.services.heattotosca.impl.resourcetranslation;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.commons.collections4.MapUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.openecomp.core.translator.datatypes.TranslatorOutput;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.core.validation.api.ValidationManager;
+import org.openecomp.core.validation.factory.ValidationManagerFactory;
+import org.openecomp.core.validation.util.MessageContainerUtil;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCategory;
+import org.openecomp.sdc.common.errors.ErrorCode;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.datatypes.error.ErrorMessage;
+import org.openecomp.sdc.heat.datatypes.manifest.FileData;
+import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent;
+import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile;
+import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
+import org.openecomp.sdc.logging.types.LoggerConstants;
+import org.openecomp.sdc.logging.types.LoggerErrorCode;
+import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
+import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
+import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
+import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
+import org.openecomp.sdc.tosca.services.yamlutil.ToscaExtensionYamlUtil;
+import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.TranslationService;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+
+public class BaseResourceTranslationTest {
+
+ protected String inputFilesPath;
+ protected String outputFilesPath;
+ protected TranslationContext translationContext;
+
+ private String zipFilename = "VSP.zip";
+ private TranslationService translationService;
+ private boolean isValid;
+ private File translatedZipFile;
+
+ private Map<String, byte[]> expectedResultMap = new HashMap<>();
+ private Set<String> expectedResultFileNameSet = new HashSet<>();
+
+ private final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME;
+ private String validationFilename = "validationOutput.json";
+
+ @Before
+ public void setUp() throws IOException {
+ initTranslatorAndTranslate();
+ }
+
+ protected void initTranslatorAndTranslate() throws IOException {
+ translationService = new TranslationService();
+ translationContext = new TranslationContext();
+ translatedZipFile = translateZipFile();
+ }
+
+ protected void testTranslation() throws IOException {
+
+ URL url = BaseResourceTranslationTest.class.getResource(outputFilesPath);
+
+ String path = url.getPath();
+ File pathFile = new File(path);
+ File[] files = pathFile.listFiles();
+ Assert.assertNotNull("manifest files is empty", files);
+ for (File expectedFile : files) {
+ expectedResultFileNameSet.add(expectedFile.getName());
+ try (FileInputStream input = new FileInputStream(expectedFile)) {
+ expectedResultMap.put(expectedFile.getName(), FileUtils.toByteArray(input));
+ }
+ }
+
+ try (FileInputStream fis = new FileInputStream(translatedZipFile);
+ ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis))) {
+ ZipEntry entry;
+ String name;
+ String expected;
+ String actual;
+
+ while ((entry = zis.getNextEntry()) != null) {
+
+ name = entry.getName()
+ .substring(entry.getName().lastIndexOf(File.separator) + 1, entry.getName().length());
+ if (expectedResultFileNameSet.contains(name)) {
+ expected = new String(expectedResultMap.get(name)).trim().replace("\r", "");
+ actual = new String(FileUtils.toByteArray(zis)).trim().replace("\r", "");
+ assertEquals("difference in file: " + name, expected, actual);
+
+ expectedResultFileNameSet.remove(name);
+ }
+ }
+ if (expectedResultFileNameSet.isEmpty()) {
+ expectedResultFileNameSet.forEach(System.out::println);
+ }
+ }
+ assertEquals(0, expectedResultFileNameSet.size());
+ }
+
+ private File translateZipFile() throws IOException {
+ URL inputFilesUrl = this.getClass().getResource(inputFilesPath);
+ String path = inputFilesUrl.getPath();
+ addFilesToTranslator(translationContext, path);
+ TranslatorOutput translatorOutput = translationService.translateHeatFiles(translationContext);
+ Assert.assertNotNull(translatorOutput);
+ if (MapUtils.isNotEmpty(translatorOutput.getErrorMessages()) && MapUtils.isNotEmpty(
+ MessageContainerUtil
+ .getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages()))) {
+ MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
+ LoggerTragetServiceName.VALIDATE_HEAT_BEFORE_TRANSLATE, ErrorLevel.ERROR.name(),
+ LoggerErrorCode.DATA_ERROR.getErrorCode(), "Can't translate HEAT file");
+ throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage(
+ "Error in validation " + getErrorAsString(translatorOutput.getErrorMessages()))
+ .withId("Validation Error").withCategory(ErrorCategory.APPLICATION).build());
+ }
+ File file = new File(path + "/" + zipFilename);
+ file.createNewFile();
+
+ try (FileOutputStream fos = new FileOutputStream(file)) {
+ ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl();
+ fos.write(
+ toscaFileOutputService.createOutputFile(translatorOutput.getToscaServiceModel(), null));
+ }
+
+ return file;
+ }
+
+ private String getErrorAsString(Map<String, List<ErrorMessage>> errorMessages) {
+ StringBuilder sb = new StringBuilder();
+ errorMessages.entrySet().forEach(
+ entry -> sb.append("File:").append(entry.getKey()).append(System.lineSeparator())
+ .append(getErrorList(entry.getValue())));
+
+ return sb.toString();
+ }
+
+ private String getErrorList(List<ErrorMessage> errors) {
+ StringBuilder sb = new StringBuilder();
+ errors.forEach(
+ error -> sb.append(error.getMessage()).append("[").append(error.getLevel()).append("]")
+ .append(System.lineSeparator()));
+ return sb.toString();
+ }
+
+ public void addFilesToTranslator(TranslationContext translationContext, String path)
+ throws IOException {
+ File manifestFile = new File(path);
+ File[] files = manifestFile.listFiles();
+ byte[] fileContent;
+
+ Assert.assertNotNull("manifest files is empty", files);
+
+ for (File file : files) {
+
+ try (FileInputStream fis = new FileInputStream(file)) {
+
+ fileContent = FileUtils.toByteArray(fis);
+
+ if (file.getName().equals(MANIFEST_NAME)) {
+ addManifest(translationContext, MANIFEST_NAME, fileContent);
+ } else {
+ if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) {
+ addFile(translationContext, file.getName(), fileContent);
+ }
+ }
+ }
+ }
+ }
+
+ public static void addManifest(TranslationContext translationContext,
+ String name, byte[] content) {
+ ManifestContent manifestData = JsonUtil.json2Object(new String(content), ManifestContent.class);
+ ManifestFile manifest = new ManifestFile();
+ manifest.setName(name);
+ manifest.setContent(manifestData);
+ translationContext.setManifest(manifest);
+ translationContext.addFile(name, content);
+ addFilesFromManifestToTranslationContextManifestFilesMap(translationContext, manifestData
+ .getData());
+ }
+
+ public static void addFile(TranslationContext translationContext,
+ String name, byte[] content) {
+ translationContext.addFile(name, content);
+ }
+
+
+ public void validateComputeTemplateConsolidationData() {
+ ConsolidationData consolidationData = translationContext.getConsolidationData();
+ Map<String, ServiceTemplate> expectedServiceTemplateModels = getServiceTemplates
+ (outputFilesPath);
+ Assert.assertNotNull(consolidationData);
+ Assert.assertNotNull(consolidationData.getComputeConsolidationData());
+ Set<String> serviceTemplateFileNames = consolidationData.getComputeConsolidationData()
+ .getAllServiceTemplateFileNames();
+ Assert.assertNotNull(serviceTemplateFileNames);
+ for(String serviceTemplateName : serviceTemplateFileNames){
+ Assert.assertTrue(expectedServiceTemplateModels.containsKey(serviceTemplateName));
+ ServiceTemplate expectedServiceTemplate = expectedServiceTemplateModels.get
+ (serviceTemplateName);
+ FileComputeConsolidationData fileComputeConsolidationData = consolidationData
+ .getComputeConsolidationData().getFileComputeConsolidationData(serviceTemplateName);
+ Assert.assertNotNull(fileComputeConsolidationData);
+ Set<String> computeTypes = fileComputeConsolidationData.getAllComputeTypes();
+ Assert.assertNotNull(computeTypes);
+ for(String computeType : computeTypes) {
+ TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData
+ .getTypeComputeConsolidationData(computeType);
+ Assert.assertNotNull(typeComputeConsolidationData);
+
+ Set<String> computeNodeTemplateIds = typeComputeConsolidationData
+ .getAllComputeNodeTemplateIds();
+ Assert.assertNotNull(computeNodeTemplateIds);
+ Assert.assertNotEquals(computeNodeTemplateIds.size(), 0);
+
+ for(String computeNodeTemplateId : computeNodeTemplateIds) {
+ ComputeTemplateConsolidationData computeTemplateConsolidationData =
+ typeComputeConsolidationData.getComputeTemplateConsolidationData
+ (computeNodeTemplateId);
+ validateGroupsInConsolidationData(computeNodeTemplateId,
+ computeTemplateConsolidationData, expectedServiceTemplate);
+ }
+ }
+ }
+ }
+
+ public Map<String, ServiceTemplate> getServiceTemplates(String baseDirPath){
+ Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
+ baseDirPath = "."+baseDirPath+"/";
+ try {
+ String[] fileList = {};
+ URL filesDirUrl = BaseResourceTranslationTest.class.getClassLoader().getResource(baseDirPath);
+ if (filesDirUrl != null && filesDirUrl.getProtocol().equals("file")) {
+ fileList = new File(filesDirUrl.toURI()).list();
+ } else {
+ Assert.fail("Invalid expected output files directory");
+ }
+ for (int i = 0; i < fileList.length; i++) {
+ InputStream serviceTemplateInputStream = FileUtils.getFileInputStream
+ (BaseResourceTranslationTest.class
+ .getClassLoader().getResource(baseDirPath + fileList[i]));
+ ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
+ (serviceTemplateInputStream, ServiceTemplate.class);
+ serviceTemplateMap.put(fileList[i], serviceTemplate);
+ }
+ } catch (Exception e) {
+ Assert.fail(e.getMessage());
+ }
+ return serviceTemplateMap;
+ }
+ private void validateGroupsInConsolidationData(String computeNodeTemplateId,
+ ComputeTemplateConsolidationData
+ computeTemplateConsolidationData,
+ ServiceTemplate expectedServiceTemplate) {
+ Assert.assertNotNull(computeTemplateConsolidationData);
+ List<String> groupIds = computeTemplateConsolidationData.getGroupIds();
+ if(groupIds != null) {
+ for(String groupId : groupIds) {
+ isComputeGroupMember(expectedServiceTemplate, computeNodeTemplateId, groupId);
+ }
+ }
+ }
+
+ private void isComputeGroupMember(ServiceTemplate expectedServiceTemplate, String
+ computeNodeTemplateId, String groupId) {
+ GroupDefinition group = expectedServiceTemplate.getTopology_template().getGroups().get(groupId);
+ List<String> groupMembers = group.getMembers();
+ Assert.assertNotNull(groupMembers);
+ Assert.assertTrue(groupMembers.contains(computeNodeTemplateId));
+ }
+
+
+ private static void addFilesFromManifestToTranslationContextManifestFilesMap(TranslationContext
+ translationContext, List<FileData> fileDataListFromManifest) {
+ for (FileData fileFromManfiest : fileDataListFromManifest) {
+ translationContext.addManifestFile(fileFromManfiest.getFile(), fileFromManfiest.getType());
+ }
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImplTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImplTest.java
new file mode 100644
index 0000000000..758e262b98
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/java/com/att/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationValetGroupAssignmentImplTest.java
@@ -0,0 +1,159 @@
+/*-
+ * ============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.translator.services.heattotosca.impl.resourcetranslation;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+
+public class ResourceTranslationValetGroupAssignmentImplTest
+ extends BaseResourceTranslationTest {
+
+ @Override
+ @Before
+ public void setUp() throws IOException {
+ // do not delete this function. it prevents the superclass setup from running
+ }
+
+ @Test
+ public void testTranslateSimpleOnlyNova() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testTranslateGroupNameParameter() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testTranslateComplexNovaAndGroup() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testTranslateComplexOnlyGroup() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testTranslateComplexTwoGroups() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testInvalidGroupIsNotTranslatedAndNotAddedAsMemberOfGroup() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testSimpleNovaAndNotSupportedResource() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testSimpleOnlyNotSupportedResources() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testSimpleOnlySingleNova() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testConfigNoConnection() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/notconnected/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+ @Test
+ public void testDynamicGroup() throws Exception {
+ inputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles";
+ outputFilesPath =
+ "/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/expectedoutputfiles";
+ initTranslatorAndTranslate();
+ testTranslation();
+ validateComputeTemplateConsolidationData();
+ }
+
+
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/logback.xml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/logback.xml
new file mode 100644
index 0000000000..03ce9d1243
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/logback.xml
@@ -0,0 +1,13 @@
+<!-- only one line, shut up logback ! -->
+<configuration>
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <Pattern>
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
+ </Pattern>
+ </encoder>
+ </appender>
+ <root level="off">
+ <appender-ref ref="STDOUT" />
+ </root>
+</configuration> \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..8bc4c3d028
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,304 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer3:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myPort6:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myPort5:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer3:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer3
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ SVCgroup2_mixGroup_group:
+ type: tosca.groups.Root
+ members:
+ - SVCgroup1_simpleGroup_group
+ - myNovaServer3
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myPort6
+ - myPort5
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myNovaServer3
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup3_groupsMembers_group:
+ type: tosca.groups.Root
+ members:
+ - SVCgroup1_simpleGroup_group
+ - SVCgroup2_mixGroup_group
+ SVCgroup1_simpleGroup_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ policies:
+ SVCgroup2_policy:
+ type: org.openecomp.policies.placement.valet.Diversity
+ properties:
+ level: host
+ targets:
+ - SVCgroup2_mixGroup_group
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup_group
+ SVCgroup3_policy:
+ type: org.openecomp.policies.placement.valet.Exclusivity
+ properties:
+ level: rack
+ targets:
+ - SVCgroup3_groupsMembers_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/main.yml
new file mode 100644
index 0000000000..57e9f04c36
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexNovaAndGroup/inputfiles/main.yml
@@ -0,0 +1,144 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myNovaServer3:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort5 }
+ - port: { get_resource: myPort6 }
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ myPort5:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort6:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
+ SVCgroup2:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: diversity
+ group_name: mixGroup
+ level: host
+ resources:
+ - { get_resource: SVCgroup1}
+ - { get_resource: myNovaServer3}
+ SVCgroup3:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: exclusivity
+ group_name: groupsMembers
+ level: rack
+ resources:
+ - { get_resource: SVCgroup1}
+ - { get_resource: SVCgroup2}
+ - { get_resource: SVCgroup4}
+ SVCgroup4:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: koko
+ group_name: invalid
+ level: host
+ resources:
+ - { get_resource: SVCgroup1}
+ - { get_resource: SVCgroup2}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..71b6038eb3
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,292 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer3:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myPort6:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myPort5:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer3:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer3
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myPort6
+ - myPort5
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myNovaServer3
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_simpleGroup_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ SVCgroup2_complexGroup_group:
+ type: tosca.groups.Root
+ members:
+ - SVCgroup1_simpleGroup_group
+ policies:
+ SVCgroup2_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup2_complexGroup_group
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..7f1ddfbc90
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/main.yml
new file mode 100644
index 0000000000..2317813e66
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexOnlyGroup/inputfiles/main.yml
@@ -0,0 +1,124 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myNovaServer3:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort5 }
+ - port: { get_resource: myPort6 }
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ myPort5:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort6:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
+ SVCgroup2:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: complexGroup
+ level: host
+ resources:
+ - { get_resource: SVCgroup1} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..072f382fbb
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,303 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer3:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myPort6:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myPort5:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer3:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer3
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myPort6
+ - myPort5
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myNovaServer3
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_simpleGroup1_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ SVCgroup3_complexTwoGroups_group:
+ type: tosca.groups.Root
+ members:
+ - SVCgroup1_simpleGroup1_group
+ - SVCgroup2_group
+ SVCgroup2_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer3
+ policies:
+ SVCgroup2_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup2_group
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup1_group
+ SVCgroup3_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup3_complexTwoGroups_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/main.yml
new file mode 100644
index 0000000000..14f2659d40
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/complexTwoGroups/inputfiles/main.yml
@@ -0,0 +1,132 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myNovaServer3:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort5 }
+ - port: { get_resource: myPort6 }
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ myPort5:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort6:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: simpleGroup1
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
+ SVCgroup2:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ level: host
+ resources:
+ - { get_resource: myNovaServer3}
+ SVCgroup3:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: complexTwoGroups
+ level: host
+ resources:
+ - { get_resource: SVCgroup1}
+ - { get_resource: SVCgroup2} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..9ceb3f0ab7
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,202 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ group_name:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myPort1
+ - myPort4
+ - myPort3 \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/main.yml
new file mode 100644
index 0000000000..0117d4b87c
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/dynamicGroup/inputfiles/main.yml
@@ -0,0 +1,111 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+ group_name:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: { get_param: group_name}
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
+ SVCgroup2:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: 2
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
+ SVCgroup3:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: { get_attr: [myPort4, show ]}
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..ced6638077
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,610 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.vipr_atm:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ vf_module_id:
+ hidden: false
+ immutable: false
+ type: string
+ description: Unique ID for the VF Module instance
+ default: '5678'
+ constraints:
+ - max_length: 255
+ - min_length: 1
+ vipr_atm_ha_two_id:
+ hidden: false
+ immutable: false
+ type: string
+ description: Neutron UUID of the second high availability network for the vIPR-ATM firewal
+ default: b75e27cf-452f-48ef-b107-8777e645c22d
+ constraints: [
+ ]
+ vipr_atm_oam_net_security_groups:
+ hidden: false
+ immutable: false
+ type: list
+ description: List of the security group to apply to the vIPR-ATM firewall management port
+ default:
+ - c2369210-d154-4e4a-984d-047674beb5da
+ entry_schema:
+ type: string
+ vipr_atm_valet_eg_0:
+ hidden: false
+ immutable: false
+ type: string
+ description: The Valet 1.0 Exclusivity Group for the vIPR-ATM firewall virtual machine
+ default: CORE_INFRASTRUCTURE_VNFs
+ constraints:
+ - max_length: 255
+ - min_length: 1
+ vipr_atm_name_0:
+ hidden: false
+ immutable: false
+ type: string
+ description: Name of the vIPR-ATM firewall virtual machine
+ default: zrcs1cctvpr001
+ constraints:
+ - max_length: 255
+ - min_length: 1
+ vipr_atm_image_name:
+ hidden: false
+ immutable: false
+ type: string
+ description: Image name of the vIPR-ATM firewall virtual machine
+ default: vipr-atm-pan7.1
+ constraints: [
+ ]
+ vnf_name:
+ hidden: false
+ immutable: false
+ type: string
+ description: Unique Name for this VF instance
+ default: RD3TX100vfw
+ constraints:
+ - max_length: 255
+ - min_length: 1
+ vipr_atm_service_left_fqdn:
+ hidden: false
+ immutable: false
+ type: string
+ description: FQDN of the Left service network for the vIPR-ATM firewall
+ default: default-domain:vIPR-ATM:vIPR-ATM-service-left
+ constraints:
+ - pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
+ vipr_atm_ha_one_ip_0:
+ hidden: false
+ immutable: false
+ type: string
+ description: Fixed IP to apply to the vIPR-ATM firewall ha0 port
+ default: 192.168.35.1
+ constraints:
+ - pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ vipr_atm_ha_one_id:
+ hidden: false
+ immutable: false
+ type: string
+ description: Neutron UUID of the first high availability network for the vIPR-ATM firewall
+ default: 4abaafc8-b8af-40b9-b0d0-32bd91f958ee
+ constraints: [
+ ]
+ vnf_id:
+ hidden: false
+ immutable: false
+ type: string
+ description: Unique ID for this VF instance
+ default: '1234'
+ constraints:
+ - max_length: 255
+ - min_length: 1
+ vipr_atm_flavor_name:
+ hidden: false
+ immutable: false
+ type: string
+ description: Flavor for the vIPR-ATM firewall virtual machine
+ default: m1.vipr-atm-pan
+ constraints: [
+ ]
+ availability_zone_0:
+ hidden: false
+ immutable: false
+ type: string
+ description: Availability Zone for the vIPR-ATM firewall virtual machine
+ default: nova
+ constraints:
+ - max_length: 255
+ - min_length: 1
+ vipr_atm_server_group:
+ hidden: false
+ immutable: false
+ type: string
+ description: Server Group with anti-affinity policy for the vIPR-ATM firewall virtual machine
+ default: 885dbf7f-fcb2-42d2-a694-a5930ce35b71
+ constraints:
+ - max_length: 255
+ - min_length: 1
+ vipr_atm_service_left_ip_prefix:
+ hidden: false
+ immutable: false
+ type: string
+ description: Left vIPR-ATM service network IP address prefix
+ default: 10.254.3.0
+ constraints:
+ - pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ vipr_atm_ha_one_cidr:
+ hidden: false
+ immutable: false
+ type: string
+ description: vIPR-ATM private High Availability Network One IP address CIDR
+ default: 192.168.35.0/29
+ constraints:
+ - pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(?:3[0-2]|[12]?[0-9])$
+ vipr_atm_service_right_fqdn:
+ hidden: false
+ immutable: false
+ type: string
+ description: FQDN of the Right service network for the vIPR-ATM firewall
+ default: default-domain:vIPR-ATM:vIPR-ATM-service-right
+ constraints:
+ - pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
+ vipr_atm_service_right_ip_prefix_len:
+ hidden: false
+ immutable: false
+ type: float
+ description: Right vIPR-ATM service network IP address prefix length
+ default: 24
+ constraints:
+ - in_range:
+ - 0
+ - 32
+ vipr_atm_ha_two_ip_0:
+ hidden: false
+ immutable: false
+ type: string
+ description: Fixed IP to apply to the vIPR-ATM firewall ha1 port
+ default: 192.168.35.9
+ constraints:
+ - pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ vipr_atm_ha_two_cidr:
+ hidden: false
+ immutable: false
+ type: string
+ description: vIPR-ATM private High Availability Network Two IP address CIDR
+ default: 192.168.35.8/29
+ constraints:
+ - pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(?:3[0-2]|[12]?[0-9])$
+ oam_net_id:
+ hidden: false
+ immutable: false
+ type: string
+ description: Neutron UUID for the managemnet network name of the vIPR-ATM firewall
+ default: 1ac9d738-f545-413a-a9a2-b44309edc511
+ constraints: [
+ ]
+ vipr_atm_service_right_ip_prefix:
+ hidden: false
+ immutable: false
+ type: string
+ description: Right vIPR-ATM service network IP address prefix
+ default: 10.254.4.0
+ constraints:
+ - pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ vipr_atm_service_left_ip_prefix_len:
+ hidden: false
+ immutable: false
+ type: float
+ description: Left vIPR-ATM service network IP address prefix length
+ default: 24
+ constraints:
+ - in_range:
+ - 0
+ - 32
+ vipr_atm_contrail_service_instance_fqdn:
+ hidden: false
+ immutable: false
+ type: string
+ description: FQDN of the vIPR-ATM firewall Contrail service instance for the port tuple
+ default: default-domain:vIPR-ATM:vIPR-ATM-service-instance
+ constraints:
+ - pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
+ vipr_atm_ha_two_security_groups:
+ hidden: false
+ immutable: false
+ type: list
+ description: List of the security group to apply to the vIPR-ATM firewall ha1 port
+ default:
+ - 29e29a4a-b45d-42c2-ac14-b12a70036ae6
+ entry_schema:
+ type: string
+ vipr_atm_ha_one_security_groups:
+ hidden: false
+ immutable: false
+ type: list
+ description: List of the security group to apply to the vIPR-ATM firewall ha0 port
+ default:
+ - cbf8049e-69e8-48c3-a06f-255634391403
+ entry_schema:
+ type: string
+ node_templates:
+ vIPR_ATM_OAM_SG:
+ type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_OAM_SG
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ rules:
+ - protocol: tcp
+ remote_ip_prefix: 0.0.0.0/0
+ port_range_max: 22
+ port_range_min: 22
+ - protocol: tcp
+ remote_ip_prefix: 0.0.0.0/0
+ port_range_max: 443
+ port_range_min: 443
+ - protocol: tcp
+ remote_ip_prefix: 0.0.0.0/0
+ port_range_max: 3978
+ port_range_min: 3978
+ - protocol: icmp
+ remote_ip_prefix: 0.0.0.0/0
+ vIPR_ATM_Left_RVMI:
+ type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_3
+ params:
+ VM_NAME:
+ get_input: vipr_atm_name_0
+ virtual_network_refs:
+ - get_input: vipr_atm_service_left_fqdn
+ virtual_machine_interface_properties:
+ service_interface_type: left
+ port_tuple_refs:
+ - UNSUPPORTED_RESOURCE_vIPR_ATM_RPT
+ requirements:
+ - link:
+ capability: tosca.capabilities.network.Linkable
+ node: vIPR_ATM_Service_Left
+ relationship: tosca.relationships.network.LinksTo
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: vIPR_ATM_Firewall
+ relationship: tosca.relationships.network.BindsTo
+ vIPR_ATM_Service_Right:
+ type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+ properties:
+ network_ipam_refs_data:
+ - network_ipam_refs_data_ipam_subnets:
+ - network_ipam_refs_data_ipam_subnets_subnet:
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix_len:
+ get_input: vipr_atm_service_right_ip_prefix_len
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix:
+ get_input: vipr_atm_service_right_ip_prefix
+ network_name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVICE_RIGHT_NETWORK
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ network_ipam_refs:
+ - default-domain:default-project:default-network-ipam
+ vIPR_ATM_Ha_Two:
+ type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
+ properties:
+ dhcp_enabled: false
+ network_name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_TWO_NETWORK
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ subnets:
+ vIPR_ATM_Ha_Two_Subnet:
+ enable_dhcp: false
+ name:
+ str_replace:
+ template: NET_NAME_SUBNET
+ params:
+ NET_NAME:
+ get_attribute:
+ - vIPR_ATM_Ha_Two
+ - network_name
+ cidr:
+ get_input: vipr_atm_ha_two_cidr
+ requirements:
+ - dependency:
+ capability: tosca.capabilities.Node
+ node: vIPR_ATM_Ha_Two
+ relationship: tosca.relationships.DependsOn
+ vIPR_ATM_HA_TWO_SG:
+ type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_TWO_SG
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ rules:
+ - remote_mode: remote_group_id
+ vIPR_ATM_HA_ONE_SG:
+ type: org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_ONE_SG
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ rules:
+ - remote_mode: remote_group_id
+ vIPR_ATM_Ha_One:
+ type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
+ properties:
+ dhcp_enabled: false
+ network_name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_ONE_NETWORK
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ subnets:
+ vIPR_ATM_Ha_One_Subnet:
+ enable_dhcp: false
+ name:
+ str_replace:
+ template: NET_NAME_SUBNET
+ params:
+ NET_NAME:
+ get_attribute:
+ - vIPR_ATM_Ha_One
+ - network_name
+ cidr:
+ get_input: vipr_atm_ha_one_cidr
+ requirements:
+ - dependency:
+ capability: tosca.capabilities.Node
+ node: vIPR_ATM_Ha_One
+ relationship: tosca.relationships.DependsOn
+ vIPR_ATM_OAM_0_Port:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: false
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ get_input: vipr_atm_oam_net_security_groups
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ name:
+ str_replace:
+ template: VM_NAME_PORT_0
+ params:
+ VM_NAME:
+ get_input: vipr_atm_name_0
+ network_role_tag: oam
+ network:
+ get_input: oam_net_id
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: vIPR_ATM_Firewall
+ relationship: tosca.relationships.network.BindsTo
+ vIPR_ATM_Service_Left:
+ type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+ properties:
+ network_ipam_refs_data:
+ - network_ipam_refs_data_ipam_subnets:
+ - network_ipam_refs_data_ipam_subnets_subnet:
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix_len:
+ get_input: vipr_atm_service_left_ip_prefix_len
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix:
+ get_input: vipr_atm_service_left_ip_prefix
+ network_name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVICE_LEFT_NETWORK
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ network_ipam_refs:
+ - default-domain:default-project:default-network-ipam
+ vIPR_ATM_Right_RVMI:
+ type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_4
+ params:
+ VM_NAME:
+ get_input: vipr_atm_name_0
+ virtual_network_refs:
+ - get_input: vipr_atm_service_right_fqdn
+ virtual_machine_interface_properties:
+ service_interface_type: right
+ port_tuple_refs:
+ - UNSUPPORTED_RESOURCE_vIPR_ATM_RPT
+ requirements:
+ - link:
+ capability: tosca.capabilities.network.Linkable
+ node: vIPR_ATM_Service_Right
+ relationship: tosca.relationships.network.LinksTo
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: vIPR_ATM_Firewall
+ relationship: tosca.relationships.network.BindsTo
+ vIPR_ATM_Ha_Two_0_Port:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ get_input: vipr_atm_ha_two_security_groups
+ fixed_ips:
+ - ip_address:
+ get_input: vipr_atm_ha_two_ip_0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ name:
+ str_replace:
+ template: VM_NAME_PORT_2
+ params:
+ VM_NAME:
+ get_input: vipr_atm_name_0
+ network:
+ get_input: vipr_atm_ha_two_id
+ requirements:
+ - link:
+ capability: tosca.capabilities.network.Linkable
+ node: vIPR_ATM_Ha_Two
+ relationship: tosca.relationships.network.LinksTo
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: vIPR_ATM_Firewall
+ relationship: tosca.relationships.network.BindsTo
+ vIPR_ATM_Firewall:
+ type: org.openecomp.resource.vfc.nodes.heat.vipr_atm
+ properties:
+ flavor:
+ get_input: vipr_atm_flavor_name
+ availability_zone:
+ get_input: availability_zone_0
+ image:
+ get_input: vipr_atm_image_name
+ metadata:
+ vf_module_id:
+ get_input: vf_module_id
+ vnf_id:
+ get_input: vnf_id
+ vnf_name:
+ get_input: vnf_name
+ contrail_service_instance_ind: true
+ name:
+ get_input: vipr_atm_name_0
+ scheduler_hints:
+ group:
+ get_input: vipr_atm_server_group
+ vIPR_ATM_Ha_One_0_Port:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ get_input: vipr_atm_ha_one_security_groups
+ fixed_ips:
+ - ip_address:
+ get_input: vipr_atm_ha_one_ip_0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ name:
+ str_replace:
+ template: VM_NAME_PORT_1
+ params:
+ VM_NAME:
+ get_input: vipr_atm_name_0
+ network:
+ get_input: vipr_atm_ha_one_id
+ requirements:
+ - link:
+ capability: tosca.capabilities.network.Linkable
+ node: vIPR_ATM_Ha_One
+ relationship: tosca.relationships.network.LinksTo
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: vIPR_ATM_Firewall
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ vIPR_ATM_Server_Group_group:
+ type: tosca.groups.Root
+ members:
+ - vIPR_ATM_Firewall
+ vIPR-ATM-Base_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/vIPR-ATM-Base.yaml
+ description: "HOT template to create the vIPR-ATM firwall service template\
+ \ and instance. This template creates the following - Two service virtual\
+ \ networks for each side (left and right) of the vIPR-ATM firewalls - Two\
+ \ virtual networks for high availability between the vIPR-ATM firewalls\
+ \ - A Contrail Service Template for the vIPR-ATM service - A Contrail Service\
+ \ Instance for the vIPR-ATM service\nThe firewall virtual machines connected\
+ \ to these created networks and managed by the vIPR-ATM service instance\
+ \ will be created by the vIPR-ATM-Instance.yaml HOT template.\nNetwork Policy\
+ \ that includes the vIPR-ATM service instance will be created by client\
+ \ specific HOT templates or Contrail APIs. \n"
+ members:
+ - vIPR_ATM_Ha_One
+ - vIPR_ATM_OAM_SG
+ - vIPR_ATM_Service_Left
+ - vIPR_ATM_Service_Right
+ - vIPR_ATM_Ha_Two
+ - vIPR_ATM_HA_TWO_SG
+ - vIPR_ATM_HA_ONE_SG
+ vIPR_ATM_Valet_EG_0_group:
+ type: tosca.groups.Root
+ members:
+ - vIPR_ATM_Firewall
+ vIPR-ATM-Instance_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/vIPR-ATM-Instance.yaml
+ description: |
+ HOT template to create a vIPR-ATM firwall service instance. This template creates the following - Contrail Port Tuple for this firwall service instance - Virtual machine interfaces and IP addresses attached to the two service virtual networks. These virtual machine interfaces will be used by the vIPR firewall service instance - Neutron ports for OAM, HA0, and HA1 networks - OS::Nova::Server with the created virtual machine interface and ports. This is the firewall service instance virtual machine.
+ members:
+ - vIPR_ATM_Left_RVMI
+ - vIPR_ATM_OAM_0_Port
+ - vIPR_ATM_Right_RVMI
+ - vIPR_ATM_Ha_Two_0_Port
+ - vIPR_ATM_Firewall
+ - vIPR_ATM_Ha_One_0_Port
+ outputs:
+ vipr_atm_contrail_service_instance_fqdn:
+ description: The FQDN for the Contrail Service Instance that is needed to create tenant OAM network policy to service change through the vIPR-ATM firewall.
+ value:
+ list_join:
+ - ':'
+ - get_attr:
+ - vIPR_ATM_Service_Instance
+ - fq_name
+ policies:
+ vIPR_ATM_Valet_EG_0_policy:
+ type: org.openecomp.policies.placement.valet.Exclusivity
+ properties:
+ level: host
+ targets:
+ - vIPR_ATM_Valet_EG_0_group
+ vIPR_ATM_Server_Group_policy:
+ type: org.openecomp.policies.placement.Antilocate
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVER_GROUP
+ params:
+ VNF_NAME:
+ get_input: vnf_name
+ container_type: host
+ targets:
+ - vIPR_ATM_Server_Group_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..96b8ed1d27
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/MANIFEST.json
@@ -0,0 +1,28 @@
+{
+ "name": "vIPR",
+ "description": "HOT template to create vIPR",
+ "data": [
+ {
+ "file": "vIPR-ATM-Base.yaml",
+ "type": "HEAT",
+ "isBase": "true",
+ "data": [
+ {
+ "file": "vIPR-ATM-Base.env",
+ "type": "HEAT_ENV"
+ }
+ ]
+ },
+ {
+ "file": "vIPR-ATM-Instance.yaml",
+ "type": "HEAT",
+ "isBase": "false",
+ "data": [
+ {
+ "file": "vIPR-ATM-Instance.env",
+ "type": "HEAT_ENV"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.env b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.env
new file mode 100644
index 0000000000..acf1ac5d03
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.env
@@ -0,0 +1,14 @@
+parameters:
+ vipr_atm_service_left_ip_prefix: 10.254.3.0
+ vipr_atm_service_left_ip_prefix_len: 24
+
+ vipr_atm_service_right_ip_prefix: 10.254.4.0
+ vipr_atm_service_right_ip_prefix_len: 24
+
+ vipr_atm_ha_one_cidr: 192.168.35.0/29
+ vipr_atm_ha_two_cidr: 192.168.35.8/29
+
+ vnf_id: '1234'
+ vnf_name: 'RD3TX100vfw'
+ vf_module_id: '5678'
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.yaml
new file mode 100644
index 0000000000..fd70465878
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Base.yaml
@@ -0,0 +1,318 @@
+heat_template_version: 2015-04-30
+
+description: >
+ HOT template to create the vIPR-ATM firwall service template and instance.
+ This template creates the following
+ - Two service virtual networks for each side (left and right) of the vIPR-ATM firewalls
+ - Two virtual networks for high availability between the vIPR-ATM firewalls
+ - A Contrail Service Template for the vIPR-ATM service
+ - A Contrail Service Instance for the vIPR-ATM service
+
+ The firewall virtual machines connected to these created networks and managed by the
+ vIPR-ATM service instance will be created by the vIPR-ATM-Instance.yaml HOT template.
+
+ Network Policy that includes the vIPR-ATM service instance will be created by client
+ specific HOT templates or Contrail APIs.
+
+parameters:
+ vipr_atm_service_left_ip_prefix:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ description: A valid IPv4 dot quad IP address.
+ description: Left vIPR-ATM service network IP address prefix
+ vipr_atm_service_left_ip_prefix_len:
+ type: number
+ constraints:
+ - range: { min: 0, max: 32 }
+ description: a valid IPv4 prefix value from 0 to 32.
+ description: Left vIPR-ATM service network IP address prefix length
+
+ vipr_atm_service_right_ip_prefix:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ description: A valid IPv4 dot quad IP address.
+ description: Right vIPR-ATM service network IP address prefix
+ vipr_atm_service_right_ip_prefix_len:
+ type: number
+ constraints:
+ - range: { min: 0, max: 32 }
+ description: a valid IPv4 prefix value from 0 to 32.
+ description: Right vIPR-ATM service network IP address prefix length
+
+ vipr_atm_ha_one_cidr:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(?:3[0-2]|[12]?[0-9])$
+ description: A valid IPv4 CIDR (dot quad IP address / previx value 0 to 32).
+ description: vIPR-ATM private High Availability Network One IP address CIDR
+
+ vipr_atm_ha_two_cidr:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(?:3[0-2]|[12]?[0-9])$
+ description: A valid IPv4 CIDR (dot quad IP address / previx value 0 to 32).
+ description: vIPR-ATM private High Availability Network Two IP address CIDR
+
+ vnf_id:
+ type: string
+ description: Unique ID for this VNF instance
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+ vf_module_id:
+ type: string
+ description: Unique ID for the VF Module instance
+
+resources:
+ vIPR_ATM_Service_Left:
+ type: OS::ContrailV2::VirtualNetwork
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVICE_LEFT_NETWORK
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ network_ipam_refs: ["default-domain:default-project:default-network-ipam"]
+ network_ipam_refs_data:
+ [{
+ network_ipam_refs_data_ipam_subnets:
+ [{
+ network_ipam_refs_data_ipam_subnets_subnet:
+ {
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix:
+ {
+ get_param: vipr_atm_service_left_ip_prefix
+ },
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix_len:
+ {
+ get_param: vipr_atm_service_left_ip_prefix_len
+ },
+ },
+ }]
+ }]
+
+ vIPR_ATM_Service_Right:
+ type: OS::ContrailV2::VirtualNetwork
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVICE_RIGHT_NETWORK
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ network_ipam_refs: ["default-domain:default-project:default-network-ipam"]
+ network_ipam_refs_data:
+ [{
+ network_ipam_refs_data_ipam_subnets:
+ [{
+ network_ipam_refs_data_ipam_subnets_subnet:
+ {
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix:
+ {
+ get_param: vipr_atm_service_right_ip_prefix
+ },
+ network_ipam_refs_data_ipam_subnets_subnet_ip_prefix_len:
+ {
+ get_param: vipr_atm_service_right_ip_prefix_len
+ },
+ },
+ }]
+ }]
+
+ vIPR_ATM_Ha_One:
+ type: OS::Neutron::Net
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_ONE_NETWORK
+ params:
+ VNF_NAME: { get_param: vnf_name }
+
+ vIPR_ATM_Ha_One_Subnet:
+ type: OS::Neutron::Subnet
+ depends_on:
+ - vIPR_ATM_Ha_One
+ properties:
+ name:
+ str_replace:
+ template: NET_NAME_SUBNET
+ params:
+ NET_NAME: { get_attr: [ vIPR_ATM_Ha_One, name ] }
+ network: { get_resource: vIPR_ATM_Ha_One }
+ cidr: { get_param: vipr_atm_ha_one_cidr }
+ enable_dhcp: False
+ gateway_ip: null
+
+ vIPR_ATM_Ha_Two:
+ type: OS::Neutron::Net
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_TWO_NETWORK
+ params:
+ VNF_NAME: { get_param: vnf_name }
+
+ vIPR_ATM_Ha_Two_Subnet:
+ type: OS::Neutron::Subnet
+ depends_on:
+ - vIPR_ATM_Ha_Two
+ properties:
+ name:
+ str_replace:
+ template: NET_NAME_SUBNET
+ params:
+ NET_NAME: { get_attr: [ vIPR_ATM_Ha_Two, name ] }
+ network: { get_resource: vIPR_ATM_Ha_Two }
+ cidr: { get_param: vipr_atm_ha_two_cidr }
+ enable_dhcp: False
+ gateway_ip: null
+
+ vIPR_ATM_Service_Template:
+ type: OS::ContrailV2::ServiceTemplate
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVICE_TEMPLATE
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ service_template_properties:
+ {
+ service_template_properties_version: 2,
+ service_template_properties_service_mode: transparent,
+ service_template_properties_service_type: firewall,
+ service_template_properties_service_virtualization_type: virtual-machine,
+ service_template_properties_interface_type:
+ [
+ {
+ service_template_properties_interface_type_service_interface_type: Left,
+ service_template_properties_interface_type_shared_ip: True,
+ },
+ {
+ service_template_properties_interface_type_service_interface_type: Right,
+ service_template_properties_interface_type_shared_ip: True,
+ }
+ ],
+ }
+ domain: default-domain
+
+ vIPR_ATM_Service_Instance:
+ type: OS::ContrailV2::ServiceInstance
+ depends_on:
+ - vIPR_ATM_Service_Left
+ - vIPR_ATM_Service_Right
+ - vIPR_ATM_Service_Template
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVICE_INSTANCE
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ service_template_refs: [{ get_resource: vIPR_ATM_Service_Template }]
+ service_instance_properties:
+ {
+ service_instance_properties_ha_mode: active-active,
+ service_instance_properties_left_virtual_network:
+ {
+ list_join: [':', { get_attr: [ vIPR_ATM_Service_Left, fq_name ] } ]
+ },
+ service_instance_properties_right_virtual_network:
+ {
+ list_join: [':', { get_attr: [ vIPR_ATM_Service_Right, fq_name ] } ]
+ },
+ }
+
+ # Management (OAM) Port Security Group to allow ingress SSH
+ vIPR_ATM_OAM_SG:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_OAM_SG
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ rules:
+ - remote_ip_prefix: 0.0.0.0/0
+ protocol: tcp
+ port_range_min: 22
+ port_range_max: 22
+ - remote_ip_prefix: 0.0.0.0/0
+ protocol: tcp
+ port_range_min: 443
+ port_range_max: 443
+ - remote_ip_prefix: 0.0.0.0/0
+ protocol: tcp
+ port_range_min: 3978
+ port_range_max: 3978
+ - remote_ip_prefix: 0.0.0.0/0
+ protocol: icmp
+
+ vIPR_ATM_HA_ONE_SG:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_ONE_SG
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ rules:
+ - remote_mode: remote_group_id
+
+ vIPR_ATM_HA_TWO_SG:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_HA_TWO_SG
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ rules:
+ - remote_mode: remote_group_id
+
+ vIPR_ATM_Server_Group:
+ type: OS::Nova::ServerGroup
+ properties:
+ name:
+ str_replace:
+ template: VNF_NAME_VIPR_ATM_SERVER_GROUP
+ params:
+ VNF_NAME: { get_param: vnf_name }
+ policies:
+ - anti-affinity
+
+outputs:
+ vipr_atm_contrail_service_instance_fqdn:
+ description: The FQDN for the Contrail Service Instance that is needed to create tenant OAM network policy to service change through the vIPR-ATM firewall.
+ value: { list_join: [':', { get_attr: [ vIPR_ATM_Service_Instance, fq_name ] } ] }
+
+ vipr_atm_service_left_fqdn:
+ description: The FQDN for the vIPR-ATM Service Left network.
+ value: { list_join: [':', { get_attr: [ vIPR_ATM_Service_Left, fq_name ] } ] }
+
+ vipr_atm_service_right_fqdn:
+ description: The FQDN for the vIPR-ATM Service Right network.
+ value: { list_join: [':', { get_attr: [ vIPR_ATM_Service_Right, fq_name ] } ] }
+
+ vipr_atm_ha_one_id:
+ description: The UUID for the vIPR-ATM HA One network.
+ value: { get_resource: vIPR_ATM_Ha_One }
+
+ vipr_atm_ha_two_id:
+ description: The UUID for the vIPR-ATM HA Two network.
+ value: { get_resource: vIPR_ATM_Ha_Two }
+
+ vipr_atm_oam_net_security_groups:
+ description: The list of OpenStack Security Groups to appliy to the vIPR-ATM-Instance\'s OAM network.
+ value: [ { get_resource: vIPR_ATM_OAM_SG } ]
+
+ vipr_atm_ha_one_security_groups:
+ description: The list of OpenStack Security Groups to appliy to the vIPR-ATM-Instance\'s HA One network.
+ value: [ { get_resource: vIPR_ATM_HA_ONE_SG } ]
+
+ vipr_atm_ha_two_security_groups:
+ description: The list of OpenStack Security Groups to appliy to the vIPR-ATM-Instance\'s HA Two network.
+ value: [ { get_resource: vIPR_ATM_HA_TWO_SG } ]
+
+ vipr_atm_server_group:
+ description: The UUID for the vIPR-ATM OpenStack Server Group
+ value: { get_resource: vIPR_ATM_Server_Group }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.env b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.env
new file mode 100644
index 0000000000..77e8b8630a
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.env
@@ -0,0 +1,28 @@
+parameters:
+ oam_net_id: 1ac9d738-f545-413a-a9a2-b44309edc511
+ vipr_atm_oam_net_security_groups: [ "c2369210-d154-4e4a-984d-047674beb5da" ]
+
+ vipr_atm_contrail_service_instance_fqdn: default-domain:vIPR-ATM:vIPR-ATM-service-instance
+
+ vipr_atm_service_left_fqdn: default-domain:vIPR-ATM:vIPR-ATM-service-left
+ vipr_atm_service_right_fqdn: default-domain:vIPR-ATM:vIPR-ATM-service-right
+
+ vipr_atm_ha_one_id: 4abaafc8-b8af-40b9-b0d0-32bd91f958ee
+ vipr_atm_ha_one_ip_0: 192.168.35.1
+ vipr_atm_ha_one_security_groups: [ "cbf8049e-69e8-48c3-a06f-255634391403" ]
+
+ vipr_atm_ha_two_id: b75e27cf-452f-48ef-b107-8777e645c22d
+ vipr_atm_ha_two_ip_0: 192.168.35.9
+ vipr_atm_ha_two_security_groups: [ "29e29a4a-b45d-42c2-ac14-b12a70036ae6" ]
+
+ vipr_atm_server_group: 885dbf7f-fcb2-42d2-a694-a5930ce35b71
+
+ vipr_atm_name_0: zrcs1cctvpr001
+ vipr_atm_image_name: vipr-atm-pan7.1
+ vipr_atm_flavor_name: m1.vipr-atm-pan
+ vipr_atm_valet_eg_0: CORE_INFRASTRUCTURE_VNFs
+ availability_zone_0: 'nova'
+
+ vnf_id: '1234'
+ vnf_name: 'RD3TX100vfw'
+ vf_module_id: '5678'
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.yaml
new file mode 100644
index 0000000000..ea3b8ab659
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/groupNameParameter/inputfiles/vIPR-ATM-Instance.yaml
@@ -0,0 +1,299 @@
+heat_template_version: 2015-04-30
+
+description: >
+ HOT template to create a vIPR-ATM firwall service instance.
+ This template creates the following
+ - Contrail Port Tuple for this firwall service instance
+ - Virtual machine interfaces and IP addresses attached to the two
+ service virtual networks. These virtual machine interfaces will be used
+ by the vIPR firewall service instance
+ - Neutron ports for OAM, HA0, and HA1 networks
+ - OS::Nova::Server with the created virtual machine interface and ports. This
+ is the firewall service instance virtual machine.
+
+parameters:
+ oam_net_id:
+ type: string
+ constraints:
+ - custom_constraint: neutron.network
+ description: This network must currently exist.
+ description: Neutron UUID for the managemnet network name of the vIPR-ATM firewall
+ vipr_atm_oam_net_security_groups:
+ type: comma_delimited_list
+ description: List of the security group to apply to the vIPR-ATM firewall management port
+
+ vipr_atm_service_left_fqdn:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
+ description: |
+ A valid Contrail FQDN that contains three parts seperated by ':'.
+ The first two part are 1 to 64 characters long and must not contain ':'.
+ The third part is 1 to 255 characters long and must not contain ':'.
+ description: FQDN of the Left service network for the vIPR-ATM firewall
+
+ vipr_atm_service_right_fqdn:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
+ description: |
+ A valid Contrail FQDN that contains three parts seperated by ':'.
+ The first two part are 1 to 64 characters long and must not contain ':'.
+ The third part is 1 to 255 characters long and must not contain ':'.
+ description: FQDN of the Right service network for the vIPR-ATM firewall
+
+ vipr_atm_ha_one_id:
+ type: string
+ constraints:
+ - custom_constraint: neutron.network
+ description: This network must currently exist.
+ description: Neutron UUID of the first high availability network for the vIPR-ATM firewall
+ vipr_atm_ha_one_ip_0:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ description: A valid IPv4 dot quad IP address.
+ description: Fixed IP to apply to the vIPR-ATM firewall ha0 port
+ vipr_atm_ha_one_security_groups:
+ type: comma_delimited_list
+ description: List of the security group to apply to the vIPR-ATM firewall ha0 port
+
+ vipr_atm_ha_two_id:
+ type: string
+ constraints:
+ - custom_constraint: neutron.network
+ description: This network must currently exist.
+ description: Neutron UUID of the second high availability network for the vIPR-ATM firewal
+ vipr_atm_ha_two_ip_0:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+ description: A valid IPv4 dot quad IP address.
+ description: Fixed IP to apply to the vIPR-ATM firewall ha1 port
+ vipr_atm_ha_two_security_groups:
+ type: comma_delimited_list
+ description: List of the security group to apply to the vIPR-ATM firewall ha1 port
+
+ vipr_atm_contrail_service_instance_fqdn:
+ type: string
+ constraints:
+ - allowed_pattern: ^(?:[^:]{1,64}:){2}(?:[^:]{1,255})$
+ description: |
+ A valid Contrail FQDN that contains three parts seperated by ':'.
+ The first two part are 1 to 64 characters long and must not contain ':'.
+ The third part is 1 to 255 characters long and must not contain ':'.
+ description: FQDN of the vIPR-ATM firewall Contrail service instance for the port tuple
+
+ vipr_atm_name_0:
+ type: string
+ constraints:
+ - length: { min: 1, max: 255 }
+ description: A string with length of at least 1 and less than 255.
+ description: Name of the vIPR-ATM firewall virtual machine
+ vipr_atm_image_name:
+ type: string
+ constraints:
+ - custom_constraint: glance.image
+ description: This image must currently exist.
+ description: Image name of the vIPR-ATM firewall virtual machine
+ vipr_atm_flavor_name:
+ type: string
+ constraints:
+ - custom_constraint: nova.flavor
+ description: This flavor must currently exist.
+ description: Flavor for the vIPR-ATM firewall virtual machine
+ vipr_atm_server_group:
+ type: string
+ constraints:
+ - length: { min: 1, max: 255 }
+ description: A string with length of at least 1 and less than 255.
+ description: Server Group with anti-affinity policy for the vIPR-ATM firewall virtual machine
+ vipr_atm_valet_eg_0:
+ type: string
+ constraints:
+ - length: { min: 1, max: 255 }
+ description: A string with length of at least 1 and less than 255.
+ description: The Valet 1.0 Exclusivity Group for the vIPR-ATM firewall virtual machine
+ availability_zone_0:
+ type: string
+ constraints:
+ - length: { min: 1, max: 255 }
+ description: A string with length of at least 1 and less than 255.
+ description: Availability Zone for the vIPR-ATM firewall virtual machine
+
+ vnf_id:
+ type: string
+ constraints:
+ - length: { min: 1, max: 255 }
+ description: A string with length of at least 1 and less than 255.
+ description: Unique ID for this VF instance
+ vnf_name:
+ type: string
+ constraints:
+ - length: { min: 1, max: 255 }
+ description: A string with length of at least 1 and less than 255.
+ description: Unique Name for this VF instance
+ vf_module_id:
+ type: string
+ constraints:
+ - length: { min: 1, max: 255 }
+ description: A string with length of at least 1 and less than 255.
+ description: Unique ID for the VF Module instance
+
+resources:
+ # Create the Port Tuple
+ vIPR_ATM_RPT:
+ type: OS::ContrailV2::PortTuple
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_TUPLE
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ service_instance: { get_param: vipr_atm_contrail_service_instance_fqdn }
+
+ # Left Port (Virtual Machine Interface)
+ vIPR_ATM_Left_RVMI:
+ type: OS::ContrailV2::VirtualMachineInterface
+ depends_on: [ vIPR_ATM_RPT ]
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_3
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_service_interface_type: 'left'
+ }
+ port_tuple_refs: [{ get_resource: vIPR_ATM_RPT }]
+ virtual_network_refs: [{ get_param: vipr_atm_service_left_fqdn }]
+
+ # Right Port (Virtual Machine Interface)
+ vIPR_ATM_Right_RVMI:
+ type: OS::ContrailV2::VirtualMachineInterface
+ depends_on: [ vIPR_ATM_RPT ]
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_4
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ virtual_machine_interface_properties:
+ {
+ virtual_machine_interface_properties_service_interface_type: 'right'
+ }
+ port_tuple_refs: [{ get_resource: vIPR_ATM_RPT }]
+ virtual_network_refs: [{ get_param: vipr_atm_service_right_fqdn }]
+
+ # Left Instance IP
+ vIPR_ATM_Left_RII:
+ type: OS::ContrailV2::InstanceIp
+ depends_on: [ vIPR_ATM_Left_RVMI ]
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_INSTANCE_IP_LEFT
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ virtual_machine_interface_refs: [{ get_resource: vIPR_ATM_Left_RVMI }]
+ virtual_network_refs: [{ get_param: vipr_atm_service_left_fqdn }]
+
+ # Right Instance IP
+ vIPR_ATM_Right_RII:
+ type: OS::ContrailV2::InstanceIp
+ depends_on: [ vIPR_ATM_Right_RVMI ]
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_INSTANCE_IP_RIGHT
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ virtual_machine_interface_refs: [{ get_resource: vIPR_ATM_Right_RVMI }]
+ virtual_network_refs: [{ get_param: vipr_atm_service_right_fqdn }]
+
+ # OAM Network Port (not part of Port Tuple)
+ vIPR_ATM_OAM_0_Port:
+ type: OS::Neutron::Port
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_0
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ network: { get_param: oam_net_id }
+ security_groups: { get_param: vipr_atm_oam_net_security_groups }
+
+ # HA One Port (not part of Port Tuple)
+ vIPR_ATM_Ha_One_0_Port:
+ type: OS::Neutron::Port
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_1
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ network: { get_param: vipr_atm_ha_one_id }
+ fixed_ips: [ { "ip_address": { get_param: vipr_atm_ha_one_ip_0 } } ]
+ security_groups: { get_param: vipr_atm_ha_one_security_groups }
+
+ # HA Two Port (not part of Port Tuple)
+ vIPR_ATM_Ha_Two_0_Port:
+ type: OS::Neutron::Port
+ properties:
+ name:
+ str_replace:
+ template: VM_NAME_PORT_2
+ params:
+ VM_NAME: { get_param: vipr_atm_name_0 }
+ network: { get_param: vipr_atm_ha_two_id }
+ fixed_ips: [ { "ip_address": { get_param: vipr_atm_ha_two_ip_0 } } ]
+ security_groups: { get_param: vipr_atm_ha_two_security_groups }
+
+ # Valet Exclusivity Group
+ vIPR_ATM_Valet_EG_0:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_name: { get_param: vipr_atm_valet_eg_0 }
+ group_type: exclusivity
+ level: host
+ resources:
+ - { get_resource: vIPR_ATM_Firewall }
+
+ # Create the VM and bind the five ports to it
+ # vIPR_ATM_Firewall_Cloud_Config:
+ # type: OS::Heat::CloudConfig
+ # properties:
+ # cloud_config:
+ # password: ubuntu
+ # chpasswd: { expire: False }
+ # ssh_pwauth: True
+ # manage_etc_hosts: true
+
+ vIPR_ATM_Firewall:
+ type: OS::Nova::Server
+ depends_on:
+ - vIPR_ATM_Left_RII
+ - vIPR_ATM_Right_RII
+ - vIPR_ATM_OAM_0_Port
+ - vIPR_ATM_Ha_One_0_Port
+ - vIPR_ATM_Ha_Two_0_Port
+ properties:
+ name: { get_param: vipr_atm_name_0 }
+ image: { get_param: vipr_atm_image_name }
+ flavor: { get_param: vipr_atm_flavor_name }
+ availability_zone: { get_param: availability_zone_0 }
+ scheduler_hints:
+ group: { get_param: vipr_atm_server_group }
+ networks:
+ - port: { get_resource: vIPR_ATM_OAM_0_Port }
+ - port: { get_resource: vIPR_ATM_Ha_One_0_Port }
+ - port: { get_resource: vIPR_ATM_Ha_Two_0_Port }
+ - port: { get_resource: vIPR_ATM_Left_RVMI }
+ - port: { get_resource: vIPR_ATM_Right_RVMI }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vnf_name: { get_param: vnf_name }
+ vf_module_id: { get_param: vf_module_id }
+# user_data_format: RAW
+# user_data: { get_resource: vIPR_ATM_Firewall_Cloud_Config }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..5609b76193
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,292 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer3:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myPort6:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myPort5:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer3
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myNovaServer3:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer3
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myPort6
+ - myPort5
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myNovaServer3
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_simpleGroup1_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ SVCgroup3_complexTwoGroups_group:
+ type: tosca.groups.Root
+ members:
+ - SVCgroup1_simpleGroup1_group
+ policies:
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup1_group
+ SVCgroup3_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup3_complexTwoGroups_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/main.yml
new file mode 100644
index 0000000000..7dc385e7c8
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/invalidGroupAssignment/inputfiles/main.yml
@@ -0,0 +1,132 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myNovaServer3:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort5 }
+ - port: { get_resource: myPort6 }
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ myPort5:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort6:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: simpleGroup1
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
+ SVCgroup2:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: invalid
+ level: host
+ resources:
+ - { get_resource: myNovaServer3}
+ SVCgroup3:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: complexTwoGroups
+ level: host
+ resources:
+ - { get_resource: SVCgroup1}
+ - { get_resource: SVCgroup2} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..d0f744c3a5
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,209 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_simpleGroup_group:
+ type: tosca.groups.Root
+ members: [
+ ]
+ policies:
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Diversity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/main.yml
new file mode 100644
index 0000000000..ce061c122a
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/notconnected/inputfiles/main.yml
@@ -0,0 +1,88 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: diversity
+ group_name: simpleGroup
+ level: host
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..b16c6c0247
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,209 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_simpleGroup_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer1
+ policies:
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Exclusivity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/main.yml
new file mode 100644
index 0000000000..caa95edfa9
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleNovaAndNotSupportedResource/inputfiles/main.yml
@@ -0,0 +1,96 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ myDummyResource:
+ type: myDummyResource::type
+ properties:
+ prop: propertyValue
+
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: exclusivity
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myDummyResource}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..a43a1d1f5d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,209 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_emptyGroup_group:
+ type: tosca.groups.Root
+ members: [
+ ]
+ policies:
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_emptyGroup_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/main.yml
new file mode 100644
index 0000000000..e5842434e1
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNotSupportedResources/inputfiles/main.yml
@@ -0,0 +1,103 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myDummyResource1:
+ type: myDummyResource1
+ properties:
+ prop1: aaaa
+
+ myDummyResource2:
+ type: myDummyResource2
+ properties:
+ prop1: bbb
+
+
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: emptyGroup
+ level: host
+ resources:
+ - { get_resource: myDummyResource1}
+ - { get_resource: myDummyResource2}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..3ec1bd245e
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,210 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_simpleGroup_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ policies:
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Affinity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/main.yml
new file mode 100644
index 0000000000..586a7343e4
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlyNova/inputfiles/main.yml
@@ -0,0 +1,91 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: affinity
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}
+ - { get_resource: myNovaServer2}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/expectedoutputfiles/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/expectedoutputfiles/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..56b552b348
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/expectedoutputfiles/MainServiceTemplate.yaml
@@ -0,0 +1,209 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+ template_name: Main
+imports:
+- openecomp_heat_index:
+ file: openecomp-heat/_index.yml
+node_types:
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer2:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+ org.openecomp.resource.vfc.nodes.heat.myNovaServer1:
+ derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+ inputs:
+ flavor:
+ hidden: false
+ immutable: false
+ type: string
+ p1:
+ hidden: false
+ immutable: false
+ type: string
+ description: p1
+ image:
+ hidden: false
+ immutable: false
+ type: string
+ p2:
+ hidden: false
+ immutable: false
+ type: string
+ description: p2
+ names:
+ hidden: false
+ immutable: false
+ type: string
+ myIPs:
+ hidden: false
+ immutable: false
+ type: string
+ description: ip1
+ availability_zone_1:
+ hidden: false
+ immutable: false
+ type: string
+ description: myAvailability_zone_1
+ net:
+ hidden: false
+ immutable: false
+ type: string
+ description: UID of network
+ node_templates:
+ myNovaServer1:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer1
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myNovaServer2:
+ type: org.openecomp.resource.vfc.nodes.heat.myNovaServer2
+ properties:
+ flavor:
+ get_input: flavor
+ availability_zone:
+ get_input: availability_zone_1
+ image:
+ get_input: image
+ name:
+ get_input:
+ - names
+ - 0
+ myPort2:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort1:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer1
+ relationship: tosca.relationships.network.BindsTo
+ myPort4:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p2
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ myPort3:
+ type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+ properties:
+ replacement_policy: AUTO
+ ip_requirements:
+ - ip_version: 4
+ ip_count_required:
+ is_required: true
+ floating_ip_count_required:
+ is_required: false
+ security_groups:
+ - get_input: p1
+ fixed_ips:
+ - ip_address:
+ get_input:
+ - myIPs
+ - 0
+ mac_requirements:
+ mac_count_required:
+ is_required: false
+ network:
+ get_input: net
+ requirements:
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ node: myNovaServer2
+ relationship: tosca.relationships.network.BindsTo
+ groups:
+ main_group:
+ type: org.openecomp.groups.heat.HeatStack
+ properties:
+ heat_file: ../Artifacts/main.yml
+ description: cmaui server template for vMMSC
+ members:
+ - myNovaServer1
+ - myNovaServer2
+ - myPort2
+ - myPort1
+ - myPort4
+ - myPort3
+ SVCgroup1_simpleGroup_group:
+ type: tosca.groups.Root
+ members:
+ - myNovaServer1
+ policies:
+ SVCgroup1_policy:
+ type: org.openecomp.policies.placement.valet.Diversity
+ properties:
+ level: host
+ targets:
+ - SVCgroup1_simpleGroup_group \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/MANIFEST.json
new file mode 100644
index 0000000000..539e26b7ab
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/MANIFEST.json
@@ -0,0 +1,12 @@
+{
+ "name": "vMME_Small",
+ "description": "HOT template to create 2 cinder volume attachment",
+ "version": "2013-05-23",
+ "data": [
+ {
+ "file": "main.yml",
+ "type": "HEAT",
+ "isBase": "true"
+ }
+ ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/main.yml
new file mode 100644
index 0000000000..f7079ce7ce
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/att-sdc-translator-impl/src/test/resources/mock/services/heattotosca/attValetGroupAssignment/simpleOnlySingleNova/inputfiles/main.yml
@@ -0,0 +1,90 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+ net:
+ type: string
+ description: UID of network
+ p1:
+ type: string
+ description: p1
+ p2:
+ type: string
+ description: p2
+ myIPs:
+ type: string
+ description: ip1
+ availability_zone_1:
+ type: string
+ description: myAvailability_zone_1
+ names:
+ type: string
+ image:
+ type: string
+ flavor:
+ type: string
+resources:
+
+ myNovaServer1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort1 }
+ - port: { get_resource: myPort2 }
+
+
+ myNovaServer2:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [names, 0]}
+ image: { get_param: image }
+ availability_zone: { get_param: availability_zone_1 }
+ flavor: { get_param: flavor }
+ networks:
+ - port: { get_resource: myPort3 }
+ - port: { get_resource: myPort4 }
+
+ myPort1:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort2:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+
+ myPort3:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p1}]
+ replacement_policy: AUTO
+
+ myPort4:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: net }
+ fixed_ips: [{"ip_address": {get_param: [myIPs, 0]}}]
+ security_groups: [{get_param: p2}]
+ replacement_policy: AUTO
+ SVCgroup1:
+ type: ATT::Valet::GroupAssignment
+ properties:
+ group_type: diversity
+ group_name: simpleGroup
+ level: host
+ resources:
+ - { get_resource: myNovaServer1}