VLAN tagging - VFC Instance Group 23/34223/13
authorojasdubey <ojas.dubey@amdocs.com>
Tue, 6 Mar 2018 06:31:54 +0000 (12:01 +0530)
committerojasdubey <ojas.dubey@amdocs.com>
Tue, 27 Mar 2018 07:00:06 +0000 (12:30 +0530)
1. Create VFC instance group per sub-interface
network role
2. Refactored PortTemplateConsolidationData and
its references based on review comments
3. Updated test data after rebase
4. Updated to flatMap based on review
comments

Change-Id: I423593c5156ecae5eff3a4f2ce8591c85db727cc
Issue-ID: SDC-1073
Signed-off-by: ojasdubey <ojas.dubey@amdocs.com>
69 files changed:
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortTemplateConsolidationData.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConfigConstants.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/Constants.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionService.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/UnifiedCompositionUtil.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionCatalogInstance.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionScalingInstances.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/unifiedcomposition/UnifiedCompositionSingleSubstitution.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-unifiedModel.json [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionSubInterfaceFullTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1a/computePortNetworkSubInterface/in/main.yml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1a/computePortNetworkSubInterface/in/nested.yml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1a/computePortNetworkSubInterface/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1a/computePortNetworkSubInterface/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1a/computePortNetworkSubInterface/out/Nested_vdbeServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1a/computePortNetworkSubInterface/out/nestedServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/in/main.yml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/in/vlan1.yml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/in/vlan2.yml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/out/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/out/Nested_vdbeServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/out/vlan1ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/multiplePortsMultipleVlans/out/vlan2ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/baseScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedDiffComputeScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedMultiComputeScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedMultiComputeScenario/out/nested_pattern5_levelTwoServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiLevelNestedScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiVFCInAllHeatScalingScenario/out/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCMultiVFCInAllHeatScalingScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCScalingScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCWithDiffSubInfConnectivityScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCWithDiffSubInfConnectivityScenario/out/nested_pattern5_levelTwoServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCWithDiffSubInfCountScenario/out/nested_pattern5ServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/complexVFCWithDiffSubInfCountScenario/out/nested_pattern5_levelTwoServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/MANIFEST.json [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/main.yml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/nested.yml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/GlobalSubstitutionTypesServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/MainServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/Nested_vdbeServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/nestedServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/MANIFEST.json [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/main.yml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested.yml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/GlobalSubstitutionTypesServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/MainServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbeServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nestedServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/MANIFEST.json [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/main.yml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested1.yml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested2.yml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/GlobalSubstitutionTypesServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/MainServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbeServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbe_1ServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nested1ServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nested2ServiceTemplate.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/expectedoutputfiles/GlobalSubstitutionTypesServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/expectedoutputfiles/MainServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/expectedoutputfiles/nestedServiceTemplate.yaml
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/inoutattr/inputfiles/nested.yml
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/datatypes/ToscaNodeType.java
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java

index 8175072..7c55c37 100644 (file)
@@ -60,7 +60,9 @@ public class TranslationContext {
   private static Map<String, ImplementationConfiguration> nameExtractorImplMap;
   private static Map<String, ImplementationConfiguration> supportedConsolidationComputeResources;
   private static Map<String, ImplementationConfiguration> supportedConsolidationPortResources;
+  private static List<String> vfcGroupSubInterfaceExposedProperties;
   private static List<String> enrichPortResourceProperties;
+  private static ImplementationConfiguration vfcInstanceGroupConfiguration;
   private ManifestFile manifest;
   private FileContentHandler files = new FileContentHandler();
   private Map<String, FileData.Type> manifestFiles = new HashMap<>();
@@ -94,7 +96,7 @@ public class TranslationContext {
 
   private Set<String> nodeTemplateIdsPointingToStWithoutNodeTemplates = new HashSet<>();
 
-  //Key - service template name, value - Map of key: node template id, value: proerties with %index%
+  //Key - service template name, value - Map of key: node template id, value: properties with %index%
   private Map<String, ListMultimap<String, String>> indexVarProperties = new HashMap<>();
 
   static {
@@ -118,6 +120,26 @@ public class TranslationContext {
     enrichPortResourceProperties = config.getAsStringValues(ConfigConstants
             .MANDATORY_UNIFIED_MODEL_NAMESPACE, ConfigConstants
             .ENRICH_PORT_RESOURCE_PROP);
+    vfcInstanceGroupConfiguration = getVfcInstanceGroupConfiguration(config);
+    vfcGroupSubInterfaceExposedProperties = config.getAsStringValues(ConfigConstants
+        .UNIFIED_MODEL_NAMESPACE, ConfigConstants.FULL_EXPOSED_PROPERTIES_KEY);
+  }
+
+
+  private static ImplementationConfiguration getVfcInstanceGroupConfiguration(Configuration config) {
+    Map<String, ImplementationConfiguration> supportedUnifiedModelProperties =
+        config.populateMap(ConfigConstants.UNIFIED_MODEL_NAMESPACE, ConfigConstants.UNIFIED_MODEL_IMPL_KEY,
+            ImplementationConfiguration.class);
+    return MapUtils.isEmpty(supportedUnifiedModelProperties) ? null :
+        supportedUnifiedModelProperties.get(ConfigConstants.VFC_INSTANCE_GROUP_KEY);
+  }
+
+  public static boolean isVfcInstanceGroupingEnabled() {
+    return Objects.nonNull(vfcInstanceGroupConfiguration) && vfcInstanceGroupConfiguration.isEnable();
+  }
+
+  public static List<String> getExposedVfcInstanceGroupingProperties() {
+    return vfcGroupSubInterfaceExposedProperties;
   }
 
   public static List<String> getEnrichPortResourceProperties() {
index 5d37237..487771b 100644 (file)
@@ -19,9 +19,15 @@ package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolid
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Multimaps;
+import org.apache.commons.collections4.CollectionUtils;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.sdc.heat.datatypes.model.Resource;
+import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
+import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
 
 import java.util.List;
-import java.util.Set;
+import java.util.Objects;
+import java.util.Optional;
 
 
 /**
@@ -32,7 +38,7 @@ public class PortTemplateConsolidationData extends EntityConsolidationData {
   // key - sub-interface type - for ResourceGroup it is the nested file name
   // value - List of sub-interfaces of that type in the port
   private final ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceConsolidationData =
-      Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
+          Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
 
   private String networkRole;
 
@@ -44,13 +50,41 @@ public class PortTemplateConsolidationData extends EntityConsolidationData {
     this.networkRole = networkRole;
   }
 
-  public List<SubInterfaceTemplateConsolidationData> getSubInterfaceConsolidationData(
-      String subInterfaceType) {
-    return this.subInterfaceConsolidationData.get(subInterfaceType);
+  public SubInterfaceTemplateConsolidationData getSubInterfaceResourceTemplateConsolidationData(Resource resource,
+                                                                                    String subInterfaceNodeTemplateId,
+                                                                                    String parentPortNodeTemplateId) {
+    String subInterfaceType = createSubInterfaceType(resource);
+    List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+              subInterfaceConsolidationData.get(subInterfaceType);
+    SubInterfaceTemplateConsolidationData consolidationData = null;
+    if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) {
+      Optional<SubInterfaceTemplateConsolidationData> optionalConsolidationData =
+          subInterfaceTemplateConsolidationDataList.stream()
+              .filter(s -> s.getNodeTemplateId().equals(subInterfaceNodeTemplateId))
+              .findFirst();
+      if (optionalConsolidationData.isPresent()) {
+        consolidationData = optionalConsolidationData.get();
+      }
+    }
+
+    if (Objects.isNull(consolidationData)) {
+      consolidationData = createSubInterfaceConsolidationData(subInterfaceNodeTemplateId, parentPortNodeTemplateId);
+      addSubInterfaceConsolidationData(subInterfaceType, consolidationData);
+    }
+    return consolidationData;
   }
 
-  public Set<String> getAllSubInterfaceNodeTypes() {
-    return this.subInterfaceConsolidationData.keySet();
+  private String createSubInterfaceType(Resource resource) {
+
+    return ToscaNodeType.VLAN_SUB_INTERFACE_RESOURCE_TYPE_PREFIX
+            + FileUtils.getFileWithoutExtention(HeatToToscaUtil.getSubInterfaceResourceType(resource));
+  }
+
+  private SubInterfaceTemplateConsolidationData createSubInterfaceConsolidationData(String subInterfaceNodeTemplateId, String parentPortNodeTemplateId) {
+    SubInterfaceTemplateConsolidationData data = new SubInterfaceTemplateConsolidationData();
+    data.setNodeTemplateId(subInterfaceNodeTemplateId);
+    data.setParentPortNodeTemplateId(parentPortNodeTemplateId);
+    return data;
   }
 
   public void addSubInterfaceConsolidationData(String subPortType,
@@ -81,6 +115,13 @@ public class PortTemplateConsolidationData extends EntityConsolidationData {
 
   }
 
+  public boolean isSubInterfaceNodeTemplateIdParameter(String nodeTemplateType) {
+    List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+        this.subInterfaceConsolidationData.get(nodeTemplateType);
+    return (Objects.nonNull(subInterfaceTemplateConsolidationDataList)
+        && subInterfaceTemplateConsolidationDataList.size() > 1) ;
+  }
+
   private int calculateSize(List<SubInterfaceTemplateConsolidationData> subInterfaces) {
     return subInterfaces == null ? 0 : subInterfaces.size();
   }
index ca9f21b..676eb7d 100644 (file)
@@ -1,21 +1,17 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * Copyright Â© 2016-2018 European Support Limited
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca;
@@ -24,6 +20,7 @@ public class ConfigConstants {
   //namespaces
   public static final String MANDATORY_TRANSLATOR_NAMESPACE = "mandatoryHeatToToscaTranslator";
   public static final String MANDATORY_UNIFIED_MODEL_NAMESPACE = "mandatoryUnifiedModel";
+  public static final String UNIFIED_MODEL_NAMESPACE = "unifiedModel";
   public static final String TRANSLATOR_NAMESPACE = "heatToToscaTranslator";
   public static final String MAPPING_NAMESPACE = "heatToToscaMapping";
 
@@ -42,6 +39,10 @@ public class ConfigConstants {
       "supportedConsolidationPortResources";
   public static final String ENRICH_PORT_RESOURCE_PROP =
       "enrichPortResourceProperties";
+  public static final String UNIFIED_MODEL_IMPL_KEY = "unifiedModelImpl";
+  public static final String VFC_INSTANCE_GROUP_KEY = "vfcInstanceGroup";
+  public static final String FULL_EXPOSED_PROPERTIES_KEY =
+      "unifiedModelImpl.vfcInstanceGroup.properties.exposedProperties";
 
 
   //others
index 717f681..282c444 100644 (file)
@@ -16,7 +16,6 @@
 
 package org.openecomp.sdc.translator.services.heattotosca;
 
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.openecomp.core.utilities.file.FileUtils;
@@ -25,7 +24,6 @@ import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 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.ToscaNodeType;
 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
@@ -211,40 +209,10 @@ public class ConsolidationDataUtil {
           portTemplateConsolidationData);
     }
 
-    return getSubInterfaceResourceTemplateConsolidationData(subInterfaceTo.getResource(), portTemplateConsolidationData,
+    return portTemplateConsolidationData.getSubInterfaceResourceTemplateConsolidationData(subInterfaceTo.getResource(),
         subInterfaceNodeTemplateId, parentPortNodeTemplateId);
   }
 
-  private static SubInterfaceTemplateConsolidationData getSubInterfaceResourceTemplateConsolidationData(
-      Resource resource,
-      PortTemplateConsolidationData portTemplateConsolidationData,
-      String subInterfaceNodeTemplateId,
-      String parentPortNodeTemplateId) {
-    String subInterfaceType = ToscaNodeType.VLAN_SUB_INTERFACE_RESOURCE_TYPE_PREFIX
-        + FileUtils.getFileWithoutExtention(HeatToToscaUtil.getSubInterfaceResourceType(resource));
-    SubInterfaceTemplateConsolidationData data = new SubInterfaceTemplateConsolidationData();
-    data.setNodeTemplateId(subInterfaceNodeTemplateId);
-    data.setParentPortNodeTemplateId(parentPortNodeTemplateId);
-    if (CollectionUtils.isNotEmpty(portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType))) {
-      boolean isNewSubInterface = true;
-      List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
-          portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType);
-      for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
-          subInterfaceTemplateConsolidationDataList) {
-        if (subInterfaceNodeTemplateId.equals(subInterfaceTemplateConsolidationData.getNodeTemplateId())) {
-          data = subInterfaceTemplateConsolidationData;
-          isNewSubInterface = false;
-        }
-      }
-      if (isNewSubInterface) {
-        portTemplateConsolidationData.addSubInterfaceConsolidationData(subInterfaceType, data);
-      }
-    } else {
-      portTemplateConsolidationData.addSubInterfaceConsolidationData(subInterfaceType, data);
-    }
-    return data;
-  }
-
   /**
    * Gets nested template consolidation data.
    *
index 30a2f4a..cb6a3bc 100644 (file)
@@ -950,28 +950,34 @@ public class ConsolidationService {
       FilePortConsolidationData filePortConsolidationData =
           consolidationData.getPortConsolidationData().getFilePortConsolidationData(ToscaUtil
               .getServiceTemplateFileName(serviceTemplate));
-      List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
-          new ArrayList<>();
-      for (List<String> portList : portCollection) {
-        for (String portId : portList) {
-          if (!Objects.isNull(filePortConsolidationData)) {
-            PortTemplateConsolidationData portTemplateConsolidationData =
-                filePortConsolidationData.getPortTemplateConsolidationData(portId);
-            unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData);
-            if (portTemplateConsolidationData != null) {
-              portTemplateConsolidationData.copyFlatInto(subInterfaceTemplateConsolidationDataList);
-            }
-          }
-        }
-      }
+      List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList = new ArrayList<>();
+      portCollection.stream()
+          .flatMap(Collection::stream)
+          .forEach(portId -> setUnifiedCompositionDataWithPortTemplateData(filePortConsolidationData, portId,
+              unifiedCompositionData, subInterfaceTemplateConsolidationDataList));
       unifiedCompositionData.setSubInterfaceTemplateConsolidationDataList(
           subInterfaceTemplateConsolidationDataList);
       unifiedCompositionDataList.add(unifiedCompositionData);
     }
-
     return unifiedCompositionDataList;
   }
 
+  private void setUnifiedCompositionDataWithPortTemplateData(FilePortConsolidationData filePortConsolidationData,
+                                                             String portId,
+                                                             UnifiedCompositionData unifiedCompositionData,
+                                                             List<SubInterfaceTemplateConsolidationData>
+                                                                 subInterfaceTemplateConsolidationDataList) {
+    if (Objects.isNull(filePortConsolidationData)) {
+      return;
+    }
+    PortTemplateConsolidationData portTemplateConsolidationData =
+        filePortConsolidationData.getPortTemplateConsolidationData(portId);
+    unifiedCompositionData.addPortTemplateConsolidationData(portTemplateConsolidationData);
+    if (portTemplateConsolidationData != null) {
+      portTemplateConsolidationData.copyFlatInto(subInterfaceTemplateConsolidationDataList);
+    }
+  }
+
   private List<UnifiedCompositionData> createSubstitutionUnifiedCompositionDataList(
       String substituteNodeTemplateId,
       ServiceTemplate serviceTemplate,
index 98e6507..d0b1dd0 100644 (file)
@@ -26,11 +26,14 @@ public class Constants {
   public static final String NAME_PROPERTY_NAME = "name";
   public static final String SECURITY_GROUPS_PROPERTY_NAME = "security_groups";
   public static final String PORT_PROPERTY_NAME = "port";
+  static final String VFC_PARENT_PORT_ROLE = "vfc_parent_port_role";
+  static final String SUB_INTERFACE_ROLE = "subinterface_role";
   //General
   public static final String PROP = "properties";
   public static final String ATTR = "attributes";
   public static final String SERVICE_INSTANCE_PORT_PREFIX = "port_";
   public static final String SERVICE_INSTANCE_LINK_PREFIX = "link_";
+  static final String GROUP = "group";
   //Unified model
   static final String COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX = "vm_";
   static final String COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX = "_name";
index ae48ccf..f064fb6 100644 (file)
@@ -16,6 +16,9 @@
 
 package org.openecomp.sdc.translator.services.heattotosca;
 
+import static org.openecomp.sdc.tosca.datatypes.ToscaFunctions.GET_INPUT;
+import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.GROUP_TYPE_PREFIX;
+import static org.openecomp.sdc.tosca.datatypes.ToscaNodeType.VFC_INSTANCE_GROUP;
 import static org.openecomp.sdc.tosca.services.DataModelUtil.getClonedObject;
 import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity.COMPUTE;
 import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionEntity.PORT;
@@ -23,8 +26,11 @@ import static org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.co
 import static org.openecomp.sdc.translator.services.heattotosca.Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX;
 import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_PREFIX;
 import static org.openecomp.sdc.translator.services.heattotosca.Constants.COMPUTE_IDENTICAL_VALUE_PROPERTY_SUFFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.GROUP;
 import static org.openecomp.sdc.translator.services.heattotosca.Constants.PORT_IDENTICAL_VALUE_PROPERTY_PREFIX;
 import static org.openecomp.sdc.translator.services.heattotosca.Constants.SUB_INTERFACE_PROPERTY_VALUE_PREFIX;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.SUB_INTERFACE_ROLE;
+import static org.openecomp.sdc.translator.services.heattotosca.Constants.VFC_PARENT_PORT_ROLE;
 import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getComputeTypeSuffix;
 import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getConnectedComputeConsolidationData;
 import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getNewComputeNodeTemplateId;
@@ -34,6 +40,7 @@ import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositi
 import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTemplateConsolidationDataList;
 import static org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionUtil.getSubInterfaceTypeSuffix;
 
+import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.commons.collections4.CollectionUtils;
@@ -268,6 +275,92 @@ public class UnifiedCompositionService {
 
   }
 
+  public void createVfcInstanceGroup(String abstractNodeTemplateId,
+                                     ServiceTemplate serviceTemplate,
+                                     List<UnifiedCompositionData> unifiedCompositionDataList,
+                                     TranslationContext context) {
+    if (!TranslationContext.isVfcInstanceGroupingEnabled()) {
+      return;
+    }
+    for (UnifiedCompositionData unifiedCompositionData : unifiedCompositionDataList) {
+      List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+          getSubInterfaceTemplateConsolidationDataList(unifiedCompositionData);
+      if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) {
+        createVfcInstanceGroupPerSubInterface(abstractNodeTemplateId, serviceTemplate,
+            subInterfaceTemplateConsolidationDataList, context);
+      }
+    }
+  }
+
+  private void createVfcInstanceGroupPerSubInterface(String abstractNodeTemplateId,
+                                                     ServiceTemplate serviceTemplate,
+                                                     List<SubInterfaceTemplateConsolidationData>
+                                                         subInterfaceList,
+                                                     TranslationContext context) {
+    for (SubInterfaceTemplateConsolidationData subInterface : subInterfaceList) {
+      PortTemplateConsolidationData subInterfacePortTemplateConsolidationData =
+          getSubInterfacePortTemplateConsolidationData(serviceTemplate, subInterface, context);
+      String subInterfaceNetworkRole = subInterface.getNetworkRole();
+      if (Objects.isNull(subInterfaceNetworkRole)
+          || Objects.isNull(subInterfacePortTemplateConsolidationData.getNetworkRole())) {
+        continue;
+      }
+      String vfcNetworkRoleGroupId = getVfcNetworkRoleGroupId(subInterfaceNetworkRole);
+      Map<String, GroupDefinition> groups = DataModelUtil.getGroups(serviceTemplate);
+      if (!groups.containsKey(vfcNetworkRoleGroupId)) {
+        createNewVfcInstanceGroup(serviceTemplate, subInterfacePortTemplateConsolidationData,
+            subInterfaceNetworkRole, vfcNetworkRoleGroupId);
+      }
+      DataModelUtil.addGroupMember(serviceTemplate, vfcNetworkRoleGroupId, abstractNodeTemplateId);
+    }
+  }
+
+  private void createNewVfcInstanceGroup(ServiceTemplate serviceTemplate,
+                                         PortTemplateConsolidationData portTemplate,
+                                         String subInterfaceNetworkRole,
+                                         String vfcNetworkRoleGroupId) {
+    Map<String, Object> properties = new HashMap<>();
+    properties.put(SUB_INTERFACE_ROLE, subInterfaceNetworkRole);
+    properties.put(VFC_PARENT_PORT_ROLE, portTemplate.getNetworkRole());
+
+    updateVfcInstanceGroupExposedProperties(subInterfaceNetworkRole,
+        serviceTemplate, properties);
+
+    GroupDefinition groupDefinition = new GroupDefinition();
+    groupDefinition.setType(GROUP_TYPE_PREFIX + VFC_INSTANCE_GROUP);
+    groupDefinition.setProperties(properties);
+
+    DataModelUtil.addGroupDefinitionToTopologyTemplate(serviceTemplate,
+        vfcNetworkRoleGroupId, groupDefinition);
+  }
+
+  private void updateVfcInstanceGroupExposedProperties(String subInterfaceNetworkRole,
+                                                       ServiceTemplate serviceTemplate,
+                                                       Map<String, Object> properties) {
+    List<String> exposedVfcInstanceGroupingProperties =
+        TranslationContext.getExposedVfcInstanceGroupingProperties();
+
+    if (CollectionUtils.isEmpty(exposedVfcInstanceGroupingProperties)) {
+      return;
+    }
+
+    for (String propertyName : exposedVfcInstanceGroupingProperties) {
+      Map<String, Object> getInputMap = new HashMap<>();
+      String vfcGroupPropertyInputName = subInterfaceNetworkRole + "_" + propertyName;
+      getInputMap.put(GET_INPUT.getDisplayName(), vfcGroupPropertyInputName);
+      properties.put(propertyName, getInputMap);
+
+      addInputParameter(vfcGroupPropertyInputName, PropertyType.STRING.getDisplayName(), null,
+          serviceTemplate);
+    }
+  }
+
+  private String getVfcNetworkRoleGroupId(String subInterfaceNetworkRole) {
+    StringBuilder sb = new StringBuilder();
+    sb.append(subInterfaceNetworkRole).append("_").append(GROUP);
+    return sb.toString();
+  }
+
   /**
    * Update the connectivity from/to the "moved" nodes from the original service template to the new
    * substitution service template.
@@ -2612,7 +2705,7 @@ public class UnifiedCompositionService {
       case SUB_INTERFACE:
         String subInterfaceType = getSubInterfaceTypeSuffix(nodeTemplate.getType());
         if (Objects.isNull(portTemplateConsolidationData)
-                || isSubInterfaceNodeTemplateIdParameter(portTemplateConsolidationData, nodeTemplate)) {
+                || portTemplateConsolidationData.isSubInterfaceNodeTemplateIdParameter(nodeTemplate.getType())) {
           paramterId = UnifiedCompositionEntity.SUB_INTERFACE.getDisplayName().toLowerCase() + "_"
                   + nodeTemplateId + "_" + propertyId;
         } else {
@@ -2626,14 +2719,6 @@ public class UnifiedCompositionService {
     return paramterId;
   }
 
-  private boolean isSubInterfaceNodeTemplateIdParameter(PortTemplateConsolidationData portTemplateConsolidationData,
-                                                        NodeTemplate nodeTemplate) {
-    List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
-            portTemplateConsolidationData.getSubInterfaceConsolidationData(nodeTemplate.getType());
-    return (Objects.nonNull(subInterfaceTemplateConsolidationDataList)
-            && subInterfaceTemplateConsolidationDataList.size() > 1) ;
-  }
-
   private void removeConnectivityOut(EntityConsolidationData entityConsolidationData,
                                      NodeTemplate nodeTemplate) {
     if (MapUtils.isEmpty(entityConsolidationData.getNodesConnectedOut())) {
@@ -2966,7 +3051,9 @@ public class UnifiedCompositionService {
             getPortTemplateConsolidationDataList(unifiedCompositionData);
     for (PortTemplateConsolidationData portTemplateConsolidationData :
             portTemplateConsolidationDataList) {
-      subInterfaceTypes.addAll(portTemplateConsolidationData.getAllSubInterfaceNodeTypes());
+      ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceTypeToEntity = ArrayListMultimap.create();
+      portTemplateConsolidationData.copyMappedInto(subInterfaceTypeToEntity);
+      subInterfaceTypes.addAll(subInterfaceTypeToEntity.keySet());
     }
 
     if (subInterfaceTypes.stream().map(UnifiedCompositionUtil::getSubInterfaceTypeSuffix)
index 4d9a269..223dc87 100644 (file)
@@ -18,7 +18,6 @@ package org.openecomp.sdc.translator.services.heattotosca;
 
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
@@ -39,8 +38,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * Utility class for consolidation data collection helper methods.
@@ -80,32 +77,11 @@ public class UnifiedCompositionUtil {
                                                     portTemplateConsolidationDataCollection) {
     ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceDataByType = ArrayListMultimap.create();
     for (PortTemplateConsolidationData port : portTemplateConsolidationDataCollection) {
-      Set<String> allSubInterfaceNodeTypes = port.getAllSubInterfaceNodeTypes();
-      if (CollectionUtils.isEmpty(allSubInterfaceNodeTypes)) {
-        continue;
-      }
-      for (String subInterfaceNodeType : allSubInterfaceNodeTypes) {
-        subInterfaceDataByType.putAll(subInterfaceNodeType,
-            port.getSubInterfaceConsolidationData(subInterfaceNodeType));
-      }
+      port.copyMappedInto(subInterfaceDataByType);
     }
     return subInterfaceDataByType;
   }
 
-  static List<String> getSubInterfaceNodeTemplateIdsByType(PortTemplateConsolidationData
-                                                               portTemplateConsolidationData,
-                                                           String subInterfaceType) {
-    List<String> subInterfaceNodeTemplateIds = new ArrayList<>();
-    List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
-        portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType);
-    if (CollectionUtils.isNotEmpty(subInterfaceTemplateConsolidationDataList)) {
-      subInterfaceNodeTemplateIds = subInterfaceTemplateConsolidationDataList.stream()
-          .map(SubInterfaceTemplateConsolidationData::getNodeTemplateId)
-          .collect(Collectors.toList());
-    }
-    return subInterfaceNodeTemplateIds;
-  }
-
   private static void addPortsToMap(Map<String, List<String>> portTypeToIds,
                                     Map<String, List<String>> ports) {
     for (Map.Entry<String, List<String>> portTypeToIdEntry : ports.entrySet()) {
@@ -184,21 +160,14 @@ public class UnifiedCompositionUtil {
     NodeTemplate subInterfaceNodeTemplate =
         DataModelUtil.getNodeTemplate(serviceTemplate, subInterfaceTemplateConsolidationData.getNodeTemplateId());
     if (Objects.nonNull(portTemplateConsolidationData)) {
-      List<String> subInterfaceNodeTemplateIdsByType =
-          UnifiedCompositionUtil.getSubInterfaceNodeTemplateIdsByType(portTemplateConsolidationData,
-              subInterfaceNodeTemplate.getType());
-      if (CollectionUtils.isNotEmpty(subInterfaceNodeTemplateIdsByType)) {
-        //If there are more than one subinterfaces with same type use node template id
-        if (subInterfaceNodeTemplateIdsByType.size() > 1) {
-          newSubInterfaceNodeTemplateId.append("_").append(subInterfaceTemplateConsolidationData.getNodeTemplateId());
-        } else {
-          //Add sub interface type since we have only one subinterface per type
-          String subInterfaceTypeSuffix = getSubInterfaceTypeSuffix(subInterfaceNodeTemplate.getType());
-          newSubInterfaceNodeTemplateId.append("_").append(subInterfaceTypeSuffix);
-        }
+        String subInterfaceSuffix = (portTemplateConsolidationData.isSubInterfaceNodeTemplateIdParameter(subInterfaceNodeTemplate.getType()))?
+              //If there are more than one subinterfaces with same type use node template id
+              subInterfaceTemplateConsolidationData.getNodeTemplateId():
+                    //Add sub interface type since we have only one subinterface per type
+                     getSubInterfaceTypeSuffix(subInterfaceNodeTemplate.getType());
+        newSubInterfaceNodeTemplateId.append("_").append(subInterfaceSuffix);
         return newSubInterfaceNodeTemplateId.toString();
       }
-    }
     return subInterfaceTemplateConsolidationData.getNodeTemplateId();
   }
 
index dfb40af..ad7deb9 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright Â© 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
 
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
@@ -12,31 +28,26 @@ import java.util.Optional;
 
 public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
 
-  UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
-
-  // There is consolidation in ScalingInstance implemetation.
+  // There is consolidation in ScalingInstance implementation.
   // In case of scaling instance, if there is more than one entry in the
-  // unifiedComposotionDataList, we should have consolidation between them.
+  // unifiedCompositionDataList, we should have consolidation between them.
   // (all entries in the list are the once which need to be consolidated)
   @Override
   public void createUnifiedComposition(ServiceTemplate serviceTemplate,
                                        ServiceTemplate nestedServiceTemplate,
-                                       List<UnifiedCompositionData> unifiedComposotionDataList,
+                                       List<UnifiedCompositionData> unifiedCompositionDataList,
                                        TranslationContext context) {
 
     UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
     unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
 
-    UnifiedCompositionSingleSubstitution unifiedCompositionSingleSubstitution =
-        new UnifiedCompositionSingleSubstitution();
-
     String substitutionNodeTypeId =
         unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
-            unifiedComposotionDataList.get(0), null, context);
+            unifiedCompositionDataList.get(0), null, context);
     // create one substitution ST for all computes
     Optional<ServiceTemplate> substitutionServiceTemplate =
         unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
-            unifiedComposotionDataList, context, substitutionNodeTypeId, null);
+            unifiedCompositionDataList, context, substitutionNodeTypeId, null);
 
     if (!substitutionServiceTemplate.isPresent()) {
       return;
@@ -44,16 +55,19 @@ public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
 
 
     // create abstract NT for each compute
-    for(int i = 0; i < unifiedComposotionDataList.size(); i++){
+    for (int i = 0; i < unifiedCompositionDataList.size(); i++) {
       List<UnifiedCompositionData> catalogInstanceUnifiedList = new ArrayList<>();
-      catalogInstanceUnifiedList.add(unifiedComposotionDataList.get(i));
+      catalogInstanceUnifiedList.add(unifiedCompositionDataList.get(i));
 
-      Integer index = unifiedComposotionDataList.size() > 1 ? i : null;
+      Integer index = unifiedCompositionDataList.size() > 1 ? i : null;
 
-      unifiedCompositionService
+      String abstractSubstituteNodeTemplateId = unifiedCompositionService
           .createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
               catalogInstanceUnifiedList, substitutionNodeTypeId, context, index);
 
+      unifiedCompositionService.createVfcInstanceGroup(abstractSubstituteNodeTemplateId,
+          serviceTemplate, catalogInstanceUnifiedList, context);
+
       unifiedCompositionService
           .updateCompositionConnectivity(serviceTemplate, catalogInstanceUnifiedList, context);
 
@@ -61,7 +75,7 @@ public class UnifiedCompositionCatalogInstance implements UnifiedComposition {
           .cleanUnifiedCompositionEntities(serviceTemplate, catalogInstanceUnifiedList, context);
     }
 
-    unifiedCompositionService.cleanNodeTypes(serviceTemplate, unifiedComposotionDataList, context);
+    unifiedCompositionService.cleanNodeTypes(serviceTemplate, unifiedCompositionDataList, context);
     unifiedCompositionService.updateSubstitutionNodeTypePrefix(substitutionServiceTemplate.get());
   }
 }
index 9572f67..6f53249 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright Â© 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
 
 import org.apache.commons.collections4.CollectionUtils;
@@ -26,21 +42,23 @@ public class UnifiedCompositionScalingInstances implements UnifiedComposition {
 
     unifiedCompositionService.handleComplexVfcType(serviceTemplate, context);
 
-    Integer index = null;
     String substitutionNodeTypeId =
         unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
             unifiedCompositionDataList.get(0), null, context);
     Optional<ServiceTemplate> substitutionServiceTemplate =
         unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
-            unifiedCompositionDataList, context, substitutionNodeTypeId, index);
+            unifiedCompositionDataList, context, substitutionNodeTypeId, null);
 
     if (!substitutionServiceTemplate.isPresent()) {
       return;
     }
 
-    String abstractNodeTemplateId = unifiedCompositionService
+    String abstractSubstituteNodeTemplateId = unifiedCompositionService
         .createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
-            unifiedCompositionDataList, substitutionNodeTypeId, context, index);
+            unifiedCompositionDataList, substitutionNodeTypeId, context, null);
+
+    unifiedCompositionService.createVfcInstanceGroup(abstractSubstituteNodeTemplateId,
+        serviceTemplate, unifiedCompositionDataList, context);
 
     unifiedCompositionService
         .updateCompositionConnectivity(serviceTemplate, unifiedCompositionDataList, context);
index ef95553..ee5d465 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright Â© 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
 
 import org.apache.commons.collections4.CollectionUtils;
@@ -17,14 +33,14 @@ import java.util.Optional;
  */
 public class UnifiedCompositionSingleSubstitution implements UnifiedComposition {
 
-  UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
+  private UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
 
-  // There is no consolidation in SingleSubstitution implemetation.
+  // There is no consolidation in SingleSubstitution implementation.
   // In case of single substitution, if there is more than one entry in the
-  // unifiedComposotionDataList, they all should contain the same compute type but the
+  // unifiedCompositionDataList, they all should contain the same compute type but the
   // consolidation between them was canceled.
   // For different compute type, this implementation will be called more than once, each time
-  // per diff compute type, while sending one entry in the unifiedComposotionDataList.
+  // per diff compute type, while sending one entry in the unifiedCompositionDataList.
   @Override
   public void createUnifiedComposition(ServiceTemplate serviceTemplate,
                                        ServiceTemplate nestedServiceTemplate,
@@ -41,8 +57,6 @@ public class UnifiedCompositionSingleSubstitution implements UnifiedComposition
       List<UnifiedCompositionData> singleSubstitutionUnifiedList = new ArrayList<>();
       singleSubstitutionUnifiedList.add(unifiedCompositionDataList.get(i));
 
-      Integer index = unifiedCompositionDataList.size() > 1 ? i : null;
-
       String substitutionNodeTypeId =
           unifiedCompositionService.getSubstitutionNodeTypeId(serviceTemplate,
               singleSubstitutionUnifiedList.get(0), null, context);
@@ -55,11 +69,13 @@ public class UnifiedCompositionSingleSubstitution implements UnifiedComposition
         continue;
       }
 
-
-      String abstractNodeTemplateId = unifiedCompositionService
+      String abstractSubstituteNodeTemplateId = unifiedCompositionService
           .createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
               singleSubstitutionUnifiedList, substitutionNodeTypeId, context, null);
 
+      unifiedCompositionService.createVfcInstanceGroup(abstractSubstituteNodeTemplateId,
+          serviceTemplate, singleSubstitutionUnifiedList, context);
+
       unifiedCompositionService
           .updateCompositionConnectivity(serviceTemplate, singleSubstitutionUnifiedList, context);
 
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-unifiedModel.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/resources/config-unifiedModel.json
new file mode 100644 (file)
index 0000000..5fe6ef5
--- /dev/null
@@ -0,0 +1,16 @@
+{
+  "unifiedModelImpl": {
+    "vfcInstanceGroup": {
+      "enable": true,
+      "properties": {
+        "exposedProperties": [
+          "network_collection_function",
+          "vfc_instance_group_function"
+        ]
+      }
+    }
+  },
+  "_config": {
+    "namespace": "unifiedModel"
+  }
+}
\ No newline at end of file
index d27eb20..ca31c85 100644 (file)
@@ -29,13 +29,15 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
       "/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1b/";
   private static final String PATTERN_1C1_BASE_DIRECTORY =
       "/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern1c1/";
-  private static final String PATTERN_5_BASE_DIRECTORY =
-      "/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/";
   private static final String PATTERN_4_BASE_DIRECTORY =
       "/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern4/";
+  private static final String PATTERN_5_BASE_DIRECTORY =
+      "/mock/services/heattotosca/fulltest/subinterface/vlantagging/pattern5/";
+  private static final String VFC_INSTANCE_GROUP_BASE_DIRECTORY =
+      "/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/";
 
   @Test
-  public void testSubInterfaceComputePortNetwork() throws IOException {
+  public void testSubInterfaceComputePortNetworkWithGroup() throws IOException {
     /**
      * Heat file with one compute, one port and one subinterface resource group with only port
      * connected to network
@@ -199,7 +201,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
   }
 
   @Test
-  public void testSubInterfaceScalingMultiplePortsMultipleVlans() throws IOException {
+  public void testSubInterfaceScalingMultiplePortsMultipleVlansWithGroup() throws IOException {
     /**
      * Heat file with two computes of different type, four ports of two types each and four subinterface resource groups
      * of two types each
@@ -293,8 +295,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
      * 2. Second level nested is having one VFC and one Port with Sub interface which are of
      * different type as parent heat file
      */
-    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY +
-        "complexVFCMultiLevelNestedDiffComputeScenario");
+    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY + "complexVFCMultiLevelNestedDiffComputeScenario");
   }
 
   @Test
@@ -304,8 +305,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
      * 1. Main is having 4 VFC of 2 type and 2 port and all having sub interface
      * 2. Second level nested is having 4 VFC of 2 type and 2 port and all having sub interface
      */
-    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY +
-        "complexVFCMultiVFCInAllHeatScalingScenario");
+    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY + "complexVFCMultiVFCInAllHeatScalingScenario");
   }
 
   @Test
@@ -315,8 +315,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
      * 1. First level nested is having one VFC and one Port with Sub interface
      * 2. Second level nested is having two VFC of same type and two Port with Sub interface
      */
-    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY +
-        "complexVFCMultiLevelNestedMultiComputeScenario");
+    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY + "complexVFCMultiLevelNestedMultiComputeScenario");
   }
 
   @Test
@@ -328,8 +327,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
      * 2. Second level nested is having two VFC of same type and one Port with only one port
      * connected to Sub interface
      */
-    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY +
-        "complexVFCWithDiffSubInfConnectivityScenario");
+    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY + "complexVFCWithDiffSubInfConnectivityScenario");
   }
 
   //Catalog instance will start working with 1C2 changes in place
@@ -342,8 +340,7 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
      * 2. Second level nested is having two VFC of same type and connected to Sub interface but
      * having different count
      */
-    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY +
-        "complexVFCWithDiffSubInfCountScenario");
+    testTranslationWithInit(PATTERN_5_BASE_DIRECTORY + "complexVFCWithDiffSubInfCountScenario");
   }
 
   //Pattern 4 Test Cases
@@ -430,4 +427,21 @@ public class UnifiedCompositionSubInterfaceFullTest extends BaseFullTranslationT
      */
     testTranslationWithInit(PATTERN_4_BASE_DIRECTORY + "subInterfaceNodesConnectedOut");
   }
+
+  //****************** VFC Instance Group Tests ***************************
+
+  @Test
+  public void testGroupingOneSubInterfaceTypeOneAbstractNode() throws IOException {
+    testTranslationWithInit(VFC_INSTANCE_GROUP_BASE_DIRECTORY + "oneSubInterfaceNetworkRole");
+  }
+
+  @Test
+  public void testGroupingOneSubInterfaceTypeAndTwoAbstractNodes() throws IOException {
+    testTranslationWithInit(VFC_INSTANCE_GROUP_BASE_DIRECTORY + "oneSubInterfaceNetworkRoleAndTwoAbstractNodes");
+  }
+
+  @Test
+  public void testGroupingTwoSubInterfaceTypeAndTwoAbstractNodes() throws IOException {
+    testTranslationWithInit(VFC_INSTANCE_GROUP_BASE_DIRECTORY + "twoSubInterfaceNetworkRoleAndTwoAbstractNodes");
+  }
 }
index 39a2a27..e37ac07 100644 (file)
@@ -113,8 +113,8 @@ resources:
       name:
         get_param: vdbe_name_1
       networks:
-        - port: {get_resource: vdbe_untr_1_port}
-  vdbe_untr_1_port:
+        - port: {get_resource: vdbe_1_untr_vmi_1}
+  vdbe_1_untr_vmi_1:
     type: OS::ContrailV2::VirtualMachineInterface
     properties:
       name:
@@ -195,7 +195,7 @@ resources:
           mac_address:
             get_param: vdbe_hw_untr_mac_1
           parent_interface:
-            get_resource: vdbe_untr_1_port
+            get_resource: vdbe_1_untr_vmi_1
           subinterfaces_name_prefix:
             str_replace:
               params:
index ee07a44..b0d27fd 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: GlobalSubstitutionTypes\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-node_types:\r
-  org.openecomp.resource.abstract.nodes.vdbe:\r
-    derived_from: org.openecomp.resource.abstract.nodes.VFC\r
-    properties:\r
-      subinterface_nested_parent_interface:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_aap_address_mode:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_vlan_tag_list:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      compute_vdbe_availability_zone:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_aap_untrusted_v6_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      vm_flavor_name:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      untrusted_num_vn:\r
-        type: float\r
-        description: Number of vDBE subinterface virtual Networks\r
-        required: true\r
-        status: SUPPORTED\r
-        constraints:\r
-        - in_range:\r
-          - 1\r
-          - 77\r
-      subinterface_nested_aap_untrusted_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      vm_image_name:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_network_role:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterface_nested_aap_sec_untrusted_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_aap_sec_untrusted_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_aap_untrusted_v6_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      compute_vdbe_metadata:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      subinterface_nested_mac_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_virtual_network_refs:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      port_vdbe_untr_1_port_ip_requirements:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: org.openecomp.datatypes.network.IpRequirements\r
-      subinterface_nested_ip_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_ip_v6_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_mac_requirements:\r
-        type: org.openecomp.datatypes.network.MacRequirements\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_order:\r
-        type: integer\r
-        required: true\r
-        status: SUPPORTED\r
-      index_value:\r
-        type: integer\r
-        description: Index value of this substitution service template runtime instance\r
-        required: false\r
-        default: 0\r
-        status: SUPPORTED\r
-        constraints:\r
-        - greater_or_equal: 0\r
-      subinterface_nested_vmac_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_vn_network_list:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_exCP_naming:\r
-        type: org.openecomp.datatypes.Naming\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_subnetpoolid:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_name:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_virtual_machine_interface_allowed_address_pairs:\r
-        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterface_nested_aap_untrusted_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_nested_subinterfaces_name_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      compute_vdbe_name:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_network_role_tag:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_vlan_requirements:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: org.openecomp.datatypes.network.VlanRequirements\r
-      port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-    requirements:\r
-    - dependency_vdbe_vdbe_untr_1_port_nested:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - dependency_vdbe_untr_x_subport_vdbe_vdbe_untr_1_port_nested:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_untr_x_subport_vdbe_vdbe_untr_1_port_nested:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - dependency_vdbe:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - local_storage_vdbe:\r
-        capability: tosca.capabilities.Attachment\r
-        node: tosca.nodes.BlockStorage\r
-        relationship: tosca.relationships.AttachesTo\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - dependency_vdbe_vdbe_untr_1_port:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_vdbe_untr_1_port:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    capabilities:\r
-      feature_vdbe:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.iops_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      endpoint_vdbe:\r
-        type: tosca.capabilities.Endpoint.Admin\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.ephemeral.size_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_untr_x_subport_vdbe_vdbe_untr_1_port_nested:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      cpu_util_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      vcpus_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.latency_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.requests.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_vdbe_untr_1_port:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.bytes.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.packets.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      scalable_vdbe:\r
-        type: tosca.capabilities.Scalable\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.iops_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.capacity_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.bytes_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.allocation_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.usage_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      memory.usage_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.read.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.bytes_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      instance_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      cpu.delta_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      binding_vdbe_vdbe_untr_1_port:\r
-        type: tosca.capabilities.network.Bindable\r
-        valid_source_types:\r
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-      disk.device.read.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      memory.resident_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      forwarder_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.Forwarder\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_vdbe_untr_1_port_nested:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.requests.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      cpu_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.usage_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.read.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.latency_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.packets.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.capacity_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      host_vdbe:\r
-        type: tosca.capabilities.Container\r
-        valid_source_types:\r
-        - tosca.nodes.SoftwareComponent\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.allocation_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outpoing.packets_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.packets_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.read.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      os_vdbe:\r
-        type: tosca.capabilities.OperatingSystem\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.read.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.root.size_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      memory_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      binding_vdbe:\r
-        type: tosca.capabilities.network.Bindable\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.bytes.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.read.requests.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.read.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-  org.openecomp.resource.abstract.nodes.heat.subinterface.nested:\r
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute\r
-    properties:\r
-      aap_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_sec_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_v6_address:\r
-        type: string\r
-        description: IPv6 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      counter:\r
-        type: float\r
-        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterfaces_name_prefix:\r
-        type: string\r
-        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_address:\r
-        type: string\r
-        description: IPv4 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_address_mode:\r
-        type: string\r
-        description: Address mode for the vDBE cluster IP\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix:\r
-        type: string\r
-        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      parent_interface:\r
-        type: string\r
-        description: Parent Contrail interface\r
-        required: true\r
-        status: SUPPORTED\r
-      vn_network_list:\r
-        type: string\r
-        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-        required: true\r
-        status: SUPPORTED\r
-      mac_address:\r
-        type: string\r
-        description: HW MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      vlan_tag_list:\r
-        type: list\r
-        description: List of VLAN IDs to use for subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      aap_sec_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      vmac_address:\r
-        type: string\r
-        description: virtual MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix_len:\r
-        type: string\r
-        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-    requirements:\r
-    - dependency_vdbe_untr_x_subport:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_untr_x_subport:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - binding_vdbe_untr_x_subport:\r
-        capability: tosca.capabilities.network.Bindable\r
-        node: org.openecomp.resource.cp.nodes.network.Port\r
-        relationship: tosca.relationships.network.BindsTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    capabilities:\r
-      feature_vdbe_untr_x_subport:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: GlobalSubstitutionTypes
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+node_types:
+  org.openecomp.resource.abstract.nodes.vdbe:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_vdbe_untr_vmi_virtual_machine_interface_allowed_address_pairs:
+        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_vmi_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_vdbe_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      untrusted_num_vn:
+        type: float
+        description: Number of vDBE subinterface virtual Networks
+        required: true
+        status: SUPPORTED
+        constraints:
+        - in_range:
+          - 1
+          - 77
+      port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_nested_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_nested_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_virtual_network_refs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_vdbe_untr_vmi_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      subinterface_nested_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      subinterface_nested_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      subinterface_nested_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_vmi_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      subinterface_nested_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_vmi_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+    requirements:
+    - dependency_vdbe:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_vdbe:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_vdbe_untr_vmi:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_vdbe_untr_vmi:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe_vdbe_untr_vmi_nested:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_0_untr_vmi_0_vdbe_vdbe_untr_vmi_nested:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_untr_vmi_0_vdbe_vdbe_untr_vmi_nested:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_vdbe_untr_vmi_nested:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_vdbe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_vmi:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_vdbe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe_vdbe_untr_vmi:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      disk.device.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_0_untr_vmi_0_vdbe_vdbe_untr_vmi_nested:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_vdbe:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_vdbe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      forwarder_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.Forwarder
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.subinterface.nested:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      vn_network_list:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_0_untr_vmi_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_untr_vmi_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_0_untr_vmi_0:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_0_untr_vmi_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
\ No newline at end of file
index 9ca2cbf..6d4cbf9 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: Main\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-topology_template:\r
-  inputs:\r
-    vf_module_id:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vf_module_id\r
-      type: string\r
-      description: Unique ID for this VF module inst\r
-    control_int_net_rpf:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_rpf\r
-      type: string\r
-      description: Reverse Path Filtering enable or disable for the control virtual network\r
-    control_int_net_forwarding_mode:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_forwarding_mode\r
-      type: string\r
-      description: forwarding mode of the control virtual network\r
-    vnf_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vnf_name\r
-      type: string\r
-      description: Unique name for this VF instance\r
-    vdbe_untrusted_ip_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_ip_1\r
-      type: string\r
-      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network\r
-    vdbe_aap_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_ip_prefix_len\r
-      type: string\r
-      description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-    aap_address_mode:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: aap_address_mode\r
-      type: string\r
-      description: Address mode for the vDBE cluster IP\r
-    control_int_net_shared:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_shared\r
-      type: boolean\r
-      description: control virtual network shared\r
-    vdbe_untrusted_v6_ip_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_v6_ip_1\r
-      type: string\r
-      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network\r
-    vdbe_untrusted_vmac_address:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_vmac_address\r
-      type: string\r
-      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network\r
-    control_int_net_flood_unknown_unicast:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_flood_unknown_unicast\r
-      type: boolean\r
-      description: forwarding mode of the control virtual network\r
-    vdbe_aap_sec_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_sec_untrusted_ip_prefix\r
-      type: string\r
-      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-    vnf_id:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vnf_id\r
-      type: string\r
-      description: Unique ID for this VF inst\r
-    vdbe_name_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_name_1\r
-      type: string\r
-      description: VM Name for this vdbe node 1\r
-    availability_zone_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: availability_zone_1\r
-      type: string\r
-      description: The availability zone of secondary node1 vDBE vm in the local HA pair.\r
-    untrusted_vn_networks:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_vn_networks\r
-      type: list\r
-      description: List of subinterface virtual networks\r
-      entry_schema:\r
-        type: string\r
-    vdbe_image_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_image_name\r
-      type: string\r
-      description: Image to use for vDBE\r
-    oam_net_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: oam_net_name\r
-      type: string\r
-      description: Name of NSDNet network from which the management IP addresses will be allocated\r
-    vdbe_aap_sec_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_sec_untrusted_ip_prefix_len\r
-      type: string\r
-      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-    vdbe_aap_untrusted_v6_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_v6_ip_prefix\r
-      type: string\r
-      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-    vdbe_aap_untrusted_v6_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_v6_ip_prefix_len\r
-      type: string\r
-      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-    untrusted_vlan_tags:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_vlan_tags\r
-      type: list\r
-      description: List of subinterface vlan tags\r
-      entry_schema:\r
-        type: string\r
-    vdbe_flavor_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_flavor_name\r
-      type: string\r
-      description: Flavor to use for vDBE\r
-    vdbe_hw_untr_mac_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_hw_untr_mac_1\r
-      type: string\r
-      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network\r
-    untrusted_net_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_net_name\r
-      type: string\r
-      description: Name of public untrusted network into which this vDBE HA cluster is deployed\r
-    vdbe_device_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_device_name\r
-      type: string\r
-      description: VDBE device Name for this vdbe VNF\r
-    vdbe_aap_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_ip_prefix\r
-      type: string\r
-      description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-  node_templates:\r
-    control_int_net:\r
-      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork\r
-      properties:\r
-        network_name:\r
-          str_replace:\r
-            template: VNF_NAME_control_net\r
-            params:\r
-              VNF_NAME:\r
-                get_input: vnf_name\r
-    abstract_vdbe:\r
-      type: org.openecomp.resource.abstract.nodes.vdbe\r
-      directives:\r
-      - substitutable\r
-      properties:\r
-        subinterface_nested_parent_interface:\r
-        - vdbe_untr_1_port\r
-        subinterface_nested_aap_address_mode:\r
-        - get_input: aap_address_mode\r
-        subinterface_nested_vlan_tag_list:\r
-        - get_input: untrusted_vlan_tags\r
-        compute_vdbe_availability_zone:\r
-        - get_input: availability_zone_1\r
-        subinterface_nested_aap_untrusted_v6_ip_prefix_len:\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len\r
-        vm_flavor_name:\r
-          get_input: vdbe_flavor_name\r
-        subinterface_nested_aap_untrusted_ip_prefix:\r
-        - get_input: vdbe_aap_untrusted_ip_prefix\r
-        vm_image_name:\r
-          get_input: vdbe_image_name\r
-        subinterface_nested_aap_sec_untrusted_ip_prefix_len:\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len\r
-        subinterface_nested_aap_sec_untrusted_ip_prefix:\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix\r
-        subinterface_nested_aap_untrusted_v6_ip_prefix:\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix\r
-        compute_vdbe_metadata:\r
-        - vf_module_id:\r
-            get_input: vf_module_id\r
-          vnf_id:\r
-            get_input: vnf_id\r
-          vnf_name:\r
-            get_input: vnf_name\r
-        subinterface_nested_mac_address:\r
-        - get_input: vdbe_hw_untr_mac_1\r
-        port_vdbe_untr_1_port_virtual_network_refs:\r
-        - - control_int_net\r
-        subinterface_nested_ip_address:\r
-        - get_input: vdbe_untrusted_ip_1\r
-        subinterface_nested_ip_v6_address:\r
-        - get_input: vdbe_untrusted_v6_ip_1\r
-        subinterface_nested_vmac_address:\r
-        - get_input: vdbe_untrusted_vmac_address\r
-        subinterface_nested_vn_network_list:\r
-        - get_input: untrusted_vn_networks\r
-        port_vdbe_untr_1_port_name:\r
-        - str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        subinterface_nested_aap_untrusted_ip_prefix_len:\r
-        - get_input: vdbe_aap_untrusted_ip_prefix_len\r
-        subinterface_nested_subinterfaces_name_prefix:\r
-        - str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        compute_vdbe_name:\r
-        - get_input: vdbe_name_1\r
-        port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses:\r
-        - - get_input: vdbe_hw_untr_mac_1\r
-        service_template_filter:\r
-          substitute_service_template: Nested_vdbeServiceTemplate.yaml\r
-          count: 1\r
-        index_value:\r
-          get_property:\r
-          - SELF\r
-          - service_template_filter\r
-          - index_value\r
-      requirements:\r
-      - link_vdbe_vdbe_untr_1_port:\r
-          capability: tosca.capabilities.network.Linkable\r
-          node: control_int_net\r
-          relationship: tosca.relationships.network.LinksTo\r
-  groups:\r
-    main_group:\r
-      type: org.openecomp.groups.heat.HeatStack\r
-      properties:\r
-        heat_file: ../Artifacts/main.yml\r
-        description: |\r
-          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)\r
-      members:\r
-      - control_int_net\r
-      - abstract_vdbe\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Main
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    vf_module_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vf_module_id
+      type: string
+      description: Unique ID for this VF module inst
+    control_int_net_rpf:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_rpf
+      type: string
+      description: Reverse Path Filtering enable or disable for the control virtual network
+    control_int_net_forwarding_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_forwarding_mode
+      type: string
+      description: forwarding mode of the control virtual network
+    vnf_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_name
+      type: string
+      description: Unique name for this VF instance
+    vdbe_untrusted_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_ip_1
+      type: string
+      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: aap_address_mode
+      type: string
+      description: Address mode for the vDBE cluster IP
+    control_int_net_shared:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_shared
+      type: boolean
+      description: control virtual network shared
+    vdbe_untrusted_v6_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_v6_ip_1
+      type: string
+      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_untrusted_vmac_address:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_vmac_address
+      type: string
+      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network
+    control_int_net_flood_unknown_unicast:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_flood_unknown_unicast
+      type: boolean
+      description: forwarding mode of the control virtual network
+    vdbe_aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    vnf_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_id
+      type: string
+      description: Unique ID for this VF inst
+    vdbe_name_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_name_1
+      type: string
+      description: VM Name for this vdbe node 1
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: availability_zone_1
+      type: string
+      description: The availability zone of secondary node1 vDBE vm in the local HA pair.
+    untrusted_vn_networks:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vn_networks
+      type: list
+      description: List of subinterface virtual networks
+      entry_schema:
+        type: string
+    vdbe_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_image_name
+      type: string
+      description: Image to use for vDBE
+    oam_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: oam_net_name
+      type: string
+      description: Name of NSDNet network from which the management IP addresses will be allocated
+    vdbe_aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix_len
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    untrusted_vlan_tags:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vlan_tags
+      type: list
+      description: List of subinterface vlan tags
+      entry_schema:
+        type: string
+    untr_network_collection_function:
+      type: string
+      required: true
+    untr_vfc_instance_group_function:
+      type: string
+      required: true
+    vdbe_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_flavor_name
+      type: string
+      description: Flavor to use for vDBE
+    vdbe_hw_untr_mac_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_hw_untr_mac_1
+      type: string
+      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network
+    untrusted_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_net_name
+      type: string
+      description: Name of public untrusted network into which this vDBE HA cluster is deployed
+    vdbe_device_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_device_name
+      type: string
+      description: VDBE device Name for this vdbe VNF
+    vdbe_aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+  node_templates:
+    control_int_net:
+      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+      properties:
+        network_name:
+          str_replace:
+            template: VNF_NAME_control_net
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+    abstract_vdbe:
+      type: org.openecomp.resource.abstract.nodes.vdbe
+      directives:
+      - substitutable
+      properties:
+        subinterface_nested_parent_interface:
+        - vdbe_1_untr_vmi_1
+        subinterface_nested_aap_address_mode:
+        - get_input: aap_address_mode
+        subinterface_nested_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        compute_vdbe_availability_zone:
+        - get_input: availability_zone_1
+        subinterface_nested_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        vm_flavor_name:
+          get_input: vdbe_flavor_name
+        port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses:
+        - - get_input: vdbe_hw_untr_mac_1
+        subinterface_nested_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        vm_image_name:
+          get_input: vdbe_image_name
+        subinterface_nested_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_nested_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        subinterface_nested_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        compute_vdbe_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        subinterface_nested_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        port_vdbe_untr_vmi_virtual_network_refs:
+        - - control_int_net
+        subinterface_nested_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_nested_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        subinterface_nested_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        subinterface_nested_vn_network_list:
+        - get_input: untrusted_vn_networks
+        subinterface_nested_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        port_vdbe_untr_vmi_name:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_nested_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        compute_vdbe_name:
+        - get_input: vdbe_name_1
+        service_template_filter:
+          substitute_service_template: Nested_vdbeServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+      requirements:
+      - link_vdbe_vdbe_untr_vmi:
+          capability: tosca.capabilities.network.Linkable
+          node: control_int_net
+          relationship: tosca.relationships.network.LinksTo
+  groups:
+    main_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/main.yml
+        description: |
+          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+      members:
+      - control_int_net
+      - abstract_vdbe
+    untr_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: untr
+        network_collection_function:
+          get_input: untr_network_collection_function
+        vfc_instance_group_function:
+          get_input: untr_vfc_instance_group_function
+        subinterface_role: untr
+      members:
+      - abstract_vdbe
\ No newline at end of file
index 5e145ab..bb13382 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: Nested_vdbe\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-node_types:\r
-  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:\r
-    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server\r
-topology_template:\r
-  inputs:\r
-    subinterface_nested_parent_interface:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_aap_address_mode:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_vlan_tag_list:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    compute_vdbe_availability_zone:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_aap_untrusted_v6_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    vm_flavor_name:\r
-      type: string\r
-      required: true\r
-    untrusted_num_vn:\r
-      hidden: false\r
-      immutable: false\r
-      type: float\r
-      description: Number of vDBE subinterface virtual Networks\r
-      constraints:\r
-      - in_range:\r
-        - 1\r
-        - 77\r
-    subinterface_nested_aap_untrusted_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    vm_image_name:\r
-      type: string\r
-      required: true\r
-    port_vdbe_untr_1_port_network_role:\r
-      type: string\r
-      required: true\r
-    subinterface_nested_aap_sec_untrusted_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_aap_sec_untrusted_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_aap_untrusted_v6_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    compute_vdbe_metadata:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    subinterface_nested_mac_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_virtual_network_refs:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    port_vdbe_untr_1_port_ip_requirements:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: org.openecomp.datatypes.network.IpRequirements\r
-    subinterface_nested_ip_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_ip_v6_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_mac_requirements:\r
-      type: org.openecomp.datatypes.network.MacRequirements\r
-      required: true\r
-    port_vdbe_untr_1_port_order:\r
-      type: integer\r
-      required: true\r
-    index_value:\r
-      type: integer\r
-      description: Index value of this substitution service template runtime instance\r
-      required: false\r
-      default: 0\r
-      constraints:\r
-      - greater_or_equal: 0\r
-    subinterface_nested_vmac_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_vn_network_list:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_exCP_naming:\r
-      type: org.openecomp.datatypes.Naming\r
-      required: true\r
-    port_vdbe_untr_1_port_subnetpoolid:\r
-      type: string\r
-      required: true\r
-    port_vdbe_untr_1_port_name:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_virtual_machine_interface_allowed_address_pairs:\r
-      type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs\r
-      required: true\r
-    subinterface_nested_aap_untrusted_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_nested_subinterfaces_name_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    compute_vdbe_name:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_network_role_tag:\r
-      type: string\r
-      required: true\r
-    port_vdbe_untr_1_port_vlan_requirements:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: org.openecomp.datatypes.network.VlanRequirements\r
-    port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-  node_templates:\r
-    vdbe_vdbe_untr_1_port_nested:\r
-      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested\r
-      directives:\r
-      - substitutable\r
-      properties:\r
-        aap_untrusted_ip_prefix:\r
-          get_input:\r
-          - subinterface_nested_aap_untrusted_ip_prefix\r
-          - index_value\r
-        aap_sec_untrusted_ip_prefix:\r
-          get_input:\r
-          - subinterface_nested_aap_sec_untrusted_ip_prefix\r
-          - index_value\r
-        ip_v6_address:\r
-          get_input:\r
-          - subinterface_nested_ip_v6_address\r
-          - index_value\r
-        counter:\r
-          get_property:\r
-          - SELF\r
-          - service_template_filter\r
-          - index_value\r
-        ip_address:\r
-          get_input:\r
-          - subinterface_nested_ip_address\r
-          - index_value\r
-        subinterfaces_name_prefix:\r
-          get_input:\r
-          - subinterface_nested_subinterfaces_name_prefix\r
-          - index_value\r
-        aap_address_mode:\r
-          get_input:\r
-          - subinterface_nested_aap_address_mode\r
-          - index_value\r
-        service_template_filter:\r
-          substitute_service_template: nestedServiceTemplate.yaml\r
-          count:\r
-            get_input: untrusted_num_vn\r
-          mandatory: false\r
-        aap_untrusted_v6_ip_prefix:\r
-          get_input:\r
-          - subinterface_nested_aap_untrusted_v6_ip_prefix\r
-          - index_value\r
-        parent_interface:\r
-          get_input:\r
-          - subinterface_nested_parent_interface\r
-          - index_value\r
-        vn_network_list:\r
-          get_input:\r
-          - subinterface_nested_vn_network_list\r
-          - index_value\r
-        mac_address:\r
-          get_input:\r
-          - subinterface_nested_mac_address\r
-          - index_value\r
-        vlan_tag_list:\r
-          get_input:\r
-          - subinterface_nested_vlan_tag_list\r
-          - index_value\r
-        aap_sec_untrusted_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_nested_aap_sec_untrusted_ip_prefix_len\r
-          - index_value\r
-        vmac_address:\r
-          get_input:\r
-          - subinterface_nested_vmac_address\r
-          - index_value\r
-        aap_untrusted_v6_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_nested_aap_untrusted_v6_ip_prefix_len\r
-          - index_value\r
-        aap_untrusted_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_nested_aap_untrusted_ip_prefix_len\r
-          - index_value\r
-      requirements:\r
-      - binding_vdbe_untr_x_subport:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe_vdbe_untr_1_port\r
-          relationship: tosca.relationships.network.BindsTo\r
-    vdbe:\r
-      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe\r
-      properties:\r
-        availability_zone:\r
-          get_input:\r
-          - compute_vdbe_availability_zone\r
-          - index_value\r
-        flavor:\r
-          get_input: vm_flavor_name\r
-        metadata:\r
-          get_input:\r
-          - compute_vdbe_metadata\r
-          - index_value\r
-        image:\r
-          get_input: vm_image_name\r
-        name:\r
-          get_input:\r
-          - compute_vdbe_name\r
-          - index_value\r
-    vdbe_vdbe_untr_1_port:\r
-      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface\r
-      properties:\r
-        mac_requirements:\r
-          get_input: port_vdbe_untr_1_port_mac_requirements\r
-        order:\r
-          get_input: port_vdbe_untr_1_port_order\r
-        exCP_naming:\r
-          get_input: port_vdbe_untr_1_port_exCP_naming\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_virtual_machine_interface_allowed_address_pairs\r
-          - index_value\r
-        vlan_requirements:\r
-          get_input: port_vdbe_untr_1_port_vlan_requirements\r
-        virtual_network_refs:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_virtual_network_refs\r
-          - index_value\r
-        ip_requirements:\r
-          get_input: port_vdbe_untr_1_port_ip_requirements\r
-        network_role_tag:\r
-          get_input: port_vdbe_untr_1_port_network_role_tag\r
-        virtual_machine_interface_mac_addresses:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses\r
-          - index_value\r
-        network_role:\r
-          get_input: port_vdbe_untr_1_port_network_role\r
-        subnetpoolid:\r
-          get_input: port_vdbe_untr_1_port_subnetpoolid\r
-        name:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_name\r
-          - index_value\r
-      requirements:\r
-      - binding:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe\r
-          relationship: tosca.relationships.network.BindsTo\r
-  substitution_mappings:\r
-    node_type: org.openecomp.resource.abstract.nodes.vdbe\r
-    capabilities:\r
-      feature_vdbe:\r
-      - vdbe\r
-      - feature\r
-      disk.device.iops_vdbe:\r
-      - vdbe\r
-      - disk.device.iops\r
-      endpoint_vdbe:\r
-      - vdbe\r
-      - endpoint\r
-      disk.ephemeral.size_vdbe:\r
-      - vdbe\r
-      - disk.ephemeral.size\r
-      feature_vdbe_untr_x_subport_vdbe_vdbe_untr_1_port_nested:\r
-      - vdbe_vdbe_untr_1_port_nested\r
-      - feature_vdbe_untr_x_subport\r
-      cpu_util_vdbe:\r
-      - vdbe\r
-      - cpu_util\r
-      vcpus_vdbe:\r
-      - vdbe\r
-      - vcpus\r
-      disk.write.requests_vdbe:\r
-      - vdbe\r
-      - disk.write.requests\r
-      disk.device.latency_vdbe:\r
-      - vdbe\r
-      - disk.device.latency\r
-      disk.device.write.requests.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.write.requests.rate\r
-      feature_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - feature\r
-      disk.write.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.write.bytes.rate\r
-      network.incoming.bytes.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.bytes.rate\r
-      network.incoming.packets.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.packets.rate\r
-      scalable_vdbe:\r
-      - vdbe\r
-      - scalable\r
-      disk.iops_vdbe:\r
-      - vdbe\r
-      - disk.iops\r
-      disk.device.write.requests_vdbe:\r
-      - vdbe\r
-      - disk.device.write.requests\r
-      disk.device.capacity_vdbe:\r
-      - vdbe\r
-      - disk.device.capacity\r
-      network.outgoing.bytes_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outgoing.bytes\r
-      disk.device.allocation_vdbe:\r
-      - vdbe\r
-      - disk.device.allocation\r
-      disk.usage_vdbe:\r
-      - vdbe\r
-      - disk.usage\r
-      memory.usage_vdbe:\r
-      - vdbe\r
-      - memory.usage\r
-      disk.read.requests_vdbe:\r
-      - vdbe\r
-      - disk.read.requests\r
-      network.incoming.bytes_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.bytes\r
-      instance_vdbe:\r
-      - vdbe\r
-      - instance\r
-      cpu.delta_vdbe:\r
-      - vdbe\r
-      - cpu.delta\r
-      binding_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - binding\r
-      disk.device.read.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.read.bytes.rate\r
-      disk.device.write.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.write.bytes.rate\r
-      memory.resident_vdbe:\r
-      - vdbe\r
-      - memory.resident\r
-      forwarder_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - forwarder\r
-      feature_vdbe_vdbe_untr_1_port_nested:\r
-      - vdbe_vdbe_untr_1_port_nested\r
-      - feature\r
-      disk.write.requests.rate_vdbe:\r
-      - vdbe\r
-      - disk.write.requests.rate\r
-      cpu_vdbe:\r
-      - vdbe\r
-      - cpu\r
-      disk.write.bytes_vdbe:\r
-      - vdbe\r
-      - disk.write.bytes\r
-      disk.device.usage_vdbe:\r
-      - vdbe\r
-      - disk.device.usage\r
-      disk.device.read.bytes_vdbe:\r
-      - vdbe\r
-      - disk.device.read.bytes\r
-      disk.latency_vdbe:\r
-      - vdbe\r
-      - disk.latency\r
-      network.outgoing.packets.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outgoing.packets.rate\r
-      disk.capacity_vdbe:\r
-      - vdbe\r
-      - disk.capacity\r
-      host_vdbe:\r
-      - vdbe\r
-      - host\r
-      disk.allocation_vdbe:\r
-      - vdbe\r
-      - disk.allocation\r
-      network.outpoing.packets_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outpoing.packets\r
-      network.incoming.packets_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.packets\r
-      disk.read.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.read.bytes.rate\r
-      os_vdbe:\r
-      - vdbe\r
-      - os\r
-      disk.device.read.requests_vdbe:\r
-      - vdbe\r
-      - disk.device.read.requests\r
-      disk.root.size_vdbe:\r
-      - vdbe\r
-      - disk.root.size\r
-      memory_vdbe:\r
-      - vdbe\r
-      - memory\r
-      binding_vdbe:\r
-      - vdbe\r
-      - binding\r
-      disk.device.write.bytes_vdbe:\r
-      - vdbe\r
-      - disk.device.write.bytes\r
-      network.outgoing.bytes.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outgoing.bytes.rate\r
-      disk.device.read.requests.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.read.requests.rate\r
-      disk.read.bytes_vdbe:\r
-      - vdbe\r
-      - disk.read.bytes\r
-    requirements:\r
-      link_vdbe_untr_x_subport_vdbe_vdbe_untr_1_port_nested:\r
-      - vdbe_vdbe_untr_1_port_nested\r
-      - link_vdbe_untr_x_subport\r
-      dependency_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - dependency\r
-      local_storage_vdbe:\r
-      - vdbe\r
-      - local_storage\r
-      dependency_vdbe_untr_x_subport_vdbe_vdbe_untr_1_port_nested:\r
-      - vdbe_vdbe_untr_1_port_nested\r
-      - dependency_vdbe_untr_x_subport\r
-      dependency_vdbe_vdbe_untr_1_port_nested:\r
-      - vdbe_vdbe_untr_1_port_nested\r
-      - dependency\r
-      link_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - link\r
-      dependency_vdbe:\r
-      - vdbe\r
-      - dependency\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Nested_vdbe
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    port_vdbe_untr_vmi_virtual_machine_interface_allowed_address_pairs:
+      type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+      required: true
+    port_vdbe_untr_vmi_network_role_tag:
+      type: string
+      required: true
+    subinterface_nested_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    compute_vdbe_availability_zone:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_flavor_name:
+      type: string
+      required: true
+    untrusted_num_vn:
+      hidden: false
+      immutable: false
+      type: float
+      description: Number of vDBE subinterface virtual Networks
+      constraints:
+      - in_range:
+        - 1
+        - 77
+    port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_nested_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_image_name:
+      type: string
+      required: true
+    subinterface_nested_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_metadata:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_nested_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_virtual_network_refs:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    port_vdbe_untr_vmi_mac_requirements:
+      type: org.openecomp.datatypes.network.MacRequirements
+      required: true
+    subinterface_nested_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_ip_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.IpRequirements
+    subinterface_nested_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_order:
+      type: integer
+      required: true
+    index_value:
+      type: integer
+      description: Index value of this substitution service template runtime instance
+      required: false
+      default: 0
+      constraints:
+      - greater_or_equal: 0
+    subinterface_nested_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_network_role:
+      type: string
+      required: true
+    port_vdbe_untr_vmi_exCP_naming:
+      type: org.openecomp.datatypes.Naming
+      required: true
+    subinterface_nested_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_subnetpoolid:
+      type: string
+      required: true
+    port_vdbe_untr_vmi_vlan_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.VlanRequirements
+  node_templates:
+    vdbe:
+      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe
+      properties:
+        availability_zone:
+          get_input:
+          - compute_vdbe_availability_zone
+          - index_value
+        flavor:
+          get_input: vm_flavor_name
+        metadata:
+          get_input:
+          - compute_vdbe_metadata
+          - index_value
+        image:
+          get_input: vm_image_name
+        name:
+          get_input:
+          - compute_vdbe_name
+          - index_value
+    vdbe_vdbe_untr_vmi:
+      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface
+      properties:
+        mac_requirements:
+          get_input: port_vdbe_untr_vmi_mac_requirements
+        order:
+          get_input: port_vdbe_untr_vmi_order
+        exCP_naming:
+          get_input: port_vdbe_untr_vmi_exCP_naming
+        virtual_machine_interface_allowed_address_pairs:
+          get_input:
+          - port_vdbe_untr_vmi_virtual_machine_interface_allowed_address_pairs
+          - index_value
+        vlan_requirements:
+          get_input: port_vdbe_untr_vmi_vlan_requirements
+        virtual_network_refs:
+          get_input:
+          - port_vdbe_untr_vmi_virtual_network_refs
+          - index_value
+        ip_requirements:
+          get_input: port_vdbe_untr_vmi_ip_requirements
+        network_role_tag:
+          get_input: port_vdbe_untr_vmi_network_role_tag
+        virtual_machine_interface_mac_addresses:
+          get_input:
+          - port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses
+          - index_value
+        network_role:
+          get_input: port_vdbe_untr_vmi_network_role
+        subnetpoolid:
+          get_input: port_vdbe_untr_vmi_subnetpoolid
+        name:
+          get_input:
+          - port_vdbe_untr_vmi_name
+          - index_value
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe
+          relationship: tosca.relationships.network.BindsTo
+    vdbe_vdbe_untr_vmi_nested:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_nested_ip_v6_address
+          - index_value
+        counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_nested_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_nested_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_nested_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: nestedServiceTemplate.yaml
+          count:
+            get_input: untrusted_num_vn
+          mandatory: false
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_nested_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_nested_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_nested_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_nested_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_nested_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_nested_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_nested_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_0_untr_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_untr_vmi
+          relationship: tosca.relationships.network.BindsTo
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.vdbe
+    capabilities:
+      feature_vdbe_vdbe_untr_vmi_nested:
+      - vdbe_vdbe_untr_vmi_nested
+      - feature
+      network.incoming.packets.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.packets.rate
+      feature_vdbe:
+      - vdbe
+      - feature
+      disk.device.iops_vdbe:
+      - vdbe
+      - disk.device.iops
+      endpoint_vdbe:
+      - vdbe
+      - endpoint
+      disk.ephemeral.size_vdbe:
+      - vdbe
+      - disk.ephemeral.size
+      cpu_util_vdbe:
+      - vdbe
+      - cpu_util
+      vcpus_vdbe:
+      - vdbe
+      - vcpus
+      disk.write.requests_vdbe:
+      - vdbe
+      - disk.write.requests
+      feature_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - feature
+      disk.device.latency_vdbe:
+      - vdbe
+      - disk.device.latency
+      disk.device.write.requests.rate_vdbe:
+      - vdbe
+      - disk.device.write.requests.rate
+      disk.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.write.bytes.rate
+      scalable_vdbe:
+      - vdbe
+      - scalable
+      disk.iops_vdbe:
+      - vdbe
+      - disk.iops
+      disk.device.write.requests_vdbe:
+      - vdbe
+      - disk.device.write.requests
+      disk.device.capacity_vdbe:
+      - vdbe
+      - disk.device.capacity
+      disk.device.allocation_vdbe:
+      - vdbe
+      - disk.device.allocation
+      disk.usage_vdbe:
+      - vdbe
+      - disk.usage
+      memory.usage_vdbe:
+      - vdbe
+      - memory.usage
+      disk.read.requests_vdbe:
+      - vdbe
+      - disk.read.requests
+      instance_vdbe:
+      - vdbe
+      - instance
+      network.outpoing.packets_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outpoing.packets
+      cpu.delta_vdbe:
+      - vdbe
+      - cpu.delta
+      disk.device.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.read.bytes.rate
+      disk.device.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.write.bytes.rate
+      memory.resident_vdbe:
+      - vdbe
+      - memory.resident
+      network.incoming.packets_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.packets
+      disk.write.requests.rate_vdbe:
+      - vdbe
+      - disk.write.requests.rate
+      network.incoming.bytes.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.bytes.rate
+      cpu_vdbe:
+      - vdbe
+      - cpu
+      disk.write.bytes_vdbe:
+      - vdbe
+      - disk.write.bytes
+      binding_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - binding
+      disk.device.usage_vdbe:
+      - vdbe
+      - disk.device.usage
+      disk.device.read.bytes_vdbe:
+      - vdbe
+      - disk.device.read.bytes
+      disk.latency_vdbe:
+      - vdbe
+      - disk.latency
+      feature_vdbe_0_untr_vmi_0_vdbe_vdbe_untr_vmi_nested:
+      - vdbe_vdbe_untr_vmi_nested
+      - feature_vdbe_0_untr_vmi_0
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outgoing.bytes.rate
+      disk.capacity_vdbe:
+      - vdbe
+      - disk.capacity
+      host_vdbe:
+      - vdbe
+      - host
+      disk.allocation_vdbe:
+      - vdbe
+      - disk.allocation
+      disk.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.read.bytes.rate
+      network.outgoing.packets.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outgoing.packets.rate
+      network.incoming.bytes_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.bytes
+      os_vdbe:
+      - vdbe
+      - os
+      forwarder_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - forwarder
+      disk.device.read.requests_vdbe:
+      - vdbe
+      - disk.device.read.requests
+      disk.root.size_vdbe:
+      - vdbe
+      - disk.root.size
+      network.outgoing.bytes_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outgoing.bytes
+      memory_vdbe:
+      - vdbe
+      - memory
+      binding_vdbe:
+      - vdbe
+      - binding
+      disk.device.write.bytes_vdbe:
+      - vdbe
+      - disk.device.write.bytes
+      disk.device.read.requests.rate_vdbe:
+      - vdbe
+      - disk.device.read.requests.rate
+      disk.read.bytes_vdbe:
+      - vdbe
+      - disk.read.bytes
+    requirements:
+      link_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - link
+      link_vdbe_0_untr_vmi_0_vdbe_vdbe_untr_vmi_nested:
+      - vdbe_vdbe_untr_vmi_nested
+      - link_vdbe_0_untr_vmi_0
+      dependency_vdbe_vdbe_untr_vmi_nested:
+      - vdbe_vdbe_untr_vmi_nested
+      - dependency
+      dependency_vdbe_0_untr_vmi_0_vdbe_vdbe_untr_vmi_nested:
+      - vdbe_vdbe_untr_vmi_nested
+      - dependency_vdbe_0_untr_vmi_0
+      local_storage_vdbe:
+      - vdbe
+      - local_storage
+      dependency_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - dependency
+      dependency_vdbe:
+      - vdbe
+      - dependency
\ No newline at end of file
index d70a184..b83a138 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: nested\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-topology_template:\r
-  inputs:\r
-    aap_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-    aap_sec_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-    ip_v6_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv6 address associated with subinterfaces\r
-    counter:\r
-      hidden: false\r
-      immutable: false\r
-      type: float\r
-      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-    subinterfaces_name_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-    ip_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv4 address associated with subinterfaces\r
-    aap_address_mode:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Address mode for the vDBE cluster IP\r
-    aap_untrusted_v6_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-    parent_interface:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Parent Contrail interface\r
-    vn_network_list:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-    mac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: HW MAC address to use for subinterface\r
-    vlan_tag_list:\r
-      hidden: false\r
-      immutable: false\r
-      type: list\r
-      description: List of VLAN IDs to use for subinterfaces\r
-      entry_schema:\r
-        type: string\r
-    aap_sec_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-    vmac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: virtual MAC address to use for subinterface\r
-    aap_untrusted_v6_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-    aap_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-  node_templates:\r
-    vdbe_untr_x_subport:\r
-      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface\r
-      properties:\r
-        virtual_machine_interface_refs:\r
-        - get_input: parent_interface\r
-        name:\r
-          str_replace:\r
-            template: $NAME_$INDEX\r
-            params:\r
-              $NAME:\r
-                get_input: subinterfaces_name_prefix\r
-              $INDEX:\r
-                get_input:\r
-                - vlan_tag_list\r
-                - get_input: counter\r
-        virtual_network_refs:\r
-        - get_input: vn_network_list\r
-        virtual_machine_interface_properties:\r
-          sub_interface_vlan_tag:\r
-            get_input:\r
-            - vlan_tag_list\r
-            - get_input: counter\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          allowed_address_pair:\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_sec_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_sec_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: mac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_v6_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_v6_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-        virtual_machine_interface_mac_addresses:\r
-          mac_address:\r
-          - get_input: mac_address\r
-  groups:\r
-    nested_group:\r
-      type: org.openecomp.groups.heat.HeatStack\r
-      properties:\r
-        heat_file: ../Artifacts/nested.yml\r
-        description: cmaui server template for vMMSC\r
-      members:\r
-      - vdbe_untr_x_subport\r
-  substitution_mappings:\r
-    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested\r
-    capabilities:\r
-      feature_vdbe_untr_x_subport:\r
-      - vdbe_untr_x_subport\r
-      - feature\r
-    requirements:\r
-      link_vdbe_untr_x_subport:\r
-      - vdbe_untr_x_subport\r
-      - link\r
-      dependency_vdbe_untr_x_subport:\r
-      - vdbe_untr_x_subport\r
-      - dependency\r
-      binding_vdbe_untr_x_subport:\r
-      - vdbe_untr_x_subport\r
-      - binding\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: nested
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    vn_network_list:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_0_untr_vmi_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vn_network_list
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    nested_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/nested.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_0_untr_vmi_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+    capabilities:
+      feature_vdbe_0_untr_vmi_0:
+      - vdbe_0_untr_vmi_0
+      - feature
+    requirements:
+      link_vdbe_0_untr_vmi_0:
+      - vdbe_0_untr_vmi_0
+      - link
+      dependency_vdbe_0_untr_vmi_0:
+      - vdbe_0_untr_vmi_0
+      - dependency
+      binding_vdbe_0_untr_vmi_0:
+      - vdbe_0_untr_vmi_0
+      - binding
\ No newline at end of file
index fae10a6..42b84b7 100644 (file)
-heat_template_version: 2013-05-23\r
-\r
-description: >\r
-  Version 2.0 02-09-2016 (Authors: John Doe, user PROD)\r
-\r
-parameters:\r
-  aap_address_mode:\r
-    description: "Address mode for the vDBE cluster IP"\r
-    type: string\r
-  control_int_net_forwarding_mode:\r
-    description: "forwarding mode of the control virtual network"\r
-    type: string\r
-  control_int_net_rpf:\r
-    description: "Reverse Path Filtering enable or disable for the control virtual network"\r
-    type: string\r
-  control_int_net_shared:\r
-    description: "control virtual network shared"\r
-    type: boolean\r
-  control_int_net_flood_unknown_unicast:\r
-    description: "forwarding mode of the control virtual network"\r
-    type: boolean\r
-  fabric_int_net_flood_unknown_unicast:\r
-    description: "forwarding mode of the fabric virtual network"\r
-    type: boolean\r
-  fabric_int_net_forwarding_mode:\r
-    description: "forwarding mode of the fabric virtual network"\r
-    type: string\r
-  fabric_int_net_rpf:\r
-    description: "Reverse Path Filtering enable or disable for the fabric virtual network"\r
-    type: string\r
-  fabric_int_net_shared:\r
-    description: "fabric virtual network shared"\r
-  oam_net_name:\r
-    description: "Name of NSDNet network from which the management IP addresses will be allocated"\r
-    type: string\r
-  untrusted_net_name:\r
-    description: "Name of public untrusted network into which this vDBE HA cluster is deployed"\r
-    type: string\r
-  untrusted_num_vn:\r
-    constraints:\r
-      -\r
-        range:\r
-          max: 77\r
-          min: 1\r
-    description: "Number of vDBE subinterface virtual Networks"\r
-    type: number\r
-  untrusted_vlan_tags:\r
-    description: "List of subinterface vlan tags"\r
-    type: comma_delimited_list\r
-  untrusted_vn_networks:\r
-    description: "List of subinterface virtual networks"\r
-    type: comma_delimited_list\r
-  vdbe_aap_sec_untrusted_ip_prefix:\r
-    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"\r
-    type: string\r
-  vdbe_aap_sec_untrusted_ip_prefix_len:\r
-    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"\r
-    type: string\r
-  vdbe_aap_untrusted_ip_prefix:\r
-    description: "ip prefix for primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_aap_untrusted_ip_prefix_len:\r
-    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_aap_untrusted_v6_ip_prefix:\r
-    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_aap_untrusted_v6_ip_prefix_len:\r
-    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_device_name:\r
-    description: "VDBE device Name for this vdbe VNF"\r
-    type: string\r
-  vdbe_hw_untr_mac_1:\r
-    description: "Secondary MAC address of the secondary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_name_1:\r
-    description: "VM Name for this vdbe node 1"\r
-    type: string\r
-  vdbe_untrusted_ip_1:\r
-    description: "IPV4 address of the secondary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_untrusted_v6_ip_1:\r
-    description: "IPV6 address of the secondary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_untrusted_vmac_address:\r
-    description: "Virtual MAC of the primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  vdbe_flavor_name:\r
-    description: "Flavor to use for vDBE"\r
-    type: string\r
-  vdbe_image_name:\r
-    description: "Image to use for vDBE"\r
-    type: string\r
-  vnf_id:\r
-    description: "Unique ID for this VF inst"\r
-    type: string\r
-  vnf_name:\r
-    description: "Unique name for this VF instance"\r
-    type: string\r
-  vf_module_id:\r
-    description: "Unique ID for this VF module inst"\r
-    type: string\r
-  availability_zone_1:\r
-    description: "The availability zone of secondary node1 vDBE vm in the local HA pair."\r
-    type: string\r
-  counter:\r
-    description: "Counter."\r
-    type: number\r
-resources:\r
-  vdbe_untr_1_subports:\r
-    type: OS::Heat::ResourceGroup\r
-    properties:\r
-      count:\r
-        get_param: untrusted_num_vn\r
-      resource_def:\r
-        type: vlan1.yml\r
-        properties:\r
-          aap_address_mode:\r
-            get_param: aap_address_mode\r
-          aap_sec_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-          aap_sec_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-          aap_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_ip_prefix\r
-          aap_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_ip_prefix_len\r
-          aap_untrusted_v6_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-          aap_untrusted_v6_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-          counter:\r
-            get_param: counter\r
-          ip_address:\r
-            get_param: vdbe_untrusted_ip_1\r
-          ip_v6_address:\r
-            get_param: vdbe_untrusted_v6_ip_1\r
-          mac_address:\r
-            get_param: vdbe_hw_untr_mac_1\r
-          parent_interface:\r
-            get_resource: vdbe_untr_1_port_1\r
-          subinterfaces_name_prefix:\r
-            str_replace:\r
-              params:\r
-                DBE:\r
-                  get_param: vdbe_device_name\r
-                VM_NAME:\r
-                  get_param: vdbe_name_1\r
-              template: VM_NAMEDBE001p1n004\r
-          vlan_tag_list:\r
-            get_param: untrusted_vlan_tags\r
-          vmac_address:\r
-            get_param: vdbe_untrusted_vmac_address\r
-          vn_network_list:\r
-             get_param: untrusted_vn_networks\r
-  vdbe_node_1:\r
-    type: OS::Nova::Server\r
-    properties:\r
-      availability_zone:\r
-        get_param: availability_zone_1\r
-      flavor:\r
-        get_param: vdbe_flavor_name\r
-      image:\r
-        get_param: vdbe_image_name\r
-      metadata:\r
-        vf_module_id:\r
-          get_param: vf_module_id\r
-        vnf_id:\r
-          get_param: vnf_id\r
-        vnf_name:\r
-          get_param: vnf_name\r
-      name:\r
-        get_param: vdbe_name_1\r
-      networks:\r
-        - port: {get_resource: vdbe_untr_1_port_1}\r
-        - port: {get_resource: vdbe_untr_2_port_1}\r
-  vdbe_node_2:\r
-    type: OS::Nova::Server\r
-    properties:\r
-      availability_zone:\r
-        get_param: availability_zone_1\r
-      flavor:\r
-        get_param: vdbe_flavor_name\r
-      image:\r
-        get_param: vdbe_image_name\r
-      metadata:\r
-        vf_module_id:\r
-          get_param: vf_module_id\r
-        vnf_id:\r
-          get_param: vnf_id\r
-        vnf_name:\r
-          get_param: vnf_name\r
-      name:\r
-        get_param: vdbe_name_1\r
-      networks:\r
-        - port: {get_resource: vdbe_untr_1_port_2}\r
-        - port: {get_resource: vdbe_untr_2_port_2}\r
-  vdbe_untr_1_port_1:\r
-    type: OS::ContrailV2::VirtualMachineInterface\r
-    properties:\r
-      name:\r
-        str_replace:\r
-          params:\r
-            DBE:\r
-              get_param: vdbe_device_name\r
-            VM_NAME:\r
-              get_param: vdbe_name_1\r
-          template: VM_NAMEDBE001p1n004\r
-      virtual_machine_interface_allowed_address_pairs:\r
-        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_hw_untr_mac_1\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-      virtual_machine_interface_mac_addresses:\r
-        virtual_machine_interface_mac_addresses_mac_address:\r
-          -\r
-            get_param: vdbe_hw_untr_mac_1\r
-      virtual_network_refs:\r
-        -\r
-          get_resource: control_int_net\r
-  vdbe_untr_2_port_1:\r
-    type: OS::ContrailV2::VirtualMachineInterface\r
-    properties:\r
-      name: Port_2\r
-      virtual_machine_interface_allowed_address_pairs:\r
-        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_hw_untr_mac_1\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-      virtual_machine_interface_mac_addresses:\r
-        virtual_machine_interface_mac_addresses_mac_address:\r
-          -\r
-            get_param: vdbe_hw_untr_mac_1\r
-      virtual_network_refs:\r
-        -\r
-          get_resource: fabric_int_net\r
-\r
-\r
-\r
-  vdbe_untr_1_port_2:\r
-    type: OS::ContrailV2::VirtualMachineInterface\r
-    properties:\r
-      name:\r
-        str_replace:\r
-          params:\r
-            DBE:\r
-              get_param: vdbe_device_name\r
-            VM_NAME:\r
-              get_param: vdbe_name_1\r
-          template: Port 3\r
-      virtual_machine_interface_allowed_address_pairs:\r
-        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_hw_untr_mac_1\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-      virtual_machine_interface_mac_addresses:\r
-        virtual_machine_interface_mac_addresses_mac_address:\r
-          -\r
-            get_param: vdbe_hw_untr_mac_1\r
-      virtual_network_refs:\r
-        -\r
-          get_resource: control_int_net\r
-  vdbe_untr_2_port_2:\r
-    type: OS::ContrailV2::VirtualMachineInterface\r
-    properties:\r
-      name: Port_4\r
-      virtual_machine_interface_allowed_address_pairs:\r
-        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_hw_untr_mac_1\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vdbe_untrusted_vmac_address\r
-      virtual_machine_interface_mac_addresses:\r
-        virtual_machine_interface_mac_addresses_mac_address:\r
-          -\r
-            get_param: vdbe_hw_untr_mac_1\r
-      virtual_network_refs:\r
-        -\r
-          get_resource: fabric_int_net\r
-  vdbe_untr_2_subports:\r
-    type: OS::Heat::ResourceGroup\r
-    properties:\r
-      count: 5\r
-      resource_def:\r
-        type: vlan2.yml\r
-        properties:\r
-          aap_address_mode:\r
-            get_param: aap_address_mode\r
-          aap_sec_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-          aap_sec_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-          aap_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_ip_prefix\r
-          aap_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_ip_prefix_len\r
-          aap_untrusted_v6_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-          aap_untrusted_v6_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-          counter:\r
-            get_param: counter\r
-          ip_address:\r
-            get_param: vdbe_untrusted_ip_1\r
-          ip_v6_address:\r
-            get_param: vdbe_untrusted_v6_ip_1\r
-          mac_address:\r
-            get_param: vdbe_hw_untr_mac_1\r
-          parent_interface:\r
-            get_resource: vdbe_untr_2_port_1\r
-          subinterfaces_name_prefix:\r
-            str_replace:\r
-              params:\r
-                DBE:\r
-                  get_param: vdbe_device_name\r
-                VM_NAME:\r
-                  get_param: vdbe_name_1\r
-              template: VM_NAMEDBE001p1n004\r
-          vlan_tag_list:\r
-            get_param: untrusted_vlan_tags\r
-          vmac_address:\r
-            get_param: vdbe_untrusted_vmac_address\r
-          vn_network_list:\r
-             get_resource: fabric_int_net\r
-\r
-  vdbe_untr_3_subports:\r
-    type: OS::Heat::ResourceGroup\r
-    properties:\r
-      count:\r
-        get_param: untrusted_num_vn\r
-      resource_def:\r
-        type: vlan1.yml\r
-        properties:\r
-          aap_address_mode:\r
-            get_param: aap_address_mode\r
-          aap_sec_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-          aap_sec_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-          aap_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_ip_prefix\r
-          aap_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_ip_prefix_len\r
-          aap_untrusted_v6_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-          aap_untrusted_v6_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-          counter:\r
-            get_param: counter\r
-          ip_address:\r
-            get_param: vdbe_untrusted_ip_1\r
-          ip_v6_address:\r
-            get_param: vdbe_untrusted_v6_ip_1\r
-          mac_address:\r
-            get_param: vdbe_hw_untr_mac_1\r
-          parent_interface:\r
-            get_resource: vdbe_untr_1_port_2\r
-          subinterfaces_name_prefix:\r
-            str_replace:\r
-              params:\r
-                DBE:\r
-                  get_param: vdbe_device_name\r
-                VM_NAME:\r
-                  get_param: vdbe_name_1\r
-              template: VM_NAMEDBE001p1n004\r
-          vlan_tag_list:\r
-            get_param: untrusted_vlan_tags\r
-          vmac_address:\r
-            get_param: vdbe_untrusted_vmac_address\r
-          vn_network_list:\r
-             get_param: untrusted_vn_networks\r
-\r
-  vdbe_untr_4_subports:\r
-    type: OS::Heat::ResourceGroup\r
-    properties:\r
-      count: 5\r
-      resource_def:\r
-        type: vlan2.yml\r
-        properties:\r
-          aap_address_mode:\r
-            get_param: aap_address_mode\r
-          aap_sec_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix\r
-          aap_sec_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_sec_untrusted_ip_prefix_len\r
-          aap_untrusted_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_ip_prefix\r
-          aap_untrusted_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_ip_prefix_len\r
-          aap_untrusted_v6_ip_prefix:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix\r
-          aap_untrusted_v6_ip_prefix_len:\r
-            get_param: vdbe_aap_untrusted_v6_ip_prefix_len\r
-          counter:\r
-            get_param: counter\r
-          ip_address:\r
-            get_param: vdbe_untrusted_ip_1\r
-          ip_v6_address:\r
-            get_param: vdbe_untrusted_v6_ip_1\r
-          mac_address:\r
-            get_param: vdbe_hw_untr_mac_1\r
-          parent_interface:\r
-            get_resource: vdbe_untr_2_port_2\r
-          subinterfaces_name_prefix:\r
-            str_replace:\r
-              params:\r
-                DBE:\r
-                  get_param: vdbe_device_name\r
-                VM_NAME:\r
-                  get_param: vdbe_name_1\r
-              template: VM_NAMEDBE001p1n004\r
-          vlan_tag_list:\r
-            get_param: untrusted_vlan_tags\r
-          vmac_address:\r
-            get_param: vdbe_untrusted_vmac_address\r
-          vn_network_list:\r
-             get_resource: fabric_int_net\r
-  control_int_net:\r
-    type: OS::ContrailV2::VirtualNetwork\r
-    properties:\r
-      flood_unknown_unicast:\r
-        get_param: control_int_net_flood_unknown_unicast\r
-      is_shared:\r
-        get_param: control_int_net_shared\r
-      name:\r
-        str_replace:\r
-          params:\r
-            VNF_NAME:\r
-              get_param: vnf_name\r
-          template: VNF_NAME_control_net\r
-      virtual_network_properties:\r
-        virtual_network_properties_forwarding_mode:\r
-          get_param: control_int_net_forwarding_mode\r
-        virtual_network_properties_rpf:\r
-          get_param: control_int_net_rpf\r
-  fabric_int_net:\r
-    type: OS::ContrailV2::VirtualNetwork\r
-    properties:\r
-      flood_unknown_unicast:\r
-        get_param: fabric_int_net_flood_unknown_unicast\r
-      is_shared:\r
-        get_param: fabric_int_net_shared\r
-      name:\r
-        str_replace:\r
-          params:\r
-            VNF_NAME:\r
-              get_param: vnf_name\r
-          template: template-fabric-int\r
-      virtual_network_properties:\r
-        virtual_network_properties_forwarding_mode:\r
-          get_param: fabric_int_net_forwarding_mode\r
-        virtual_network_properties_rpf:\r
-          get_param: fabric_int_net_rpf\r
\ No newline at end of file
+heat_template_version: 2013-05-23
+
+description: >
+  Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  control_int_net_forwarding_mode:
+    description: "forwarding mode of the control virtual network"
+    type: string
+  control_int_net_rpf:
+    description: "Reverse Path Filtering enable or disable for the control virtual network"
+    type: string
+  control_int_net_shared:
+    description: "control virtual network shared"
+    type: boolean
+  control_int_net_flood_unknown_unicast:
+    description: "forwarding mode of the control virtual network"
+    type: boolean
+  fabric_int_net_flood_unknown_unicast:
+    description: "forwarding mode of the fabric virtual network"
+    type: boolean
+  fabric_int_net_forwarding_mode:
+    description: "forwarding mode of the fabric virtual network"
+    type: string
+  fabric_int_net_rpf:
+    description: "Reverse Path Filtering enable or disable for the fabric virtual network"
+    type: string
+  fabric_int_net_shared:
+    description: "fabric virtual network shared"
+  oam_net_name:
+    description: "Name of NSDNet network from which the management IP addresses will be allocated"
+    type: string
+  untrusted_net_name:
+    description: "Name of public untrusted network into which this vDBE HA cluster is deployed"
+    type: string
+  untrusted_num_vn:
+    constraints:
+      -
+        range:
+          max: 77
+          min: 1
+    description: "Number of vDBE subinterface virtual Networks"
+    type: number
+  untrusted_vlan_tags:
+    description: "List of subinterface vlan tags"
+    type: comma_delimited_list
+  untrusted_vn_networks:
+    description: "List of subinterface virtual networks"
+    type: comma_delimited_list
+  vdbe_aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_device_name:
+    description: "VDBE device Name for this vdbe VNF"
+    type: string
+  vdbe_hw_untr_mac_1:
+    description: "Secondary MAC address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_name_1:
+    description: "VM Name for this vdbe node 1"
+    type: string
+  vdbe_untrusted_ip_1:
+    description: "IPV4 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_v6_ip_1:
+    description: "IPV6 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_vmac_address:
+    description: "Virtual MAC of the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_flavor_name:
+    description: "Flavor to use for vDBE"
+    type: string
+  vdbe_image_name:
+    description: "Image to use for vDBE"
+    type: string
+  vnf_id:
+    description: "Unique ID for this VF inst"
+    type: string
+  vnf_name:
+    description: "Unique name for this VF instance"
+    type: string
+  vf_module_id:
+    description: "Unique ID for this VF module inst"
+    type: string
+  availability_zone_1:
+    description: "The availability zone of secondary node1 vDBE vm in the local HA pair."
+    type: string
+  counter:
+    description: "Counter."
+    type: number
+resources:
+  vdbe_untr_1_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count:
+        get_param: untrusted_num_vn
+      resource_def:
+        type: vlan1.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter:
+            get_param: counter
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_1_untr_vmi_1
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+  vdbe_node_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone:
+        get_param: availability_zone_1
+      flavor:
+        get_param: vdbe_flavor_name
+      image:
+        get_param: vdbe_image_name
+      metadata:
+        vf_module_id:
+          get_param: vf_module_id
+        vnf_id:
+          get_param: vnf_id
+        vnf_name:
+          get_param: vnf_name
+      name:
+        get_param: vdbe_name_1
+      networks:
+        - port: {get_resource: vdbe_1_untr_vmi_1}
+        - port: {get_resource: vdbe_1_oam_vmi_1}
+  vdbe_node_2:
+    type: OS::Nova::Server
+    properties:
+      availability_zone:
+        get_param: availability_zone_1
+      flavor:
+        get_param: vdbe_flavor_name
+      image:
+        get_param: vdbe_image_name
+      metadata:
+        vf_module_id:
+          get_param: vf_module_id
+        vnf_id:
+          get_param: vnf_id
+        vnf_name:
+          get_param: vnf_name
+      name:
+        get_param: vdbe_name_1
+      networks:
+        - port: {get_resource: vdbe_1_untr_vmi_2}
+        - port: {get_resource: vdbe_2_oam_vmi_2}
+  vdbe_1_untr_vmi_1:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name:
+        str_replace:
+          params:
+            DBE:
+              get_param: vdbe_device_name
+            VM_NAME:
+              get_param: vdbe_name_1
+          template: VM_NAMEDBE001p1n004
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_hw_untr_mac_1
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: vdbe_hw_untr_mac_1
+      virtual_network_refs:
+        -
+          get_resource: control_int_net
+  vdbe_1_oam_vmi_1:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name: Port_2
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_hw_untr_mac_1
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: vdbe_hw_untr_mac_1
+      virtual_network_refs:
+        -
+          get_resource: fabric_int_net
+
+
+
+  vdbe_1_untr_vmi_2:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name:
+        str_replace:
+          params:
+            DBE:
+              get_param: vdbe_device_name
+            VM_NAME:
+              get_param: vdbe_name_1
+          template: Port 3
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_hw_untr_mac_1
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: vdbe_hw_untr_mac_1
+      virtual_network_refs:
+        -
+          get_resource: control_int_net
+  vdbe_2_oam_vmi_2:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name: Port_4
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_hw_untr_mac_1
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vdbe_untrusted_vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: vdbe_hw_untr_mac_1
+      virtual_network_refs:
+        -
+          get_resource: fabric_int_net
+  vdbe_untr_2_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: 5
+      resource_def:
+        type: vlan2.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter:
+            get_param: counter
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_1_oam_vmi_1
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_resource: fabric_int_net
+
+  vdbe_untr_3_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count:
+        get_param: untrusted_num_vn
+      resource_def:
+        type: vlan1.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter:
+            get_param: counter
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_1_untr_vmi_2
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+
+  vdbe_untr_4_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: 5
+      resource_def:
+        type: vlan2.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter:
+            get_param: counter
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_2_oam_vmi_2
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_resource: fabric_int_net
+  control_int_net:
+    type: OS::ContrailV2::VirtualNetwork
+    properties:
+      flood_unknown_unicast:
+        get_param: control_int_net_flood_unknown_unicast
+      is_shared:
+        get_param: control_int_net_shared
+      name:
+        str_replace:
+          params:
+            VNF_NAME:
+              get_param: vnf_name
+          template: VNF_NAME_control_net
+      virtual_network_properties:
+        virtual_network_properties_forwarding_mode:
+          get_param: control_int_net_forwarding_mode
+        virtual_network_properties_rpf:
+          get_param: control_int_net_rpf
+  fabric_int_net:
+    type: OS::ContrailV2::VirtualNetwork
+    properties:
+      flood_unknown_unicast:
+        get_param: fabric_int_net_flood_unknown_unicast
+      is_shared:
+        get_param: fabric_int_net_shared
+      name:
+        str_replace:
+          params:
+            VNF_NAME:
+              get_param: vnf_name
+          template: template-fabric-int
+      virtual_network_properties:
+        virtual_network_properties_forwarding_mode:
+          get_param: fabric_int_net_forwarding_mode
+        virtual_network_properties_rpf:
+          get_param: fabric_int_net_rpf
index b120379..6e68bd9 100644 (file)
@@ -52,7 +52,7 @@ parameters:
     description: "IPv6 address associated with subinterfaces"
     type: string
 resources:
-  vdbe_untr_x_vlan1-Network-Role_vmi_subport:
+  vdbe_0_subint_untr_vmi_0:
     type: OS::ContrailV2::VirtualMachineInterface
     properties:
       name:
@@ -114,3 +114,22 @@ resources:
           [{get_param: vn_network_list}]
 
 
+
+  vdbe_untrusted_Iip_0:
+    type: OS::ContrailV2::InstanceIp
+    depends_on: [ vdbe_0_subint_untr_vmi_0 ]
+    properties:
+      virtual_machine_interface_refs: [ { get_resource: vdbe_0_subint_untr_vmi_0} ]
+      virtual_network_refs: [{ get_param: [ vn_network_list, { get_param: counter } ] }]
+      instance_ip_address: { get_param: ip_address }
+
+
+
+  vdbe_untrusted_v6_Iip_0:
+    type: OS::ContrailV2::InstanceIp
+    depends_on: [ vdbe_0_subint_untr_vmi_0 ]
+    properties:
+      virtual_machine_interface_refs: [ { get_resource: vdbe_0_subint_untr_vmi_0} ]
+      virtual_network_refs: [{ get_param: [ vn_network_list, { get_param: counter } ] }]
+      instance_ip_address: { get_param: ip_v6_address }
+      instance_ip_family: "v6"
index 49f86fb..fed76bd 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: GlobalSubstitutionTypes\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-node_types:\r
-  org.openecomp.resource.abstract.nodes.vdbe:\r
-    derived_from: org.openecomp.resource.abstract.nodes.VFC\r
-    properties:\r
-      subinterface_vlan1_aap_untrusted_v6_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_aap_sec_untrusted_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_vmac_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      compute_vdbe_availability_zone:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_2_port_virtual_machine_interface_mac_addresses:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      port_vdbe_untr_2_port_network_role_tag:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      vm_flavor_name:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      untrusted_num_vn:\r
-        type: float\r
-        description: Number of vDBE subinterface virtual Networks\r
-        required: true\r
-        status: SUPPORTED\r
-        constraints:\r
-        - in_range:\r
-          - 1\r
-          - 77\r
-      subinterface_vlan1_counter:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: float\r
-      subinterface_vlan2_aap_untrusted_v6_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      vm_image_name:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_2_port_network_role:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      compute_vdbe_metadata:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      subinterface_vlan1_aap_untrusted_v6_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_ip_requirements:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: org.openecomp.datatypes.network.IpRequirements\r
-      port_vdbe_untr_2_port_vlan_requirements:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: org.openecomp.datatypes.network.VlanRequirements\r
-      port_vdbe_untr_2_port_exCP_naming:\r
-        type: org.openecomp.datatypes.Naming\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_2_port_ip_requirements:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: org.openecomp.datatypes.network.IpRequirements\r
-      port_vdbe_untr_1_port_mac_requirements:\r
-        type: org.openecomp.datatypes.network.MacRequirements\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_order:\r
-        type: integer\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterface_vlan2_ip_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_ip_v6_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_subnetpoolid:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterface_vlan2_parent_interface:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_aap_address_mode:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_2_port_mac_requirements:\r
-        type: org.openecomp.datatypes.network.MacRequirements\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_virtual_machine_interface_allowed_address_pairs:\r
-        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterface_vlan1_mac_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_mac_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_aap_untrusted_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_ip_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_aap_sec_untrusted_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      compute_vdbe_name:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_network_role_tag:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterface_vlan2_aap_untrusted_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_ip_v6_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_vmac_address:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_aap_untrusted_ip_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_2_port_virtual_network_refs:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      subinterface_vlan2_vn_network_list:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_subinterfaces_name_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_network_role:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_2_port_name:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_virtual_network_refs:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      subinterface_vlan2_vlan_tag_list:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      subinterface_vlan1_vn_network_list:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_aap_sec_untrusted_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_2_port_subnetpoolid:\r
-        type: string\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_2_port_order:\r
-        type: integer\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterface_vlan2_counter:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: float\r
-      subinterface_vlan1_parent_interface:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_aap_address_mode:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_aap_untrusted_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      index_value:\r
-        type: integer\r
-        description: Index value of this substitution service template runtime instance\r
-        required: false\r
-        default: 0\r
-        status: SUPPORTED\r
-        constraints:\r
-        - greater_or_equal: 0\r
-      subinterface_vlan2_subinterfaces_name_prefix:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan2_aap_untrusted_v6_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_1_port_exCP_naming:\r
-        type: org.openecomp.datatypes.Naming\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_name:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      subinterface_vlan1_aap_sec_untrusted_ip_prefix_len:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      port_vdbe_untr_2_port_virtual_machine_interface_allowed_address_pairs:\r
-        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs\r
-        required: true\r
-        status: SUPPORTED\r
-      port_vdbe_untr_1_port_vlan_requirements:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: org.openecomp.datatypes.network.VlanRequirements\r
-      port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-      subinterface_vlan1_vlan_tag_list:\r
-        type: list\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: json\r
-    requirements:\r
-    - dependency_vdbe:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - local_storage_vdbe:\r
-        capability: tosca.capabilities.Attachment\r
-        node: tosca.nodes.BlockStorage\r
-        relationship: tosca.relationships.AttachesTo\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - dependency_vdbe_vdbe_untr_2_port:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_vdbe_untr_2_port:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - dependency_vdbe_vdbe_untr_2_port_vlan2:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - dependency_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another_vdbe_vdbe_untr_2_port_vlan2:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another_vdbe_vdbe_untr_2_port_vlan2:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - dependency_vdbe_vdbe_untr_1_port_vlan1:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - dependency_vdbe_untr_x_vlan1-Network-Role_vmi_subport_vdbe_vdbe_untr_1_port_vlan1:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_untr_x_vlan1-Network-Role_vmi_subport_vdbe_vdbe_untr_1_port_vlan1:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - dependency_vdbe_vdbe_untr_1_port:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_vdbe_untr_1_port:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    capabilities:\r
-      feature_vdbe:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.iops_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      endpoint_vdbe:\r
-        type: tosca.capabilities.Endpoint.Admin\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.ephemeral.size_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_vdbe_untr_2_port:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_untr_x_vlan1-Network-Role_vmi_subport_vdbe_vdbe_untr_1_port_vlan1:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      cpu_util_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      vcpus_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_vdbe_untr_1_port_vlan1:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.latency_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.requests.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.packets_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_vdbe_untr_1_port:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.bytes.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.packets.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      scalable_vdbe:\r
-        type: tosca.capabilities.Scalable\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.iops_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.capacity_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.bytes.rate_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.bytes_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.allocation_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another_vdbe_vdbe_untr_2_port_vlan2:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.usage_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      memory.usage_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outpoing.packets_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.read.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.bytes_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      instance_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      cpu.delta_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.packets.rate_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      feature_vdbe_vdbe_untr_2_port_vlan2:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      binding_vdbe_vdbe_untr_1_port:\r
-        type: tosca.capabilities.network.Bindable\r
-        valid_source_types:\r
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-      disk.device.read.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      memory.resident_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      forwarder_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.Forwarder\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.requests.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      cpu_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.write.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      forwarder_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.Forwarder\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.usage_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.read.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.latency_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.packets.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.capacity_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      host_vdbe:\r
-        type: tosca.capabilities.Container\r
-        valid_source_types:\r
-        - tosca.nodes.SoftwareComponent\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.allocation_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outpoing.packets_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.packets_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.read.bytes.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.bytes_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      os_vdbe:\r
-        type: tosca.capabilities.OperatingSystem\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.read.requests_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.packets.rate_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.root.size_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.incoming.bytes.rate_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      binding_vdbe_vdbe_untr_2_port:\r
-        type: tosca.capabilities.network.Bindable\r
-        valid_source_types:\r
-        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-      memory_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      binding_vdbe:\r
-        type: tosca.capabilities.network.Bindable\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.write.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.bytes_vdbe_vdbe_untr_2_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      network.outgoing.bytes.rate_vdbe_vdbe_untr_1_port:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.device.read.requests.rate_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-      disk.read.bytes_vdbe:\r
-        type: org.openecomp.capabilities.metric.Ceilometer\r
-        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-  org.openecomp.resource.abstract.nodes.heat.subinterface.vlan1:\r
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute\r
-    properties:\r
-      aap_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_sec_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_v6_address:\r
-        type: string\r
-        description: IPv6 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      counter:\r
-        type: float\r
-        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterfaces_name_prefix:\r
-        type: string\r
-        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_address:\r
-        type: string\r
-        description: IPv4 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_address_mode:\r
-        type: string\r
-        description: Address mode for the vDBE cluster IP\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix:\r
-        type: string\r
-        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      parent_interface:\r
-        type: string\r
-        description: Parent Contrail interface\r
-        required: true\r
-        status: SUPPORTED\r
-      vn_network_list:\r
-        type: string\r
-        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-        required: true\r
-        status: SUPPORTED\r
-      mac_address:\r
-        type: string\r
-        description: HW MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      vlan_tag_list:\r
-        type: list\r
-        description: List of VLAN IDs to use for subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      aap_sec_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      vmac_address:\r
-        type: string\r
-        description: virtual MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix_len:\r
-        type: string\r
-        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-    requirements:\r
-    - dependency_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - binding_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-        capability: tosca.capabilities.network.Bindable\r
-        node: org.openecomp.resource.cp.nodes.network.Port\r
-        relationship: tosca.relationships.network.BindsTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    capabilities:\r
-      feature_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
-  org.openecomp.resource.abstract.nodes.heat.subinterface.vlan2:\r
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute\r
-    properties:\r
-      aap_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_sec_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_v6_address:\r
-        type: string\r
-        description: IPv6 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      counter:\r
-        type: float\r
-        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterfaces_name_prefix:\r
-        type: string\r
-        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_address:\r
-        type: string\r
-        description: IPv4 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_address_mode:\r
-        type: string\r
-        description: Address mode for the vDBE cluster IP\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix:\r
-        type: string\r
-        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      parent_interface:\r
-        type: string\r
-        description: Parent Contrail interface\r
-        required: true\r
-        status: SUPPORTED\r
-      vn_network_list:\r
-        type: string\r
-        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-        required: true\r
-        status: SUPPORTED\r
-      mac_address:\r
-        type: string\r
-        description: HW MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      vlan_tag_list:\r
-        type: list\r
-        description: List of VLAN IDs to use for subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      aap_sec_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      vmac_address:\r
-        type: string\r
-        description: virtual MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix_len:\r
-        type: string\r
-        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-    requirements:\r
-    - dependency_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - binding_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-        capability: tosca.capabilities.network.Bindable\r
-        node: org.openecomp.resource.cp.nodes.network.Port\r
-        relationship: tosca.relationships.network.BindsTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    capabilities:\r
-      feature_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: GlobalSubstitutionTypes
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+node_types:
+  org.openecomp.resource.abstract.nodes.vdbe:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_vdbe_untr_vmi_virtual_machine_interface_allowed_address_pairs:
+        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+        required: true
+        status: SUPPORTED
+      subinterface_vlan1_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan1_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_oam_vmi_virtual_machine_interface_mac_addresses:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_vlan1_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_oam_vmi_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      untrusted_num_vn:
+        type: float
+        description: Number of vDBE subinterface virtual Networks
+        required: true
+        status: SUPPORTED
+        constraints:
+        - in_range:
+          - 1
+          - 77
+      subinterface_vlan1_counter:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: float
+      subinterface_vlan2_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_oam_vmi_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_vdbe_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_vlan1_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_oam_vmi_virtual_network_refs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_vdbe_untr_vmi_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_vdbe_oam_vmi_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      port_vdbe_oam_vmi_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_vdbe_oam_vmi_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_oam_vmi_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      subinterface_vlan2_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan1_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan1_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan1_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_vlan2_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_vlan1_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan1_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_vlan1_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_oam_vmi_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_vmi_virtual_network_refs:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_vdbe_untr_vmi_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      subinterface_vlan2_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_vlan1_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_oam_vmi_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      port_vdbe_oam_vmi_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      subinterface_vlan2_counter:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: float
+      port_vdbe_untr_vmi_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      subinterface_vlan1_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan1_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      subinterface_vlan2_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vlan2_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      subinterface_vlan1_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_vmi_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_vdbe_oam_vmi_virtual_machine_interface_allowed_address_pairs:
+        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+        required: true
+        status: SUPPORTED
+      subinterface_vlan1_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    requirements:
+    - dependency_vdbe:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_vdbe:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_vdbe_untr_vmi_vlan1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_vmi_vlan1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_vmi_vlan1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe_vdbe_untr_vmi:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_vdbe_untr_vmi:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe_vdbe_oam_vmi:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_vdbe_oam_vmi:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe_vdbe_oam_vmi_vlan2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_1_subint_oam_vmi_1_vdbe_vdbe_oam_vmi_vlan2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_1_subint_oam_vmi_1_vdbe_vdbe_oam_vmi_vlan2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_vdbe_oam_vmi:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_vdbe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_oam_vmi_vlan2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_vmi:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_1_subint_oam_vmi_1_vdbe_vdbe_oam_vmi_vlan2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_vdbe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      forwarder_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.Forwarder
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_vmi_vlan1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      instance_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe_vdbe_oam_vmi:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.outpoing.packets_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe_vdbe_untr_vmi:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_vmi_vlan1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_vdbe:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.packets.rate_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_vdbe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      forwarder_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.Forwarder
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_vdbe_vdbe_oam_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_vdbe_vdbe_untr_vmi:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.subinterface.vlan1:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      vn_network_list:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.subinterface.vlan2:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      vn_network_list:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_1_subint_oam_vmi_1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_1_subint_oam_vmi_1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_1_subint_oam_vmi_1:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_1_subint_oam_vmi_1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
\ No newline at end of file
index 9247ae5..cc23ab4 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: Main\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-topology_template:\r
-  inputs:\r
-    vf_module_id:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vf_module_id\r
-      type: string\r
-      description: Unique ID for this VF module inst\r
-    fabric_int_net_rpf:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: fabric_int_net_rpf\r
-      type: string\r
-      description: Reverse Path Filtering enable or disable for the fabric virtual network\r
-    control_int_net_rpf:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_rpf\r
-      type: string\r
-      description: Reverse Path Filtering enable or disable for the control virtual network\r
-    control_int_net_forwarding_mode:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_forwarding_mode\r
-      type: string\r
-      description: forwarding mode of the control virtual network\r
-    vnf_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vnf_name\r
-      type: string\r
-      description: Unique name for this VF instance\r
-    vdbe_untrusted_ip_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_ip_1\r
-      type: string\r
-      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network\r
-    vdbe_aap_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_ip_prefix_len\r
-      type: string\r
-      description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-    aap_address_mode:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: aap_address_mode\r
-      type: string\r
-      description: Address mode for the vDBE cluster IP\r
-    control_int_net_shared:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_shared\r
-      type: boolean\r
-      description: control virtual network shared\r
-    vdbe_untrusted_v6_ip_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_v6_ip_1\r
-      type: string\r
-      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network\r
-    vdbe_untrusted_vmac_address:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_vmac_address\r
-      type: string\r
-      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network\r
-    control_int_net_flood_unknown_unicast:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_flood_unknown_unicast\r
-      type: boolean\r
-      description: forwarding mode of the control virtual network\r
-    vdbe_aap_sec_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_sec_untrusted_ip_prefix\r
-      type: string\r
-      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-    vnf_id:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vnf_id\r
-      type: string\r
-      description: Unique ID for this VF inst\r
-    vdbe_name_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_name_1\r
-      type: string\r
-      description: VM Name for this vdbe node 1\r
-    availability_zone_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: availability_zone_1\r
-      type: string\r
-      description: The availability zone of secondary node1 vDBE vm in the local HA pair.\r
-    untrusted_vn_networks:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_vn_networks\r
-      type: list\r
-      description: List of subinterface virtual networks\r
-      entry_schema:\r
-        type: string\r
-    vdbe_image_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_image_name\r
-      type: string\r
-      description: Image to use for vDBE\r
-    oam_net_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: oam_net_name\r
-      type: string\r
-      description: Name of NSDNet network from which the management IP addresses will be allocated\r
-    vdbe_aap_sec_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_sec_untrusted_ip_prefix_len\r
-      type: string\r
-      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-    vdbe_aap_untrusted_v6_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_v6_ip_prefix\r
-      type: string\r
-      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-    vdbe_aap_untrusted_v6_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_v6_ip_prefix_len\r
-      type: string\r
-      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-    fabric_int_net_flood_unknown_unicast:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: fabric_int_net_flood_unknown_unicast\r
-      type: boolean\r
-      description: forwarding mode of the fabric virtual network\r
-    untrusted_vlan_tags:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_vlan_tags\r
-      type: list\r
-      description: List of subinterface vlan tags\r
-      entry_schema:\r
-        type: string\r
-    vdbe_flavor_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_flavor_name\r
-      type: string\r
-      description: Flavor to use for vDBE\r
-    counter:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: counter\r
-      type: float\r
-      description: Counter.\r
-    fabric_int_net_forwarding_mode:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: fabric_int_net_forwarding_mode\r
-      type: string\r
-      description: forwarding mode of the fabric virtual network\r
-    fabric_int_net_shared:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: fabric_int_net_shared\r
-      description: fabric virtual network shared\r
-    vdbe_hw_untr_mac_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_hw_untr_mac_1\r
-      type: string\r
-      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network\r
-    untrusted_net_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_net_name\r
-      type: string\r
-      description: Name of public untrusted network into which this vDBE HA cluster is deployed\r
-    vdbe_device_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_device_name\r
-      type: string\r
-      description: VDBE device Name for this vdbe VNF\r
-    vdbe_aap_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_ip_prefix\r
-      type: string\r
-      description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-  node_templates:\r
-    fabric_int_net:\r
-      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork\r
-      properties:\r
-        network_name:\r
-          str_replace:\r
-            template: template-fabric-int\r
-            params:\r
-              VNF_NAME:\r
-                get_input: vnf_name\r
-    control_int_net:\r
-      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork\r
-      properties:\r
-        network_name:\r
-          str_replace:\r
-            template: VNF_NAME_control_net\r
-            params:\r
-              VNF_NAME:\r
-                get_input: vnf_name\r
-    abstract_vdbe:\r
-      type: org.openecomp.resource.abstract.nodes.vdbe\r
-      directives:\r
-      - substitutable\r
-      properties:\r
-        subinterface_vlan1_aap_untrusted_v6_ip_prefix:\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix\r
-        subinterface_vlan1_aap_sec_untrusted_ip_prefix:\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix\r
-        subinterface_vlan1_vmac_address:\r
-        - get_input: vdbe_untrusted_vmac_address\r
-        - get_input: vdbe_untrusted_vmac_address\r
-        compute_vdbe_availability_zone:\r
-        - get_input: availability_zone_1\r
-        - get_input: availability_zone_1\r
-        port_vdbe_untr_2_port_virtual_machine_interface_mac_addresses:\r
-        - - get_input: vdbe_hw_untr_mac_1\r
-        - - get_input: vdbe_hw_untr_mac_1\r
-        vm_flavor_name:\r
-          get_input: vdbe_flavor_name\r
-        subinterface_vlan1_counter:\r
-        - get_input: counter\r
-        - get_input: counter\r
-        subinterface_vlan2_aap_untrusted_v6_ip_prefix:\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix\r
-        vm_image_name:\r
-          get_input: vdbe_image_name\r
-        compute_vdbe_metadata:\r
-        - vf_module_id:\r
-            get_input: vf_module_id\r
-          vnf_id:\r
-            get_input: vnf_id\r
-          vnf_name:\r
-            get_input: vnf_name\r
-        - vf_module_id:\r
-            get_input: vf_module_id\r
-          vnf_id:\r
-            get_input: vnf_id\r
-          vnf_name:\r
-            get_input: vnf_name\r
-        subinterface_vlan1_aap_untrusted_v6_ip_prefix_len:\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len\r
-        subinterface_vlan2_ip_address:\r
-        - get_input: vdbe_untrusted_ip_1\r
-        - get_input: vdbe_untrusted_ip_1\r
-        subinterface_vlan2_ip_v6_address:\r
-        - get_input: vdbe_untrusted_v6_ip_1\r
-        - get_input: vdbe_untrusted_v6_ip_1\r
-        subinterface_vlan2_parent_interface:\r
-        - vdbe_untr_2_port_1\r
-        - vdbe_untr_2_port_2\r
-        subinterface_vlan2_aap_address_mode:\r
-        - get_input: aap_address_mode\r
-        - get_input: aap_address_mode\r
-        subinterface_vlan1_mac_address:\r
-        - get_input: vdbe_hw_untr_mac_1\r
-        - get_input: vdbe_hw_untr_mac_1\r
-        subinterface_vlan2_mac_address:\r
-        - get_input: vdbe_hw_untr_mac_1\r
-        - get_input: vdbe_hw_untr_mac_1\r
-        subinterface_vlan1_aap_untrusted_ip_prefix_len:\r
-        - get_input: vdbe_aap_untrusted_ip_prefix_len\r
-        - get_input: vdbe_aap_untrusted_ip_prefix_len\r
-        subinterface_vlan1_ip_address:\r
-        - get_input: vdbe_untrusted_ip_1\r
-        - get_input: vdbe_untrusted_ip_1\r
-        subinterface_vlan2_aap_sec_untrusted_ip_prefix:\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix\r
-        compute_vdbe_name:\r
-        - get_input: vdbe_name_1\r
-        - get_input: vdbe_name_1\r
-        subinterface_vlan2_aap_untrusted_ip_prefix:\r
-        - get_input: vdbe_aap_untrusted_ip_prefix\r
-        - get_input: vdbe_aap_untrusted_ip_prefix\r
-        subinterface_vlan1_ip_v6_address:\r
-        - get_input: vdbe_untrusted_v6_ip_1\r
-        - get_input: vdbe_untrusted_v6_ip_1\r
-        subinterface_vlan2_vmac_address:\r
-        - get_input: vdbe_untrusted_vmac_address\r
-        - get_input: vdbe_untrusted_vmac_address\r
-        subinterface_vlan1_aap_untrusted_ip_prefix:\r
-        - get_input: vdbe_aap_untrusted_ip_prefix\r
-        - get_input: vdbe_aap_untrusted_ip_prefix\r
-        port_vdbe_untr_2_port_virtual_network_refs:\r
-        - - fabric_int_net\r
-        - - fabric_int_net\r
-        subinterface_vlan2_vn_network_list:\r
-        - fabric_int_net\r
-        - fabric_int_net\r
-        subinterface_vlan1_subinterfaces_name_prefix:\r
-        - str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        - str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        port_vdbe_untr_2_port_name:\r
-        - Port_2\r
-        - Port_4\r
-        port_vdbe_untr_1_port_virtual_network_refs:\r
-        - - control_int_net\r
-        - - control_int_net\r
-        subinterface_vlan2_vlan_tag_list:\r
-        - get_input: untrusted_vlan_tags\r
-        - get_input: untrusted_vlan_tags\r
-        subinterface_vlan1_vn_network_list:\r
-        - get_input: untrusted_vn_networks\r
-        - get_input: untrusted_vn_networks\r
-        subinterface_vlan2_aap_sec_untrusted_ip_prefix_len:\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len\r
-        subinterface_vlan2_counter:\r
-        - get_input: counter\r
-        - get_input: counter\r
-        subinterface_vlan1_parent_interface:\r
-        - vdbe_untr_1_port_1\r
-        - vdbe_untr_1_port_2\r
-        subinterface_vlan1_aap_address_mode:\r
-        - get_input: aap_address_mode\r
-        - get_input: aap_address_mode\r
-        subinterface_vlan2_aap_untrusted_ip_prefix_len:\r
-        - get_input: vdbe_aap_untrusted_ip_prefix_len\r
-        - get_input: vdbe_aap_untrusted_ip_prefix_len\r
-        subinterface_vlan2_subinterfaces_name_prefix:\r
-        - str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        - str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        subinterface_vlan2_aap_untrusted_v6_ip_prefix_len:\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len\r
-        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len\r
-        port_vdbe_untr_1_port_name:\r
-        - str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        - str_replace:\r
-            template: Port 3\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        subinterface_vlan1_aap_sec_untrusted_ip_prefix_len:\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len\r
-        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len\r
-        port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses:\r
-        - - get_input: vdbe_hw_untr_mac_1\r
-        - - get_input: vdbe_hw_untr_mac_1\r
-        subinterface_vlan1_vlan_tag_list:\r
-        - get_input: untrusted_vlan_tags\r
-        - get_input: untrusted_vlan_tags\r
-        service_template_filter:\r
-          substitute_service_template: Nested_vdbeServiceTemplate.yaml\r
-          count: 2\r
-        index_value:\r
-          get_property:\r
-          - SELF\r
-          - service_template_filter\r
-          - index_value\r
-      requirements:\r
-      - link_vdbe_vdbe_untr_1_port:\r
-          capability: tosca.capabilities.network.Linkable\r
-          node: control_int_net\r
-          relationship: tosca.relationships.network.LinksTo\r
-      - link_vdbe_vdbe_untr_2_port:\r
-          capability: tosca.capabilities.network.Linkable\r
-          node: fabric_int_net\r
-          relationship: tosca.relationships.network.LinksTo\r
-      - link_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another_vdbe_vdbe_untr_2_port_vlan2:\r
-          capability: tosca.capabilities.network.Linkable\r
-          node: fabric_int_net\r
-          relationship: tosca.relationships.network.LinksTo\r
-  groups:\r
-    main_group:\r
-      type: org.openecomp.groups.heat.HeatStack\r
-      properties:\r
-        heat_file: ../Artifacts/main.yml\r
-        description: |\r
-          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)\r
-      members:\r
-      - fabric_int_net\r
-      - control_int_net\r
-      - abstract_vdbe\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Main
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    vf_module_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vf_module_id
+      type: string
+      description: Unique ID for this VF module inst
+    fabric_int_net_rpf:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: fabric_int_net_rpf
+      type: string
+      description: Reverse Path Filtering enable or disable for the fabric virtual network
+    control_int_net_rpf:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_rpf
+      type: string
+      description: Reverse Path Filtering enable or disable for the control virtual network
+    control_int_net_forwarding_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_forwarding_mode
+      type: string
+      description: forwarding mode of the control virtual network
+    vnf_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_name
+      type: string
+      description: Unique name for this VF instance
+    vdbe_untrusted_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_ip_1
+      type: string
+      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: aap_address_mode
+      type: string
+      description: Address mode for the vDBE cluster IP
+    control_int_net_shared:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_shared
+      type: boolean
+      description: control virtual network shared
+    vdbe_untrusted_v6_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_v6_ip_1
+      type: string
+      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_untrusted_vmac_address:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_vmac_address
+      type: string
+      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network
+    control_int_net_flood_unknown_unicast:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_flood_unknown_unicast
+      type: boolean
+      description: forwarding mode of the control virtual network
+    vdbe_aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    vnf_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_id
+      type: string
+      description: Unique ID for this VF inst
+    vdbe_name_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_name_1
+      type: string
+      description: VM Name for this vdbe node 1
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: availability_zone_1
+      type: string
+      description: The availability zone of secondary node1 vDBE vm in the local HA pair.
+    untrusted_vn_networks:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vn_networks
+      type: list
+      description: List of subinterface virtual networks
+      entry_schema:
+        type: string
+    vdbe_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_image_name
+      type: string
+      description: Image to use for vDBE
+    oam_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: oam_net_name
+      type: string
+      description: Name of NSDNet network from which the management IP addresses will be allocated
+    vdbe_aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix_len
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    fabric_int_net_flood_unknown_unicast:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: fabric_int_net_flood_unknown_unicast
+      type: boolean
+      description: forwarding mode of the fabric virtual network
+    oam_network_collection_function:
+      type: string
+      required: true
+    untrusted_vlan_tags:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vlan_tags
+      type: list
+      description: List of subinterface vlan tags
+      entry_schema:
+        type: string
+    untr_network_collection_function:
+      type: string
+      required: true
+    untr_vfc_instance_group_function:
+      type: string
+      required: true
+    vdbe_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_flavor_name
+      type: string
+      description: Flavor to use for vDBE
+    counter:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: counter
+      type: float
+      description: Counter.
+    fabric_int_net_forwarding_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: fabric_int_net_forwarding_mode
+      type: string
+      description: forwarding mode of the fabric virtual network
+    fabric_int_net_shared:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: fabric_int_net_shared
+      description: fabric virtual network shared
+    oam_vfc_instance_group_function:
+      type: string
+      required: true
+    vdbe_hw_untr_mac_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_hw_untr_mac_1
+      type: string
+      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network
+    untrusted_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_net_name
+      type: string
+      description: Name of public untrusted network into which this vDBE HA cluster is deployed
+    vdbe_device_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_device_name
+      type: string
+      description: VDBE device Name for this vdbe VNF
+    vdbe_aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+  node_templates:
+    fabric_int_net:
+      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+      properties:
+        network_name:
+          str_replace:
+            template: template-fabric-int
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+    control_int_net:
+      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+      properties:
+        network_name:
+          str_replace:
+            template: VNF_NAME_control_net
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+    abstract_vdbe:
+      type: org.openecomp.resource.abstract.nodes.vdbe
+      directives:
+      - substitutable
+      properties:
+        subinterface_vlan1_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        subinterface_vlan1_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        port_vdbe_oam_vmi_virtual_machine_interface_mac_addresses:
+        - - get_input: vdbe_hw_untr_mac_1
+        - - get_input: vdbe_hw_untr_mac_1
+        subinterface_vlan1_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        - get_input: vdbe_untrusted_vmac_address
+        compute_vdbe_availability_zone:
+        - get_input: availability_zone_1
+        - get_input: availability_zone_1
+        vm_flavor_name:
+          get_input: vdbe_flavor_name
+        subinterface_vlan1_counter:
+        - get_input: counter
+        - get_input: counter
+        subinterface_vlan2_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        vm_image_name:
+          get_input: vdbe_image_name
+        compute_vdbe_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        subinterface_vlan1_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        port_vdbe_oam_vmi_virtual_network_refs:
+        - - fabric_int_net
+        - - fabric_int_net
+        port_vdbe_oam_vmi_name:
+        - Port_2
+        - Port_4
+        subinterface_vlan2_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_vlan2_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        - get_input: vdbe_untrusted_v6_ip_1
+        subinterface_vlan2_parent_interface:
+        - vdbe_1_oam_vmi_1
+        - vdbe_2_oam_vmi_2
+        subinterface_vlan2_aap_address_mode:
+        - get_input: aap_address_mode
+        - get_input: aap_address_mode
+        subinterface_vlan1_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        - get_input: vdbe_hw_untr_mac_1
+        subinterface_vlan2_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        - get_input: vdbe_hw_untr_mac_1
+        subinterface_vlan1_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_vlan1_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_vlan2_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        port_vdbe_untr_vmi_name:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        - str_replace:
+            template: Port 3
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        compute_vdbe_name:
+        - get_input: vdbe_name_1
+        - get_input: vdbe_name_1
+        subinterface_vlan2_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        subinterface_vlan1_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        - get_input: vdbe_untrusted_v6_ip_1
+        subinterface_vlan2_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        - get_input: vdbe_untrusted_vmac_address
+        subinterface_vlan1_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        subinterface_vlan2_vn_network_list:
+        - fabric_int_net
+        - fabric_int_net
+        port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses:
+        - - get_input: vdbe_hw_untr_mac_1
+        - - get_input: vdbe_hw_untr_mac_1
+        subinterface_vlan1_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        port_vdbe_untr_vmi_virtual_network_refs:
+        - - control_int_net
+        - - control_int_net
+        subinterface_vlan2_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        - get_input: untrusted_vlan_tags
+        subinterface_vlan1_vn_network_list:
+        - get_input: untrusted_vn_networks
+        - get_input: untrusted_vn_networks
+        subinterface_vlan2_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_vlan2_counter:
+        - get_input: counter
+        - get_input: counter
+        subinterface_vlan1_parent_interface:
+        - vdbe_1_untr_vmi_1
+        - vdbe_1_untr_vmi_2
+        subinterface_vlan1_aap_address_mode:
+        - get_input: aap_address_mode
+        - get_input: aap_address_mode
+        subinterface_vlan2_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_vlan2_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_vlan2_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        subinterface_vlan1_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_vlan1_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        - get_input: untrusted_vlan_tags
+        service_template_filter:
+          substitute_service_template: Nested_vdbeServiceTemplate.yaml
+          count: 2
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+      requirements:
+      - link_vdbe_vdbe_untr_vmi:
+          capability: tosca.capabilities.network.Linkable
+          node: control_int_net
+          relationship: tosca.relationships.network.LinksTo
+      - link_vdbe_vdbe_oam_vmi:
+          capability: tosca.capabilities.network.Linkable
+          node: fabric_int_net
+          relationship: tosca.relationships.network.LinksTo
+      - link_vdbe_1_subint_oam_vmi_1_vdbe_vdbe_oam_vmi_vlan2:
+          capability: tosca.capabilities.network.Linkable
+          node: fabric_int_net
+          relationship: tosca.relationships.network.LinksTo
+  groups:
+    main_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/main.yml
+        description: |
+          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+      members:
+      - fabric_int_net
+      - control_int_net
+      - abstract_vdbe
+    untr_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: untr
+        network_collection_function:
+          get_input: untr_network_collection_function
+        vfc_instance_group_function:
+          get_input: untr_vfc_instance_group_function
+        subinterface_role: untr
+      members:
+      - abstract_vdbe
+    oam_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: oam
+        network_collection_function:
+          get_input: oam_network_collection_function
+        vfc_instance_group_function:
+          get_input: oam_vfc_instance_group_function
+        subinterface_role: oam
+      members:
+      - abstract_vdbe
\ No newline at end of file
index e62e4c4..69a8eea 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: Nested_vdbe\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-node_types:\r
-  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:\r
-    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server\r
-topology_template:\r
-  inputs:\r
-    subinterface_vlan1_aap_untrusted_v6_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_aap_sec_untrusted_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_vmac_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    compute_vdbe_availability_zone:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_2_port_virtual_machine_interface_mac_addresses:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    port_vdbe_untr_2_port_network_role_tag:\r
-      type: string\r
-      required: true\r
-    vm_flavor_name:\r
-      type: string\r
-      required: true\r
-    untrusted_num_vn:\r
-      hidden: false\r
-      immutable: false\r
-      type: float\r
-      description: Number of vDBE subinterface virtual Networks\r
-      constraints:\r
-      - in_range:\r
-        - 1\r
-        - 77\r
-    subinterface_vlan1_counter:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: float\r
-    subinterface_vlan2_aap_untrusted_v6_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    vm_image_name:\r
-      type: string\r
-      required: true\r
-    port_vdbe_untr_2_port_network_role:\r
-      type: string\r
-      required: true\r
-    compute_vdbe_metadata:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    subinterface_vlan1_aap_untrusted_v6_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_ip_requirements:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: org.openecomp.datatypes.network.IpRequirements\r
-    port_vdbe_untr_2_port_vlan_requirements:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: org.openecomp.datatypes.network.VlanRequirements\r
-    port_vdbe_untr_2_port_exCP_naming:\r
-      type: org.openecomp.datatypes.Naming\r
-      required: true\r
-    port_vdbe_untr_2_port_ip_requirements:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: org.openecomp.datatypes.network.IpRequirements\r
-    port_vdbe_untr_1_port_mac_requirements:\r
-      type: org.openecomp.datatypes.network.MacRequirements\r
-      required: true\r
-    port_vdbe_untr_1_port_order:\r
-      type: integer\r
-      required: true\r
-    subinterface_vlan2_ip_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_ip_v6_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_subnetpoolid:\r
-      type: string\r
-      required: true\r
-    subinterface_vlan2_parent_interface:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_aap_address_mode:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_2_port_mac_requirements:\r
-      type: org.openecomp.datatypes.network.MacRequirements\r
-      required: true\r
-    port_vdbe_untr_1_port_virtual_machine_interface_allowed_address_pairs:\r
-      type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs\r
-      required: true\r
-    subinterface_vlan1_mac_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_mac_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_aap_untrusted_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_ip_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_aap_sec_untrusted_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    compute_vdbe_name:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_network_role_tag:\r
-      type: string\r
-      required: true\r
-    subinterface_vlan2_aap_untrusted_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_ip_v6_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_vmac_address:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_aap_untrusted_ip_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_2_port_virtual_network_refs:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    subinterface_vlan2_vn_network_list:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_subinterfaces_name_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_network_role:\r
-      type: string\r
-      required: true\r
-    port_vdbe_untr_2_port_name:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_virtual_network_refs:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    subinterface_vlan2_vlan_tag_list:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    subinterface_vlan1_vn_network_list:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_aap_sec_untrusted_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_2_port_subnetpoolid:\r
-      type: string\r
-      required: true\r
-    port_vdbe_untr_2_port_order:\r
-      type: integer\r
-      required: true\r
-    subinterface_vlan2_counter:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: float\r
-    subinterface_vlan1_parent_interface:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_aap_address_mode:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_aap_untrusted_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    index_value:\r
-      type: integer\r
-      description: Index value of this substitution service template runtime instance\r
-      required: false\r
-      default: 0\r
-      constraints:\r
-      - greater_or_equal: 0\r
-    subinterface_vlan2_subinterfaces_name_prefix:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan2_aap_untrusted_v6_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_1_port_exCP_naming:\r
-      type: org.openecomp.datatypes.Naming\r
-      required: true\r
-    port_vdbe_untr_1_port_name:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    subinterface_vlan1_aap_sec_untrusted_ip_prefix_len:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: string\r
-    port_vdbe_untr_2_port_virtual_machine_interface_allowed_address_pairs:\r
-      type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs\r
-      required: true\r
-    port_vdbe_untr_1_port_vlan_requirements:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: org.openecomp.datatypes.network.VlanRequirements\r
-    port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-    subinterface_vlan1_vlan_tag_list:\r
-      type: list\r
-      required: true\r
-      entry_schema:\r
-        type: json\r
-  node_templates:\r
-    vdbe:\r
-      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe\r
-      properties:\r
-        availability_zone:\r
-          get_input:\r
-          - compute_vdbe_availability_zone\r
-          - index_value\r
-        flavor:\r
-          get_input: vm_flavor_name\r
-        metadata:\r
-          get_input:\r
-          - compute_vdbe_metadata\r
-          - index_value\r
-        image:\r
-          get_input: vm_image_name\r
-        name:\r
-          get_input:\r
-          - compute_vdbe_name\r
-          - index_value\r
-    vdbe_vdbe_untr_2_port:\r
-      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface\r
-      properties:\r
-        mac_requirements:\r
-          get_input: port_vdbe_untr_2_port_mac_requirements\r
-        order:\r
-          get_input: port_vdbe_untr_2_port_order\r
-        exCP_naming:\r
-          get_input: port_vdbe_untr_2_port_exCP_naming\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          get_input:\r
-          - port_vdbe_untr_2_port_virtual_machine_interface_allowed_address_pairs\r
-          - index_value\r
-        vlan_requirements:\r
-          get_input: port_vdbe_untr_2_port_vlan_requirements\r
-        virtual_network_refs:\r
-          get_input:\r
-          - port_vdbe_untr_2_port_virtual_network_refs\r
-          - index_value\r
-        ip_requirements:\r
-          get_input: port_vdbe_untr_2_port_ip_requirements\r
-        network_role_tag:\r
-          get_input: port_vdbe_untr_2_port_network_role_tag\r
-        virtual_machine_interface_mac_addresses:\r
-          get_input:\r
-          - port_vdbe_untr_2_port_virtual_machine_interface_mac_addresses\r
-          - index_value\r
-        network_role:\r
-          get_input: port_vdbe_untr_2_port_network_role\r
-        subnetpoolid:\r
-          get_input: port_vdbe_untr_2_port_subnetpoolid\r
-        name:\r
-          get_input:\r
-          - port_vdbe_untr_2_port_name\r
-          - index_value\r
-      requirements:\r
-      - binding:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe\r
-          relationship: tosca.relationships.network.BindsTo\r
-    vdbe_vdbe_untr_2_port_vlan2:\r
-      type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan2\r
-      directives:\r
-      - substitutable\r
-      properties:\r
-        aap_untrusted_ip_prefix:\r
-          get_input:\r
-          - subinterface_vlan2_aap_untrusted_ip_prefix\r
-          - index_value\r
-        aap_sec_untrusted_ip_prefix:\r
-          get_input:\r
-          - subinterface_vlan2_aap_sec_untrusted_ip_prefix\r
-          - index_value\r
-        ip_v6_address:\r
-          get_input:\r
-          - subinterface_vlan2_ip_v6_address\r
-          - index_value\r
-        counter:\r
-          get_input:\r
-          - subinterface_vlan2_counter\r
-          - index_value\r
-        ip_address:\r
-          get_input:\r
-          - subinterface_vlan2_ip_address\r
-          - index_value\r
-        subinterfaces_name_prefix:\r
-          get_input:\r
-          - subinterface_vlan2_subinterfaces_name_prefix\r
-          - index_value\r
-        aap_address_mode:\r
-          get_input:\r
-          - subinterface_vlan2_aap_address_mode\r
-          - index_value\r
-        service_template_filter:\r
-          substitute_service_template: vlan2ServiceTemplate.yaml\r
-          count: 5\r
-          mandatory: true\r
-        aap_untrusted_v6_ip_prefix:\r
-          get_input:\r
-          - subinterface_vlan2_aap_untrusted_v6_ip_prefix\r
-          - index_value\r
-        parent_interface:\r
-          get_input:\r
-          - subinterface_vlan2_parent_interface\r
-          - index_value\r
-        vn_network_list:\r
-          get_input:\r
-          - subinterface_vlan2_vn_network_list\r
-          - index_value\r
-        mac_address:\r
-          get_input:\r
-          - subinterface_vlan2_mac_address\r
-          - index_value\r
-        vlan_tag_list:\r
-          get_input:\r
-          - subinterface_vlan2_vlan_tag_list\r
-          - index_value\r
-        aap_sec_untrusted_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_vlan2_aap_sec_untrusted_ip_prefix_len\r
-          - index_value\r
-        vmac_address:\r
-          get_input:\r
-          - subinterface_vlan2_vmac_address\r
-          - index_value\r
-        aap_untrusted_v6_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_vlan2_aap_untrusted_v6_ip_prefix_len\r
-          - index_value\r
-        aap_untrusted_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_vlan2_aap_untrusted_ip_prefix_len\r
-          - index_value\r
-      requirements:\r
-      - binding_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe_vdbe_untr_2_port\r
-          relationship: tosca.relationships.network.BindsTo\r
-    vdbe_vdbe_untr_1_port_vlan1:\r
-      type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan1\r
-      directives:\r
-      - substitutable\r
-      properties:\r
-        aap_untrusted_ip_prefix:\r
-          get_input:\r
-          - subinterface_vlan1_aap_untrusted_ip_prefix\r
-          - index_value\r
-        aap_sec_untrusted_ip_prefix:\r
-          get_input:\r
-          - subinterface_vlan1_aap_sec_untrusted_ip_prefix\r
-          - index_value\r
-        ip_v6_address:\r
-          get_input:\r
-          - subinterface_vlan1_ip_v6_address\r
-          - index_value\r
-        counter:\r
-          get_input:\r
-          - subinterface_vlan1_counter\r
-          - index_value\r
-        ip_address:\r
-          get_input:\r
-          - subinterface_vlan1_ip_address\r
-          - index_value\r
-        subinterfaces_name_prefix:\r
-          get_input:\r
-          - subinterface_vlan1_subinterfaces_name_prefix\r
-          - index_value\r
-        aap_address_mode:\r
-          get_input:\r
-          - subinterface_vlan1_aap_address_mode\r
-          - index_value\r
-        service_template_filter:\r
-          substitute_service_template: vlan1ServiceTemplate.yaml\r
-          count:\r
-            get_input: untrusted_num_vn\r
-          mandatory: false\r
-        aap_untrusted_v6_ip_prefix:\r
-          get_input:\r
-          - subinterface_vlan1_aap_untrusted_v6_ip_prefix\r
-          - index_value\r
-        parent_interface:\r
-          get_input:\r
-          - subinterface_vlan1_parent_interface\r
-          - index_value\r
-        vn_network_list:\r
-          get_input:\r
-          - subinterface_vlan1_vn_network_list\r
-          - index_value\r
-        mac_address:\r
-          get_input:\r
-          - subinterface_vlan1_mac_address\r
-          - index_value\r
-        vlan_tag_list:\r
-          get_input:\r
-          - subinterface_vlan1_vlan_tag_list\r
-          - index_value\r
-        aap_sec_untrusted_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_vlan1_aap_sec_untrusted_ip_prefix_len\r
-          - index_value\r
-        vmac_address:\r
-          get_input:\r
-          - subinterface_vlan1_vmac_address\r
-          - index_value\r
-        aap_untrusted_v6_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_vlan1_aap_untrusted_v6_ip_prefix_len\r
-          - index_value\r
-        aap_untrusted_ip_prefix_len:\r
-          get_input:\r
-          - subinterface_vlan1_aap_untrusted_ip_prefix_len\r
-          - index_value\r
-      requirements:\r
-      - binding_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe_vdbe_untr_1_port\r
-          relationship: tosca.relationships.network.BindsTo\r
-    vdbe_vdbe_untr_1_port:\r
-      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface\r
-      properties:\r
-        mac_requirements:\r
-          get_input: port_vdbe_untr_1_port_mac_requirements\r
-        order:\r
-          get_input: port_vdbe_untr_1_port_order\r
-        exCP_naming:\r
-          get_input: port_vdbe_untr_1_port_exCP_naming\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_virtual_machine_interface_allowed_address_pairs\r
-          - index_value\r
-        vlan_requirements:\r
-          get_input: port_vdbe_untr_1_port_vlan_requirements\r
-        virtual_network_refs:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_virtual_network_refs\r
-          - index_value\r
-        ip_requirements:\r
-          get_input: port_vdbe_untr_1_port_ip_requirements\r
-        network_role_tag:\r
-          get_input: port_vdbe_untr_1_port_network_role_tag\r
-        virtual_machine_interface_mac_addresses:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_virtual_machine_interface_mac_addresses\r
-          - index_value\r
-        network_role:\r
-          get_input: port_vdbe_untr_1_port_network_role\r
-        subnetpoolid:\r
-          get_input: port_vdbe_untr_1_port_subnetpoolid\r
-        name:\r
-          get_input:\r
-          - port_vdbe_untr_1_port_name\r
-          - index_value\r
-      requirements:\r
-      - binding:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe\r
-          relationship: tosca.relationships.network.BindsTo\r
-  substitution_mappings:\r
-    node_type: org.openecomp.resource.abstract.nodes.vdbe\r
-    capabilities:\r
-      feature_vdbe:\r
-      - vdbe\r
-      - feature\r
-      disk.device.iops_vdbe:\r
-      - vdbe\r
-      - disk.device.iops\r
-      endpoint_vdbe:\r
-      - vdbe\r
-      - endpoint\r
-      disk.ephemeral.size_vdbe:\r
-      - vdbe\r
-      - disk.ephemeral.size\r
-      feature_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - feature\r
-      feature_vdbe_untr_x_vlan1-Network-Role_vmi_subport_vdbe_vdbe_untr_1_port_vlan1:\r
-      - vdbe_vdbe_untr_1_port_vlan1\r
-      - feature_vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-      cpu_util_vdbe:\r
-      - vdbe\r
-      - cpu_util\r
-      vcpus_vdbe:\r
-      - vdbe\r
-      - vcpus\r
-      disk.write.requests_vdbe:\r
-      - vdbe\r
-      - disk.write.requests\r
-      feature_vdbe_vdbe_untr_1_port_vlan1:\r
-      - vdbe_vdbe_untr_1_port_vlan1\r
-      - feature\r
-      disk.device.latency_vdbe:\r
-      - vdbe\r
-      - disk.device.latency\r
-      disk.device.write.requests.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.write.requests.rate\r
-      network.incoming.packets_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.incoming.packets\r
-      feature_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - feature\r
-      disk.write.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.write.bytes.rate\r
-      network.incoming.bytes.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.bytes.rate\r
-      network.incoming.packets.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.packets.rate\r
-      scalable_vdbe:\r
-      - vdbe\r
-      - scalable\r
-      disk.iops_vdbe:\r
-      - vdbe\r
-      - disk.iops\r
-      disk.device.write.requests_vdbe:\r
-      - vdbe\r
-      - disk.device.write.requests\r
-      disk.device.capacity_vdbe:\r
-      - vdbe\r
-      - disk.device.capacity\r
-      network.outgoing.bytes.rate_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.outgoing.bytes.rate\r
-      network.outgoing.bytes_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outgoing.bytes\r
-      disk.device.allocation_vdbe:\r
-      - vdbe\r
-      - disk.device.allocation\r
-      feature_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another_vdbe_vdbe_untr_2_port_vlan2:\r
-      - vdbe_vdbe_untr_2_port_vlan2\r
-      - feature_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-      disk.usage_vdbe:\r
-      - vdbe\r
-      - disk.usage\r
-      memory.usage_vdbe:\r
-      - vdbe\r
-      - memory.usage\r
-      network.outpoing.packets_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.outpoing.packets\r
-      disk.read.requests_vdbe:\r
-      - vdbe\r
-      - disk.read.requests\r
-      network.incoming.bytes_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.bytes\r
-      instance_vdbe:\r
-      - vdbe\r
-      - instance\r
-      cpu.delta_vdbe:\r
-      - vdbe\r
-      - cpu.delta\r
-      network.outgoing.packets.rate_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.outgoing.packets.rate\r
-      feature_vdbe_vdbe_untr_2_port_vlan2:\r
-      - vdbe_vdbe_untr_2_port_vlan2\r
-      - feature\r
-      binding_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - binding\r
-      disk.device.read.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.read.bytes.rate\r
-      disk.device.write.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.write.bytes.rate\r
-      memory.resident_vdbe:\r
-      - vdbe\r
-      - memory.resident\r
-      forwarder_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - forwarder\r
-      disk.write.requests.rate_vdbe:\r
-      - vdbe\r
-      - disk.write.requests.rate\r
-      cpu_vdbe:\r
-      - vdbe\r
-      - cpu\r
-      disk.write.bytes_vdbe:\r
-      - vdbe\r
-      - disk.write.bytes\r
-      forwarder_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - forwarder\r
-      disk.device.usage_vdbe:\r
-      - vdbe\r
-      - disk.device.usage\r
-      disk.device.read.bytes_vdbe:\r
-      - vdbe\r
-      - disk.device.read.bytes\r
-      disk.latency_vdbe:\r
-      - vdbe\r
-      - disk.latency\r
-      network.outgoing.packets.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outgoing.packets.rate\r
-      disk.capacity_vdbe:\r
-      - vdbe\r
-      - disk.capacity\r
-      host_vdbe:\r
-      - vdbe\r
-      - host\r
-      disk.allocation_vdbe:\r
-      - vdbe\r
-      - disk.allocation\r
-      network.outpoing.packets_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outpoing.packets\r
-      network.incoming.packets_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.incoming.packets\r
-      disk.read.bytes.rate_vdbe:\r
-      - vdbe\r
-      - disk.read.bytes.rate\r
-      network.incoming.bytes_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.incoming.bytes\r
-      os_vdbe:\r
-      - vdbe\r
-      - os\r
-      disk.device.read.requests_vdbe:\r
-      - vdbe\r
-      - disk.device.read.requests\r
-      network.incoming.packets.rate_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.incoming.packets.rate\r
-      disk.root.size_vdbe:\r
-      - vdbe\r
-      - disk.root.size\r
-      network.incoming.bytes.rate_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.incoming.bytes.rate\r
-      binding_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - binding\r
-      memory_vdbe:\r
-      - vdbe\r
-      - memory\r
-      binding_vdbe:\r
-      - vdbe\r
-      - binding\r
-      disk.device.write.bytes_vdbe:\r
-      - vdbe\r
-      - disk.device.write.bytes\r
-      network.outgoing.bytes_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - network.outgoing.bytes\r
-      network.outgoing.bytes.rate_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - network.outgoing.bytes.rate\r
-      disk.device.read.requests.rate_vdbe:\r
-      - vdbe\r
-      - disk.device.read.requests.rate\r
-      disk.read.bytes_vdbe:\r
-      - vdbe\r
-      - disk.read.bytes\r
-    requirements:\r
-      link_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another_vdbe_vdbe_untr_2_port_vlan2:\r
-      - vdbe_vdbe_untr_2_port_vlan2\r
-      - link_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-      dependency_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - dependency\r
-      link_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - link\r
-      dependency_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another_vdbe_vdbe_untr_2_port_vlan2:\r
-      - vdbe_vdbe_untr_2_port_vlan2\r
-      - dependency_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-      local_storage_vdbe:\r
-      - vdbe\r
-      - local_storage\r
-      dependency_vdbe_vdbe_untr_2_port:\r
-      - vdbe_vdbe_untr_2_port\r
-      - dependency\r
-      dependency_vdbe_vdbe_untr_2_port_vlan2:\r
-      - vdbe_vdbe_untr_2_port_vlan2\r
-      - dependency\r
-      dependency_vdbe_vdbe_untr_1_port_vlan1:\r
-      - vdbe_vdbe_untr_1_port_vlan1\r
-      - dependency\r
-      dependency_vdbe_untr_x_vlan1-Network-Role_vmi_subport_vdbe_vdbe_untr_1_port_vlan1:\r
-      - vdbe_vdbe_untr_1_port_vlan1\r
-      - dependency_vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-      link_vdbe_vdbe_untr_1_port:\r
-      - vdbe_vdbe_untr_1_port\r
-      - link\r
-      link_vdbe_untr_x_vlan1-Network-Role_vmi_subport_vdbe_vdbe_untr_1_port_vlan1:\r
-      - vdbe_vdbe_untr_1_port_vlan1\r
-      - link_vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-      dependency_vdbe:\r
-      - vdbe\r
-      - dependency\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Nested_vdbe
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    port_vdbe_untr_vmi_virtual_machine_interface_allowed_address_pairs:
+      type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+      required: true
+    subinterface_vlan1_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan1_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_oam_vmi_virtual_machine_interface_mac_addresses:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_vlan1_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_availability_zone:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_flavor_name:
+      type: string
+      required: true
+    port_vdbe_oam_vmi_subnetpoolid:
+      type: string
+      required: true
+    untrusted_num_vn:
+      hidden: false
+      immutable: false
+      type: float
+      description: Number of vDBE subinterface virtual Networks
+      constraints:
+      - in_range:
+        - 1
+        - 77
+    subinterface_vlan1_counter:
+      type: list
+      required: true
+      entry_schema:
+        type: float
+    subinterface_vlan2_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_image_name:
+      type: string
+      required: true
+    port_vdbe_oam_vmi_network_role_tag:
+      type: string
+      required: true
+    compute_vdbe_metadata:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_vlan1_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_oam_vmi_virtual_network_refs:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    port_vdbe_untr_vmi_ip_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.IpRequirements
+    port_vdbe_oam_vmi_order:
+      type: integer
+      required: true
+    port_vdbe_oam_vmi_vlan_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.VlanRequirements
+    port_vdbe_oam_vmi_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_network_role:
+      type: string
+      required: true
+    port_vdbe_oam_vmi_mac_requirements:
+      type: org.openecomp.datatypes.network.MacRequirements
+      required: true
+    subinterface_vlan2_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan1_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan1_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan1_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_subnetpoolid:
+      type: string
+      required: true
+    subinterface_vlan2_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_network_role_tag:
+      type: string
+      required: true
+    subinterface_vlan1_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan1_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_vlan1_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_oam_vmi_network_role:
+      type: string
+      required: true
+    port_vdbe_untr_vmi_virtual_network_refs:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    port_vdbe_untr_vmi_mac_requirements:
+      type: org.openecomp.datatypes.network.MacRequirements
+      required: true
+    subinterface_vlan2_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_vlan1_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_oam_vmi_ip_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.IpRequirements
+    port_vdbe_oam_vmi_exCP_naming:
+      type: org.openecomp.datatypes.Naming
+      required: true
+    subinterface_vlan2_counter:
+      type: list
+      required: true
+      entry_schema:
+        type: float
+    port_vdbe_untr_vmi_order:
+      type: integer
+      required: true
+    subinterface_vlan1_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan1_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    index_value:
+      type: integer
+      description: Index value of this substitution service template runtime instance
+      required: false
+      default: 0
+      constraints:
+      - greater_or_equal: 0
+    subinterface_vlan2_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vlan2_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_exCP_naming:
+      type: org.openecomp.datatypes.Naming
+      required: true
+    subinterface_vlan1_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_vmi_vlan_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.VlanRequirements
+    port_vdbe_oam_vmi_virtual_machine_interface_allowed_address_pairs:
+      type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs
+      required: true
+    subinterface_vlan1_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+  node_templates:
+    vdbe:
+      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe
+      properties:
+        availability_zone:
+          get_input:
+          - compute_vdbe_availability_zone
+          - index_value
+        flavor:
+          get_input: vm_flavor_name
+        metadata:
+          get_input:
+          - compute_vdbe_metadata
+          - index_value
+        image:
+          get_input: vm_image_name
+        name:
+          get_input:
+          - compute_vdbe_name
+          - index_value
+    vdbe_vdbe_untr_vmi_vlan1:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan1
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vlan1_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vlan1_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_vlan1_ip_v6_address
+          - index_value
+        counter:
+          get_input:
+          - subinterface_vlan1_counter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_vlan1_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_vlan1_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_vlan1_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: vlan1ServiceTemplate.yaml
+          count:
+            get_input: untrusted_num_vn
+          mandatory: false
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_vlan1_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_vlan1_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_vlan1_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_vlan1_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_vlan1_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vlan1_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_vlan1_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_vlan1_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vlan1_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_0_subint_untr_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_untr_vmi
+          relationship: tosca.relationships.network.BindsTo
+    vdbe_vdbe_untr_vmi:
+      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface
+      properties:
+        mac_requirements:
+          get_input: port_vdbe_untr_vmi_mac_requirements
+        order:
+          get_input: port_vdbe_untr_vmi_order
+        exCP_naming:
+          get_input: port_vdbe_untr_vmi_exCP_naming
+        virtual_machine_interface_allowed_address_pairs:
+          get_input:
+          - port_vdbe_untr_vmi_virtual_machine_interface_allowed_address_pairs
+          - index_value
+        vlan_requirements:
+          get_input: port_vdbe_untr_vmi_vlan_requirements
+        virtual_network_refs:
+          get_input:
+          - port_vdbe_untr_vmi_virtual_network_refs
+          - index_value
+        ip_requirements:
+          get_input: port_vdbe_untr_vmi_ip_requirements
+        network_role_tag:
+          get_input: port_vdbe_untr_vmi_network_role_tag
+        virtual_machine_interface_mac_addresses:
+          get_input:
+          - port_vdbe_untr_vmi_virtual_machine_interface_mac_addresses
+          - index_value
+        network_role:
+          get_input: port_vdbe_untr_vmi_network_role
+        subnetpoolid:
+          get_input: port_vdbe_untr_vmi_subnetpoolid
+        name:
+          get_input:
+          - port_vdbe_untr_vmi_name
+          - index_value
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe
+          relationship: tosca.relationships.network.BindsTo
+    vdbe_vdbe_oam_vmi:
+      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface
+      properties:
+        mac_requirements:
+          get_input: port_vdbe_oam_vmi_mac_requirements
+        order:
+          get_input: port_vdbe_oam_vmi_order
+        exCP_naming:
+          get_input: port_vdbe_oam_vmi_exCP_naming
+        virtual_machine_interface_allowed_address_pairs:
+          get_input:
+          - port_vdbe_oam_vmi_virtual_machine_interface_allowed_address_pairs
+          - index_value
+        vlan_requirements:
+          get_input: port_vdbe_oam_vmi_vlan_requirements
+        virtual_network_refs:
+          get_input:
+          - port_vdbe_oam_vmi_virtual_network_refs
+          - index_value
+        ip_requirements:
+          get_input: port_vdbe_oam_vmi_ip_requirements
+        network_role_tag:
+          get_input: port_vdbe_oam_vmi_network_role_tag
+        virtual_machine_interface_mac_addresses:
+          get_input:
+          - port_vdbe_oam_vmi_virtual_machine_interface_mac_addresses
+          - index_value
+        network_role:
+          get_input: port_vdbe_oam_vmi_network_role
+        subnetpoolid:
+          get_input: port_vdbe_oam_vmi_subnetpoolid
+        name:
+          get_input:
+          - port_vdbe_oam_vmi_name
+          - index_value
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe
+          relationship: tosca.relationships.network.BindsTo
+    vdbe_vdbe_oam_vmi_vlan2:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan2
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vlan2_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vlan2_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_vlan2_ip_v6_address
+          - index_value
+        counter:
+          get_input:
+          - subinterface_vlan2_counter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_vlan2_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_vlan2_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_vlan2_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: vlan2ServiceTemplate.yaml
+          count: 5
+          mandatory: true
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_vlan2_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_vlan2_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_vlan2_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_vlan2_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_vlan2_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vlan2_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_vlan2_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_vlan2_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vlan2_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_1_subint_oam_vmi_1:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_oam_vmi
+          relationship: tosca.relationships.network.BindsTo
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.vdbe
+    capabilities:
+      feature_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - feature
+      network.incoming.bytes_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.incoming.bytes
+      network.incoming.packets.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.packets.rate
+      feature_vdbe:
+      - vdbe
+      - feature
+      disk.device.iops_vdbe:
+      - vdbe
+      - disk.device.iops
+      endpoint_vdbe:
+      - vdbe
+      - endpoint
+      disk.ephemeral.size_vdbe:
+      - vdbe
+      - disk.ephemeral.size
+      feature_vdbe_vdbe_oam_vmi_vlan2:
+      - vdbe_vdbe_oam_vmi_vlan2
+      - feature
+      cpu_util_vdbe:
+      - vdbe
+      - cpu_util
+      network.incoming.bytes.rate_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.incoming.bytes.rate
+      vcpus_vdbe:
+      - vdbe
+      - vcpus
+      disk.write.requests_vdbe:
+      - vdbe
+      - disk.write.requests
+      feature_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - feature
+      disk.device.latency_vdbe:
+      - vdbe
+      - disk.device.latency
+      disk.device.write.requests.rate_vdbe:
+      - vdbe
+      - disk.device.write.requests.rate
+      disk.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.write.bytes.rate
+      feature_vdbe_1_subint_oam_vmi_1_vdbe_vdbe_oam_vmi_vlan2:
+      - vdbe_vdbe_oam_vmi_vlan2
+      - feature_vdbe_1_subint_oam_vmi_1
+      scalable_vdbe:
+      - vdbe
+      - scalable
+      disk.iops_vdbe:
+      - vdbe
+      - disk.iops
+      disk.device.write.requests_vdbe:
+      - vdbe
+      - disk.device.write.requests
+      disk.device.capacity_vdbe:
+      - vdbe
+      - disk.device.capacity
+      forwarder_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - forwarder
+      disk.device.allocation_vdbe:
+      - vdbe
+      - disk.device.allocation
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_vmi_vlan1:
+      - vdbe_vdbe_untr_vmi_vlan1
+      - feature_vdbe_0_subint_untr_vmi_0
+      disk.usage_vdbe:
+      - vdbe
+      - disk.usage
+      memory.usage_vdbe:
+      - vdbe
+      - memory.usage
+      disk.read.requests_vdbe:
+      - vdbe
+      - disk.read.requests
+      network.outgoing.packets.rate_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.outgoing.packets.rate
+      network.incoming.packets_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.incoming.packets
+      instance_vdbe:
+      - vdbe
+      - instance
+      binding_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - binding
+      network.outpoing.packets_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outpoing.packets
+      cpu.delta_vdbe:
+      - vdbe
+      - cpu.delta
+      disk.device.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.read.bytes.rate
+      disk.device.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.write.bytes.rate
+      memory.resident_vdbe:
+      - vdbe
+      - memory.resident
+      network.incoming.packets_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.packets
+      disk.write.requests.rate_vdbe:
+      - vdbe
+      - disk.write.requests.rate
+      network.incoming.bytes.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.bytes.rate
+      cpu_vdbe:
+      - vdbe
+      - cpu
+      disk.write.bytes_vdbe:
+      - vdbe
+      - disk.write.bytes
+      network.incoming.packets.rate_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.incoming.packets.rate
+      binding_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - binding
+      network.outgoing.bytes.rate_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.outgoing.bytes.rate
+      disk.device.usage_vdbe:
+      - vdbe
+      - disk.device.usage
+      disk.device.read.bytes_vdbe:
+      - vdbe
+      - disk.device.read.bytes
+      disk.latency_vdbe:
+      - vdbe
+      - disk.latency
+      feature_vdbe_vdbe_untr_vmi_vlan1:
+      - vdbe_vdbe_untr_vmi_vlan1
+      - feature
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outgoing.bytes.rate
+      disk.capacity_vdbe:
+      - vdbe
+      - disk.capacity
+      host_vdbe:
+      - vdbe
+      - host
+      disk.allocation_vdbe:
+      - vdbe
+      - disk.allocation
+      network.outpoing.packets_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.outpoing.packets
+      disk.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.read.bytes.rate
+      network.outgoing.packets.rate_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outgoing.packets.rate
+      network.incoming.bytes_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.incoming.bytes
+      os_vdbe:
+      - vdbe
+      - os
+      forwarder_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - forwarder
+      disk.device.read.requests_vdbe:
+      - vdbe
+      - disk.device.read.requests
+      disk.root.size_vdbe:
+      - vdbe
+      - disk.root.size
+      network.outgoing.bytes_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - network.outgoing.bytes
+      network.outgoing.bytes_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - network.outgoing.bytes
+      memory_vdbe:
+      - vdbe
+      - memory
+      binding_vdbe:
+      - vdbe
+      - binding
+      disk.device.write.bytes_vdbe:
+      - vdbe
+      - disk.device.write.bytes
+      disk.device.read.requests.rate_vdbe:
+      - vdbe
+      - disk.device.read.requests.rate
+      disk.read.bytes_vdbe:
+      - vdbe
+      - disk.read.bytes
+    requirements:
+      link_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - link
+      dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_vmi_vlan1:
+      - vdbe_vdbe_untr_vmi_vlan1
+      - dependency_vdbe_0_subint_untr_vmi_0
+      dependency_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - dependency
+      link_vdbe_vdbe_oam_vmi:
+      - vdbe_vdbe_oam_vmi
+      - link
+      dependency_vdbe_vdbe_untr_vmi_vlan1:
+      - vdbe_vdbe_untr_vmi_vlan1
+      - dependency
+      local_storage_vdbe:
+      - vdbe
+      - local_storage
+      link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_vmi_vlan1:
+      - vdbe_vdbe_untr_vmi_vlan1
+      - link_vdbe_0_subint_untr_vmi_0
+      dependency_vdbe_vdbe_untr_vmi:
+      - vdbe_vdbe_untr_vmi
+      - dependency
+      dependency_vdbe_vdbe_oam_vmi_vlan2:
+      - vdbe_vdbe_oam_vmi_vlan2
+      - dependency
+      dependency_vdbe_1_subint_oam_vmi_1_vdbe_vdbe_oam_vmi_vlan2:
+      - vdbe_vdbe_oam_vmi_vlan2
+      - dependency_vdbe_1_subint_oam_vmi_1
+      dependency_vdbe:
+      - vdbe
+      - dependency
+      link_vdbe_1_subint_oam_vmi_1_vdbe_vdbe_oam_vmi_vlan2:
+      - vdbe_vdbe_oam_vmi_vlan2
+      - link_vdbe_1_subint_oam_vmi_1
\ No newline at end of file
index 67821a7..ef5f491 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: vlan1\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-topology_template:\r
-  inputs:\r
-    aap_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-    aap_sec_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-    ip_v6_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv6 address associated with subinterfaces\r
-    counter:\r
-      hidden: false\r
-      immutable: false\r
-      type: float\r
-      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-    subinterfaces_name_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-    ip_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv4 address associated with subinterfaces\r
-    aap_address_mode:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Address mode for the vDBE cluster IP\r
-    aap_untrusted_v6_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-    parent_interface:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Parent Contrail interface\r
-    vn_network_list:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-    mac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: HW MAC address to use for subinterface\r
-    vlan_tag_list:\r
-      hidden: false\r
-      immutable: false\r
-      type: list\r
-      description: List of VLAN IDs to use for subinterfaces\r
-      entry_schema:\r
-        type: string\r
-    aap_sec_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-    vmac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: virtual MAC address to use for subinterface\r
-    aap_untrusted_v6_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-    aap_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-  node_templates:\r
-    vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface\r
-      properties:\r
-        virtual_machine_interface_refs:\r
-        - get_input: parent_interface\r
-        name:\r
-          str_replace:\r
-            template: $NAME_$INDEX\r
-            params:\r
-              $NAME:\r
-                get_input: subinterfaces_name_prefix\r
-              $INDEX:\r
-                get_input:\r
-                - vlan_tag_list\r
-                - get_input: counter\r
-        virtual_network_refs:\r
-        - get_input: vn_network_list\r
-        virtual_machine_interface_properties:\r
-          sub_interface_vlan_tag:\r
-            get_input:\r
-            - vlan_tag_list\r
-            - get_input: counter\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          allowed_address_pair:\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_sec_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_sec_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: mac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_v6_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_v6_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-        virtual_machine_interface_mac_addresses:\r
-          mac_address:\r
-          - get_input: mac_address\r
-  groups:\r
-    vlan1_group:\r
-      type: org.openecomp.groups.heat.HeatStack\r
-      properties:\r
-        heat_file: ../Artifacts/vlan1.yml\r
-        description: cmaui server template for vMMSC\r
-      members:\r
-      - vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-  substitution_mappings:\r
-    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan1\r
-    capabilities:\r
-      feature_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-      - vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-      - feature\r
-    requirements:\r
-      link_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-      - vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-      - link\r
-      binding_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-      - vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-      - binding\r
-      dependency_vdbe_untr_x_vlan1-Network-Role_vmi_subport:\r
-      - vdbe_untr_x_vlan1-Network-Role_vmi_subport\r
-      - dependency\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: vlan1
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    vn_network_list:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_0_subint_untr_vmi_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vn_network_list
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    vlan1_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/vlan1.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_0_subint_untr_vmi_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan1
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - feature
+    requirements:
+      dependency_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - dependency
+      binding_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - binding
+      link_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - link
\ No newline at end of file
index af537a8..2fcab81 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: vlan2\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-topology_template:\r
-  inputs:\r
-    aap_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-    aap_sec_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-    ip_v6_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv6 address associated with subinterfaces\r
-    counter:\r
-      hidden: false\r
-      immutable: false\r
-      type: float\r
-      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-    subinterfaces_name_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-    ip_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv4 address associated with subinterfaces\r
-    aap_address_mode:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Address mode for the vDBE cluster IP\r
-    aap_untrusted_v6_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-    parent_interface:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Parent Contrail interface\r
-    vn_network_list:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-    mac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: HW MAC address to use for subinterface\r
-    vlan_tag_list:\r
-      hidden: false\r
-      immutable: false\r
-      type: list\r
-      description: List of VLAN IDs to use for subinterfaces\r
-      entry_schema:\r
-        type: string\r
-    aap_sec_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-    vmac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: virtual MAC address to use for subinterface\r
-    aap_untrusted_v6_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-    aap_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-  node_templates:\r
-    vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface\r
-      properties:\r
-        virtual_machine_interface_refs:\r
-        - get_input: parent_interface\r
-        name:\r
-          str_replace:\r
-            template: $NAME_$INDEX\r
-            params:\r
-              $NAME:\r
-                get_input: subinterfaces_name_prefix\r
-              $INDEX:\r
-                get_input:\r
-                - vlan_tag_list\r
-                - get_input: counter\r
-        virtual_network_refs:\r
-        - get_input: vn_network_list\r
-        virtual_machine_interface_properties:\r
-          sub_interface_vlan_tag:\r
-            get_input:\r
-            - vlan_tag_list\r
-            - get_input: counter\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          allowed_address_pair:\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_sec_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_sec_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: mac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_v6_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_v6_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-        virtual_machine_interface_mac_addresses:\r
-          mac_address:\r
-          - get_input: mac_address\r
-  groups:\r
-    vlan2_group:\r
-      type: org.openecomp.groups.heat.HeatStack\r
-      properties:\r
-        heat_file: ../Artifacts/vlan2.yml\r
-        description: cmaui server template for vMMSC\r
-      members:\r
-      - vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-  substitution_mappings:\r
-    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan2\r
-    capabilities:\r
-      feature_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-      - vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-      - feature\r
-    requirements:\r
-      link_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-      - vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-      - link\r
-      binding_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-      - vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-      - binding\r
-      dependency_vdbe_untr_x_vlan2-Network-Role_vmi_subport_another:\r
-      - vdbe_untr_x_vlan2-Network-Role_vmi_subport_another\r
-      - dependency\r
\ No newline at end of file
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: vlan2
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    vn_network_list:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_1_subint_oam_vmi_1:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vn_network_list
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    vlan2_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/vlan2.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_1_subint_oam_vmi_1
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.vlan2
+    capabilities:
+      feature_vdbe_1_subint_oam_vmi_1:
+      - vdbe_1_subint_oam_vmi_1
+      - feature
+    requirements:
+      link_vdbe_1_subint_oam_vmi_1:
+      - vdbe_1_subint_oam_vmi_1
+      - link
+      dependency_vdbe_1_subint_oam_vmi_1:
+      - vdbe_1_subint_oam_vmi_1
+      - dependency
+      binding_vdbe_1_subint_oam_vmi_1:
+      - vdbe_1_subint_oam_vmi_1
+      - binding
\ No newline at end of file
index f550cb2..db8bd34 100644 (file)
@@ -18,6 +18,9 @@ topology_template:
       immutable: false
       type: string
       description: UID of OAM network
+    Vlan_network_collection_function:
+      type: string
+      required: true
     ps_server_1b_ips:
       hidden: false
       immutable: false
@@ -60,6 +63,9 @@ topology_template:
       hidden: false
       immutable: false
       type: string
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     packet_external_network_name:
       hidden: false
       immutable: false
@@ -271,6 +277,17 @@ topology_template:
       - packet_internal_network
       - abstract_ps_server_1b
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -736,4 +753,4 @@ topology_template:
       - link_pd_server_1b_pd_server_2b_port
       dependency_packet_external_network:
       - packet_external_network
-      - dependency
+      - dependency
\ No newline at end of file
index 2a33ee3..19e2b4e 100644 (file)
@@ -8,25 +8,9 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
-    port_net:
-      hidden: false
-      immutable: false
+    Vlan_network_collection_function:
       type: string
-      description: port network
-    pd_server_1b_flavor:
-      hidden: false
-      immutable: false
-      type: string
-      description: Flavor for PD server
-    pd_server_1b_ips:
-      hidden: false
-      immutable: false
-      type: string
-    packet_external_network_name:
-      hidden: false
-      immutable: false
-      type: string
-      description: network name
+      required: true
     packet_internal_network_name:
       hidden: false
       immutable: false
@@ -46,6 +30,28 @@ topology_template:
       description: CMAUI1, CMAUI2 server names
       entry_schema:
         type: string
+    port_net:
+      hidden: false
+      immutable: false
+      type: string
+      description: port network
+    pd_server_1b_flavor:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor for PD server
+    pd_server_1b_ips:
+      hidden: false
+      immutable: false
+      type: string
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
+    packet_external_network_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: network name
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -168,6 +174,17 @@ topology_template:
       - packet_internal_network
       - test_nested_level2
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -597,4 +614,4 @@ topology_template:
       - dependency
       dependency_packet_external_network:
       - packet_external_network
-      - dependency
+      - dependency
\ No newline at end of file
index 8ae882e..51fd65c 100644 (file)
@@ -8,25 +8,9 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
-    port_net:
-      hidden: false
-      immutable: false
+    Vlan_network_collection_function:
       type: string
-      description: port network
-    pd_server_1b_flavor:
-      hidden: false
-      immutable: false
-      type: string
-      description: Flavor for PD server
-    pd_server_1b_ips:
-      hidden: false
-      immutable: false
-      type: string
-    packet_external_network_name:
-      hidden: false
-      immutable: false
-      type: string
-      description: network name
+      required: true
     packet_internal_network_name:
       hidden: false
       immutable: false
@@ -46,6 +30,28 @@ topology_template:
       description: CMAUI1, CMAUI2 server names
       entry_schema:
         type: string
+    port_net:
+      hidden: false
+      immutable: false
+      type: string
+      description: port network
+    pd_server_1b_flavor:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor for PD server
+    pd_server_1b_ips:
+      hidden: false
+      immutable: false
+      type: string
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
+    packet_external_network_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: network name
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -154,6 +160,17 @@ topology_template:
       - packet_internal_network
       - test_nested_level2
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -763,4 +780,4 @@ topology_template:
       - dependency
       dependency_packet_external_network:
       - packet_external_network
-      - dependency
+      - dependency
\ No newline at end of file
index 91bd0bc..8543cab 100644 (file)
@@ -8,31 +8,49 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
-    port_net:
+    Vlan_network_collection_function:
+      type: string
+      required: true
+    ps_server_1b_ips:
       hidden: false
       immutable: false
       type: string
-      description: port network
-    ps_server_2b_ips:
+    security_group_name:
+      hidden: false
+      immutable: false
+      type: list
+      description: CMAUI1, CMAUI2 server names
+      entry_schema:
+        type: string
+    ps_server_1b_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: Ps server names
+      entry_schema:
+        type: string
+    packet_ext_network_name:
       hidden: false
       immutable: false
       type: string
-    ps_server_1b_ips:
+      description: network name
+    port_net:
       hidden: false
       immutable: false
       type: string
-    packet_int_network_name:
+      description: port network
+    ps_server_2b_ips:
       hidden: false
       immutable: false
       type: string
-      description: network name
-    security_group_name:
+    packet_int_network_name:
       hidden: false
       immutable: false
-      type: list
-      description: CMAUI1, CMAUI2 server names
-      entry_schema:
-        type: string
+      type: string
+      description: network name
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -54,18 +72,6 @@ topology_template:
       immutable: false
       type: string
       description: sub interface network
-    ps_server_1b_names:
-      hidden: false
-      immutable: false
-      type: list
-      description: Ps server names
-      entry_schema:
-        type: string
-    packet_ext_network_name:
-      hidden: false
-      immutable: false
-      type: string
-      description: network name
   node_templates:
     packet_ext_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
@@ -159,6 +165,17 @@ topology_template:
           node: packet_ext_network
           relationship: tosca.relationships.network.LinksTo
   groups:
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_ps_server_1b
     nested_pattern5_levelTwo_group:
       type: org.openecomp.groups.heat.HeatStack
       properties:
@@ -561,4 +578,4 @@ topology_template:
       - dependency_ps_server_1b
       dependency_server_1b_ps_2:
       - abstract_ps_server_1b
-      - dependency_ps_server_1b
+      - dependency_ps_server_1b
\ No newline at end of file
index 6b47866..45e7ec8 100644 (file)
@@ -8,6 +8,9 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
+    Vlan_network_collection_function:
+      type: string
+      required: true
     ps_server_1b_ips:
       hidden: false
       immutable: false
@@ -51,6 +54,9 @@ topology_template:
       hidden: false
       immutable: false
       type: string
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -166,6 +172,17 @@ topology_template:
       members:
       - test_nested_level2
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -547,4 +564,4 @@ topology_template:
       - dependency
       local_storage_server_1b_pd_1_test_nested_level2:
       - test_nested_level2
-      - local_storage_server_1b_pd_1
+      - local_storage_server_1b_pd_1
\ No newline at end of file
index 6f4882f..18e3aa6 100644 (file)
@@ -46,6 +46,12 @@ topology_template:
             source_type: HEAT
             param_name: pd_server_1b_ips
       type: string
+    Vlan_network_collection_function:
+      type: string
+      required: true
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     pd_server_1b_names:
       hidden: false
       immutable: false
@@ -268,3 +274,14 @@ topology_template:
       - test_nested_level1
       - packet_externalmain_network
       - abstract_pd_server_1b_1
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b_1
\ No newline at end of file
index 2372290..bedb402 100644 (file)
@@ -8,6 +8,9 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
+    Vlan_network_collection_function:
+      type: string
+      required: true
     ps_server_1b_ips:
       hidden: false
       immutable: false
@@ -61,6 +64,9 @@ topology_template:
       immutable: false
       type: string
       description: network name
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -261,6 +267,17 @@ topology_template:
       - packet_int_network
       - abstract_ps_server_1b
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_ps_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -990,4 +1007,4 @@ topology_template:
       - dependency_pd_server_1b
       dependency_server_1b_pd_3:
       - abstract_pd_server_1b
-      - dependency_pd_server_1b
+      - dependency_pd_server_1b
\ No newline at end of file
index d9c8303..b800605 100644 (file)
@@ -18,6 +18,9 @@ topology_template:
       immutable: false
       type: string
       description: UID of OAM network
+    Vlan_network_collection_function:
+      type: string
+      required: true
     ps_server_1b_ips:
       hidden: false
       immutable: false
@@ -60,6 +63,9 @@ topology_template:
       hidden: false
       immutable: false
       type: string
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     packet_external_network_name:
       hidden: false
       immutable: false
@@ -195,6 +201,17 @@ topology_template:
       - packet_external_network
       - packet_internal_network
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -588,4 +605,4 @@ topology_template:
       - dependency_pd_server_1b_pd_server_1b_port
       dependency_packet_external_network:
       - packet_external_network
-      - dependency
+      - dependency
\ No newline at end of file
index 9e29f61..a85192e 100644 (file)
@@ -8,25 +8,9 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
-    port_net:
-      hidden: false
-      immutable: false
+    Vlan_network_collection_function:
       type: string
-      description: port network
-    pd_server_1b_flavor:
-      hidden: false
-      immutable: false
-      type: string
-      description: Flavor for PD server
-    pd_server_1b_ips:
-      hidden: false
-      immutable: false
-      type: string
-    packet_external_network_name:
-      hidden: false
-      immutable: false
-      type: string
-      description: network name
+      required: true
     packet_internal_network_name:
       hidden: false
       immutable: false
@@ -46,6 +30,28 @@ topology_template:
       description: CMAUI1, CMAUI2 server names
       entry_schema:
         type: string
+    port_net:
+      hidden: false
+      immutable: false
+      type: string
+      description: port network
+    pd_server_1b_flavor:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor for PD server
+    pd_server_1b_ips:
+      hidden: false
+      immutable: false
+      type: string
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
+    packet_external_network_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: network name
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -154,6 +160,17 @@ topology_template:
       - packet_internal_network
       - test_nested_level2
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -751,4 +768,4 @@ topology_template:
       - dependency
       dependency_packet_external_network:
       - packet_external_network
-      - dependency
+      - dependency
\ No newline at end of file
index 8cf3f5d..46c1b01 100644 (file)
@@ -8,31 +8,49 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
-    port_net:
+    Vlan_network_collection_function:
+      type: string
+      required: true
+    ps_server_1b_ips:
       hidden: false
       immutable: false
       type: string
-      description: port network
-    ps_server_2b_ips:
+    security_group_name:
+      hidden: false
+      immutable: false
+      type: list
+      description: CMAUI1, CMAUI2 server names
+      entry_schema:
+        type: string
+    ps_server_1b_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: Ps server names
+      entry_schema:
+        type: string
+    packet_ext_network_name:
       hidden: false
       immutable: false
       type: string
-    ps_server_1b_ips:
+      description: network name
+    port_net:
       hidden: false
       immutable: false
       type: string
-    packet_int_network_name:
+      description: port network
+    ps_server_2b_ips:
       hidden: false
       immutable: false
       type: string
-      description: network name
-    security_group_name:
+    packet_int_network_name:
       hidden: false
       immutable: false
-      type: list
-      description: CMAUI1, CMAUI2 server names
-      entry_schema:
-        type: string
+      type: string
+      description: network name
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -54,18 +72,6 @@ topology_template:
       immutable: false
       type: string
       description: sub interface network
-    ps_server_1b_names:
-      hidden: false
-      immutable: false
-      type: list
-      description: Ps server names
-      entry_schema:
-        type: string
-    packet_ext_network_name:
-      hidden: false
-      immutable: false
-      type: string
-      description: network name
   node_templates:
     packet_ext_network:
       type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net
@@ -188,6 +194,17 @@ topology_template:
           node: packet_ext_network
           relationship: tosca.relationships.network.LinksTo
   groups:
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_ps_server_1b
     nested_pattern5_levelTwo_group:
       type: org.openecomp.groups.heat.HeatStack
       properties:
@@ -579,4 +596,4 @@ topology_template:
       - dependency_ps_server_1b
       dependency_server_1b_ps_2:
       - abstract_ps_server_1b_1
-      - dependency_ps_server_1b
+      - dependency_ps_server_1b
\ No newline at end of file
index 8ae882e..51fd65c 100644 (file)
@@ -8,25 +8,9 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
-    port_net:
-      hidden: false
-      immutable: false
+    Vlan_network_collection_function:
       type: string
-      description: port network
-    pd_server_1b_flavor:
-      hidden: false
-      immutable: false
-      type: string
-      description: Flavor for PD server
-    pd_server_1b_ips:
-      hidden: false
-      immutable: false
-      type: string
-    packet_external_network_name:
-      hidden: false
-      immutable: false
-      type: string
-      description: network name
+      required: true
     packet_internal_network_name:
       hidden: false
       immutable: false
@@ -46,6 +30,28 @@ topology_template:
       description: CMAUI1, CMAUI2 server names
       entry_schema:
         type: string
+    port_net:
+      hidden: false
+      immutable: false
+      type: string
+      description: port network
+    pd_server_1b_flavor:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor for PD server
+    pd_server_1b_ips:
+      hidden: false
+      immutable: false
+      type: string
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
+    packet_external_network_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: network name
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -154,6 +160,17 @@ topology_template:
       - packet_internal_network
       - test_nested_level2
       - abstract_pd_server_1b
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_pd_server_1b
   substitution_mappings:
     node_type: org.openecomp.resource.abstract.nodes.heat.nested_pattern5
     capabilities:
@@ -763,4 +780,4 @@ topology_template:
       - dependency
       dependency_packet_external_network:
       - packet_external_network
-      - dependency
+      - dependency
\ No newline at end of file
index 290f859..5d7b81a 100644 (file)
@@ -8,31 +8,49 @@ imports:
     file: GlobalSubstitutionTypesServiceTemplate.yaml
 topology_template:
   inputs:
-    port_net:
+    Vlan_network_collection_function:
+      type: string
+      required: true
+    ps_server_1b_ips:
       hidden: false
       immutable: false
       type: string
-      description: port network
-    ps_server_2b_ips:
+    security_group_name:
+      hidden: false
+      immutable: false
+      type: list
+      description: CMAUI1, CMAUI2 server names
+      entry_schema:
+        type: string
+    ps_server_1b_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: Ps server names
+      entry_schema:
+        type: string
+    packet_ext_network_name:
       hidden: false
       immutable: false
       type: string
-    ps_server_1b_ips:
+      description: network name
+    port_net:
       hidden: false
       immutable: false
       type: string
-    packet_int_network_name:
+      description: port network
+    ps_server_2b_ips:
       hidden: false
       immutable: false
       type: string
-      description: network name
-    security_group_name:
+    packet_int_network_name:
       hidden: false
       immutable: false
-      type: list
-      description: CMAUI1, CMAUI2 server names
-      entry_schema:
-        type: string
+      type: string
+      description: network name
+    Vlan_vfc_instance_group_function:
+      type: string
+      required: true
     availability_zone_0:
       label: availabilityzone name
       hidden: false
@@ -54,18 +72,6 @@ topology_template:
       immutable: false
       type: string
       description: sub interface network
-    ps_server_1b_names:
-      hidden: false
-      immutable: false
-      type: list
-      description: Ps server names
-      entry_schema:
-        type: string
-    packet_ext_network_name:
-      hidden: false
-      immutable: false
-      type: string
-      description: network name
   node_templates:
     abstract_ps_server_1b_0:
       type: org.openecomp.resource.abstract.nodes.ps_server_1b
@@ -196,6 +202,18 @@ topology_template:
           node: packet_ext_network
           relationship: tosca.relationships.network.LinksTo
   groups:
+    Vlan_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: 1b
+        network_collection_function:
+          get_input: Vlan_network_collection_function
+        vfc_instance_group_function:
+          get_input: Vlan_vfc_instance_group_function
+        subinterface_role: Vlan
+      members:
+      - abstract_ps_server_1b_0
+      - abstract_ps_server_1b_1
     nested_pattern5_levelTwo_group:
       type: org.openecomp.groups.heat.HeatStack
       properties:
@@ -599,4 +617,4 @@ topology_template:
       - dependency_ps_server_1b
       dependency_server_1b_ps_2:
       - abstract_ps_server_1b_1
-      - dependency_ps_server_1b
+      - dependency_ps_server_1b
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..aca75b5
--- /dev/null
@@ -0,0 +1,17 @@
+{
+  "name": "vMME_Small",
+  "description": "HOT template to create 2 cinder volume attachment",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "main.yml",
+      "type": "HEAT",
+      "isBase": "true"
+    },
+    {
+      "file": "nested.yml",
+      "type": "HEAT",
+      "isBase": "false"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/main.yml
new file mode 100644 (file)
index 0000000..30ed175
--- /dev/null
@@ -0,0 +1,239 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  control_int_net_forwarding_mode:
+    description: "forwarding mode of the control virtual network"
+    type: string
+  control_int_net_rpf:
+    description: "Reverse Path Filtering enable or disable for the control virtual network"
+    type: string
+  control_int_net_shared:
+    description: "control virtual network shared"
+    type: boolean
+  control_int_net_flood_unknown_unicast:
+    description: "forwarding mode of the control virtual network"
+    type: boolean
+  oam_net_name:
+    description: "Name of NSDNet network from which the management IP addresses will be allocated"
+    type: string
+  untrusted_net_name:
+    description: "Name of public untrusted network into which this vDBE HA cluster is deployed"
+    type: string
+  untrusted_num_vn:
+    constraints:
+      -
+        range:
+          max: 77
+          min: 1
+    description: "Number of vDBE subinterface virtual Networks"
+    type: number
+  untrusted_vlan_tags:
+    description: "List of subinterface vlan tags"
+    type: comma_delimited_list
+  untrusted_vn_networks:
+    description: "List of subinterface virtual networks"
+    type: comma_delimited_list
+  vdbe_aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_device_name:
+    description: "VDBE device Name for this vdbe VNF"
+    type: string
+  vdbe_hw_untr_mac_1:
+    description: "Secondary MAC address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_name_1:
+    description: "VM Name for this vdbe node 1"
+    type: string
+  vdbe_untrusted_ip_1:
+    description: "IPV4 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_v6_ip_1:
+    description: "IPV6 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_vmac_address:
+    description: "Virtual MAC of the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_flavor_name:
+    description: "Flavor to use for vDBE"
+    type: string
+  vdbe_image_name:
+    description: "Image to use for vDBE"
+    type: string
+  vnf_id:
+    description: "Unique ID for this VF inst"
+    type: string
+  vnf_name:
+    description: "Unique name for this VF instance"
+    type: string
+  vf_module_id:
+    description: "Unique ID for this VF module inst"
+    type: string
+  availability_zone_1:
+    description: "The availability zone of secondary node1 vDBE vm in the local HA pair."
+    type: string
+  counter:
+    description: "Counter."
+    type: number
+resources:
+  vdbe_node_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone:
+        get_param: availability_zone_1
+      flavor:
+        get_param: vdbe_flavor_name
+      image:
+        get_param: vdbe_image_name
+      metadata:
+        vf_module_id:
+          get_param: vf_module_id
+        vnf_id:
+          get_param: vnf_id
+        vnf_name:
+          get_param: vnf_name
+      name:
+        get_param: vdbe_name_1
+      networks:
+        - port: {get_resource: vdbe_1_untr_port_1}
+  vdbe_1_untr_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          params:
+            DBE:
+              get_param: vdbe_device_name
+            VM_NAME:
+              get_param: vdbe_name_1
+          template: VM_NAMEDBE001p1n004
+
+  vdbe_untr_1_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count:
+        get_param: untrusted_num_vn
+      resource_def:
+        type: nested.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter: "%index%"
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_1_untr_port_1
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+  vdbe_untr_2_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: 5
+      resource_def:
+        type: nested.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter:
+            get_param: counter
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_1_untr_port_1
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+  control_int_net:
+    type: OS::ContrailV2::VirtualNetwork
+    properties:
+      flood_unknown_unicast:
+        get_param: control_int_net_flood_unknown_unicast
+      is_shared:
+        get_param: control_int_net_shared
+      name:
+        str_replace:
+          params:
+            VNF_NAME:
+              get_param: vnf_name
+          template: VNF_NAME_control_net
+      virtual_network_properties:
+        virtual_network_properties_forwarding_mode:
+          get_param: control_int_net_forwarding_mode
+        virtual_network_properties_rpf:
+          get_param: control_int_net_rpf
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/nested.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/in/nested.yml
new file mode 100644 (file)
index 0000000..328b0ea
--- /dev/null
@@ -0,0 +1,116 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  counter:
+    description: "Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances."
+    type: number
+  mac_address:
+    description: "HW MAC address to use for subinterface"
+    type: string
+  parent_interface:
+    description: "Parent Contrail interface"
+    type: string
+  subinterfaces_name_prefix:
+    description: "Combined with subinterface_instance_index, this is used as the name of the subinterface resource"
+    type: string
+  vlan_tag_list:
+    description: "List of VLAN IDs to use for subinterfaces"
+    type: comma_delimited_list
+  vmac_address:
+    description: "virtual MAC address to use for subinterface"
+    type: string
+  vn_network_list:
+    description: "List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list"
+    type: string
+  ip_address:
+    description: "IPv4 address associated with subinterfaces"
+    type: string
+  ip_v6_address:
+    description: "IPv6 address associated with subinterfaces"
+    type: string
+resources:
+  vdbe_0_subint_untr_vmi_0:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name:
+        str_replace:
+          params:
+            $INDEX:
+              get_param:
+                - vlan_tag_list
+                -
+                  get_param: counter
+            $NAME:
+              get_param: subinterfaces_name_prefix
+          template: $NAME_$INDEX
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: mac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: mac_address
+      virtual_machine_interface_properties:
+        virtual_machine_interface_properties_sub_interface_vlan_tag:
+          get_param:
+            - vlan_tag_list
+            -
+              get_param: counter
+      virtual_machine_interface_refs:
+          [{get_param: parent_interface}]
+      virtual_network_refs:
+          [{get_param: vn_network_list}]
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/GlobalSubstitutionTypesServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..61f7cc7
--- /dev/null
@@ -0,0 +1,794 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: GlobalSubstitutionTypes
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+node_types:
+  org.openecomp.resource.abstract.nodes.vdbe:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_vdbe_untr_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_vdbe_untr_1_subports_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      untrusted_num_vn:
+        type: float
+        description: Number of vDBE subinterface virtual Networks
+        required: true
+        status: SUPPORTED
+        constraints:
+        - in_range:
+          - 1
+          - 77
+      port_vdbe_untr_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      subinterface_vdbe_untr_1_subports_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_vdbe_untr_2_subports_counter:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: float
+      subinterface_vdbe_untr_2_subports_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_vdbe_untr_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      subinterface_vdbe_untr_1_subports_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      subinterface_vdbe_untr_2_subports_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_vdbe_untr_1_subports_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+      subinterface_vdbe_untr_1_subports_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+    requirements:
+    - dependency_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_vdbe:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_vdbe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_vdbe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      forwarder_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.Forwarder
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      instance_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_vdbe:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_vdbe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.subinterface.nested:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      vn_network_list:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..f09a443
--- /dev/null
@@ -0,0 +1,539 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Main
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    vf_module_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vf_module_id
+      type: string
+      description: Unique ID for this VF module inst
+    control_int_net_rpf:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_rpf
+      type: string
+      description: Reverse Path Filtering enable or disable for the control virtual network
+    control_int_net_forwarding_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_forwarding_mode
+      type: string
+      description: forwarding mode of the control virtual network
+    vnf_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_name
+      type: string
+      description: Unique name for this VF instance
+    vdbe_untrusted_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_ip_1
+      type: string
+      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: aap_address_mode
+      type: string
+      description: Address mode for the vDBE cluster IP
+    control_int_net_shared:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_shared
+      type: boolean
+      description: control virtual network shared
+    vdbe_untrusted_v6_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_v6_ip_1
+      type: string
+      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_untrusted_vmac_address:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_vmac_address
+      type: string
+      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network
+    control_int_net_flood_unknown_unicast:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_flood_unknown_unicast
+      type: boolean
+      description: forwarding mode of the control virtual network
+    vdbe_aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    vnf_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_id
+      type: string
+      description: Unique ID for this VF inst
+    vdbe_name_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_name_1
+      type: string
+      description: VM Name for this vdbe node 1
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: availability_zone_1
+      type: string
+      description: The availability zone of secondary node1 vDBE vm in the local HA pair.
+    untrusted_vn_networks:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vn_networks
+      type: list
+      description: List of subinterface virtual networks
+      entry_schema:
+        type: string
+    vdbe_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_image_name
+      type: string
+      description: Image to use for vDBE
+    oam_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: oam_net_name
+      type: string
+      description: Name of NSDNet network from which the management IP addresses will be allocated
+    vdbe_aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix_len
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    untrusted_vlan_tags:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vlan_tags
+      type: list
+      description: List of subinterface vlan tags
+      entry_schema:
+        type: string
+    untr_network_collection_function:
+      type: string
+      required: true
+    untr_vfc_instance_group_function:
+      type: string
+      required: true
+    vdbe_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_flavor_name
+      type: string
+      description: Flavor to use for vDBE
+    counter:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: counter
+      type: float
+      description: Counter.
+    vdbe_hw_untr_mac_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_hw_untr_mac_1
+      type: string
+      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network
+    untrusted_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_net_name
+      type: string
+      description: Name of public untrusted network into which this vDBE HA cluster is deployed
+    vdbe_device_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_device_name
+      type: string
+      description: VDBE device Name for this vdbe VNF
+    vdbe_aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+  node_templates:
+    control_int_net:
+      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+      properties:
+        network_name:
+          str_replace:
+            template: VNF_NAME_control_net
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+    abstract_vdbe:
+      type: org.openecomp.resource.abstract.nodes.vdbe
+      directives:
+      - substitutable
+      properties:
+        subinterface_vdbe_untr_1_subports_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        compute_vdbe_availability_zone:
+        - get_input: availability_zone_1
+        subinterface_vdbe_untr_2_subports_aap_address_mode:
+        - get_input: aap_address_mode
+        vm_flavor_name:
+          get_input: vdbe_flavor_name
+        subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_vdbe_untr_1_subports_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        subinterface_vdbe_untr_1_subports_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        subinterface_vdbe_untr_1_subports_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        vm_image_name:
+          get_input: vdbe_image_name
+        subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        compute_vdbe_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        subinterface_vdbe_untr_2_subports_counter:
+        - get_input: counter
+        subinterface_vdbe_untr_2_subports_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        subinterface_vdbe_untr_1_subports_aap_address_mode:
+        - get_input: aap_address_mode
+        subinterface_vdbe_untr_2_subports_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        port_vdbe_untr_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        subinterface_vdbe_untr_1_subports_parent_interface:
+        - vdbe_1_untr_port_1
+        subinterface_vdbe_untr_1_subports_vn_network_list:
+        - get_input: untrusted_vn_networks
+        port_vdbe_untr_port_name:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_vdbe_untr_2_subports_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_vdbe_untr_1_subports_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        subinterface_vdbe_untr_2_subports_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_vdbe_untr_2_subports_vn_network_list:
+        - get_input: untrusted_vn_networks
+        subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        subinterface_vdbe_untr_2_subports_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        subinterface_vdbe_untr_2_subports_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_vdbe_untr_2_subports_parent_interface:
+        - vdbe_1_untr_port_1
+        compute_vdbe_name:
+        - get_input: vdbe_name_1
+        subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        port_vdbe_untr_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        subinterface_vdbe_untr_1_subports_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        service_template_filter:
+          substitute_service_template: Nested_vdbeServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+  groups:
+    main_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/main.yml
+        description: |
+          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+      members:
+      - control_int_net
+      - abstract_vdbe
+    untr_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: untr
+        network_collection_function:
+          get_input: untr_network_collection_function
+        vfc_instance_group_function:
+          get_input: untr_vfc_instance_group_function
+        subinterface_role: untr
+      members:
+      - abstract_vdbe
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/Nested_vdbeServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/Nested_vdbeServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..b0ccbfa
--- /dev/null
@@ -0,0 +1,649 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Nested_vdbe
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    port_vdbe_untr_port_network_role_tag:
+      type: string
+      required: true
+    subinterface_vdbe_untr_1_subports_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_subnetpoolid:
+      type: string
+      required: true
+    subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_availability_zone:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_flavor_name:
+      type: string
+      required: true
+    subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    untrusted_num_vn:
+      hidden: false
+      immutable: false
+      type: float
+      description: Number of vDBE subinterface virtual Networks
+      constraints:
+      - in_range:
+        - 1
+        - 77
+    port_vdbe_untr_port_order:
+      type: integer
+      required: true
+    subinterface_vdbe_untr_1_subports_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_image_name:
+      type: string
+      required: true
+    port_vdbe_untr_port_exCP_naming:
+      type: org.openecomp.datatypes.Naming
+      required: true
+    subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_metadata:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_vdbe_untr_2_subports_counter:
+      type: list
+      required: true
+      entry_schema:
+        type: float
+    subinterface_vdbe_untr_2_subports_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    port_vdbe_untr_port_mac_requirements:
+      type: org.openecomp.datatypes.network.MacRequirements
+      required: true
+    index_value:
+      type: integer
+      description: Index value of this substitution service template runtime instance
+      required: false
+      default: 0
+      constraints:
+      - greater_or_equal: 0
+    subinterface_vdbe_untr_1_subports_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_vlan_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.VlanRequirements
+    subinterface_vdbe_untr_2_subports_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_network_role:
+      type: string
+      required: true
+    subinterface_vdbe_untr_1_subports_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_ip_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.IpRequirements
+    subinterface_vdbe_untr_1_subports_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+  node_templates:
+    vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_ip_v6_address
+          - index_value
+        counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: nestedServiceTemplate.yaml
+          count:
+            get_input: untrusted_num_vn
+          mandatory: false
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vdbe_untr_1_subports_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_0_subint_untr_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_untr_port
+          relationship: tosca.relationships.network.BindsTo
+    vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_ip_v6_address
+          - index_value
+        counter:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_counter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: nestedServiceTemplate.yaml
+          count: 5
+          mandatory: true
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_vdbe_untr_2_subports_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_0_subint_untr_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_untr_port
+          relationship: tosca.relationships.network.BindsTo
+    vdbe:
+      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe
+      properties:
+        availability_zone:
+          get_input:
+          - compute_vdbe_availability_zone
+          - index_value
+        flavor:
+          get_input: vm_flavor_name
+        metadata:
+          get_input:
+          - compute_vdbe_metadata
+          - index_value
+        image:
+          get_input: vm_image_name
+        name:
+          get_input:
+          - compute_vdbe_name
+          - index_value
+    vdbe_vdbe_untr_port:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        exCP_naming:
+          get_input: port_vdbe_untr_port_exCP_naming
+        vlan_requirements:
+          get_input: port_vdbe_untr_port_vlan_requirements
+        ip_requirements:
+          get_input: port_vdbe_untr_port_ip_requirements
+        network_role_tag:
+          get_input: port_vdbe_untr_port_network_role_tag
+        mac_requirements:
+          get_input: port_vdbe_untr_port_mac_requirements
+        order:
+          get_input: port_vdbe_untr_port_order
+        network_role:
+          get_input: port_vdbe_untr_port_network_role
+        subnetpoolid:
+          get_input: port_vdbe_untr_port_subnetpoolid
+        name:
+          get_input:
+          - port_vdbe_untr_port_name
+          - index_value
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe
+          relationship: tosca.relationships.network.BindsTo
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.vdbe
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.packets.rate
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes
+      feature_vdbe:
+      - vdbe
+      - feature
+      feature_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - feature
+      attachment_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - attachment
+      disk.device.iops_vdbe:
+      - vdbe
+      - disk.device.iops
+      endpoint_vdbe:
+      - vdbe
+      - endpoint
+      disk.ephemeral.size_vdbe:
+      - vdbe
+      - disk.ephemeral.size
+      cpu_util_vdbe:
+      - vdbe
+      - cpu_util
+      vcpus_vdbe:
+      - vdbe
+      - vcpus
+      disk.write.requests_vdbe:
+      - vdbe
+      - disk.write.requests
+      disk.device.latency_vdbe:
+      - vdbe
+      - disk.device.latency
+      disk.device.write.requests.rate_vdbe:
+      - vdbe
+      - disk.device.write.requests.rate
+      disk.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.write.bytes.rate
+      network.incoming.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets
+      scalable_vdbe:
+      - vdbe
+      - scalable
+      disk.iops_vdbe:
+      - vdbe
+      - disk.iops
+      disk.device.write.requests_vdbe:
+      - vdbe
+      - disk.device.write.requests
+      disk.device.capacity_vdbe:
+      - vdbe
+      - disk.device.capacity
+      disk.device.allocation_vdbe:
+      - vdbe
+      - disk.device.allocation
+      disk.usage_vdbe:
+      - vdbe
+      - disk.usage
+      memory.usage_vdbe:
+      - vdbe
+      - memory.usage
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outpoing.packets
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes.rate
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_1_subports
+      - feature_vdbe_0_subint_untr_vmi_0
+      disk.read.requests_vdbe:
+      - vdbe
+      - disk.read.requests
+      forwarder_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - forwarder
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_2_subports
+      - feature_vdbe_0_subint_untr_vmi_0
+      binding_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - binding
+      instance_vdbe:
+      - vdbe
+      - instance
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes.rate
+      cpu.delta_vdbe:
+      - vdbe
+      - cpu.delta
+      disk.device.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.read.bytes.rate
+      disk.device.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.write.bytes.rate
+      memory.resident_vdbe:
+      - vdbe
+      - memory.resident
+      disk.write.requests.rate_vdbe:
+      - vdbe
+      - disk.write.requests.rate
+      cpu_vdbe:
+      - vdbe
+      - cpu
+      disk.write.bytes_vdbe:
+      - vdbe
+      - disk.write.bytes
+      disk.device.usage_vdbe:
+      - vdbe
+      - disk.device.usage
+      disk.device.read.bytes_vdbe:
+      - vdbe
+      - disk.device.read.bytes
+      disk.latency_vdbe:
+      - vdbe
+      - disk.latency
+      feature_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_1_subports
+      - feature
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes
+      disk.capacity_vdbe:
+      - vdbe
+      - disk.capacity
+      host_vdbe:
+      - vdbe
+      - host
+      disk.allocation_vdbe:
+      - vdbe
+      - disk.allocation
+      disk.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.read.bytes.rate
+      os_vdbe:
+      - vdbe
+      - os
+      feature_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_2_subports
+      - feature
+      disk.device.read.requests_vdbe:
+      - vdbe
+      - disk.device.read.requests
+      disk.root.size_vdbe:
+      - vdbe
+      - disk.root.size
+      memory_vdbe:
+      - vdbe
+      - memory
+      binding_vdbe:
+      - vdbe
+      - binding
+      disk.device.write.bytes_vdbe:
+      - vdbe
+      - disk.device.write.bytes
+      disk.device.read.requests.rate_vdbe:
+      - vdbe
+      - disk.device.read.requests.rate
+      disk.read.bytes_vdbe:
+      - vdbe
+      - disk.read.bytes
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets.rate
+    requirements:
+      link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_2_subports
+      - link_vdbe_0_subint_untr_vmi_0
+      dependency_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - dependency
+      link_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - link
+      dependency_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_1_subports
+      - dependency
+      dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_2_subports
+      - dependency_vdbe_0_subint_untr_vmi_0
+      local_storage_vdbe:
+      - vdbe
+      - local_storage
+      link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_1_subports
+      - link_vdbe_0_subint_untr_vmi_0
+      dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_vdbe_untr_1_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_1_subports
+      - dependency_vdbe_0_subint_untr_vmi_0
+      dependency_vdbe_vdbe_untr_port_vdbe_untr_2_subports:
+      - vdbe_vdbe_untr_port_vdbe_untr_2_subports
+      - dependency
+      dependency_vdbe:
+      - vdbe
+      - dependency
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/nestedServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRole/out/nestedServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..172b9c8
--- /dev/null
@@ -0,0 +1,171 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: nested
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    vn_network_list:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_0_subint_untr_vmi_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vn_network_list
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    nested_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/nested.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_0_subint_untr_vmi_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - feature
+    requirements:
+      dependency_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - dependency
+      binding_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - binding
+      link_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - link
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..aca75b5
--- /dev/null
@@ -0,0 +1,17 @@
+{
+  "name": "vMME_Small",
+  "description": "HOT template to create 2 cinder volume attachment",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "main.yml",
+      "type": "HEAT",
+      "isBase": "true"
+    },
+    {
+      "file": "nested.yml",
+      "type": "HEAT",
+      "isBase": "false"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/main.yml
new file mode 100644 (file)
index 0000000..0a6b109
--- /dev/null
@@ -0,0 +1,271 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  control_int_net_forwarding_mode:
+    description: "forwarding mode of the control virtual network"
+    type: string
+  control_int_net_rpf:
+    description: "Reverse Path Filtering enable or disable for the control virtual network"
+    type: string
+  control_int_net_shared:
+    description: "control virtual network shared"
+    type: boolean
+  control_int_net_flood_unknown_unicast:
+    description: "forwarding mode of the control virtual network"
+    type: boolean
+  oam_net_name:
+    description: "Name of NSDNet network from which the management IP addresses will be allocated"
+    type: string
+  untrusted_net_name:
+    description: "Name of public untrusted network into which this vDBE HA cluster is deployed"
+    type: string
+  untrusted_num_vn:
+    constraints:
+      -
+        range:
+          max: 77
+          min: 1
+    description: "Number of vDBE subinterface virtual Networks"
+    type: number
+  untrusted_vlan_tags:
+    description: "List of subinterface vlan tags"
+    type: comma_delimited_list
+  untrusted_vn_networks:
+    description: "List of subinterface virtual networks"
+    type: comma_delimited_list
+  vdbe_aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_device_name:
+    description: "VDBE device Name for this vdbe VNF"
+    type: string
+  vdbe_hw_untr_mac_1:
+    description: "Secondary MAC address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_name_1:
+    description: "VM Name for this vdbe node 1"
+    type: string
+  vdbe_untrusted_ip_1:
+    description: "IPV4 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_v6_ip_1:
+    description: "IPV6 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_vmac_address:
+    description: "Virtual MAC of the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_flavor_name:
+    description: "Flavor to use for vDBE"
+    type: string
+  vdbe_image_name:
+    description: "Image to use for vDBE"
+    type: string
+  vnf_id:
+    description: "Unique ID for this VF inst"
+    type: string
+  vnf_name:
+    description: "Unique name for this VF instance"
+    type: string
+  vf_module_id:
+    description: "Unique ID for this VF module inst"
+    type: string
+  availability_zone_1:
+    description: "The availability zone of secondary node1 vDBE vm in the local HA pair."
+    type: string
+  counter:
+    description: "Counter."
+    type: number
+resources:
+  vdbe_node_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone:
+        get_param: availability_zone_1
+      flavor:
+        get_param: vdbe_flavor_name
+      image:
+        get_param: vdbe_image_name
+      metadata:
+        vf_module_id:
+          get_param: vf_module_id
+        vnf_id:
+          get_param: vnf_id
+        vnf_name:
+          get_param: vnf_name
+      name:
+        get_param: vdbe_name_1
+      networks:
+        - port: {get_resource: vdbe_1_untr_port_1}
+  vdbe_node_2:
+    type: OS::Nova::Server
+    properties:
+      availability_zone:
+        get_param: availability_zone_1
+      flavor:
+        get_param: vdbe_flavor_name
+      image:
+        get_param: vdbe_image_name
+      metadata:
+        vf_module_id:
+          get_param: vf_module_id
+        vnf_id:
+          get_param: vnf_id
+        vnf_name:
+          get_param: vnf_name
+      name:
+        get_param: vdbe_name_1
+      networks:
+        - port: {get_resource: vdbe_2_untr_port_2}
+  vdbe_1_untr_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          params:
+            DBE:
+              get_param: vdbe_device_name
+            VM_NAME:
+              get_param: vdbe_name_1
+          template: VM_NAMEDBE001p1n004
+
+  vdbe_2_untr_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          params:
+            DBE:
+              get_param: vdbe_device_name
+            VM_NAME:
+              get_param: vdbe_name_1
+          template: VM_NAMEDBE001p1n004
+
+  vdbe_untr_1_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count:
+        get_param: untrusted_num_vn
+      resource_def:
+        type: nested.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter: "%index%"
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_1_untr_port_1
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+  vdbe_untr_2_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: 5
+      resource_def:
+        type: nested.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter:
+            get_param: counter
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_2_untr_port_2
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+  control_int_net:
+    type: OS::ContrailV2::VirtualNetwork
+    properties:
+      flood_unknown_unicast:
+        get_param: control_int_net_flood_unknown_unicast
+      is_shared:
+        get_param: control_int_net_shared
+      name:
+        str_replace:
+          params:
+            VNF_NAME:
+              get_param: vnf_name
+          template: VNF_NAME_control_net
+      virtual_network_properties:
+        virtual_network_properties_forwarding_mode:
+          get_param: control_int_net_forwarding_mode
+        virtual_network_properties_rpf:
+          get_param: control_int_net_rpf
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested.yml
new file mode 100644 (file)
index 0000000..328b0ea
--- /dev/null
@@ -0,0 +1,116 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  counter:
+    description: "Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances."
+    type: number
+  mac_address:
+    description: "HW MAC address to use for subinterface"
+    type: string
+  parent_interface:
+    description: "Parent Contrail interface"
+    type: string
+  subinterfaces_name_prefix:
+    description: "Combined with subinterface_instance_index, this is used as the name of the subinterface resource"
+    type: string
+  vlan_tag_list:
+    description: "List of VLAN IDs to use for subinterfaces"
+    type: comma_delimited_list
+  vmac_address:
+    description: "virtual MAC address to use for subinterface"
+    type: string
+  vn_network_list:
+    description: "List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list"
+    type: string
+  ip_address:
+    description: "IPv4 address associated with subinterfaces"
+    type: string
+  ip_v6_address:
+    description: "IPv6 address associated with subinterfaces"
+    type: string
+resources:
+  vdbe_0_subint_untr_vmi_0:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name:
+        str_replace:
+          params:
+            $INDEX:
+              get_param:
+                - vlan_tag_list
+                -
+                  get_param: counter
+            $NAME:
+              get_param: subinterfaces_name_prefix
+          template: $NAME_$INDEX
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: mac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: mac_address
+      virtual_machine_interface_properties:
+        virtual_machine_interface_properties_sub_interface_vlan_tag:
+          get_param:
+            - vlan_tag_list
+            -
+              get_param: counter
+      virtual_machine_interface_refs:
+          [{get_param: parent_interface}]
+      virtual_network_refs:
+          [{get_param: vn_network_list}]
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/GlobalSubstitutionTypesServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..f61a83e
--- /dev/null
@@ -0,0 +1,674 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: GlobalSubstitutionTypes
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+node_types:
+  org.openecomp.resource.abstract.nodes.vdbe:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_vdbe_untr_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_vdbe_untr_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_vdbe_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      untrusted_num_vn:
+        type: float
+        description: Number of vDBE subinterface virtual Networks
+        required: true
+        status: SUPPORTED
+        constraints:
+        - in_range:
+          - 1
+          - 77
+      port_vdbe_untr_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      subinterface_nested_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      subinterface_nested_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_nested_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      subinterface_nested_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      port_vdbe_untr_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested_counter:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: float
+      subinterface_nested_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+    requirements:
+    - dependency_vdbe:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_vdbe:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe_vdbe_untr_port_nested:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_vdbe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_vdbe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      forwarder_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.Forwarder
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      instance_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port_nested:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_vdbe:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_vdbe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.subinterface.nested:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      vn_network_list:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..56f3113
--- /dev/null
@@ -0,0 +1,596 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Main
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    vf_module_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vf_module_id
+      type: string
+      description: Unique ID for this VF module inst
+    control_int_net_rpf:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_rpf
+      type: string
+      description: Reverse Path Filtering enable or disable for the control virtual network
+    control_int_net_forwarding_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_forwarding_mode
+      type: string
+      description: forwarding mode of the control virtual network
+    vnf_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_name
+      type: string
+      description: Unique name for this VF instance
+    vdbe_untrusted_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_ip_1
+      type: string
+      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: aap_address_mode
+      type: string
+      description: Address mode for the vDBE cluster IP
+    control_int_net_shared:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_shared
+      type: boolean
+      description: control virtual network shared
+    vdbe_untrusted_v6_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_v6_ip_1
+      type: string
+      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_untrusted_vmac_address:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_vmac_address
+      type: string
+      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network
+    control_int_net_flood_unknown_unicast:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_flood_unknown_unicast
+      type: boolean
+      description: forwarding mode of the control virtual network
+    vdbe_aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    vnf_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_id
+      type: string
+      description: Unique ID for this VF inst
+    vdbe_name_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_name_1
+      type: string
+      description: VM Name for this vdbe node 1
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: availability_zone_1
+      type: string
+      description: The availability zone of secondary node1 vDBE vm in the local HA pair.
+    untrusted_vn_networks:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vn_networks
+      type: list
+      description: List of subinterface virtual networks
+      entry_schema:
+        type: string
+    vdbe_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_image_name
+      type: string
+      description: Image to use for vDBE
+    oam_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: oam_net_name
+      type: string
+      description: Name of NSDNet network from which the management IP addresses will be allocated
+    vdbe_aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix_len
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    untrusted_vlan_tags:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vlan_tags
+      type: list
+      description: List of subinterface vlan tags
+      entry_schema:
+        type: string
+    untr_network_collection_function:
+      type: string
+      required: true
+    untr_vfc_instance_group_function:
+      type: string
+      required: true
+    vdbe_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_flavor_name
+      type: string
+      description: Flavor to use for vDBE
+    counter:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: counter
+      type: float
+      description: Counter.
+    vdbe_hw_untr_mac_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_hw_untr_mac_1
+      type: string
+      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network
+    untrusted_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_net_name
+      type: string
+      description: Name of public untrusted network into which this vDBE HA cluster is deployed
+    vdbe_device_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_device_name
+      type: string
+      description: VDBE device Name for this vdbe VNF
+    vdbe_aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+  node_templates:
+    abstract_vdbe_0:
+      type: org.openecomp.resource.abstract.nodes.vdbe
+      directives:
+      - substitutable
+      properties:
+        subinterface_nested_parent_interface:
+        - vdbe_1_untr_port_1
+        subinterface_nested_aap_address_mode:
+        - get_input: aap_address_mode
+        subinterface_nested_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        compute_vdbe_availability_zone:
+        - get_input: availability_zone_1
+        subinterface_nested_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        vm_flavor_name:
+          get_input: vdbe_flavor_name
+        subinterface_nested_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        vm_image_name:
+          get_input: vdbe_image_name
+        subinterface_nested_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_nested_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        subinterface_nested_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        compute_vdbe_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        subinterface_nested_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        subinterface_nested_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_nested_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        port_vdbe_untr_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        subinterface_nested_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        subinterface_nested_vn_network_list:
+        - get_input: untrusted_vn_networks
+        port_vdbe_untr_port_name:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_nested_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_nested_counter:
+        - get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        subinterface_nested_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        compute_vdbe_name:
+        - get_input: vdbe_name_1
+        port_vdbe_untr_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        service_template_filter:
+          substitute_service_template: Nested_vdbeServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    control_int_net:
+      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+      properties:
+        network_name:
+          str_replace:
+            template: VNF_NAME_control_net
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+    abstract_vdbe_1:
+      type: org.openecomp.resource.abstract.nodes.vdbe
+      directives:
+      - substitutable
+      properties:
+        subinterface_nested_parent_interface:
+        - vdbe_2_untr_port_2
+        subinterface_nested_aap_address_mode:
+        - get_input: aap_address_mode
+        subinterface_nested_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        compute_vdbe_availability_zone:
+        - get_input: availability_zone_1
+        subinterface_nested_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        vm_flavor_name:
+          get_input: vdbe_flavor_name
+        subinterface_nested_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        vm_image_name:
+          get_input: vdbe_image_name
+        subinterface_nested_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_nested_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        subinterface_nested_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        compute_vdbe_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        subinterface_nested_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        subinterface_nested_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_nested_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        port_vdbe_untr_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        subinterface_nested_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        subinterface_nested_vn_network_list:
+        - get_input: untrusted_vn_networks
+        port_vdbe_untr_port_name:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_nested_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_nested_counter:
+        - get_input: counter
+        subinterface_nested_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        compute_vdbe_name:
+        - get_input: vdbe_name_1
+        port_vdbe_untr_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        service_template_filter:
+          substitute_service_template: Nested_vdbeServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+  groups:
+    main_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/main.yml
+        description: |
+          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+      members:
+      - control_int_net
+      - abstract_vdbe_0
+      - abstract_vdbe_1
+    untr_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: untr
+        network_collection_function:
+          get_input: untr_network_collection_function
+        vfc_instance_group_function:
+          get_input: untr_vfc_instance_group_function
+        subinterface_role: untr
+      members:
+      - abstract_vdbe_0
+      - abstract_vdbe_1
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbeServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbeServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..7b4ca1b
--- /dev/null
@@ -0,0 +1,479 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Nested_vdbe
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    port_vdbe_untr_port_network_role_tag:
+      type: string
+      required: true
+    subinterface_nested_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    port_vdbe_untr_port_subnetpoolid:
+      type: string
+      required: true
+    compute_vdbe_availability_zone:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_flavor_name:
+      type: string
+      required: true
+    untrusted_num_vn:
+      hidden: false
+      immutable: false
+      type: float
+      description: Number of vDBE subinterface virtual Networks
+      constraints:
+      - in_range:
+        - 1
+        - 77
+    port_vdbe_untr_port_order:
+      type: integer
+      required: true
+    subinterface_nested_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_image_name:
+      type: string
+      required: true
+    port_vdbe_untr_port_exCP_naming:
+      type: org.openecomp.datatypes.Naming
+      required: true
+    subinterface_nested_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_metadata:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_nested_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_mac_requirements:
+      type: org.openecomp.datatypes.network.MacRequirements
+      required: true
+    index_value:
+      type: integer
+      description: Index value of this substitution service template runtime instance
+      required: false
+      default: 0
+      constraints:
+      - greater_or_equal: 0
+    subinterface_nested_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_vlan_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.VlanRequirements
+    port_vdbe_untr_port_network_role:
+      type: string
+      required: true
+    subinterface_nested_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested_counter:
+      type: list
+      required: true
+      entry_schema:
+        type: float
+    subinterface_nested_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_ip_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.IpRequirements
+  node_templates:
+    vdbe:
+      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe
+      properties:
+        availability_zone:
+          get_input:
+          - compute_vdbe_availability_zone
+          - index_value
+        flavor:
+          get_input: vm_flavor_name
+        metadata:
+          get_input:
+          - compute_vdbe_metadata
+          - index_value
+        image:
+          get_input: vm_image_name
+        name:
+          get_input:
+          - compute_vdbe_name
+          - index_value
+    vdbe_vdbe_untr_port:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        exCP_naming:
+          get_input: port_vdbe_untr_port_exCP_naming
+        vlan_requirements:
+          get_input: port_vdbe_untr_port_vlan_requirements
+        ip_requirements:
+          get_input: port_vdbe_untr_port_ip_requirements
+        network_role_tag:
+          get_input: port_vdbe_untr_port_network_role_tag
+        mac_requirements:
+          get_input: port_vdbe_untr_port_mac_requirements
+        order:
+          get_input: port_vdbe_untr_port_order
+        network_role:
+          get_input: port_vdbe_untr_port_network_role
+        subnetpoolid:
+          get_input: port_vdbe_untr_port_subnetpoolid
+        name:
+          get_input:
+          - port_vdbe_untr_port_name
+          - index_value
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe
+          relationship: tosca.relationships.network.BindsTo
+    vdbe_vdbe_untr_port_nested:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_nested_ip_v6_address
+          - index_value
+        counter:
+          get_input:
+          - subinterface_nested_counter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_nested_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_nested_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_nested_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: nestedServiceTemplate.yaml
+          count: 5
+          mandatory: true
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_nested_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_nested_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_nested_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_nested_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_nested_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_nested_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_nested_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_0_subint_untr_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_untr_port
+          relationship: tosca.relationships.network.BindsTo
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.vdbe
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.packets.rate
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes
+      feature_vdbe:
+      - vdbe
+      - feature
+      feature_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - feature
+      attachment_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - attachment
+      disk.device.iops_vdbe:
+      - vdbe
+      - disk.device.iops
+      endpoint_vdbe:
+      - vdbe
+      - endpoint
+      disk.ephemeral.size_vdbe:
+      - vdbe
+      - disk.ephemeral.size
+      cpu_util_vdbe:
+      - vdbe
+      - cpu_util
+      vcpus_vdbe:
+      - vdbe
+      - vcpus
+      disk.write.requests_vdbe:
+      - vdbe
+      - disk.write.requests
+      disk.device.latency_vdbe:
+      - vdbe
+      - disk.device.latency
+      disk.device.write.requests.rate_vdbe:
+      - vdbe
+      - disk.device.write.requests.rate
+      disk.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.write.bytes.rate
+      network.incoming.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested:
+      - vdbe_vdbe_untr_port_nested
+      - feature_vdbe_0_subint_untr_vmi_0
+      scalable_vdbe:
+      - vdbe
+      - scalable
+      disk.iops_vdbe:
+      - vdbe
+      - disk.iops
+      disk.device.write.requests_vdbe:
+      - vdbe
+      - disk.device.write.requests
+      disk.device.capacity_vdbe:
+      - vdbe
+      - disk.device.capacity
+      disk.device.allocation_vdbe:
+      - vdbe
+      - disk.device.allocation
+      disk.usage_vdbe:
+      - vdbe
+      - disk.usage
+      memory.usage_vdbe:
+      - vdbe
+      - memory.usage
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outpoing.packets
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes.rate
+      disk.read.requests_vdbe:
+      - vdbe
+      - disk.read.requests
+      forwarder_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - forwarder
+      binding_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - binding
+      instance_vdbe:
+      - vdbe
+      - instance
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes.rate
+      cpu.delta_vdbe:
+      - vdbe
+      - cpu.delta
+      disk.device.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.read.bytes.rate
+      disk.device.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.write.bytes.rate
+      memory.resident_vdbe:
+      - vdbe
+      - memory.resident
+      feature_vdbe_vdbe_untr_port_nested:
+      - vdbe_vdbe_untr_port_nested
+      - feature
+      disk.write.requests.rate_vdbe:
+      - vdbe
+      - disk.write.requests.rate
+      cpu_vdbe:
+      - vdbe
+      - cpu
+      disk.write.bytes_vdbe:
+      - vdbe
+      - disk.write.bytes
+      disk.device.usage_vdbe:
+      - vdbe
+      - disk.device.usage
+      disk.device.read.bytes_vdbe:
+      - vdbe
+      - disk.device.read.bytes
+      disk.latency_vdbe:
+      - vdbe
+      - disk.latency
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes
+      disk.capacity_vdbe:
+      - vdbe
+      - disk.capacity
+      host_vdbe:
+      - vdbe
+      - host
+      disk.allocation_vdbe:
+      - vdbe
+      - disk.allocation
+      disk.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.read.bytes.rate
+      os_vdbe:
+      - vdbe
+      - os
+      disk.device.read.requests_vdbe:
+      - vdbe
+      - disk.device.read.requests
+      disk.root.size_vdbe:
+      - vdbe
+      - disk.root.size
+      memory_vdbe:
+      - vdbe
+      - memory
+      binding_vdbe:
+      - vdbe
+      - binding
+      disk.device.write.bytes_vdbe:
+      - vdbe
+      - disk.device.write.bytes
+      disk.device.read.requests.rate_vdbe:
+      - vdbe
+      - disk.device.read.requests.rate
+      disk.read.bytes_vdbe:
+      - vdbe
+      - disk.read.bytes
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets.rate
+    requirements:
+      dependency_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - dependency
+      link_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - link
+      local_storage_vdbe:
+      - vdbe
+      - local_storage
+      dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested:
+      - vdbe_vdbe_untr_port_nested
+      - dependency_vdbe_0_subint_untr_vmi_0
+      link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested:
+      - vdbe_vdbe_untr_port_nested
+      - link_vdbe_0_subint_untr_vmi_0
+      dependency_vdbe_vdbe_untr_port_nested:
+      - vdbe_vdbe_untr_port_nested
+      - dependency
+      dependency_vdbe:
+      - vdbe
+      - dependency
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nestedServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/oneSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nestedServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..172b9c8
--- /dev/null
@@ -0,0 +1,171 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: nested
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    vn_network_list:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_0_subint_untr_vmi_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vn_network_list
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    nested_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/nested.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_0_subint_untr_vmi_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - feature
+    requirements:
+      dependency_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - dependency
+      binding_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - binding
+      link_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - link
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..0d453d3
--- /dev/null
@@ -0,0 +1,22 @@
+{
+  "name": "vMME_Small",
+  "description": "HOT template to create 2 cinder volume attachment",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "main.yml",
+      "type": "HEAT",
+      "isBase": "true"
+    },
+    {
+      "file": "nested1.yml",
+      "type": "HEAT",
+      "isBase": "false"
+    },
+    {
+      "file": "nested2.yml",
+      "type": "HEAT",
+      "isBase": "false"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/main.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/main.yml
new file mode 100644 (file)
index 0000000..923c53d
--- /dev/null
@@ -0,0 +1,271 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  control_int_net_forwarding_mode:
+    description: "forwarding mode of the control virtual network"
+    type: string
+  control_int_net_rpf:
+    description: "Reverse Path Filtering enable or disable for the control virtual network"
+    type: string
+  control_int_net_shared:
+    description: "control virtual network shared"
+    type: boolean
+  control_int_net_flood_unknown_unicast:
+    description: "forwarding mode of the control virtual network"
+    type: boolean
+  oam_net_name:
+    description: "Name of NSDNet network from which the management IP addresses will be allocated"
+    type: string
+  untrusted_net_name:
+    description: "Name of public untrusted network into which this vDBE HA cluster is deployed"
+    type: string
+  untrusted_num_vn:
+    constraints:
+      -
+        range:
+          max: 77
+          min: 1
+    description: "Number of vDBE subinterface virtual Networks"
+    type: number
+  untrusted_vlan_tags:
+    description: "List of subinterface vlan tags"
+    type: comma_delimited_list
+  untrusted_vn_networks:
+    description: "List of subinterface virtual networks"
+    type: comma_delimited_list
+  vdbe_aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_device_name:
+    description: "VDBE device Name for this vdbe VNF"
+    type: string
+  vdbe_hw_untr_mac_1:
+    description: "Secondary MAC address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_name_1:
+    description: "VM Name for this vdbe node 1"
+    type: string
+  vdbe_untrusted_ip_1:
+    description: "IPV4 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_v6_ip_1:
+    description: "IPV6 address of the secondary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_untrusted_vmac_address:
+    description: "Virtual MAC of the primary vDBE VM on the VAN untrusted network"
+    type: string
+  vdbe_flavor_name:
+    description: "Flavor to use for vDBE"
+    type: string
+  vdbe_image_name:
+    description: "Image to use for vDBE"
+    type: string
+  vnf_id:
+    description: "Unique ID for this VF inst"
+    type: string
+  vnf_name:
+    description: "Unique name for this VF instance"
+    type: string
+  vf_module_id:
+    description: "Unique ID for this VF module inst"
+    type: string
+  availability_zone_1:
+    description: "The availability zone of secondary node1 vDBE vm in the local HA pair."
+    type: string
+  counter:
+    description: "Counter."
+    type: number
+resources:
+  vdbe_node_1:
+    type: OS::Nova::Server
+    properties:
+      availability_zone:
+        get_param: availability_zone_1
+      flavor:
+        get_param: vdbe_flavor_name
+      image:
+        get_param: vdbe_image_name
+      metadata:
+        vf_module_id:
+          get_param: vf_module_id
+        vnf_id:
+          get_param: vnf_id
+        vnf_name:
+          get_param: vnf_name
+      name:
+        get_param: vdbe_name_1
+      networks:
+        - port: {get_resource: vdbe_1_untr_port_1}
+  vdbe_node_2:
+    type: OS::Nova::Server
+    properties:
+      availability_zone:
+        get_param: availability_zone_1
+      flavor:
+        get_param: vdbe_flavor_name
+      image:
+        get_param: vdbe_image_name
+      metadata:
+        vf_module_id:
+          get_param: vf_module_id
+        vnf_id:
+          get_param: vnf_id
+        vnf_name:
+          get_param: vnf_name
+      name:
+        get_param: vdbe_name_1
+      networks:
+        - port: {get_resource: vdbe_2_untr_port_2}
+  vdbe_1_untr_port_1:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          params:
+            DBE:
+              get_param: vdbe_device_name
+            VM_NAME:
+              get_param: vdbe_name_1
+          template: VM_NAMEDBE001p1n004
+
+  vdbe_2_untr_port_2:
+    type: OS::Neutron::Port
+    properties:
+      name:
+        str_replace:
+          params:
+            DBE:
+              get_param: vdbe_device_name
+            VM_NAME:
+              get_param: vdbe_name_1
+          template: VM_NAMEDBE001p1n004
+
+  vdbe_untr_1_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count:
+        get_param: untrusted_num_vn
+      resource_def:
+        type: nested1.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter: "%index%"
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_1_untr_port_1
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+  vdbe_untr_2_subports:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: 5
+      resource_def:
+        type: nested2.yml
+        properties:
+          aap_address_mode:
+            get_param: aap_address_mode
+          aap_sec_untrusted_ip_prefix:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix
+          aap_sec_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_sec_untrusted_ip_prefix_len
+          aap_untrusted_ip_prefix:
+            get_param: vdbe_aap_untrusted_ip_prefix
+          aap_untrusted_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_ip_prefix_len
+          aap_untrusted_v6_ip_prefix:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix
+          aap_untrusted_v6_ip_prefix_len:
+            get_param: vdbe_aap_untrusted_v6_ip_prefix_len
+          counter:
+            get_param: counter
+          ip_address:
+            get_param: vdbe_untrusted_ip_1
+          ip_v6_address:
+            get_param: vdbe_untrusted_v6_ip_1
+          mac_address:
+            get_param: vdbe_hw_untr_mac_1
+          parent_interface:
+            get_resource: vdbe_2_untr_port_2
+          subinterfaces_name_prefix:
+            str_replace:
+              params:
+                DBE:
+                  get_param: vdbe_device_name
+                VM_NAME:
+                  get_param: vdbe_name_1
+              template: VM_NAMEDBE001p1n004
+          vlan_tag_list:
+            get_param: untrusted_vlan_tags
+          vmac_address:
+            get_param: vdbe_untrusted_vmac_address
+          vn_network_list:
+             get_param: untrusted_vn_networks
+  control_int_net:
+    type: OS::ContrailV2::VirtualNetwork
+    properties:
+      flood_unknown_unicast:
+        get_param: control_int_net_flood_unknown_unicast
+      is_shared:
+        get_param: control_int_net_shared
+      name:
+        str_replace:
+          params:
+            VNF_NAME:
+              get_param: vnf_name
+          template: VNF_NAME_control_net
+      virtual_network_properties:
+        virtual_network_properties_forwarding_mode:
+          get_param: control_int_net_forwarding_mode
+        virtual_network_properties_rpf:
+          get_param: control_int_net_rpf
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested1.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested1.yml
new file mode 100644 (file)
index 0000000..328b0ea
--- /dev/null
@@ -0,0 +1,116 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  counter:
+    description: "Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances."
+    type: number
+  mac_address:
+    description: "HW MAC address to use for subinterface"
+    type: string
+  parent_interface:
+    description: "Parent Contrail interface"
+    type: string
+  subinterfaces_name_prefix:
+    description: "Combined with subinterface_instance_index, this is used as the name of the subinterface resource"
+    type: string
+  vlan_tag_list:
+    description: "List of VLAN IDs to use for subinterfaces"
+    type: comma_delimited_list
+  vmac_address:
+    description: "virtual MAC address to use for subinterface"
+    type: string
+  vn_network_list:
+    description: "List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list"
+    type: string
+  ip_address:
+    description: "IPv4 address associated with subinterfaces"
+    type: string
+  ip_v6_address:
+    description: "IPv6 address associated with subinterfaces"
+    type: string
+resources:
+  vdbe_0_subint_untr_vmi_0:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name:
+        str_replace:
+          params:
+            $INDEX:
+              get_param:
+                - vlan_tag_list
+                -
+                  get_param: counter
+            $NAME:
+              get_param: subinterfaces_name_prefix
+          template: $NAME_$INDEX
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: mac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: mac_address
+      virtual_machine_interface_properties:
+        virtual_machine_interface_properties_sub_interface_vlan_tag:
+          get_param:
+            - vlan_tag_list
+            -
+              get_param: counter
+      virtual_machine_interface_refs:
+          [{get_param: parent_interface}]
+      virtual_network_refs:
+          [{get_param: vn_network_list}]
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested2.yml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/in/nested2.yml
new file mode 100644 (file)
index 0000000..0a94ec0
--- /dev/null
@@ -0,0 +1,116 @@
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  counter:
+    description: "Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances."
+    type: number
+  mac_address:
+    description: "HW MAC address to use for subinterface"
+    type: string
+  parent_interface:
+    description: "Parent Contrail interface"
+    type: string
+  subinterfaces_name_prefix:
+    description: "Combined with subinterface_instance_index, this is used as the name of the subinterface resource"
+    type: string
+  vlan_tag_list:
+    description: "List of VLAN IDs to use for subinterfaces"
+    type: comma_delimited_list
+  vmac_address:
+    description: "virtual MAC address to use for subinterface"
+    type: string
+  vn_network_list:
+    description: "List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list"
+    type: string
+  ip_address:
+    description: "IPv4 address associated with subinterfaces"
+    type: string
+  ip_v6_address:
+    description: "IPv6 address associated with subinterfaces"
+    type: string
+resources:
+  vdbe_0_subint_oam_vmi_0:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name:
+        str_replace:
+          params:
+            $INDEX:
+              get_param:
+                - vlan_tag_list
+                -
+                  get_param: counter
+            $NAME:
+              get_param: subinterfaces_name_prefix
+          template: $NAME_$INDEX
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: mac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: mac_address
+      virtual_machine_interface_properties:
+        virtual_machine_interface_properties_sub_interface_vlan_tag:
+          get_param:
+            - vlan_tag_list
+            -
+              get_param: counter
+      virtual_machine_interface_refs:
+          [{get_param: parent_interface}]
+      virtual_network_refs:
+          [{get_param: vn_network_list}]
+
+
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/GlobalSubstitutionTypesServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/GlobalSubstitutionTypesServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..714f8b6
--- /dev/null
@@ -0,0 +1,1326 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: GlobalSubstitutionTypes
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+node_types:
+  org.openecomp.resource.abstract.nodes.heat.subinterface.nested2:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      vn_network_list:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_0_subint_oam_vmi_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_oam_vmi_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_0_subint_oam_vmi_0:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_0_subint_oam_vmi_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.vdbe:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_vdbe_untr_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested1_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested1_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      untrusted_num_vn:
+        type: float
+        description: Number of vDBE subinterface virtual Networks
+        required: true
+        status: SUPPORTED
+        constraints:
+        - in_range:
+          - 1
+          - 77
+      port_vdbe_untr_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      subinterface_nested1_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_nested1_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_vdbe_untr_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      subinterface_nested1_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested1_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      compute_vdbe_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested1_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+    requirements:
+    - dependency_vdbe_vdbe_untr_port_nested1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested1:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested1:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_vdbe:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_vdbe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_vdbe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      forwarder_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.Forwarder
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      instance_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port_nested1:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_vdbe:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_vdbe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.heat.subinterface.nested1:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      vn_network_list:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+  org.openecomp.resource.abstract.nodes.vdbe_1:
+    derived_from: org.openecomp.resource.abstract.nodes.VFC
+    properties:
+      port_vdbe_untr_port_network_role_tag:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested2_subinterfaces_name_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_subnetpoolid:
+        type: string
+        required: true
+        status: SUPPORTED
+      compute_vdbe_availability_zone:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_aap_untrusted_v6_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_flavor_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested2_parent_interface:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_aap_sec_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_order:
+        type: integer
+        required: true
+        status: SUPPORTED
+      subinterface_nested2_vmac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      vm_image_name:
+        type: string
+        required: true
+        status: SUPPORTED
+      port_vdbe_untr_port_exCP_naming:
+        type: org.openecomp.datatypes.Naming
+        required: true
+        status: SUPPORTED
+      compute_vdbe_metadata:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      subinterface_nested2_aap_sec_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_mac_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_mac_requirements:
+        type: org.openecomp.datatypes.network.MacRequirements
+        required: true
+        status: SUPPORTED
+      subinterface_nested2_ip_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      index_value:
+        type: integer
+        description: Index value of this substitution service template runtime instance
+        required: false
+        default: 0
+        status: SUPPORTED
+        constraints:
+        - greater_or_equal: 0
+      port_vdbe_untr_port_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_vlan_tag_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: json
+      port_vdbe_untr_port_vlan_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.VlanRequirements
+      subinterface_nested2_aap_untrusted_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_network_role:
+        type: string
+        required: true
+        status: SUPPORTED
+      subinterface_nested2_counter:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: float
+      subinterface_nested2_aap_untrusted_v6_ip_prefix_len:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_ip_v6_address:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      compute_vdbe_name:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_aap_untrusted_ip_prefix:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_aap_address_mode:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      subinterface_nested2_vn_network_list:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      port_vdbe_untr_port_ip_requirements:
+        type: list
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: org.openecomp.datatypes.network.IpRequirements
+    requirements:
+    - dependency_vdbe_vdbe_untr_port_nested2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_0_subint_oam_vmi_0_vdbe_vdbe_untr_port_nested2:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_oam_vmi_0_vdbe_vdbe_untr_port_nested2:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - dependency_vdbe:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - local_storage_vdbe:
+        capability: tosca.capabilities.Attachment
+        node: tosca.nodes.BlockStorage
+        relationship: tosca.relationships.AttachesTo
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - dependency_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_vdbe_untr_port:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      attachment_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.Attachment
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      endpoint_vdbe:
+        type: tosca.capabilities.Endpoint.Admin
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.ephemeral.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_util_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      vcpus_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      scalable_vdbe:
+        type: tosca.capabilities.Scalable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.iops_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      forwarder_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.Forwarder
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe_vdbe_untr_port:
+        type: tosca.capabilities.network.Bindable
+        valid_source_types:
+        - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+        occurrences:
+        - 0
+        - UNBOUNDED
+      instance_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu.delta_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory.resident_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_vdbe_untr_port_nested2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      cpu_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.usage_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.latency_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.capacity_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      host_vdbe:
+        type: tosca.capabilities.Container
+        valid_source_types:
+        - tosca.nodes.SoftwareComponent
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.allocation_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      feature_vdbe_0_subint_oam_vmi_0_vdbe_vdbe_untr_port_nested2:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      os_vdbe:
+        type: tosca.capabilities.OperatingSystem
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.root.size_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      memory_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      binding_vdbe:
+        type: tosca.capabilities.network.Bindable
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.write.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.device.read.requests.rate_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      disk.read.bytes_vdbe:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+        type: org.openecomp.capabilities.metric.Ceilometer
+        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.
+        occurrences:
+        - 1
+        - UNBOUNDED
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..97275e4
--- /dev/null
@@ -0,0 +1,607 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Main
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    vf_module_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vf_module_id
+      type: string
+      description: Unique ID for this VF module inst
+    control_int_net_rpf:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_rpf
+      type: string
+      description: Reverse Path Filtering enable or disable for the control virtual network
+    control_int_net_forwarding_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_forwarding_mode
+      type: string
+      description: forwarding mode of the control virtual network
+    vnf_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_name
+      type: string
+      description: Unique name for this VF instance
+    vdbe_untrusted_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_ip_1
+      type: string
+      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: aap_address_mode
+      type: string
+      description: Address mode for the vDBE cluster IP
+    control_int_net_shared:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_shared
+      type: boolean
+      description: control virtual network shared
+    vdbe_untrusted_v6_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_v6_ip_1
+      type: string
+      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_untrusted_vmac_address:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_vmac_address
+      type: string
+      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network
+    control_int_net_flood_unknown_unicast:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_flood_unknown_unicast
+      type: boolean
+      description: forwarding mode of the control virtual network
+    vdbe_aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    vnf_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_id
+      type: string
+      description: Unique ID for this VF inst
+    vdbe_name_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_name_1
+      type: string
+      description: VM Name for this vdbe node 1
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: availability_zone_1
+      type: string
+      description: The availability zone of secondary node1 vDBE vm in the local HA pair.
+    untrusted_vn_networks:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vn_networks
+      type: list
+      description: List of subinterface virtual networks
+      entry_schema:
+        type: string
+    vdbe_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_image_name
+      type: string
+      description: Image to use for vDBE
+    oam_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: oam_net_name
+      type: string
+      description: Name of NSDNet network from which the management IP addresses will be allocated
+    vdbe_aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix_len
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    oam_network_collection_function:
+      type: string
+      required: true
+    untrusted_vlan_tags:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vlan_tags
+      type: list
+      description: List of subinterface vlan tags
+      entry_schema:
+        type: string
+    untr_network_collection_function:
+      type: string
+      required: true
+    untr_vfc_instance_group_function:
+      type: string
+      required: true
+    vdbe_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_flavor_name
+      type: string
+      description: Flavor to use for vDBE
+    counter:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: counter
+      type: float
+      description: Counter.
+    oam_vfc_instance_group_function:
+      type: string
+      required: true
+    vdbe_hw_untr_mac_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_hw_untr_mac_1
+      type: string
+      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network
+    untrusted_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_net_name
+      type: string
+      description: Name of public untrusted network into which this vDBE HA cluster is deployed
+    vdbe_device_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_device_name
+      type: string
+      description: VDBE device Name for this vdbe VNF
+    vdbe_aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+  node_templates:
+    control_int_net:
+      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+      properties:
+        network_name:
+          str_replace:
+            template: VNF_NAME_control_net
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+    abstract_vdbe_1:
+      type: org.openecomp.resource.abstract.nodes.vdbe_1
+      directives:
+      - substitutable
+      properties:
+        subinterface_nested2_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        compute_vdbe_availability_zone:
+        - get_input: availability_zone_1
+        subinterface_nested2_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        vm_flavor_name:
+          get_input: vdbe_flavor_name
+        subinterface_nested2_parent_interface:
+        - vdbe_2_untr_port_2
+        subinterface_nested2_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        subinterface_nested2_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        vm_image_name:
+          get_input: vdbe_image_name
+        compute_vdbe_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        subinterface_nested2_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_nested2_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        port_vdbe_untr_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        subinterface_nested2_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        port_vdbe_untr_port_name:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_nested2_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        subinterface_nested2_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_nested2_counter:
+        - get_input: counter
+        subinterface_nested2_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        subinterface_nested2_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        compute_vdbe_name:
+        - get_input: vdbe_name_1
+        subinterface_nested2_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        subinterface_nested2_aap_address_mode:
+        - get_input: aap_address_mode
+        subinterface_nested2_vn_network_list:
+        - get_input: untrusted_vn_networks
+        port_vdbe_untr_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        service_template_filter:
+          substitute_service_template: Nested_vdbe_1ServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    abstract_vdbe:
+      type: org.openecomp.resource.abstract.nodes.vdbe
+      directives:
+      - substitutable
+      properties:
+        subinterface_nested1_aap_untrusted_v6_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        subinterface_nested1_aap_address_mode:
+        - get_input: aap_address_mode
+        subinterface_nested1_vn_network_list:
+        - get_input: untrusted_vn_networks
+        compute_vdbe_availability_zone:
+        - get_input: availability_zone_1
+        vm_flavor_name:
+          get_input: vdbe_flavor_name
+        vm_image_name:
+          get_input: vdbe_image_name
+        subinterface_nested1_vmac_address:
+        - get_input: vdbe_untrusted_vmac_address
+        subinterface_nested1_ip_address:
+        - get_input: vdbe_untrusted_ip_1
+        subinterface_nested1_subinterfaces_name_prefix:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        compute_vdbe_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        subinterface_nested1_aap_untrusted_v6_ip_prefix:
+        - get_input: vdbe_aap_untrusted_v6_ip_prefix
+        subinterface_nested1_parent_interface:
+        - vdbe_1_untr_port_1
+        subinterface_nested1_aap_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_untrusted_ip_prefix_len
+        subinterface_nested1_ip_v6_address:
+        - get_input: vdbe_untrusted_v6_ip_1
+        port_vdbe_untr_port_mac_requirements:
+          mac_count_required:
+            is_required: false
+        port_vdbe_untr_port_name:
+        - str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        subinterface_nested1_mac_address:
+        - get_input: vdbe_hw_untr_mac_1
+        subinterface_nested1_aap_untrusted_ip_prefix:
+        - get_input: vdbe_aap_untrusted_ip_prefix
+        subinterface_nested1_aap_sec_untrusted_ip_prefix_len:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        subinterface_nested1_vlan_tag_list:
+        - get_input: untrusted_vlan_tags
+        compute_vdbe_name:
+        - get_input: vdbe_name_1
+        subinterface_nested1_aap_sec_untrusted_ip_prefix:
+        - get_input: vdbe_aap_sec_untrusted_ip_prefix
+        port_vdbe_untr_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        - ip_version: 6
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        service_template_filter:
+          substitute_service_template: Nested_vdbeServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+  groups:
+    main_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/main.yml
+        description: |
+          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+      members:
+      - control_int_net
+      - abstract_vdbe
+      - abstract_vdbe_1
+    untr_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: untr
+        network_collection_function:
+          get_input: untr_network_collection_function
+        vfc_instance_group_function:
+          get_input: untr_vfc_instance_group_function
+        subinterface_role: untr
+      members:
+      - abstract_vdbe
+    oam_group:
+      type: org.openecomp.groups.VfcInstanceGroup
+      properties:
+        vfc_parent_port_role: untr
+        network_collection_function:
+          get_input: oam_network_collection_function
+        vfc_instance_group_function:
+          get_input: oam_vfc_instance_group_function
+        subinterface_role: oam
+      members:
+      - abstract_vdbe_1
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbeServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbeServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..e249e3f
--- /dev/null
@@ -0,0 +1,476 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Nested_vdbe
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    port_vdbe_untr_port_network_role_tag:
+      type: string
+      required: true
+    subinterface_nested1_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_subnetpoolid:
+      type: string
+      required: true
+    subinterface_nested1_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_availability_zone:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_flavor_name:
+      type: string
+      required: true
+    untrusted_num_vn:
+      hidden: false
+      immutable: false
+      type: float
+      description: Number of vDBE subinterface virtual Networks
+      constraints:
+      - in_range:
+        - 1
+        - 77
+    port_vdbe_untr_port_order:
+      type: integer
+      required: true
+    vm_image_name:
+      type: string
+      required: true
+    port_vdbe_untr_port_exCP_naming:
+      type: org.openecomp.datatypes.Naming
+      required: true
+    subinterface_nested1_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_metadata:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_nested1_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_mac_requirements:
+      type: org.openecomp.datatypes.network.MacRequirements
+      required: true
+    index_value:
+      type: integer
+      description: Index value of this substitution service template runtime instance
+      required: false
+      default: 0
+      constraints:
+      - greater_or_equal: 0
+    port_vdbe_untr_port_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_vlan_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.VlanRequirements
+    subinterface_nested1_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_network_role:
+      type: string
+      required: true
+    subinterface_nested1_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    compute_vdbe_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested1_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_ip_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.IpRequirements
+  node_templates:
+    vdbe_vdbe_untr_port_nested1:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested1
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested1_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested1_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_nested1_ip_v6_address
+          - index_value
+        counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_nested1_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_nested1_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_nested1_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: nested1ServiceTemplate.yaml
+          count:
+            get_input: untrusted_num_vn
+          mandatory: false
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_nested1_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_nested1_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_nested1_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_nested1_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_nested1_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested1_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_nested1_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_nested1_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested1_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_0_subint_untr_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_untr_port
+          relationship: tosca.relationships.network.BindsTo
+    vdbe:
+      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe
+      properties:
+        availability_zone:
+          get_input:
+          - compute_vdbe_availability_zone
+          - index_value
+        flavor:
+          get_input: vm_flavor_name
+        metadata:
+          get_input:
+          - compute_vdbe_metadata
+          - index_value
+        image:
+          get_input: vm_image_name
+        name:
+          get_input:
+          - compute_vdbe_name
+          - index_value
+    vdbe_vdbe_untr_port:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        exCP_naming:
+          get_input: port_vdbe_untr_port_exCP_naming
+        vlan_requirements:
+          get_input: port_vdbe_untr_port_vlan_requirements
+        ip_requirements:
+          get_input: port_vdbe_untr_port_ip_requirements
+        network_role_tag:
+          get_input: port_vdbe_untr_port_network_role_tag
+        mac_requirements:
+          get_input: port_vdbe_untr_port_mac_requirements
+        order:
+          get_input: port_vdbe_untr_port_order
+        network_role:
+          get_input: port_vdbe_untr_port_network_role
+        subnetpoolid:
+          get_input: port_vdbe_untr_port_subnetpoolid
+        name:
+          get_input:
+          - port_vdbe_untr_port_name
+          - index_value
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe
+          relationship: tosca.relationships.network.BindsTo
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.vdbe
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.packets.rate
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes
+      feature_vdbe:
+      - vdbe
+      - feature
+      feature_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - feature
+      attachment_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - attachment
+      disk.device.iops_vdbe:
+      - vdbe
+      - disk.device.iops
+      endpoint_vdbe:
+      - vdbe
+      - endpoint
+      disk.ephemeral.size_vdbe:
+      - vdbe
+      - disk.ephemeral.size
+      cpu_util_vdbe:
+      - vdbe
+      - cpu_util
+      vcpus_vdbe:
+      - vdbe
+      - vcpus
+      disk.write.requests_vdbe:
+      - vdbe
+      - disk.write.requests
+      disk.device.latency_vdbe:
+      - vdbe
+      - disk.device.latency
+      disk.device.write.requests.rate_vdbe:
+      - vdbe
+      - disk.device.write.requests.rate
+      disk.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.write.bytes.rate
+      network.incoming.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets
+      scalable_vdbe:
+      - vdbe
+      - scalable
+      disk.iops_vdbe:
+      - vdbe
+      - disk.iops
+      disk.device.write.requests_vdbe:
+      - vdbe
+      - disk.device.write.requests
+      disk.device.capacity_vdbe:
+      - vdbe
+      - disk.device.capacity
+      feature_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested1:
+      - vdbe_vdbe_untr_port_nested1
+      - feature_vdbe_0_subint_untr_vmi_0
+      disk.device.allocation_vdbe:
+      - vdbe
+      - disk.device.allocation
+      disk.usage_vdbe:
+      - vdbe
+      - disk.usage
+      memory.usage_vdbe:
+      - vdbe
+      - memory.usage
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outpoing.packets
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes.rate
+      disk.read.requests_vdbe:
+      - vdbe
+      - disk.read.requests
+      forwarder_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - forwarder
+      binding_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - binding
+      instance_vdbe:
+      - vdbe
+      - instance
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes.rate
+      cpu.delta_vdbe:
+      - vdbe
+      - cpu.delta
+      disk.device.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.read.bytes.rate
+      disk.device.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.write.bytes.rate
+      feature_vdbe_vdbe_untr_port_nested1:
+      - vdbe_vdbe_untr_port_nested1
+      - feature
+      memory.resident_vdbe:
+      - vdbe
+      - memory.resident
+      disk.write.requests.rate_vdbe:
+      - vdbe
+      - disk.write.requests.rate
+      cpu_vdbe:
+      - vdbe
+      - cpu
+      disk.write.bytes_vdbe:
+      - vdbe
+      - disk.write.bytes
+      disk.device.usage_vdbe:
+      - vdbe
+      - disk.device.usage
+      disk.device.read.bytes_vdbe:
+      - vdbe
+      - disk.device.read.bytes
+      disk.latency_vdbe:
+      - vdbe
+      - disk.latency
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes
+      disk.capacity_vdbe:
+      - vdbe
+      - disk.capacity
+      host_vdbe:
+      - vdbe
+      - host
+      disk.allocation_vdbe:
+      - vdbe
+      - disk.allocation
+      disk.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.read.bytes.rate
+      os_vdbe:
+      - vdbe
+      - os
+      disk.device.read.requests_vdbe:
+      - vdbe
+      - disk.device.read.requests
+      disk.root.size_vdbe:
+      - vdbe
+      - disk.root.size
+      memory_vdbe:
+      - vdbe
+      - memory
+      binding_vdbe:
+      - vdbe
+      - binding
+      disk.device.write.bytes_vdbe:
+      - vdbe
+      - disk.device.write.bytes
+      disk.device.read.requests.rate_vdbe:
+      - vdbe
+      - disk.device.read.requests.rate
+      disk.read.bytes_vdbe:
+      - vdbe
+      - disk.read.bytes
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets.rate
+    requirements:
+      dependency_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - dependency
+      link_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested1:
+      - vdbe_vdbe_untr_port_nested1
+      - link_vdbe_0_subint_untr_vmi_0
+      dependency_vdbe_0_subint_untr_vmi_0_vdbe_vdbe_untr_port_nested1:
+      - vdbe_vdbe_untr_port_nested1
+      - dependency_vdbe_0_subint_untr_vmi_0
+      link_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - link
+      local_storage_vdbe:
+      - vdbe
+      - local_storage
+      dependency_vdbe_vdbe_untr_port_nested1:
+      - vdbe_vdbe_untr_port_nested1
+      - dependency
+      dependency_vdbe:
+      - vdbe
+      - dependency
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbe_1ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/Nested_vdbe_1ServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..0d70da9
--- /dev/null
@@ -0,0 +1,470 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Nested_vdbe_1
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.compute.nodes.heat.vdbe:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    port_vdbe_untr_port_network_role_tag:
+      type: string
+      required: true
+    subinterface_nested2_subinterfaces_name_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_subnetpoolid:
+      type: string
+      required: true
+    compute_vdbe_availability_zone:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_aap_untrusted_v6_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_flavor_name:
+      type: string
+      required: true
+    subinterface_nested2_parent_interface:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_aap_sec_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_order:
+      type: integer
+      required: true
+    subinterface_nested2_vmac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    vm_image_name:
+      type: string
+      required: true
+    port_vdbe_untr_port_exCP_naming:
+      type: org.openecomp.datatypes.Naming
+      required: true
+    compute_vdbe_metadata:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    subinterface_nested2_aap_sec_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_mac_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_mac_requirements:
+      type: org.openecomp.datatypes.network.MacRequirements
+      required: true
+    subinterface_nested2_ip_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    index_value:
+      type: integer
+      description: Index value of this substitution service template runtime instance
+      required: false
+      default: 0
+      constraints:
+      - greater_or_equal: 0
+    port_vdbe_untr_port_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_vlan_tag_list:
+      type: list
+      required: true
+      entry_schema:
+        type: json
+    port_vdbe_untr_port_vlan_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.VlanRequirements
+    subinterface_nested2_aap_untrusted_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_network_role:
+      type: string
+      required: true
+    subinterface_nested2_counter:
+      type: list
+      required: true
+      entry_schema:
+        type: float
+    subinterface_nested2_aap_untrusted_v6_ip_prefix_len:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_ip_v6_address:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    compute_vdbe_name:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_aap_untrusted_ip_prefix:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_aap_address_mode:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    subinterface_nested2_vn_network_list:
+      type: list
+      required: true
+      entry_schema:
+        type: string
+    port_vdbe_untr_port_ip_requirements:
+      type: list
+      required: true
+      entry_schema:
+        type: org.openecomp.datatypes.network.IpRequirements
+  node_templates:
+    vdbe_vdbe_untr_port_nested2:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested2
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested2_aap_untrusted_ip_prefix
+          - index_value
+        aap_sec_untrusted_ip_prefix:
+          get_input:
+          - subinterface_nested2_aap_sec_untrusted_ip_prefix
+          - index_value
+        ip_v6_address:
+          get_input:
+          - subinterface_nested2_ip_v6_address
+          - index_value
+        counter:
+          get_input:
+          - subinterface_nested2_counter
+          - index_value
+        ip_address:
+          get_input:
+          - subinterface_nested2_ip_address
+          - index_value
+        subinterfaces_name_prefix:
+          get_input:
+          - subinterface_nested2_subinterfaces_name_prefix
+          - index_value
+        aap_address_mode:
+          get_input:
+          - subinterface_nested2_aap_address_mode
+          - index_value
+        service_template_filter:
+          substitute_service_template: nested2ServiceTemplate.yaml
+          count: 5
+          mandatory: true
+        aap_untrusted_v6_ip_prefix:
+          get_input:
+          - subinterface_nested2_aap_untrusted_v6_ip_prefix
+          - index_value
+        parent_interface:
+          get_input:
+          - subinterface_nested2_parent_interface
+          - index_value
+        vn_network_list:
+          get_input:
+          - subinterface_nested2_vn_network_list
+          - index_value
+        mac_address:
+          get_input:
+          - subinterface_nested2_mac_address
+          - index_value
+        vlan_tag_list:
+          get_input:
+          - subinterface_nested2_vlan_tag_list
+          - index_value
+        aap_sec_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested2_aap_sec_untrusted_ip_prefix_len
+          - index_value
+        vmac_address:
+          get_input:
+          - subinterface_nested2_vmac_address
+          - index_value
+        aap_untrusted_v6_ip_prefix_len:
+          get_input:
+          - subinterface_nested2_aap_untrusted_v6_ip_prefix_len
+          - index_value
+        aap_untrusted_ip_prefix_len:
+          get_input:
+          - subinterface_nested2_aap_untrusted_ip_prefix_len
+          - index_value
+      requirements:
+      - binding_vdbe_0_subint_oam_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_vdbe_untr_port
+          relationship: tosca.relationships.network.BindsTo
+    vdbe:
+      type: org.openecomp.resource.vfc.compute.nodes.heat.vdbe
+      properties:
+        availability_zone:
+          get_input:
+          - compute_vdbe_availability_zone
+          - index_value
+        flavor:
+          get_input: vm_flavor_name
+        metadata:
+          get_input:
+          - compute_vdbe_metadata
+          - index_value
+        image:
+          get_input: vm_image_name
+        name:
+          get_input:
+          - compute_vdbe_name
+          - index_value
+    vdbe_vdbe_untr_port:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        exCP_naming:
+          get_input: port_vdbe_untr_port_exCP_naming
+        vlan_requirements:
+          get_input: port_vdbe_untr_port_vlan_requirements
+        ip_requirements:
+          get_input: port_vdbe_untr_port_ip_requirements
+        network_role_tag:
+          get_input: port_vdbe_untr_port_network_role_tag
+        mac_requirements:
+          get_input: port_vdbe_untr_port_mac_requirements
+        order:
+          get_input: port_vdbe_untr_port_order
+        network_role:
+          get_input: port_vdbe_untr_port_network_role
+        subnetpoolid:
+          get_input: port_vdbe_untr_port_subnetpoolid
+        name:
+          get_input:
+          - port_vdbe_untr_port_name
+          - index_value
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe
+          relationship: tosca.relationships.network.BindsTo
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.vdbe_1
+    capabilities:
+      network.outgoing.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.packets.rate
+      network.outgoing.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes
+      feature_vdbe:
+      - vdbe
+      - feature
+      feature_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - feature
+      attachment_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - attachment
+      disk.device.iops_vdbe:
+      - vdbe
+      - disk.device.iops
+      endpoint_vdbe:
+      - vdbe
+      - endpoint
+      disk.ephemeral.size_vdbe:
+      - vdbe
+      - disk.ephemeral.size
+      cpu_util_vdbe:
+      - vdbe
+      - cpu_util
+      vcpus_vdbe:
+      - vdbe
+      - vcpus
+      disk.write.requests_vdbe:
+      - vdbe
+      - disk.write.requests
+      disk.device.latency_vdbe:
+      - vdbe
+      - disk.device.latency
+      disk.device.write.requests.rate_vdbe:
+      - vdbe
+      - disk.device.write.requests.rate
+      disk.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.write.bytes.rate
+      network.incoming.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets
+      scalable_vdbe:
+      - vdbe
+      - scalable
+      disk.iops_vdbe:
+      - vdbe
+      - disk.iops
+      disk.device.write.requests_vdbe:
+      - vdbe
+      - disk.device.write.requests
+      disk.device.capacity_vdbe:
+      - vdbe
+      - disk.device.capacity
+      disk.device.allocation_vdbe:
+      - vdbe
+      - disk.device.allocation
+      disk.usage_vdbe:
+      - vdbe
+      - disk.usage
+      memory.usage_vdbe:
+      - vdbe
+      - memory.usage
+      network.outpoing.packets_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outpoing.packets
+      network.outgoing.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.outgoing.bytes.rate
+      disk.read.requests_vdbe:
+      - vdbe
+      - disk.read.requests
+      forwarder_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - forwarder
+      binding_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - binding
+      instance_vdbe:
+      - vdbe
+      - instance
+      network.incoming.bytes.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes.rate
+      cpu.delta_vdbe:
+      - vdbe
+      - cpu.delta
+      disk.device.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.read.bytes.rate
+      disk.device.write.bytes.rate_vdbe:
+      - vdbe
+      - disk.device.write.bytes.rate
+      memory.resident_vdbe:
+      - vdbe
+      - memory.resident
+      feature_vdbe_vdbe_untr_port_nested2:
+      - vdbe_vdbe_untr_port_nested2
+      - feature
+      disk.write.requests.rate_vdbe:
+      - vdbe
+      - disk.write.requests.rate
+      cpu_vdbe:
+      - vdbe
+      - cpu
+      disk.write.bytes_vdbe:
+      - vdbe
+      - disk.write.bytes
+      disk.device.usage_vdbe:
+      - vdbe
+      - disk.device.usage
+      disk.device.read.bytes_vdbe:
+      - vdbe
+      - disk.device.read.bytes
+      disk.latency_vdbe:
+      - vdbe
+      - disk.latency
+      network.incoming.bytes_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.bytes
+      disk.capacity_vdbe:
+      - vdbe
+      - disk.capacity
+      host_vdbe:
+      - vdbe
+      - host
+      disk.allocation_vdbe:
+      - vdbe
+      - disk.allocation
+      feature_vdbe_0_subint_oam_vmi_0_vdbe_vdbe_untr_port_nested2:
+      - vdbe_vdbe_untr_port_nested2
+      - feature_vdbe_0_subint_oam_vmi_0
+      disk.read.bytes.rate_vdbe:
+      - vdbe
+      - disk.read.bytes.rate
+      os_vdbe:
+      - vdbe
+      - os
+      disk.device.read.requests_vdbe:
+      - vdbe
+      - disk.device.read.requests
+      disk.root.size_vdbe:
+      - vdbe
+      - disk.root.size
+      memory_vdbe:
+      - vdbe
+      - memory
+      binding_vdbe:
+      - vdbe
+      - binding
+      disk.device.write.bytes_vdbe:
+      - vdbe
+      - disk.device.write.bytes
+      disk.device.read.requests.rate_vdbe:
+      - vdbe
+      - disk.device.read.requests.rate
+      disk.read.bytes_vdbe:
+      - vdbe
+      - disk.read.bytes
+      network.incoming.packets.rate_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - network.incoming.packets.rate
+    requirements:
+      dependency_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - dependency
+      dependency_vdbe_0_subint_oam_vmi_0_vdbe_vdbe_untr_port_nested2:
+      - vdbe_vdbe_untr_port_nested2
+      - dependency_vdbe_0_subint_oam_vmi_0
+      link_vdbe_vdbe_untr_port:
+      - vdbe_vdbe_untr_port
+      - link
+      link_vdbe_0_subint_oam_vmi_0_vdbe_vdbe_untr_port_nested2:
+      - vdbe_vdbe_untr_port_nested2
+      - link_vdbe_0_subint_oam_vmi_0
+      local_storage_vdbe:
+      - vdbe
+      - local_storage
+      dependency_vdbe_vdbe_untr_port_nested2:
+      - vdbe_vdbe_untr_port_nested2
+      - dependency
+      dependency_vdbe:
+      - vdbe
+      - dependency
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nested1ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nested1ServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..a76b5cd
--- /dev/null
@@ -0,0 +1,171 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: nested1
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    vn_network_list:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_0_subint_untr_vmi_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vn_network_list
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    nested1_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/nested1.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_0_subint_untr_vmi_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested1
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - feature
+    requirements:
+      dependency_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - dependency
+      binding_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - binding
+      link_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - link
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nested2ServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/subinterface/vlantagging/vfcInstanceGroup/twoSubInterfaceNetworkRoleAndTwoAbstractNodes/out/nested2ServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..96062a3
--- /dev/null
@@ -0,0 +1,171 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: nested2
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    vn_network_list:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_0_subint_oam_vmi_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vn_network_list
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    nested2_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/nested2.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_0_subint_oam_vmi_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested2
+    capabilities:
+      feature_vdbe_0_subint_oam_vmi_0:
+      - vdbe_0_subint_oam_vmi_0
+      - feature
+    requirements:
+      dependency_vdbe_0_subint_oam_vmi_0:
+      - vdbe_0_subint_oam_vmi_0
+      - dependency
+      link_vdbe_0_subint_oam_vmi_0:
+      - vdbe_0_subint_oam_vmi_0
+      - link
+      binding_vdbe_0_subint_oam_vmi_0:
+      - vdbe_0_subint_oam_vmi_0
+      - binding
index 96f6560..4cf19db 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: GlobalSubstitutionTypes\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-node_types:\r
-  org.openecomp.resource.abstract.nodes.heat.subinterface.nested:\r
-    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute\r
-    properties:\r
-      aap_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_sec_untrusted_ip_prefix:\r
-        type: string\r
-        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      vdbe_subport_network:\r
-        type: string\r
-        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_v6_address:\r
-        type: string\r
-        description: IPv6 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      counter:\r
-        type: float\r
-        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-        required: true\r
-        status: SUPPORTED\r
-      subinterfaces_name_prefix:\r
-        type: string\r
-        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-        required: true\r
-        status: SUPPORTED\r
-      ip_address:\r
-        type: string\r
-        description: IPv4 address associated with subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_address_mode:\r
-        type: string\r
-        description: Address mode for the vDBE cluster IP\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix:\r
-        type: string\r
-        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      parent_interface:\r
-        type: string\r
-        description: Parent Contrail interface\r
-        required: true\r
-        status: SUPPORTED\r
-      mac_address:\r
-        type: string\r
-        description: HW MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      vlan_tag_list:\r
-        type: list\r
-        description: List of VLAN IDs to use for subinterfaces\r
-        required: true\r
-        status: SUPPORTED\r
-        entry_schema:\r
-          type: string\r
-      aap_sec_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      vmac_address:\r
-        type: string\r
-        description: virtual MAC address to use for subinterface\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_v6_ip_prefix_len:\r
-        type: string\r
-        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-      aap_untrusted_ip_prefix_len:\r
-        type: string\r
-        description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-        required: true\r
-        status: SUPPORTED\r
-    requirements:\r
-    - dependency_vdbe_0_subint_untr_vmi_0:\r
-        capability: tosca.capabilities.Node\r
-        node: tosca.nodes.Root\r
-        relationship: tosca.relationships.DependsOn\r
-        occurrences:\r
-        - 0\r
-        - UNBOUNDED\r
-    - link_vdbe_0_subint_untr_vmi_0:\r
-        capability: tosca.capabilities.network.Linkable\r
-        relationship: tosca.relationships.network.LinksTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    - binding_vdbe_0_subint_untr_vmi_0:\r
-        capability: tosca.capabilities.network.Bindable\r
-        node: org.openecomp.resource.cp.nodes.network.Port\r
-        relationship: tosca.relationships.network.BindsTo\r
-        occurrences:\r
-        - 1\r
-        - 1\r
-    capabilities:\r
-      feature_vdbe_0_subint_untr_vmi_0:\r
-        type: tosca.capabilities.Node\r
-        occurrences:\r
-        - 1\r
-        - UNBOUNDED\r
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: GlobalSubstitutionTypes
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+node_types:
+  org.openecomp.resource.abstract.nodes.heat.subinterface.nested:
+    derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+    properties:
+      aap_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_sec_untrusted_ip_prefix:
+        type: string
+        description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vdbe_subport_network:
+        type: string
+        description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+        required: true
+        status: SUPPORTED
+      ip_v6_address:
+        type: string
+        description: IPv6 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      counter:
+        type: float
+        description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+        required: true
+        status: SUPPORTED
+      subinterfaces_name_prefix:
+        type: string
+        description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+        required: true
+        status: SUPPORTED
+      ip_address:
+        type: string
+        description: IPv4 address associated with subinterfaces
+        required: true
+        status: SUPPORTED
+      aap_address_mode:
+        type: string
+        description: Address mode for the vDBE cluster IP
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix:
+        type: string
+        description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      parent_interface:
+        type: string
+        description: Parent Contrail interface
+        required: true
+        status: SUPPORTED
+      mac_address:
+        type: string
+        description: HW MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      vlan_tag_list:
+        type: list
+        description: List of VLAN IDs to use for subinterfaces
+        required: true
+        status: SUPPORTED
+        entry_schema:
+          type: string
+      aap_sec_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      vmac_address:
+        type: string
+        description: virtual MAC address to use for subinterface
+        required: true
+        status: SUPPORTED
+      aap_untrusted_v6_ip_prefix_len:
+        type: string
+        description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+      aap_untrusted_ip_prefix_len:
+        type: string
+        description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+        required: true
+        status: SUPPORTED
+    requirements:
+    - dependency_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.Node
+        node: tosca.nodes.Root
+        relationship: tosca.relationships.DependsOn
+        occurrences:
+        - 0
+        - UNBOUNDED
+    - link_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Linkable
+        relationship: tosca.relationships.network.LinksTo
+        occurrences:
+        - 1
+        - 1
+    - binding_vdbe_0_subint_untr_vmi_0:
+        capability: tosca.capabilities.network.Bindable
+        node: org.openecomp.resource.cp.nodes.network.Port
+        relationship: tosca.relationships.network.BindsTo
+        occurrences:
+        - 1
+        - 1
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+        type: tosca.capabilities.Node
+        occurrences:
+        - 1
+        - UNBOUNDED
\ No newline at end of file
index 4ad572f..1b925e3 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: Main\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-node_types:\r
-  org.openecomp.resource.vfc.nodes.heat.vdbe:\r
-    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server\r
-topology_template:\r
-  inputs:\r
-    vf_module_id:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vf_module_id\r
-      type: string\r
-      description: Unique ID for this VF module inst\r
-    control_int_net_rpf:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_rpf\r
-      type: string\r
-      description: Reverse Path Filtering enable or disable for the control virtual network\r
-    control_int_net_forwarding_mode:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_forwarding_mode\r
-      type: string\r
-      description: forwarding mode of the control virtual network\r
-    vnf_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vnf_name\r
-      type: string\r
-      description: Unique name for this VF instance\r
-    vdbe_untrusted_ip_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_ip_1\r
-      type: string\r
-      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network\r
-    vdbe_aap_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_ip_prefix_len\r
-      type: string\r
-      description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-    untrusted_num_vn:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_num_vn\r
-      type: float\r
-      description: Number of vDBE subinterface virtual Networks\r
-      constraints:\r
-      - in_range:\r
-        - 1\r
-        - 77\r
-    aap_address_mode:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: aap_address_mode\r
-      type: string\r
-      description: Address mode for the vDBE cluster IP\r
-    control_int_net_shared:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_shared\r
-      type: boolean\r
-      description: control virtual network shared\r
-    vdbe_untrusted_v6_ip_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_v6_ip_1\r
-      type: string\r
-      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network\r
-    vdbe_untrusted_vmac_address:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_untrusted_vmac_address\r
-      type: string\r
-      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network\r
-    control_int_net_flood_unknown_unicast:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: control_int_net_flood_unknown_unicast\r
-      type: boolean\r
-      description: forwarding mode of the control virtual network\r
-    vdbe_aap_sec_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_sec_untrusted_ip_prefix\r
-      type: string\r
-      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-    vnf_id:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vnf_id\r
-      type: string\r
-      description: Unique ID for this VF inst\r
-    vdbe_name_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_name_1\r
-      type: string\r
-      description: VM Name for this vdbe node 1\r
-    availability_zone_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: availability_zone_1\r
-      type: string\r
-      description: The availability zone of secondary node1 vDBE vm in the local HA pair.\r
-    untrusted_vn_networks:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_vn_networks\r
-      type: list\r
-      description: List of subinterface virtual networks\r
-      entry_schema:\r
-        type: string\r
-    vdbe_image_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_image_name\r
-      type: string\r
-      description: Image to use for vDBE\r
-    oam_net_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: oam_net_name\r
-      type: string\r
-      description: Name of NSDNet network from which the management IP addresses will be allocated\r
-    vdbe_aap_sec_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_sec_untrusted_ip_prefix_len\r
-      type: string\r
-      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-    vdbe_aap_untrusted_v6_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_v6_ip_prefix\r
-      type: string\r
-      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-    vdbe_aap_untrusted_v6_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_v6_ip_prefix_len\r
-      type: string\r
-      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-    untrusted_vlan_tags:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_vlan_tags\r
-      type: list\r
-      description: List of subinterface vlan tags\r
-      entry_schema:\r
-        type: string\r
-    vdbe_flavor_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_flavor_name\r
-      type: string\r
-      description: Flavor to use for vDBE\r
-    vdbe_hw_untr_mac_1:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_hw_untr_mac_1\r
-      type: string\r
-      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network\r
-    untrusted_net_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: untrusted_net_name\r
-      type: string\r
-      description: Name of public untrusted network into which this vDBE HA cluster is deployed\r
-    vdbe_device_name:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_device_name\r
-      type: string\r
-      description: VDBE device Name for this vdbe VNF\r
-    vdbe_aap_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      annotations:\r
-        source:\r
-          type: org.openecomp.annotations.Source\r
-          properties:\r
-            vf_module_label:\r
-            - main\r
-            source_type: HEAT\r
-            param_name: vdbe_aap_untrusted_ip_prefix\r
-      type: string\r
-      description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-  node_templates:\r
-    vdbe_node_1:\r
-      type: org.openecomp.resource.vfc.nodes.heat.vdbe\r
-      properties:\r
-        flavor:\r
-          get_input: vdbe_flavor_name\r
-        availability_zone:\r
-          get_input: availability_zone_1\r
-        image:\r
-          get_input: vdbe_image_name\r
-        metadata:\r
-          vf_module_id:\r
-            get_input: vf_module_id\r
-          vnf_id:\r
-            get_input: vnf_id\r
-          vnf_name:\r
-            get_input: vnf_name\r
-        name:\r
-          get_input: vdbe_name_1\r
-    vdbe_untr_vmi:\r
-      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface\r
-      properties:\r
-        name:\r
-          str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        virtual_network_refs:\r
-        - get_input: untrusted_net_name\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          allowed_address_pair:\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: vdbe_aap_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: vdbe_aap_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: vdbe_untrusted_vmac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: vdbe_aap_sec_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: vdbe_aap_sec_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: vdbe_hw_untr_mac_1\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: vdbe_aap_untrusted_v6_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: vdbe_aap_untrusted_v6_ip_prefix_len\r
-            mac:\r
-              get_input: vdbe_untrusted_vmac_address\r
-        virtual_machine_interface_mac_addresses:\r
-        - get_input: vdbe_hw_untr_mac_1\r
-      requirements:\r
-      - binding:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe_node_1\r
-          relationship: tosca.relationships.network.BindsTo\r
-    vdbe_untr_1_subports:\r
-      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested\r
-      directives:\r
-      - substitutable\r
-      properties:\r
-        aap_untrusted_ip_prefix:\r
-          get_input: vdbe_aap_untrusted_ip_prefix\r
-        attr_test:\r
-          get_attribute:\r
-          - vdbe_untr_vmi\r
-          - name\r
-        aap_sec_untrusted_ip_prefix:\r
-          get_input: vdbe_aap_sec_untrusted_ip_prefix\r
-        vdbe_subport_network: control_int_net\r
-        ip_v6_address:\r
-          get_input: vdbe_untrusted_v6_ip_1\r
-        counter:\r
-          get_input: vnf_id\r
-        ip_address:\r
-          get_input: vdbe_untrusted_ip_1\r
-        subinterfaces_name_prefix:\r
-          str_replace:\r
-            template: VM_NAMEDBE001p1n004\r
-            params:\r
-              DBE:\r
-                get_input: vdbe_device_name\r
-              VM_NAME:\r
-                get_input: vdbe_name_1\r
-        aap_address_mode:\r
-          get_input: aap_address_mode\r
-        service_template_filter:\r
-          substitute_service_template: nestedServiceTemplate.yaml\r
-          count:\r
-            get_input: untrusted_num_vn\r
-          mandatory: false\r
-        aap_untrusted_v6_ip_prefix:\r
-          get_input: vdbe_aap_untrusted_v6_ip_prefix\r
-        parent_interface: vdbe_untr_vmi\r
-        mac_address:\r
-          get_input: vdbe_hw_untr_mac_1\r
-        vlan_tag_list:\r
-          get_input: untrusted_vlan_tags\r
-        aap_sec_untrusted_ip_prefix_len:\r
-          get_input: vdbe_aap_sec_untrusted_ip_prefix_len\r
-        vmac_address:\r
-          get_input: vdbe_untrusted_vmac_address\r
-        aap_untrusted_v6_ip_prefix_len:\r
-          get_input: vdbe_aap_untrusted_v6_ip_prefix_len\r
-        aap_untrusted_ip_prefix_len:\r
-          get_input: vdbe_aap_untrusted_ip_prefix_len\r
-      requirements:\r
-      - link_vdbe_0_subint_untr_vmi_0:\r
-          capability: tosca.capabilities.network.Linkable\r
-          node: control_int_net\r
-          relationship: tosca.relationships.network.LinksTo\r
-      - binding_vdbe_0_subint_untr_vmi_0:\r
-          capability: tosca.capabilities.network.Bindable\r
-          node: vdbe_untr_vmi\r
-          relationship: tosca.relationships.network.BindsTo\r
-      - dependency:\r
-          capability: tosca.capabilities.Node\r
-          node: control_int_net\r
-          relationship: tosca.relationships.DependsOn\r
-    control_int_net:\r
-      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork\r
-      properties:\r
-        network_name:\r
-          str_replace:\r
-            template: VNF_NAME_control_net\r
-            params:\r
-              VNF_NAME:\r
-                get_input: vnf_name\r
-        network_ipam_refs:\r
-          get_attribute:\r
-          - vdbe_untr_1_subports\r
-          - count\r
-      requirements:\r
-      - dependency:\r
-          capability: tosca.capabilities.Node\r
-          node: vdbe_untr_1_subports\r
-          relationship: tosca.relationships.DependsOn\r
-  groups:\r
-    main_group:\r
-      type: org.openecomp.groups.heat.HeatStack\r
-      properties:\r
-        heat_file: ../Artifacts/main.yml\r
-        description: |\r
-          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)\r
-      members:\r
-      - vdbe_node_1\r
-      - vdbe_untr_vmi\r
-      - vdbe_untr_1_subports\r
-      - control_int_net\r
-  outputs:\r
-    out1:\r
-      description: output_test\r
-      value:\r
-        get_attribute:\r
-        - vdbe_untr_1_subports\r
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: Main
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+node_types:
+  org.openecomp.resource.vfc.nodes.heat.vdbe:
+    derived_from: org.openecomp.resource.vfc.nodes.heat.nova.Server
+topology_template:
+  inputs:
+    vf_module_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vf_module_id
+      type: string
+      description: Unique ID for this VF module inst
+    control_int_net_rpf:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_rpf
+      type: string
+      description: Reverse Path Filtering enable or disable for the control virtual network
+    control_int_net_forwarding_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_forwarding_mode
+      type: string
+      description: forwarding mode of the control virtual network
+    vnf_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_name
+      type: string
+      description: Unique name for this VF instance
+    vdbe_untrusted_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_ip_1
+      type: string
+      description: IPV4 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+    untrusted_num_vn:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_num_vn
+      type: float
+      description: Number of vDBE subinterface virtual Networks
+      constraints:
+      - in_range:
+        - 1
+        - 77
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: aap_address_mode
+      type: string
+      description: Address mode for the vDBE cluster IP
+    control_int_net_shared:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_shared
+      type: boolean
+      description: control virtual network shared
+    vdbe_untrusted_v6_ip_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_v6_ip_1
+      type: string
+      description: IPV6 address of the secondary vDBE VM on the VAN untrusted network
+    vdbe_untrusted_vmac_address:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_untrusted_vmac_address
+      type: string
+      description: Virtual MAC of the primary vDBE VM on the VAN untrusted network
+    control_int_net_flood_unknown_unicast:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: control_int_net_flood_unknown_unicast
+      type: boolean
+      description: forwarding mode of the control virtual network
+    vdbe_aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    vnf_id:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vnf_id
+      type: string
+      description: Unique ID for this VF inst
+    vdbe_name_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_name_1
+      type: string
+      description: VM Name for this vdbe node 1
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: availability_zone_1
+      type: string
+      description: The availability zone of secondary node1 vDBE vm in the local HA pair.
+    untrusted_vn_networks:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vn_networks
+      type: list
+      description: List of subinterface virtual networks
+      entry_schema:
+        type: string
+    vdbe_image_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_image_name
+      type: string
+      description: Image to use for vDBE
+    oam_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: oam_net_name
+      type: string
+      description: Name of NSDNet network from which the management IP addresses will be allocated
+    vdbe_aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_sec_untrusted_ip_prefix_len
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    vdbe_aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_v6_ip_prefix_len
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    untrusted_vlan_tags:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_vlan_tags
+      type: list
+      description: List of subinterface vlan tags
+      entry_schema:
+        type: string
+    vdbe_flavor_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_flavor_name
+      type: string
+      description: Flavor to use for vDBE
+    vdbe_hw_untr_mac_1:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_hw_untr_mac_1
+      type: string
+      description: Secondary MAC address of the secondary vDBE VM on the VAN untrusted network
+    untrusted_net_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: untrusted_net_name
+      type: string
+      description: Name of public untrusted network into which this vDBE HA cluster is deployed
+    vdbe_device_name:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_device_name
+      type: string
+      description: VDBE device Name for this vdbe VNF
+    vdbe_aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      annotations:
+        source:
+          type: org.openecomp.annotations.Source
+          properties:
+            vf_module_label:
+            - main
+            source_type: HEAT
+            param_name: vdbe_aap_untrusted_ip_prefix
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_node_1:
+      type: org.openecomp.resource.vfc.nodes.heat.vdbe
+      properties:
+        flavor:
+          get_input: vdbe_flavor_name
+        availability_zone:
+          get_input: availability_zone_1
+        image:
+          get_input: vdbe_image_name
+        metadata:
+          vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+          vnf_name:
+            get_input: vnf_name
+        name:
+          get_input: vdbe_name_1
+    vdbe_untr_vmi:
+      type: org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface
+      properties:
+        name:
+          str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        virtual_network_refs:
+        - get_input: untrusted_net_name
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: vdbe_aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: vdbe_aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vdbe_untrusted_vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: vdbe_aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: vdbe_hw_untr_mac_1
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: vdbe_aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vdbe_untrusted_vmac_address
+        virtual_machine_interface_mac_addresses:
+        - get_input: vdbe_hw_untr_mac_1
+      requirements:
+      - binding:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_node_1
+          relationship: tosca.relationships.network.BindsTo
+    vdbe_untr_1_subports:
+      type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+      directives:
+      - substitutable
+      properties:
+        aap_untrusted_ip_prefix:
+          get_input: vdbe_aap_untrusted_ip_prefix
+        attr_test:
+          get_attribute:
+          - vdbe_untr_vmi
+          - name
+        aap_sec_untrusted_ip_prefix:
+          get_input: vdbe_aap_sec_untrusted_ip_prefix
+        vdbe_subport_network: control_int_net
+        ip_v6_address:
+          get_input: vdbe_untrusted_v6_ip_1
+        counter:
+          get_input: vnf_id
+        ip_address:
+          get_input: vdbe_untrusted_ip_1
+        subinterfaces_name_prefix:
+          str_replace:
+            template: VM_NAMEDBE001p1n004
+            params:
+              DBE:
+                get_input: vdbe_device_name
+              VM_NAME:
+                get_input: vdbe_name_1
+        aap_address_mode:
+          get_input: aap_address_mode
+        service_template_filter:
+          substitute_service_template: nestedServiceTemplate.yaml
+          count:
+            get_input: untrusted_num_vn
+          mandatory: false
+        aap_untrusted_v6_ip_prefix:
+          get_input: vdbe_aap_untrusted_v6_ip_prefix
+        parent_interface: vdbe_untr_vmi
+        mac_address:
+          get_input: vdbe_hw_untr_mac_1
+        vlan_tag_list:
+          get_input: untrusted_vlan_tags
+        aap_sec_untrusted_ip_prefix_len:
+          get_input: vdbe_aap_sec_untrusted_ip_prefix_len
+        vmac_address:
+          get_input: vdbe_untrusted_vmac_address
+        aap_untrusted_v6_ip_prefix_len:
+          get_input: vdbe_aap_untrusted_v6_ip_prefix_len
+        aap_untrusted_ip_prefix_len:
+          get_input: vdbe_aap_untrusted_ip_prefix_len
+      requirements:
+      - link_vdbe_0_subint_untr_vmi_0:
+          capability: tosca.capabilities.network.Linkable
+          node: control_int_net
+          relationship: tosca.relationships.network.LinksTo
+      - binding_vdbe_0_subint_untr_vmi_0:
+          capability: tosca.capabilities.network.Bindable
+          node: vdbe_untr_vmi
+          relationship: tosca.relationships.network.BindsTo
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: control_int_net
+          relationship: tosca.relationships.DependsOn
+    control_int_net:
+      type: org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork
+      properties:
+        network_name:
+          str_replace:
+            template: VNF_NAME_control_net
+            params:
+              VNF_NAME:
+                get_input: vnf_name
+        network_ipam_refs:
+          get_attribute:
+          - vdbe_untr_1_subports
+          - count
+      requirements:
+      - dependency:
+          capability: tosca.capabilities.Node
+          node: vdbe_untr_1_subports
+          relationship: tosca.relationships.DependsOn
+  groups:
+    main_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/main.yml
+        description: |
+          Version 2.0 02-09-2016 (Authors: John Doe, user PROD)
+      members:
+      - vdbe_node_1
+      - vdbe_untr_vmi
+      - vdbe_untr_1_subports
+      - control_int_net
+  outputs:
+    out1:
+      description: output_test
+      value:
+        get_attribute:
+        - vdbe_untr_1_subports
         - name
\ No newline at end of file
index cb088cf..01fd719 100644 (file)
-tosca_definitions_version: tosca_simple_yaml_1_0_0\r
-metadata:\r
-  template_name: nested\r
-imports:\r
-- openecomp_heat_index:\r
-    file: openecomp-heat/_index.yml\r
-- GlobalSubstitutionTypes:\r
-    file: GlobalSubstitutionTypesServiceTemplate.yaml\r
-topology_template:\r
-  inputs:\r
-    aap_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for primary vDBE VM on the VAN untrusted network\r
-    aap_sec_untrusted_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network\r
-    vdbe_subport_network:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list\r
-    ip_v6_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv6 address associated with subinterfaces\r
-    counter:\r
-      hidden: false\r
-      immutable: false\r
-      type: float\r
-      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.\r
-    subinterfaces_name_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource\r
-    ip_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: IPv4 address associated with subinterfaces\r
-    aap_address_mode:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Address mode for the vDBE cluster IP\r
-    aap_untrusted_v6_ip_prefix:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network\r
-    parent_interface:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: Parent Contrail interface\r
-    mac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: HW MAC address to use for subinterface\r
-    vlan_tag_list:\r
-      hidden: false\r
-      immutable: false\r
-      type: list\r
-      description: List of VLAN IDs to use for subinterfaces\r
-      entry_schema:\r
-        type: string\r
-    aap_sec_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network\r
-    vmac_address:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: virtual MAC address to use for subinterface\r
-    aap_untrusted_v6_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network\r
-    aap_untrusted_ip_prefix_len:\r
-      hidden: false\r
-      immutable: false\r
-      type: string\r
-      description: ip prefix length for the primary vDBE VM on the VAN untrusted network\r
-  node_templates:\r
-    vdbe_0_subint_untr_vmi_0:\r
-      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface\r
-      properties:\r
-        virtual_machine_interface_refs:\r
-        - get_input: parent_interface\r
-        name:\r
-          str_replace:\r
-            template: $NAME_$INDEX\r
-            params:\r
-              $NAME:\r
-                get_input: subinterfaces_name_prefix\r
-              $INDEX:\r
-                get_input:\r
-                - vlan_tag_list\r
-                - get_input: counter\r
-        virtual_network_refs:\r
-        - get_input: vdbe_subport_network\r
-        virtual_machine_interface_properties:\r
-          sub_interface_vlan_tag:\r
-            get_input:\r
-            - vlan_tag_list\r
-            - get_input: counter\r
-        virtual_machine_interface_allowed_address_pairs:\r
-          allowed_address_pair:\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_sec_untrusted_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_sec_untrusted_ip_prefix_len\r
-            mac:\r
-              get_input: mac_address\r
-          - address_mode:\r
-              get_input: aap_address_mode\r
-            ip:\r
-              ip_prefix:\r
-                get_input: aap_untrusted_v6_ip_prefix\r
-              ip_prefix_len:\r
-                get_input: aap_untrusted_v6_ip_prefix_len\r
-            mac:\r
-              get_input: vmac_address\r
-        virtual_machine_interface_mac_addresses:\r
-          mac_address:\r
-          - get_input: mac_address\r
-  groups:\r
-    nested_group:\r
-      type: org.openecomp.groups.heat.HeatStack\r
-      properties:\r
-        heat_file: ../Artifacts/nested.yml\r
-        description: cmaui server template for vMMSC\r
-      members:\r
-      - vdbe_0_subint_untr_vmi_0\r
-  substitution_mappings:\r
-    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested\r
-    capabilities:\r
-      feature_vdbe_0_subint_untr_vmi_0:\r
-      - vdbe_0_subint_untr_vmi_0\r
-      - feature\r
-    requirements:\r
-      dependency_vdbe_0_subint_untr_vmi_0:\r
-      - vdbe_0_subint_untr_vmi_0\r
-      - dependency\r
-      binding_vdbe_0_subint_untr_vmi_0:\r
-      - vdbe_0_subint_untr_vmi_0\r
-      - binding\r
-      link_vdbe_0_subint_untr_vmi_0:\r
-      - vdbe_0_subint_untr_vmi_0\r
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+metadata:
+  template_name: nested
+imports:
+- openecomp_heat_index:
+    file: openecomp-heat/_index.yml
+- GlobalSubstitutionTypes:
+    file: GlobalSubstitutionTypesServiceTemplate.yaml
+topology_template:
+  inputs:
+    aap_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for primary vDBE VM on the VAN untrusted network
+    aap_sec_untrusted_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix for secondary vDBE VM aap on the VAN untrusted network
+    vdbe_subport_network:
+      hidden: false
+      immutable: false
+      type: string
+      description: List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list
+    ip_v6_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv6 address associated with subinterfaces
+    counter:
+      hidden: false
+      immutable: false
+      type: float
+      description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
+    subinterfaces_name_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
+    ip_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 address associated with subinterfaces
+    aap_address_mode:
+      hidden: false
+      immutable: false
+      type: string
+      description: Address mode for the vDBE cluster IP
+    aap_untrusted_v6_ip_prefix:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix for the primary vDBE VM on the VAN untrusted network
+    parent_interface:
+      hidden: false
+      immutable: false
+      type: string
+      description: Parent Contrail interface
+    mac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: HW MAC address to use for subinterface
+    vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: List of VLAN IDs to use for subinterfaces
+      entry_schema:
+        type: string
+    aap_sec_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the secondary DBE VM aap on the VAN untrusted network
+    vmac_address:
+      hidden: false
+      immutable: false
+      type: string
+      description: virtual MAC address to use for subinterface
+    aap_untrusted_v6_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ipv6 prefix length for the primary vDBE VM on the VAN untrusted network
+    aap_untrusted_ip_prefix_len:
+      hidden: false
+      immutable: false
+      type: string
+      description: ip prefix length for the primary vDBE VM on the VAN untrusted network
+  node_templates:
+    vdbe_0_subint_untr_vmi_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface
+      properties:
+        virtual_machine_interface_refs:
+        - get_input: parent_interface
+        name:
+          str_replace:
+            template: $NAME_$INDEX
+            params:
+              $NAME:
+                get_input: subinterfaces_name_prefix
+              $INDEX:
+                get_input:
+                - vlan_tag_list
+                - get_input: counter
+        virtual_network_refs:
+        - get_input: vdbe_subport_network
+        virtual_machine_interface_properties:
+          sub_interface_vlan_tag:
+            get_input:
+            - vlan_tag_list
+            - get_input: counter
+        virtual_machine_interface_allowed_address_pairs:
+          allowed_address_pair:
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_ip_prefix_len
+            mac:
+              get_input: vmac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_sec_untrusted_ip_prefix
+              ip_prefix_len:
+                get_input: aap_sec_untrusted_ip_prefix_len
+            mac:
+              get_input: mac_address
+          - address_mode:
+              get_input: aap_address_mode
+            ip:
+              ip_prefix:
+                get_input: aap_untrusted_v6_ip_prefix
+              ip_prefix_len:
+                get_input: aap_untrusted_v6_ip_prefix_len
+            mac:
+              get_input: vmac_address
+        virtual_machine_interface_mac_addresses:
+          mac_address:
+          - get_input: mac_address
+  groups:
+    nested_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/nested.yml
+        description: cmaui server template for vMMSC
+      members:
+      - vdbe_0_subint_untr_vmi_0
+  substitution_mappings:
+    node_type: org.openecomp.resource.abstract.nodes.heat.subinterface.nested
+    capabilities:
+      feature_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - feature
+    requirements:
+      dependency_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - dependency
+      binding_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
+      - binding
+      link_vdbe_0_subint_untr_vmi_0:
+      - vdbe_0_subint_untr_vmi_0
       - link
\ No newline at end of file
index f175f9a..0927b10 100644 (file)
-heat_template_version: 2013-05-23\r
-\r
-description: cmaui server template for vMMSC\r
-\r
-parameters:\r
-  aap_address_mode:\r
-    description: "Address mode for the vDBE cluster IP"\r
-    type: string\r
-  aap_sec_untrusted_ip_prefix:\r
-    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"\r
-    type: string\r
-  aap_sec_untrusted_ip_prefix_len:\r
-    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"\r
-    type: string\r
-  aap_untrusted_ip_prefix:\r
-    description: "ip prefix for primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  aap_untrusted_ip_prefix_len:\r
-    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  aap_untrusted_v6_ip_prefix:\r
-    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  aap_untrusted_v6_ip_prefix_len:\r
-    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"\r
-    type: string\r
-  counter:\r
-    description: "Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances."\r
-    type: number\r
-  mac_address:\r
-    description: "HW MAC address to use for subinterface"\r
-    type: string\r
-  parent_interface:\r
-    description: "Parent Contrail interface"\r
-    type: string\r
-  subinterfaces_name_prefix:\r
-    description: "Combined with subinterface_instance_index, this is used as the name of the subinterface resource"\r
-    type: string\r
-  vlan_tag_list:\r
-    description: "List of VLAN IDs to use for subinterfaces"\r
-    type: comma_delimited_list\r
-  vmac_address:\r
-    description: "virtual MAC address to use for subinterface"\r
-    type: string\r
-  vdbe_subport_network:\r
-    description: "List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list"\r
-    type: string\r
-  ip_address:\r
-    description: "IPv4 address associated with subinterfaces"\r
-    type: string\r
-  ip_v6_address:\r
-    description: "IPv6 address associated with subinterfaces"\r
-    type: string\r
-resources:\r
-  vdbe_0_subint_untr_vmi_0:\r
-    type: OS::ContrailV2::VirtualMachineInterface\r
-    properties:\r
-      name:\r
-        str_replace:\r
-          params:\r
-            $INDEX:\r
-              get_param:\r
-                - vlan_tag_list\r
-                -\r
-                  get_param: counter\r
-            $NAME:\r
-              get_param: subinterfaces_name_prefix\r
-          template: $NAME_$INDEX\r
-      virtual_machine_interface_allowed_address_pairs:\r
-        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: aap_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: aap_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vmac_address\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: aap_sec_untrusted_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: aap_sec_untrusted_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: mac_address\r
-          -\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:\r
-              get_param: aap_address_mode\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:\r
-                get_param: aap_untrusted_v6_ip_prefix\r
-              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:\r
-                get_param: aap_untrusted_v6_ip_prefix_len\r
-            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:\r
-              get_param: vmac_address\r
-      virtual_machine_interface_mac_addresses:\r
-        virtual_machine_interface_mac_addresses_mac_address:\r
-          -\r
-            get_param: mac_address\r
-      virtual_machine_interface_properties:\r
-        virtual_machine_interface_properties_sub_interface_vlan_tag:\r
-          get_param:\r
-            - vlan_tag_list\r
-            -\r
-              get_param: counter\r
-      virtual_machine_interface_refs:\r
-          [{get_param: parent_interface}]\r
-      virtual_network_refs:\r
-          [{get_param: vdbe_subport_network}]\r
+heat_template_version: 2013-05-23
+
+description: cmaui server template for vMMSC
+
+parameters:
+  aap_address_mode:
+    description: "Address mode for the vDBE cluster IP"
+    type: string
+  aap_sec_untrusted_ip_prefix:
+    description: "ip prefix for secondary vDBE VM aap on the VAN untrusted network"
+    type: string
+  aap_sec_untrusted_ip_prefix_len:
+    description: "ip prefix length for the secondary DBE VM aap on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix:
+    description: "ip prefix for primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_ip_prefix_len:
+    description: "ip prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix:
+    description: "ipv6 prefix for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  aap_untrusted_v6_ip_prefix_len:
+    description: "ipv6 prefix length for the primary vDBE VM on the VAN untrusted network"
+    type: string
+  counter:
+    description: "Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances."
+    type: number
+  mac_address:
+    description: "HW MAC address to use for subinterface"
+    type: string
+  parent_interface:
+    description: "Parent Contrail interface"
+    type: string
+  subinterfaces_name_prefix:
+    description: "Combined with subinterface_instance_index, this is used as the name of the subinterface resource"
+    type: string
+  vlan_tag_list:
+    description: "List of VLAN IDs to use for subinterfaces"
+    type: comma_delimited_list
+  vmac_address:
+    description: "virtual MAC address to use for subinterface"
+    type: string
+  vdbe_subport_network:
+    description: "List of Contrail VLAN networks to use for the subinterfaces.   The order and number of these must match the VLAN ID list"
+    type: string
+  ip_address:
+    description: "IPv4 address associated with subinterfaces"
+    type: string
+  ip_v6_address:
+    description: "IPv6 address associated with subinterfaces"
+    type: string
+resources:
+  vdbe_0_subint_untr_vmi_0:
+    type: OS::ContrailV2::VirtualMachineInterface
+    properties:
+      name:
+        str_replace:
+          params:
+            $INDEX:
+              get_param:
+                - vlan_tag_list
+                -
+                  get_param: counter
+            $NAME:
+              get_param: subinterfaces_name_prefix
+          template: $NAME_$INDEX
+      virtual_machine_interface_allowed_address_pairs:
+        virtual_machine_interface_allowed_address_pairs_allowed_address_pair:
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_sec_untrusted_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_sec_untrusted_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: mac_address
+          -
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode:
+              get_param: aap_address_mode
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip:
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix:
+                get_param: aap_untrusted_v6_ip_prefix
+              virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len:
+                get_param: aap_untrusted_v6_ip_prefix_len
+            virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac:
+              get_param: vmac_address
+      virtual_machine_interface_mac_addresses:
+        virtual_machine_interface_mac_addresses_mac_address:
+          -
+            get_param: mac_address
+      virtual_machine_interface_properties:
+        virtual_machine_interface_properties_sub_interface_vlan_tag:
+          get_param:
+            - vlan_tag_list
+            -
+              get_param: counter
+      virtual_machine_interface_refs:
+          [{get_param: parent_interface}]
+      virtual_network_refs:
+          [{get_param: vdbe_subport_network}]
index 91a33ed..d48fe6f 100644 (file)
@@ -98,7 +98,10 @@ public class ToscaNodeType {
       + "MultiDeploymentFlavor.CVFC";
   public static final String COMPUTE_TYPE_PREFIX = "org.openecomp.resource.vfc.compute.nodes.heat";
   public static final String VFC_TYPE_PREFIX = "org.openecomp.resource.vfc.nodes.heat";
+  public static final String GROUP_TYPE_PREFIX = "org.openecomp.groups";
+  public static final String VFC_INSTANCE_GROUP = ".VfcInstanceGroup";
 
-  private ToscaNodeType() {}
+  private ToscaNodeType() {
+  }
 }
 
index 9793228..39240eb 100644 (file)
@@ -202,6 +202,16 @@ public class DataModelUtil {
     return serviceTemplate.getTopology_template().getNode_templates();
   }
 
+  public static Map<String, GroupDefinition> getGroups(ServiceTemplate serviceTemplate) {
+    if (Objects.isNull(serviceTemplate)
+        || Objects.isNull(serviceTemplate.getTopology_template())
+        || MapUtils.isEmpty(serviceTemplate.getTopology_template().getGroups())) {
+      return new HashMap<>();
+    }
+
+    return serviceTemplate.getTopology_template().getGroups();
+  }
+
   /**
    * Add node template.
    *
@@ -481,6 +491,26 @@ public class DataModelUtil {
     serviceTemplate.getTopology_template().getGroups().put(groupName, group);
   }
 
+  public static void addGroupMember(ServiceTemplate serviceTemplate,
+                                    String groupName,
+                                    String groupMemberId) {
+    TopologyTemplate topologyTemplate = serviceTemplate.getTopology_template();
+    if (Objects.isNull(topologyTemplate)
+        || topologyTemplate.getGroups() == null
+        || topologyTemplate.getGroups().get(groupName) == null) {
+      return;
+    }
+
+    GroupDefinition groupDefinition = topologyTemplate.getGroups().get(groupName);
+    if (CollectionUtils.isEmpty(groupDefinition.getMembers())) {
+      groupDefinition.setMembers(new ArrayList<>());
+    }
+
+    if(!groupDefinition.getMembers().contains(groupMemberId)) {
+      groupDefinition.getMembers().add(groupMemberId);
+    }
+  }
+
   /**
    * Create parameter definition property definition.
    *