dynamic ports 33/22133/2
authortalio <tali.orenbach@amdocs.com>
Sun, 5 Nov 2017 09:34:51 +0000 (11:34 +0200)
committertalio <tali.orenbach@amdocs.com>
Sun, 5 Nov 2017 09:59:36 +0000 (11:59 +0200)
ignore "depends_on" from / to nested entities, and adding tests

Issue - Id : SDC-576

Change-Id: I2bdf8d97e727395420ff1516c97ff4c8af541749
Signed-off-by: talio <tali.orenbach@amdocs.com>
23 files changed:
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifedCompositionDynamicPortsTest.java [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/resourcetranslation/BaseFullTranslationTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/DPA3_New_VNF_TSBGv_base.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/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/dynamicPorts/dependsOnFromNestedToNested/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/dynamicPorts/dependsOnFromNovaToNestedPort/in/DPA3_New_VNF_TSBGv_base.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/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/dynamicPorts/dependsOnFromNovaToNestedPort/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/dynamicPorts/dependsOnFromPortToNested/in/DPA3_New_VNF_TSBGv_base.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/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/dynamicPorts/dependsOnFromPortToNested/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/dynamicPorts/dependsOnFromVfcToNested/in/DPA3_New_VNF_TSBGv_base.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/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/dynamicPorts/dependsOnFromVfcToNested/in/nested_DPA3_New_VNF_TSBGv.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/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/dynamicPorts/dynamicPortsWithDependsOn/in/DPA3_New_VNF_TSBGv_base.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/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/dynamicPorts/dynamicPortsWithDependsOn/out/MainServiceTemplate.yaml [new file with mode: 0644]

diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifedCompositionDynamicPortsTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifedCompositionDynamicPortsTest.java
new file mode 100644 (file)
index 0000000..58f1749
--- /dev/null
@@ -0,0 +1,56 @@
+package org.openecomp.sdc.translator.services.heattotosca.impl.fulltest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest;
+
+import java.io.IOException;
+
+public class UnifedCompositionDynamicPortsTest extends BaseFullTranslationTest {
+  private static final String baseDirectory = "/mock/services/heattotosca/fulltest/dynamicPorts";
+  @Override
+  @Before
+  public void setUp() throws IOException {
+    // do not delete this function. it prevents the superclass setup from running
+  }
+
+  @Test
+  public void testDynamicPortWithDependsOn() throws IOException {
+    testTranslationWithInit(
+        baseDirectory + "/dynamicPortsWithDependsOn/in",
+        baseDirectory + "/dynamicPortsWithDependsOn/out"
+    );
+  }
+
+  @Test
+  public void testDependsOnFromNovaToNestedPort() throws IOException {
+    testTranslationWithInit(
+        baseDirectory + "/dependsOnFromNovaToNestedPort/in",
+        baseDirectory + "/dependsOnFromNovaToNestedPort/out"
+    );
+  }
+
+  @Test
+  public void testDependsOnFromPortToNested() throws IOException {
+    testTranslationWithInit(
+        baseDirectory + "/dependsOnFromPortToNested/in",
+        baseDirectory + "/dependsOnFromPortToNested/out"
+    );
+  }
+
+  @Test
+  public void testDependsOnFromVfcToNested() throws IOException {
+    testTranslationWithInit(
+        baseDirectory + "/dependsOnFromVfcToNested/in",
+        baseDirectory + "/dependsOnFromVfcToNested/out"
+    );
+  }
+
+  @Test
+  public void testDependsOnFromNestedToNested() throws IOException {
+    testTranslationWithInit(
+        baseDirectory + "/dependsOnFromNestedToNested/in",
+        baseDirectory + "/dependsOnFromNestedToNested/out"
+    );
+  }
+}
index 5de0720..d35b7dc 100644 (file)
@@ -77,6 +77,14 @@ public class BaseFullTranslationTest {
     initTranslatorAndTranslate();
   }
 
+  protected void testTranslationWithInit (String inputFilesPath,
+                                          String outputFilesPath) throws IOException {
+    this.inputFilesPath = inputFilesPath;
+    this.outputFilesPath = outputFilesPath;
+
+    testTranslationWithInit();
+  }
+
   protected void testTranslationWithInit() throws IOException {
       initTranslatorAndTranslate();
       testTranslation();
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/DPA3_New_VNF_TSBGv_base.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/DPA3_New_VNF_TSBGv_base.yaml
new file mode 100644 (file)
index 0000000..28a9051
--- /dev/null
@@ -0,0 +1,223 @@
+heat_template_version: 2013-05-23
+description: >
+  SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+parameters:
+  ntp_servers:
+    type: comma_delimited_list
+    description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+  sbg_pl_flavor_name:
+    type: string
+    description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+  sbg_sc_flavor_name:
+    type: string
+    description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VNF Module instance
+  sbg_sc_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to System Controller VMs
+  sbg_pl_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to Payload VMs
+  sbg_internal_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_internal_allocation_pool_start_ip:
+    type: string
+    description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.253
+  sbg_internal_allocation_pool_end_ip:
+    type: string
+    description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.254
+  internal_net_id:
+    type: string
+    description: the UUID of the operator-created Internal network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_internal_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+  sbg_internal_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Internal network
+  sbg_management_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG Management Network, IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_management_gateway_ip_0:
+    type: string
+    description: IPv4 IP address of the default gateway on Management network
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  management_net_id:
+    type: string
+    description: the UUID of the operator-created Management network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  management_subnet_id:
+    type: string
+    description: the UUID of the operator-created Management subnet, IPv4
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_management_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Management network
+  sbg_management_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+  trunk_net_id:
+    type: string
+    description: the UUID of the operator-created Traffic network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  core_subnet_id:
+    type: string
+    description: the UUID of the operator-created Core subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_AVPN_count:
+    type: number
+    description: The number of AVPN networks
+    constraints:
+       - range: { min: 1, max: 999 }
+  avpn_net_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator-created AVPN networks
+  sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+  avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  sbg_avpn_ips:
+    type: comma_delimited_list
+    description: >
+       comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+  dummy_subnet_id:
+    type: string
+    description: the UUID of the operator-created dummy subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_management_floating_ip:
+    type: string
+    description: Moveable Management IP (VIP), IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  availability_zone_0:
+    type: string
+    description: First availability zone ID or Name.
+  sbg_nfs_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_comte_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_boot_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+
+  sbg_sc_volume_id_0:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_1:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+
+resources:
+  sbg_sc_internal_0_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: internal_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_internal_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_nfs_floating_ip }
+      - ip_address: { get_param: sbg_comte_floating_ip }
+      - ip_address: { get_param: sbg_boot_floating_ip }
+      mac_address: { get_param: [sbg_internal_mac_addresses ,0] }
+
+  sbg_pl_trunk_subport_avpn_group_0:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: {get_param: sbg_AVPN_count}
+      resource_def:
+        type: DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
+        properties:
+          nested_sbg_AVPN_vlan_tag_list: {get_param: sbg_AVPN_vlan_tag_list}
+          nested_avpn_net_id: {get_param: avpn_net_id}
+          nested_avpn_subnet_id: {get_param: avpn_subnet_id}
+          nested_sbg_avpn_ip_0: {get_param: [sbg_avpn_ips, 0]}
+          nested_sbg_AVPN_counter: '%index%'
+
+  sbg_pl_trunk_subport_avpn_group_1:
+    type: OS::Heat::ResourceGroup
+    depends_on: [ sbg_pl_trunk_subport_avpn_group_0 ]
+    properties:
+      count: {get_param: sbg_AVPN_count}
+      resource_def:
+        type: DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
+        properties:
+          nested_sbg_AVPN_vlan_tag_list: {get_param: sbg_AVPN_vlan_tag_list}
+          nested_avpn_net_id: {get_param: avpn_net_id}
+          nested_avpn_subnet_id: {get_param: avpn_subnet_id}
+          nested_sbg_avpn_ip_0: {get_param: [sbg_avpn_ips, 0]}
+          nested_sbg_AVPN_counter: '%index%'
+
+  sbg_sc_0:
+    type: OS::Nova::Server
+    properties:
+      name: { get_param: [sbg_sc_names, 0]}
+      metadata:
+        vnf_id: { get_param: vnf_id }
+        vf_module_id: { get_param: vf_module_id }
+      availability_zone: { get_param: availability_zone_0 }
+      block_device_mapping:
+      - device_name: "vda"
+        volume_id : { get_param : sbg_sc_volume_id_0 }
+        delete_on_termination : "false"
+      - device_name: "vdb"
+        volume_id : { get_param : sbg_sc_volume_id_1 }
+        delete_on_termination : "false"
+      flavor: { get_param: sbg_sc_flavor_name }
+      networks:
+      - port: { get_resource: sbg_sc_internal_0_port_0 }
+      config_drive: "true"
+      user_data_format: RAW
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
new file mode 100644 (file)
index 0000000..f95d86b
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Nested template for AVPN port creation
+
+parameters:
+  nested_sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: the CDL representing the vlan ID list
+  nested_avpn_net_id:
+    type: comma_delimited_list
+    description: the CDL representing the networks to attach to the ports
+  nested_avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  nested_sbg_avpn_ip_0:
+    type: string
+    description: IPv4 IP address for AVPN networks. Same IP is used for all AVPNs
+  nested_sbg_AVPN_counter:
+    type: number
+    description: current array_index
+  nested_trunk_port_id:
+    type: string
+    description: string containint the trunk parrent port
+
+resources:
+    sub_port:
+     type: OS::Neutron::Port
+     properties:
+      replacement_policy: AUTO
+      network_id: { get_param: [nested_avpn_net_id, { get_param: nested_sbg_AVPN_counter}]}
+      fixed_ips:
+        - ip_address: { get_param: nested_sbg_avpn_ip_0}
+          subnet_id: {get_param: [nested_avpn_subnet_id, {get_param: nested_sbg_AVPN_counter}]}
+      value_specs:
+        trunkport:type: 'subport'
+        trunkport:vid: { get_param: [nested_sbg_AVPN_vlan_tag_list, { get_param: nested_sbg_AVPN_counter}]}
+        trunkport:parent_id: { get_param: nested_trunk_port_id}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..8f830de
--- /dev/null
@@ -0,0 +1,15 @@
+{
+  "name": "hot-mog",
+  "description": "HOT template to create hot mog server",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "DPA3_New_VNF_TSBGv_base.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml",
+      "type": "HEAT"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNestedToNested/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..765f100
--- /dev/null
@@ -0,0 +1,363 @@
+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
+      type: string
+      description: Unique ID for this VNF Module instance
+    avpn_subnet_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+      entry_schema:
+        type: string
+    sbg_internal_allocation_pool_start_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    internal_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Internal network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sc_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+    sbg_management_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG Management Network, IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    sbg_comte_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_avpn_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: |
+        comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+      entry_schema:
+        type: string
+    management_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sc_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to System Controller VMs
+      entry_schema:
+        type: string
+    sbg_management_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+      entry_schema:
+        type: string
+    sbg_nfs_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    vnf_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VF instance
+    avpn_net_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator-created AVPN networks
+      entry_schema:
+        type: string
+    availability_zone_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: First availability zone ID or Name.
+    sbg_internal_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Internal network
+      entry_schema:
+        type: string
+    sbg_management_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable Management IP (VIP), IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    management_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_AVPN_vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+      entry_schema:
+        type: string
+    sbg_pl_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to Payload VMs
+      entry_schema:
+        type: string
+    sbg_management_gateway_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 IP address of the default gateway on Management network
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_AVPN_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: The number of AVPN networks
+      constraints:
+      - in_range:
+        - 1
+        - 999
+    ntp_servers:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+      entry_schema:
+        type: string
+    sbg_management_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Management network
+      entry_schema:
+        type: string
+    core_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Core subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+      entry_schema:
+        type: string
+    sbg_boot_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_pl_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+    sbg_internal_allocation_pool_end_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    dummy_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created dummy subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    trunk_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Traffic network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+  node_templates:
+    sbg_pl_trunk_subport_avpn_group_1:
+      type: org.openecomp.resource.abstract.nodes.heat.DPA3_New_VNF_TSBGv_nested_AVPN_subport
+      directives:
+      - substitutable
+      properties:
+        nested_avpn_net_id:
+          get_input: avpn_net_id
+        service_template_filter:
+          substitute_service_template: DPA3_New_VNF_TSBGv_nested_AVPN_subportServiceTemplate.yaml
+          count:
+            get_input: sbg_AVPN_count
+          mandatory: false
+        nested_sbg_AVPN_vlan_tag_list:
+          get_input: sbg_AVPN_vlan_tag_list
+        nested_sbg_avpn_ip_0:
+          get_input:
+          - sbg_avpn_ips
+          - 0
+        nested_avpn_subnet_id:
+          get_input: avpn_subnet_id
+        nested_sbg_AVPN_counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    sbg_pl_trunk_subport_avpn_group_0:
+      type: org.openecomp.resource.abstract.nodes.heat.DPA3_New_VNF_TSBGv_nested_AVPN_subport
+      directives:
+      - substitutable
+      properties:
+        nested_avpn_net_id:
+          get_input: avpn_net_id
+        service_template_filter:
+          substitute_service_template: DPA3_New_VNF_TSBGv_nested_AVPN_subportServiceTemplate.yaml
+          count:
+            get_input: sbg_AVPN_count
+          mandatory: false
+        nested_sbg_AVPN_vlan_tag_list:
+          get_input: sbg_AVPN_vlan_tag_list
+        nested_sbg_avpn_ip_0:
+          get_input:
+          - sbg_avpn_ips
+          - 0
+        nested_avpn_subnet_id:
+          get_input: avpn_subnet_id
+        nested_sbg_AVPN_counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    abstract_sbg_sc:
+      type: org.openecomp.resource.abstract.nodes.sbg_sc
+      directives:
+      - substitutable
+      properties:
+        port_sbg_sc_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        compute_sbg_sc_name:
+        - get_input:
+          - sbg_sc_names
+          - 0
+        compute_sbg_sc_config_drive:
+        - true
+        port_sbg_sc_internal_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_nfs_floating_ip
+        - ip_address:
+            get_input: sbg_comte_floating_ip
+        - ip_address:
+            get_input: sbg_boot_floating_ip
+        port_sbg_sc_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        compute_sbg_sc_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+        port_sbg_sc_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_internal_ips
+            - 0
+        port_sbg_sc_internal_0_port_network_role_tag: internal
+        vm_flavor_name:
+          get_input: sbg_sc_flavor_name
+        port_sbg_sc_internal_0_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_internal_0_port_network:
+        - get_input: internal_net_id
+        port_sbg_sc_internal_0_port_mac_address:
+          get_input:
+          - sbg_internal_mac_addresses
+          - 0
+        compute_sbg_sc_availability_zone:
+        - get_input: availability_zone_0
+        compute_sbg_sc_user_data_format:
+        - RAW
+        service_template_filter:
+          substitute_service_template: Nested_sbg_scServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+  groups:
+    DPA3_New_VNF_TSBGv_base_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/DPA3_New_VNF_TSBGv_base.yaml
+        description: |
+          SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+      members:
+      - sbg_pl_trunk_subport_avpn_group_1
+      - sbg_pl_trunk_subport_avpn_group_0
+      - abstract_sbg_sc
\ 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/dynamicPorts/dependsOnFromNovaToNestedPort/in/DPA3_New_VNF_TSBGv_base.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/in/DPA3_New_VNF_TSBGv_base.yaml
new file mode 100644 (file)
index 0000000..b3d1dda
--- /dev/null
@@ -0,0 +1,129 @@
+heat_template_version: 2013-05-23
+description: >
+  SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+parameters:
+  sbg_sc_flavor_name:
+    type: string
+    description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VNF Module instance
+  sbg_sc_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to System Controller VMs
+  internal_net_id:
+    type: string
+    description: the UUID of the operator-created Internal network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_internal_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+  sbg_internal_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Internal network
+  sbg_AVPN_count:
+    type: number
+    description: The number of AVPN networks
+    constraints:
+       - range: { min: 1, max: 999 }
+  avpn_net_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator-created AVPN networks
+  sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+  avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  sbg_avpn_ips:
+    type: comma_delimited_list
+    description: >
+       comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+  availability_zone_0:
+    type: string
+    description: First availability zone ID or Name.
+  sbg_nfs_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_comte_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_boot_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+
+  sbg_sc_volume_id_0:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_1:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+
+resources:
+  sbg_sc_internal_0_port_0:
+    type: OS::Neutron::Port
+    depends_on: [ sbg_pl_trunk_subport_avpn_group_0 ]
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: internal_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_internal_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_nfs_floating_ip }
+      - ip_address: { get_param: sbg_comte_floating_ip }
+      - ip_address: { get_param: sbg_boot_floating_ip }
+      mac_address: { get_param: [sbg_internal_mac_addresses ,0] }
+
+  sbg_pl_trunk_subport_avpn_group_0:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: {get_param: sbg_AVPN_count}
+      resource_def:
+        type: DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
+        properties:
+          nested_sbg_AVPN_vlan_tag_list: {get_param: sbg_AVPN_vlan_tag_list}
+          nested_avpn_net_id: {get_param: avpn_net_id}
+          nested_avpn_subnet_id: {get_param: avpn_subnet_id}
+          nested_sbg_avpn_ip_0: {get_param: [sbg_avpn_ips, 0]}
+          nested_sbg_AVPN_counter: '%index%'
+
+  sbg_sc_0:
+    type: OS::Nova::Server
+    properties:
+      name: { get_param: [sbg_sc_names, 0]}
+      metadata:
+        vnf_id: { get_param: vnf_id }
+        vf_module_id: { get_param: vf_module_id }
+      availability_zone: { get_param: availability_zone_0 }
+      block_device_mapping:
+      - device_name: "vda"
+        volume_id : { get_param : sbg_sc_volume_id_0 }
+        delete_on_termination : "false"
+      - device_name: "vdb"
+        volume_id : { get_param : sbg_sc_volume_id_1 }
+        delete_on_termination : "false"
+      flavor: { get_param: sbg_sc_flavor_name }
+      networks:
+      - port: { get_resource: sbg_sc_internal_0_port_0 }
+      config_drive: "true"
+      user_data_format: RAW
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
new file mode 100644 (file)
index 0000000..f95d86b
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Nested template for AVPN port creation
+
+parameters:
+  nested_sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: the CDL representing the vlan ID list
+  nested_avpn_net_id:
+    type: comma_delimited_list
+    description: the CDL representing the networks to attach to the ports
+  nested_avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  nested_sbg_avpn_ip_0:
+    type: string
+    description: IPv4 IP address for AVPN networks. Same IP is used for all AVPNs
+  nested_sbg_AVPN_counter:
+    type: number
+    description: current array_index
+  nested_trunk_port_id:
+    type: string
+    description: string containint the trunk parrent port
+
+resources:
+    sub_port:
+     type: OS::Neutron::Port
+     properties:
+      replacement_policy: AUTO
+      network_id: { get_param: [nested_avpn_net_id, { get_param: nested_sbg_AVPN_counter}]}
+      fixed_ips:
+        - ip_address: { get_param: nested_sbg_avpn_ip_0}
+          subnet_id: {get_param: [nested_avpn_subnet_id, {get_param: nested_sbg_AVPN_counter}]}
+      value_specs:
+        trunkport:type: 'subport'
+        trunkport:vid: { get_param: [nested_sbg_AVPN_vlan_tag_list, { get_param: nested_sbg_AVPN_counter}]}
+        trunkport:parent_id: { get_param: nested_trunk_port_id}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..8f830de
--- /dev/null
@@ -0,0 +1,15 @@
+{
+  "name": "hot-mog",
+  "description": "HOT template to create hot mog server",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "DPA3_New_VNF_TSBGv_base.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml",
+      "type": "HEAT"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromNovaToNestedPort/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..628bf3d
--- /dev/null
@@ -0,0 +1,227 @@
+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
+      type: string
+      description: Unique ID for this VNF Module instance
+    avpn_subnet_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+      entry_schema:
+        type: string
+    internal_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Internal network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_AVPN_vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+      entry_schema:
+        type: string
+    sbg_AVPN_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: The number of AVPN networks
+      constraints:
+      - in_range:
+        - 1
+        - 999
+    sbg_sc_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+    sbg_comte_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_internal_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+      entry_schema:
+        type: string
+    sbg_avpn_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: |
+        comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+      entry_schema:
+        type: string
+    sbg_sc_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to System Controller VMs
+      entry_schema:
+        type: string
+    sbg_nfs_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_boot_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    vnf_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VF instance
+    avpn_net_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator-created AVPN networks
+      entry_schema:
+        type: string
+    sbg_sc_volume_id_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    availability_zone_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: First availability zone ID or Name.
+    sbg_internal_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Internal network
+      entry_schema:
+        type: string
+  node_templates:
+    sbg_pl_trunk_subport_avpn_group_0:
+      type: org.openecomp.resource.abstract.nodes.heat.DPA3_New_VNF_TSBGv_nested_AVPN_subport
+      directives:
+      - substitutable
+      properties:
+        nested_avpn_net_id:
+          get_input: avpn_net_id
+        service_template_filter:
+          substitute_service_template: DPA3_New_VNF_TSBGv_nested_AVPN_subportServiceTemplate.yaml
+          count:
+            get_input: sbg_AVPN_count
+          mandatory: false
+        nested_sbg_AVPN_vlan_tag_list:
+          get_input: sbg_AVPN_vlan_tag_list
+        nested_sbg_avpn_ip_0:
+          get_input:
+          - sbg_avpn_ips
+          - 0
+        nested_avpn_subnet_id:
+          get_input: avpn_subnet_id
+        nested_sbg_AVPN_counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    abstract_sbg_sc:
+      type: org.openecomp.resource.abstract.nodes.sbg_sc
+      directives:
+      - substitutable
+      properties:
+        port_sbg_sc_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        compute_sbg_sc_name:
+        - get_input:
+          - sbg_sc_names
+          - 0
+        compute_sbg_sc_config_drive:
+        - true
+        port_sbg_sc_internal_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_nfs_floating_ip
+        - ip_address:
+            get_input: sbg_comte_floating_ip
+        - ip_address:
+            get_input: sbg_boot_floating_ip
+        port_sbg_sc_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        compute_sbg_sc_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+        port_sbg_sc_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_internal_ips
+            - 0
+        port_sbg_sc_internal_0_port_network_role_tag: internal
+        vm_flavor_name:
+          get_input: sbg_sc_flavor_name
+        port_sbg_sc_internal_0_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_internal_0_port_network:
+        - get_input: internal_net_id
+        port_sbg_sc_internal_0_port_mac_address:
+          get_input:
+          - sbg_internal_mac_addresses
+          - 0
+        compute_sbg_sc_availability_zone:
+        - get_input: availability_zone_0
+        compute_sbg_sc_user_data_format:
+        - RAW
+        service_template_filter:
+          substitute_service_template: Nested_sbg_scServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+  groups:
+    DPA3_New_VNF_TSBGv_base_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/DPA3_New_VNF_TSBGv_base.yaml
+        description: |
+          SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+      members:
+      - sbg_pl_trunk_subport_avpn_group_0
+      - abstract_sbg_sc
\ 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/dynamicPorts/dependsOnFromPortToNested/in/DPA3_New_VNF_TSBGv_base.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/in/DPA3_New_VNF_TSBGv_base.yaml
new file mode 100644 (file)
index 0000000..ee25b40
--- /dev/null
@@ -0,0 +1,222 @@
+heat_template_version: 2013-05-23
+description: >
+  SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+parameters:
+  ntp_servers:
+    type: comma_delimited_list
+    description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+  sbg_pl_flavor_name:
+    type: string
+    description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+  sbg_sc_flavor_name:
+    type: string
+    description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VNF Module instance
+  sbg_sc_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to System Controller VMs
+  sbg_pl_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to Payload VMs
+  sbg_internal_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_internal_allocation_pool_start_ip:
+    type: string
+    description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.253
+  sbg_internal_allocation_pool_end_ip:
+    type: string
+    description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.254
+  internal_net_id:
+    type: string
+    description: the UUID of the operator-created Internal network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_internal_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+  sbg_internal_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Internal network
+  sbg_management_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG Management Network, IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_management_gateway_ip_0:
+    type: string
+    description: IPv4 IP address of the default gateway on Management network
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  management_net_id:
+    type: string
+    description: the UUID of the operator-created Management network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  management_subnet_id:
+    type: string
+    description: the UUID of the operator-created Management subnet, IPv4
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_management_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Management network
+  sbg_management_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+  trunk_net_id:
+    type: string
+    description: the UUID of the operator-created Traffic network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  core_subnet_id:
+    type: string
+    description: the UUID of the operator-created Core subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_AVPN_count:
+    type: number
+    description: The number of AVPN networks
+    constraints:
+       - range: { min: 1, max: 999 }
+  avpn_net_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator-created AVPN networks
+  sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+  avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  sbg_avpn_ips:
+    type: comma_delimited_list
+    description: >
+       comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+  dummy_subnet_id:
+    type: string
+    description: the UUID of the operator-created dummy subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_management_floating_ip:
+    type: string
+    description: Moveable Management IP (VIP), IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  availability_zone_0:
+    type: string
+    description: First availability zone ID or Name.
+  sbg_nfs_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_comte_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_boot_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+
+  sbg_sc_volume_id_0:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_1:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+
+resources:
+  sbg_sc_internal_0_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: internal_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_internal_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_nfs_floating_ip }
+      - ip_address: { get_param: sbg_comte_floating_ip }
+      - ip_address: { get_param: sbg_boot_floating_ip }
+      mac_address: { get_param: [sbg_internal_mac_addresses ,0] }
+
+  sbg_sc_management_1_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: management_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_management_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_management_floating_ip }
+      mac_address: { get_param: [sbg_management_mac_addresses ,0] }
+
+  sbg_pl_trunk_subport_avpn_group_0:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: {get_param: sbg_AVPN_count}
+      resource_def:
+        type: DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
+        properties:
+          nested_sbg_AVPN_vlan_tag_list: {get_param: sbg_AVPN_vlan_tag_list}
+          nested_avpn_net_id: {get_param: avpn_net_id}
+          nested_avpn_subnet_id: {get_param: avpn_subnet_id}
+          nested_sbg_avpn_ip_0: {get_param: [sbg_avpn_ips, 0]}
+          nested_sbg_AVPN_counter: '%index%'
+
+  sbg_sc_0:
+    type: OS::Nova::Server
+    depends_on: [ sbg_pl_trunk_subport_avpn_group_0 ]
+    properties:
+      name: { get_param: [sbg_sc_names, 0]}
+      metadata:
+        vnf_id: { get_param: vnf_id }
+        vf_module_id: { get_param: vf_module_id }
+      availability_zone: { get_param: availability_zone_0 }
+      block_device_mapping:
+      - device_name: "vda"
+        volume_id : { get_param : sbg_sc_volume_id_0 }
+        delete_on_termination : "false"
+      - device_name: "vdb"
+        volume_id : { get_param : sbg_sc_volume_id_1 }
+        delete_on_termination : "false"
+      flavor: { get_param: sbg_sc_flavor_name }
+      networks:
+      - port: { get_resource: sbg_sc_internal_0_port_0 }
+      - port: { get_resource: sbg_sc_management_1_port_0 }
+      config_drive: "true"
+      user_data_format: RAW
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
new file mode 100644 (file)
index 0000000..f95d86b
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Nested template for AVPN port creation
+
+parameters:
+  nested_sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: the CDL representing the vlan ID list
+  nested_avpn_net_id:
+    type: comma_delimited_list
+    description: the CDL representing the networks to attach to the ports
+  nested_avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  nested_sbg_avpn_ip_0:
+    type: string
+    description: IPv4 IP address for AVPN networks. Same IP is used for all AVPNs
+  nested_sbg_AVPN_counter:
+    type: number
+    description: current array_index
+  nested_trunk_port_id:
+    type: string
+    description: string containint the trunk parrent port
+
+resources:
+    sub_port:
+     type: OS::Neutron::Port
+     properties:
+      replacement_policy: AUTO
+      network_id: { get_param: [nested_avpn_net_id, { get_param: nested_sbg_AVPN_counter}]}
+      fixed_ips:
+        - ip_address: { get_param: nested_sbg_avpn_ip_0}
+          subnet_id: {get_param: [nested_avpn_subnet_id, {get_param: nested_sbg_AVPN_counter}]}
+      value_specs:
+        trunkport:type: 'subport'
+        trunkport:vid: { get_param: [nested_sbg_AVPN_vlan_tag_list, { get_param: nested_sbg_AVPN_counter}]}
+        trunkport:parent_id: { get_param: nested_trunk_port_id}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..8f830de
--- /dev/null
@@ -0,0 +1,15 @@
+{
+  "name": "hot-mog",
+  "description": "HOT template to create hot mog server",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "DPA3_New_VNF_TSBGv_base.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml",
+      "type": "HEAT"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromPortToNested/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..bbae08d
--- /dev/null
@@ -0,0 +1,363 @@
+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
+      type: string
+      description: Unique ID for this VNF Module instance
+    avpn_subnet_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+      entry_schema:
+        type: string
+    sbg_internal_allocation_pool_start_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    internal_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Internal network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sc_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+    sbg_management_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG Management Network, IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    sbg_comte_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_avpn_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: |
+        comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+      entry_schema:
+        type: string
+    management_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sc_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to System Controller VMs
+      entry_schema:
+        type: string
+    sbg_management_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+      entry_schema:
+        type: string
+    sbg_nfs_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    vnf_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VF instance
+    avpn_net_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator-created AVPN networks
+      entry_schema:
+        type: string
+    availability_zone_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: First availability zone ID or Name.
+    sbg_internal_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Internal network
+      entry_schema:
+        type: string
+    sbg_management_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable Management IP (VIP), IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    management_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_AVPN_vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+      entry_schema:
+        type: string
+    sbg_pl_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to Payload VMs
+      entry_schema:
+        type: string
+    sbg_management_gateway_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 IP address of the default gateway on Management network
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_AVPN_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: The number of AVPN networks
+      constraints:
+      - in_range:
+        - 1
+        - 999
+    ntp_servers:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+      entry_schema:
+        type: string
+    sbg_management_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Management network
+      entry_schema:
+        type: string
+    core_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Core subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+      entry_schema:
+        type: string
+    sbg_boot_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_pl_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+    sbg_internal_allocation_pool_end_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    dummy_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created dummy subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    trunk_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Traffic network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+  node_templates:
+    sbg_pl_trunk_subport_avpn_group_0:
+      type: org.openecomp.resource.abstract.nodes.heat.DPA3_New_VNF_TSBGv_nested_AVPN_subport
+      directives:
+      - substitutable
+      properties:
+        nested_avpn_net_id:
+          get_input: avpn_net_id
+        service_template_filter:
+          substitute_service_template: DPA3_New_VNF_TSBGv_nested_AVPN_subportServiceTemplate.yaml
+          count:
+            get_input: sbg_AVPN_count
+          mandatory: false
+        nested_sbg_AVPN_vlan_tag_list:
+          get_input: sbg_AVPN_vlan_tag_list
+        nested_sbg_avpn_ip_0:
+          get_input:
+          - sbg_avpn_ips
+          - 0
+        nested_avpn_subnet_id:
+          get_input: avpn_subnet_id
+        nested_sbg_AVPN_counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    abstract_sbg_sc:
+      type: org.openecomp.resource.abstract.nodes.sbg_sc
+      directives:
+      - substitutable
+      properties:
+        port_sbg_sc_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        compute_sbg_sc_config_drive:
+        - true
+        port_sbg_sc_management_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_management_floating_ip
+        port_sbg_sc_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_internal_ips
+            - 0
+        vm_flavor_name:
+          get_input: sbg_sc_flavor_name
+        port_sbg_sc_internal_0_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_management_1_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_management_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_sbg_sc_management_1_port_mac_address:
+          get_input:
+          - sbg_management_mac_addresses
+          - 0
+        compute_sbg_sc_user_data_format:
+        - RAW
+        port_sbg_sc_management_1_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_management_ips
+            - 0
+        compute_sbg_sc_name:
+        - get_input:
+          - sbg_sc_names
+          - 0
+        port_sbg_sc_internal_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_nfs_floating_ip
+        - ip_address:
+            get_input: sbg_comte_floating_ip
+        - ip_address:
+            get_input: sbg_boot_floating_ip
+        port_sbg_sc_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        compute_sbg_sc_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+        port_sbg_sc_internal_0_port_network_role_tag: internal
+        port_sbg_sc_internal_0_port_network:
+        - get_input: internal_net_id
+        port_sbg_sc_management_1_port_network:
+        - get_input: management_net_id
+        port_sbg_sc_management_1_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        port_sbg_sc_management_1_port_network_role_tag: management
+        port_sbg_sc_internal_0_port_mac_address:
+          get_input:
+          - sbg_internal_mac_addresses
+          - 0
+        compute_sbg_sc_availability_zone:
+        - get_input: availability_zone_0
+        service_template_filter:
+          substitute_service_template: Nested_sbg_scServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+  groups:
+    DPA3_New_VNF_TSBGv_base_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/DPA3_New_VNF_TSBGv_base.yaml
+        description: |
+          SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+      members:
+      - sbg_pl_trunk_subport_avpn_group_0
+      - abstract_sbg_sc
\ 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/dynamicPorts/dependsOnFromVfcToNested/in/DPA3_New_VNF_TSBGv_base.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/DPA3_New_VNF_TSBGv_base.yaml
new file mode 100644 (file)
index 0000000..d4c517f
--- /dev/null
@@ -0,0 +1,231 @@
+heat_template_version: 2013-05-23
+description: >
+  SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+parameters:
+  ntp_servers:
+    type: comma_delimited_list
+    description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+  sbg_pl_flavor_name:
+    type: string
+    description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+  sbg_sc_flavor_name:
+    type: string
+    description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VNF Module instance
+  sbg_sc_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to System Controller VMs
+  sbg_pl_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to Payload VMs
+  sbg_internal_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_internal_allocation_pool_start_ip:
+    type: string
+    description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.253
+  sbg_internal_allocation_pool_end_ip:
+    type: string
+    description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.254
+  internal_net_id:
+    type: string
+    description: the UUID of the operator-created Internal network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_internal_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+  sbg_internal_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Internal network
+  sbg_management_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG Management Network, IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_management_gateway_ip_0:
+    type: string
+    description: IPv4 IP address of the default gateway on Management network
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  management_net_id:
+    type: string
+    description: the UUID of the operator-created Management network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  management_subnet_id:
+    type: string
+    description: the UUID of the operator-created Management subnet, IPv4
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_management_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Management network
+  sbg_management_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+  trunk_net_id:
+    type: string
+    description: the UUID of the operator-created Traffic network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  core_subnet_id:
+    type: string
+    description: the UUID of the operator-created Core subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_AVPN_count:
+    type: number
+    description: The number of AVPN networks
+    constraints:
+       - range: { min: 1, max: 999 }
+  avpn_net_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator-created AVPN networks
+  sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+  avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  sbg_avpn_ips:
+    type: comma_delimited_list
+    description: >
+       comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+  dummy_subnet_id:
+    type: string
+    description: the UUID of the operator-created dummy subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_management_floating_ip:
+    type: string
+    description: Moveable Management IP (VIP), IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  availability_zone_0:
+    type: string
+    description: First availability zone ID or Name.
+  sbg_nfs_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_comte_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_boot_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+
+  sbg_sc_volume_id_0:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_1:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+
+resources:
+  sbg_sc_internal_0_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: internal_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_internal_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_nfs_floating_ip }
+      - ip_address: { get_param: sbg_comte_floating_ip }
+      - ip_address: { get_param: sbg_boot_floating_ip }
+      mac_address: { get_param: [sbg_internal_mac_addresses ,0] }
+
+  sbg_sc_management_1_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: management_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_management_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_management_floating_ip }
+      mac_address: { get_param: [sbg_management_mac_addresses ,0] }
+
+  sbg_pl_trunk_subport_avpn_group_0:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: {get_param: sbg_AVPN_count}
+      resource_def:
+        type: DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
+        properties:
+          nested_sbg_AVPN_vlan_tag_list: {get_param: sbg_AVPN_vlan_tag_list}
+          nested_avpn_net_id: {get_param: avpn_net_id}
+          nested_avpn_subnet_id: {get_param: avpn_subnet_id}
+          nested_sbg_avpn_ip_0: {get_param: [sbg_avpn_ips, 0]}
+          nested_sbg_AVPN_counter: '%index%'
+
+  nested_sbg:
+    type: nested_DPA3_New_VNF_TSBGv.yaml
+    depends_on: [ sbg_pl_trunk_subport_avpn_group_0 ]
+    properties:
+      nested_sbg_AVPN_vlan_tag_list: {get_param: sbg_AVPN_vlan_tag_list}
+      nested_avpn_net_id: {get_param: avpn_net_id}
+      nested_avpn_subnet_id: {get_param: avpn_subnet_id}
+      nested_sbg_avpn_ip_0: {get_param: [sbg_avpn_ips, 0]}
+      nested_sbg_AVPN_counter: '%index%'
+
+  sbg_sc_0:
+    type: OS::Nova::Server
+    properties:
+      name: { get_param: [sbg_sc_names, 0]}
+      metadata:
+        vnf_id: { get_param: vnf_id }
+        vf_module_id: { get_param: vf_module_id }
+      availability_zone: { get_param: availability_zone_0 }
+      block_device_mapping:
+      - device_name: "vda"
+        volume_id : { get_param : sbg_sc_volume_id_0 }
+        delete_on_termination : "false"
+      - device_name: "vdb"
+        volume_id : { get_param : sbg_sc_volume_id_1 }
+        delete_on_termination : "false"
+      flavor: { get_param: sbg_sc_flavor_name }
+      networks:
+      - port: { get_resource: sbg_sc_internal_0_port_0 }
+      - port: { get_resource: sbg_sc_management_1_port_0 }
+      config_drive: "true"
+      user_data_format: RAW
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
new file mode 100644 (file)
index 0000000..f95d86b
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Nested template for AVPN port creation
+
+parameters:
+  nested_sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: the CDL representing the vlan ID list
+  nested_avpn_net_id:
+    type: comma_delimited_list
+    description: the CDL representing the networks to attach to the ports
+  nested_avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  nested_sbg_avpn_ip_0:
+    type: string
+    description: IPv4 IP address for AVPN networks. Same IP is used for all AVPNs
+  nested_sbg_AVPN_counter:
+    type: number
+    description: current array_index
+  nested_trunk_port_id:
+    type: string
+    description: string containint the trunk parrent port
+
+resources:
+    sub_port:
+     type: OS::Neutron::Port
+     properties:
+      replacement_policy: AUTO
+      network_id: { get_param: [nested_avpn_net_id, { get_param: nested_sbg_AVPN_counter}]}
+      fixed_ips:
+        - ip_address: { get_param: nested_sbg_avpn_ip_0}
+          subnet_id: {get_param: [nested_avpn_subnet_id, {get_param: nested_sbg_AVPN_counter}]}
+      value_specs:
+        trunkport:type: 'subport'
+        trunkport:vid: { get_param: [nested_sbg_AVPN_vlan_tag_list, { get_param: nested_sbg_AVPN_counter}]}
+        trunkport:parent_id: { get_param: nested_trunk_port_id}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..d0336c1
--- /dev/null
@@ -0,0 +1,19 @@
+{
+  "name": "hot-mog",
+  "description": "HOT template to create hot mog server",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "DPA3_New_VNF_TSBGv_base.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "nested_DPA3_New_VNF_TSBGv.yaml",
+      "type": "HEAT"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/nested_DPA3_New_VNF_TSBGv.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/in/nested_DPA3_New_VNF_TSBGv.yaml
new file mode 100644 (file)
index 0000000..e2e268e
--- /dev/null
@@ -0,0 +1,219 @@
+heat_template_version: 2013-05-23
+description: >
+  SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+parameters:
+  ntp_servers:
+    type: comma_delimited_list
+    description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+  sbg_pl_flavor_name:
+    type: string
+    description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+  sbg_sc_flavor_name:
+    type: string
+    description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VNF Module instance
+  sbg_sc_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to System Controller VMs
+  sbg_pl_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to Payload VMs
+  sbg_internal_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_internal_allocation_pool_start_ip:
+    type: string
+    description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.253
+  sbg_internal_allocation_pool_end_ip:
+    type: string
+    description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.254
+  internal_net_id:
+    type: string
+    description: the UUID of the operator-created Internal network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_internal_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+  sbg_internal_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Internal network
+  sbg_management_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG Management Network, IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_management_gateway_ip_0:
+    type: string
+    description: IPv4 IP address of the default gateway on Management network
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  management_net_id:
+    type: string
+    description: the UUID of the operator-created Management network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  management_subnet_id:
+    type: string
+    description: the UUID of the operator-created Management subnet, IPv4
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_management_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Management network
+  sbg_management_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+  trunk_net_id:
+    type: string
+    description: the UUID of the operator-created Traffic network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  core_subnet_id:
+    type: string
+    description: the UUID of the operator-created Core subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_AVPN_count:
+    type: number
+    description: The number of AVPN networks
+    constraints:
+       - range: { min: 1, max: 999 }
+  avpn_net_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator-created AVPN networks
+  sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+  avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  sbg_avpn_ips:
+    type: comma_delimited_list
+    description: >
+       comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+  dummy_subnet_id:
+    type: string
+    description: the UUID of the operator-created dummy subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_management_floating_ip:
+    type: string
+    description: Moveable Management IP (VIP), IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  availability_zone_0:
+    type: string
+    description: First availability zone ID or Name.
+  sbg_nfs_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_comte_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_boot_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+
+  sbg_sc_volume_id_0:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_1:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  nested_sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: the CDL representing the vlan ID list
+  nested_avpn_net_id:
+    type: comma_delimited_list
+    description: the CDL representing the networks to attach to the ports
+  nested_avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  nested_sbg_avpn_ip_0:
+    type: string
+    description: IPv4 IP address for AVPN networks. Same IP is used for all AVPNs
+  nested_sbg_AVPN_counter:
+    type: number
+    description: current array_index
+  nested_trunk_port_id:
+    type: string
+    description: string containint the trunk parrent port
+
+resources:
+  sbg_sc_internal_0_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: internal_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_internal_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_nfs_floating_ip }
+      - ip_address: { get_param: sbg_comte_floating_ip }
+      - ip_address: { get_param: sbg_boot_floating_ip }
+      mac_address: { get_param: [sbg_internal_mac_addresses ,0] }
+
+  sbg_sc_management_1_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: management_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_management_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_management_floating_ip }
+      mac_address: { get_param: [sbg_management_mac_addresses ,0] }
+
+  sbg_sc_0:
+    type: OS::Nova::Server
+    properties:
+      name: { get_param: [sbg_sc_names, 0]}
+      metadata:
+        vnf_id: { get_param: vnf_id }
+        vf_module_id: { get_param: vf_module_id }
+      availability_zone: { get_param: availability_zone_0 }
+      flavor: { get_param: sbg_sc_flavor_name }
+      networks:
+      - port: { get_resource: sbg_sc_internal_0_port_0 }
+      - port: { get_resource: sbg_sc_management_1_port_0 }
+      config_drive: "true"
+      user_data_format: RAW
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dependsOnFromVfcToNested/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..c72c019
--- /dev/null
@@ -0,0 +1,402 @@
+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
+      type: string
+      description: Unique ID for this VNF Module instance
+    avpn_subnet_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+      entry_schema:
+        type: string
+    sbg_internal_allocation_pool_start_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    internal_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Internal network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sc_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+    sbg_management_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG Management Network, IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    sbg_comte_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_avpn_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: |
+        comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+      entry_schema:
+        type: string
+    management_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sc_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to System Controller VMs
+      entry_schema:
+        type: string
+    sbg_management_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+      entry_schema:
+        type: string
+    sbg_nfs_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    vnf_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VF instance
+    avpn_net_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator-created AVPN networks
+      entry_schema:
+        type: string
+    availability_zone_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: First availability zone ID or Name.
+    sbg_internal_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Internal network
+      entry_schema:
+        type: string
+    sbg_management_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable Management IP (VIP), IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    management_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_AVPN_vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+      entry_schema:
+        type: string
+    sbg_pl_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to Payload VMs
+      entry_schema:
+        type: string
+    sbg_management_gateway_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 IP address of the default gateway on Management network
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_AVPN_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: The number of AVPN networks
+      constraints:
+      - in_range:
+        - 1
+        - 999
+    ntp_servers:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+      entry_schema:
+        type: string
+    sbg_management_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Management network
+      entry_schema:
+        type: string
+    core_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Core subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+      entry_schema:
+        type: string
+    sbg_boot_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_pl_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+    sbg_internal_allocation_pool_end_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    dummy_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created dummy subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    trunk_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Traffic network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+  node_templates:
+    sbg_pl_trunk_subport_avpn_group_0:
+      type: org.openecomp.resource.abstract.nodes.heat.DPA3_New_VNF_TSBGv_nested_AVPN_subport
+      directives:
+      - substitutable
+      properties:
+        nested_avpn_net_id:
+          get_input: avpn_net_id
+        service_template_filter:
+          substitute_service_template: DPA3_New_VNF_TSBGv_nested_AVPN_subportServiceTemplate.yaml
+          count:
+            get_input: sbg_AVPN_count
+          mandatory: false
+        nested_sbg_AVPN_vlan_tag_list:
+          get_input: sbg_AVPN_vlan_tag_list
+        nested_sbg_avpn_ip_0:
+          get_input:
+          - sbg_avpn_ips
+          - 0
+        nested_avpn_subnet_id:
+          get_input: avpn_subnet_id
+        nested_sbg_AVPN_counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    abstract_sbg_sc:
+      type: org.openecomp.resource.abstract.nodes.sbg_sc
+      directives:
+      - substitutable
+      properties:
+        port_sbg_sc_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        compute_sbg_sc_config_drive:
+        - true
+        port_sbg_sc_management_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_management_floating_ip
+        port_sbg_sc_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_internal_ips
+            - 0
+        vm_flavor_name:
+          get_input: sbg_sc_flavor_name
+        port_sbg_sc_internal_0_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_management_1_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_management_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_sbg_sc_management_1_port_mac_address:
+          get_input:
+          - sbg_management_mac_addresses
+          - 0
+        compute_sbg_sc_user_data_format:
+        - RAW
+        port_sbg_sc_management_1_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_management_ips
+            - 0
+        compute_sbg_sc_name:
+        - get_input:
+          - sbg_sc_names
+          - 0
+        port_sbg_sc_internal_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_nfs_floating_ip
+        - ip_address:
+            get_input: sbg_comte_floating_ip
+        - ip_address:
+            get_input: sbg_boot_floating_ip
+        port_sbg_sc_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        compute_sbg_sc_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+        port_sbg_sc_internal_0_port_network_role_tag: internal
+        port_sbg_sc_internal_0_port_network:
+        - get_input: internal_net_id
+        port_sbg_sc_management_1_port_network:
+        - get_input: management_net_id
+        port_sbg_sc_management_1_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        port_sbg_sc_management_1_port_network_role_tag: management
+        port_sbg_sc_internal_0_port_mac_address:
+          get_input:
+          - sbg_internal_mac_addresses
+          - 0
+        compute_sbg_sc_availability_zone:
+        - get_input: availability_zone_0
+        service_template_filter:
+          substitute_service_template: Nested_sbg_scServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    nested_sbg:
+      type: org.openecomp.resource.abstract.nodes.heat.sbg_sc
+      directives:
+      - substitutable
+      properties:
+        port_sbg_sc_management_1_port_0_mac_requirements:
+          mac_count_required:
+            is_required: true
+        nested_avpn_net_id:
+          get_input: avpn_net_id
+        service_template_filter:
+          substitute_service_template: nested_DPA3_New_VNF_TSBGvServiceTemplate.yaml
+        port_sbg_sc_internal_0_port_0_mac_requirements:
+          mac_count_required:
+            is_required: true
+        port_sbg_sc_internal_0_port_0_network_role_tag: internal
+        nested_sbg_AVPN_vlan_tag_list:
+          get_input: sbg_AVPN_vlan_tag_list
+        port_sbg_sc_internal_0_port_0_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_sbg_sc_management_1_port_0_network_role_tag: management
+        port_sbg_sc_management_1_port_0_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        nested_sbg_avpn_ip_0:
+          get_input:
+          - sbg_avpn_ips
+          - 0
+        nested_avpn_subnet_id:
+          get_input: avpn_subnet_id
+        nested_sbg_AVPN_counter: '%index%'
+  groups:
+    DPA3_New_VNF_TSBGv_base_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/DPA3_New_VNF_TSBGv_base.yaml
+        description: |
+          SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+      members:
+      - sbg_pl_trunk_subport_avpn_group_0
+      - nested_sbg
+      - abstract_sbg_sc
\ 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/dynamicPorts/dynamicPortsWithDependsOn/in/DPA3_New_VNF_TSBGv_base.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/in/DPA3_New_VNF_TSBGv_base.yaml
new file mode 100644 (file)
index 0000000..7a06f07
--- /dev/null
@@ -0,0 +1,373 @@
+heat_template_version: 2013-05-23
+description: >
+  SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+parameters:
+  ntp_servers:
+    type: comma_delimited_list
+    description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+  sbg_pl_flavor_name:
+    type: string
+    description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+  sbg_sc_flavor_name:
+    type: string
+    description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+  vnf_id:
+    type: string
+    description: Unique ID for this VF instance
+  vf_module_id:
+    type: string
+    description: Unique ID for this VNF Module instance
+  sbg_sc_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to System Controller VMs
+  sbg_pl_names:
+    type: comma_delimited_list
+    description: comma delimited list of VM names assigned to Payload VMs
+  sbg_internal_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_internal_allocation_pool_start_ip:
+    type: string
+    description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.253
+  sbg_internal_allocation_pool_end_ip:
+    type: string
+    description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 169.254.100.254
+  internal_net_id:
+    type: string
+    description: the UUID of the operator-created Internal network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_internal_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+  sbg_internal_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Internal network
+  sbg_management_cidr:
+    type: string
+    description: Network address (CIDR notation) for SBG Management Network, IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]'
+        description: A valid IPv4 CIDR notation must be provided, e.g. 192.168.0.0/24
+  sbg_management_gateway_ip_0:
+    type: string
+    description: IPv4 IP address of the default gateway on Management network
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  management_net_id:
+    type: string
+    description: the UUID of the operator-created Management network
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  management_subnet_id:
+    type: string
+    description: the UUID of the operator-created Management subnet, IPv4
+    constraints:
+      - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+        description: A valid OpenStack UUID must be provided
+  sbg_management_mac_addresses:
+    type: comma_delimited_list
+    description: comma delimited list of MAC addresses for the VMs on the Management network
+  sbg_management_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+  trunk_net_id:
+    type: string
+    description: the UUID of the operator-created Traffic network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  core_net_id:
+    type: string
+    description: the UUID of the operator-created Core network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_core_vlan_tag:
+    type: number
+    description: The internal VLAN TAG for Core network
+    constraints:
+       - range: { min: 1, max: 4096 }
+         description: A valid 802.1Q VLAN TAG must be provided
+  core_subnet_id:
+    type: string
+    description: the UUID of the operator-created Core subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  core_v6_subnet_id:
+    type: string
+    description: the UUID of the operator-created Core subnet, IPv6
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_core_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 IPs to be used on Core network
+  sbg_core_v6_IPs:
+    type: comma_delimited_list
+    description: comma delimited list of IPv6 IPs to be used on Core network
+  charging_net_id:
+    type: string
+    description: the UUID of the operator-created Charging network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_charging_vlan_tag:
+    type: number
+    description: The internal VLAN TAG for Charging network
+    constraints:
+       - range: { min: 1, max: 4096 }
+         description: A valid 802.1Q VLAN TAG must be provided
+  sbg_charging_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 IPs to be used on Charging network
+  access_net_id:
+    type: string
+    description: the UUID of the operator-created Access network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_access_vlan_tag:
+    type: number
+    description: The internal VLAN TAG for Access network
+    constraints:
+       - range: { min: 1, max: 4096 }
+         description: A valid 802.1Q VLAN TAG must be provided
+  access_subnet_id:
+    type: string
+    description: the UUID of the operator-created Access subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_access_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 IPs to be used on Access network
+  sbg_AVPN_count:
+    type: number
+    description: The number of AVPN networks
+    constraints:
+       - range: { min: 1, max: 999 }
+  avpn_net_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator-created AVPN networks
+  sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+  avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  sbg_avpn_ips:
+    type: comma_delimited_list
+    description: >
+       comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+  sgi_net_id:
+    type: string
+    description: the UUID of the operator-created SGI network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_SGI_vlan_tag:
+    type: number
+    description: The internal VLAN TAG for SGI network
+    constraints:
+       - range: { min: 1, max: 4096 }
+         description: A valid 802.1Q VLAN TAG must be provided
+  sgi_subnet_id:
+    type: string
+    description: the UUID of the operator-created SGI subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sgi_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 IPs to be used on SGI network
+  UCOM_net_id:
+    type: string
+    description: the UUID of the operator-created UC One Mobile network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_UCOM_vlan_tag:
+    type: number
+    description: The internal VLAN TAG for UC One Mobile network
+    constraints:
+       - range: { min: 1, max: 4096 }
+         description: A valid 802.1Q VLAN TAG must be provided
+  UCOM_subnet_id:
+    type: string
+    description: the UUID of the operator-created UC One Mobile subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_UCOM_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 IPs to be used on UC One Mobile network
+  dummy_net_id:
+    type: string
+    description: the UUID of the operator-created Dummy network
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  dummy_subnet_id:
+    type: string
+    description: the UUID of the operator-created dummy subnet, IPv4
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_dummy_ips:
+    type: comma_delimited_list
+    description: comma delimited list of IPv4 IPs to be used on Dummy network
+  sbg_pl_image_name:
+    description: the name of the Glance PXE boot image for PL VMs
+    type: string
+  sbg_management_floating_ip:
+    type: string
+    description: Moveable Management IP (VIP), IPv4
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  availability_zone_0:
+    type: string
+    description: First availability zone ID or Name.
+  availability_zone_1:
+    type: string
+    description: Second availability zone ID or Name.
+  sbg_nfs_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_comte_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_boot_floating_ip:
+    type: string
+    description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+    constraints:
+      - allowed_pattern: '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'
+        description: A valid IPv4 address must be provided, e.g 192.168.0.1
+  sbg_timezone:
+    description: Timezone.
+    type: string
+
+  sbg_sc_volume_id_0:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_1:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_2:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-2 as root volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+  sbg_sc_volume_id_3:
+    type: string
+    description: the UUID of the pre-created Cinder volume attached to SC-2 as tools volume
+    constraints:
+       - allowed_pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+         description: A valid OpenStack UUID must be provided
+
+resources:
+  sbg_sc_internal_0_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: internal_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_internal_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_nfs_floating_ip }
+      - ip_address: { get_param: sbg_comte_floating_ip }
+      - ip_address: { get_param: sbg_boot_floating_ip }
+      mac_address: { get_param: [sbg_internal_mac_addresses ,0] }
+
+  sbg_sc_management_1_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: management_net_id }
+      fixed_ips:
+      - ip_address: { get_param: [sbg_management_ips ,0] }
+      allowed_address_pairs:
+      - ip_address: { get_param: sbg_management_floating_ip }
+      mac_address: { get_param: [sbg_management_mac_addresses ,0] }
+
+  sbg_pl_internal_0_port_0:
+      type: OS::Neutron::Port
+      properties:
+        replacement_policy: AUTO
+        network_id: { get_param: internal_net_id }
+        fixed_ips:
+          - ip_address: { get_param: [sbg_internal_ips ,2] }
+        mac_address: { get_param: [sbg_internal_mac_addresses ,2] }
+
+  sbg_pl_trunk_1_port_0:
+    type: OS::Neutron::Port
+    properties:
+      replacement_policy: AUTO
+      network_id: { get_param: trunk_net_id }
+      value_specs:
+        trunkport:type: 'trunk'
+
+  sbg_pl_trunk_subport_avpn_group_0:
+    depends_on: [ sbg_pl_internal_0_port_0, sbg_pl_trunk_1_port_0  ]
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: {get_param: sbg_AVPN_count}
+      resource_def:
+        type: DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
+        properties:
+          nested_trunk_port_id: {get_resource: sbg_pl_trunk_1_port_0}
+          nested_sbg_AVPN_vlan_tag_list: {get_param: sbg_AVPN_vlan_tag_list}
+          nested_avpn_net_id: {get_param: avpn_net_id}
+          nested_avpn_subnet_id: {get_param: avpn_subnet_id}
+          nested_sbg_avpn_ip_0: {get_param: [sbg_avpn_ips, 0]}
+          nested_sbg_AVPN_counter: '%index%'
+
+  sbg_sc_0:
+    type: OS::Nova::Server
+    depends_on: [ sbg_sc_internal_0_port_0, sbg_sc_management_1_port_0 ]
+    properties:
+      name: { get_param: [sbg_sc_names, 0]}
+      metadata:
+        vnf_id: { get_param: vnf_id }
+        vf_module_id: { get_param: vf_module_id }
+      availability_zone: { get_param: availability_zone_0 }
+      block_device_mapping:
+      - device_name: "vda"
+        volume_id : { get_param : sbg_sc_volume_id_0 }
+        delete_on_termination : "false"
+      - device_name: "vdb"
+        volume_id : { get_param : sbg_sc_volume_id_1 }
+        delete_on_termination : "false"
+      flavor: { get_param: sbg_sc_flavor_name }
+      networks:
+      - port: { get_resource: sbg_sc_internal_0_port_0 }
+      - port: { get_resource: sbg_sc_management_1_port_0 }
+      config_drive: "true"
+      user_data_format: RAW
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/in/DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml
new file mode 100644 (file)
index 0000000..f95d86b
--- /dev/null
@@ -0,0 +1,38 @@
+heat_template_version: 2013-05-23
+
+description: >
+  Nested template for AVPN port creation
+
+parameters:
+  nested_sbg_AVPN_vlan_tag_list:
+    type: comma_delimited_list
+    description: the CDL representing the vlan ID list
+  nested_avpn_net_id:
+    type: comma_delimited_list
+    description: the CDL representing the networks to attach to the ports
+  nested_avpn_subnet_id:
+    type: comma_delimited_list
+    description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+  nested_sbg_avpn_ip_0:
+    type: string
+    description: IPv4 IP address for AVPN networks. Same IP is used for all AVPNs
+  nested_sbg_AVPN_counter:
+    type: number
+    description: current array_index
+  nested_trunk_port_id:
+    type: string
+    description: string containint the trunk parrent port
+
+resources:
+    sub_port:
+     type: OS::Neutron::Port
+     properties:
+      replacement_policy: AUTO
+      network_id: { get_param: [nested_avpn_net_id, { get_param: nested_sbg_AVPN_counter}]}
+      fixed_ips:
+        - ip_address: { get_param: nested_sbg_avpn_ip_0}
+          subnet_id: {get_param: [nested_avpn_subnet_id, {get_param: nested_sbg_AVPN_counter}]}
+      value_specs:
+        trunkport:type: 'subport'
+        trunkport:vid: { get_param: [nested_sbg_AVPN_vlan_tag_list, { get_param: nested_sbg_AVPN_counter}]}
+        trunkport:parent_id: { get_param: nested_trunk_port_id}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/in/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/in/MANIFEST.json
new file mode 100644 (file)
index 0000000..8f830de
--- /dev/null
@@ -0,0 +1,15 @@
+{
+  "name": "hot-mog",
+  "description": "HOT template to create hot mog server",
+  "version": "2013-05-23",
+  "data": [
+    {
+      "file": "DPA3_New_VNF_TSBGv_base.yaml",
+      "type": "HEAT"
+    },
+    {
+      "file": "DPA3_New_VNF_TSBGv_nested_AVPN_subport.yaml",
+      "type": "HEAT"
+    }
+  ]
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/out/MainServiceTemplate.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/fulltest/dynamicPorts/dynamicPortsWithDependsOn/out/MainServiceTemplate.yaml
new file mode 100644 (file)
index 0000000..40c00bb
--- /dev/null
@@ -0,0 +1,602 @@
+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:
+    avpn_subnet_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator created IPv4 AVPN subnets
+      entry_schema:
+        type: string
+    sbg_internal_allocation_pool_start_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The start IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_core_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 IPs to be used on Core network
+      entry_schema:
+        type: string
+    access_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Access subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_management_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG Management Network, IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    sbg_core_vlan_tag:
+      hidden: false
+      immutable: false
+      type: float
+      description: The internal VLAN TAG for Core network
+      constraints:
+      - in_range:
+        - 1
+        - 4096
+    management_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_management_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Management network.
+      entry_schema:
+        type: string
+    sbg_nfs_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for NFS server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_charging_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 IPs to be used on Charging network
+      entry_schema:
+        type: string
+    sbg_internal_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Internal network
+      entry_schema:
+        type: string
+    core_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Core network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_access_vlan_tag:
+      hidden: false
+      immutable: false
+      type: float
+      description: The internal VLAN TAG for Access network
+      constraints:
+      - in_range:
+        - 1
+        - 4096
+    management_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Management subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    access_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Access network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_dummy_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 IPs to be used on Dummy network
+      entry_schema:
+        type: string
+    sgi_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created SGI network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sgi_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 IPs to be used on SGI network
+      entry_schema:
+        type: string
+    sbg_internal_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 addresses of SBG VMs on the Internal network. Don't deviate from the default values.
+      entry_schema:
+        type: string
+    core_v6_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Core subnet, IPv6
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_allocation_pool_end_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: The end IP of the Internal network's allocation pool. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    UCOM_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created UC One Mobile subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_internal_cidr:
+      hidden: false
+      immutable: false
+      type: string
+      description: Network address (CIDR notation) for SBG intra-VM communication, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}\/[1-2][0-9]
+    sgi_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created SGI subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    trunk_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Traffic network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    vf_module_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VNF Module instance
+    internal_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Internal network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_SGI_vlan_tag:
+      hidden: false
+      immutable: false
+      type: float
+      description: The internal VLAN TAG for SGI network
+      constraints:
+      - in_range:
+        - 1
+        - 4096
+    sbg_sc_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for SC VM. Minimum 4 non-HT vCPU and 16GB RAM required
+    sbg_comte_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for COM on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    charging_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Charging network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_UCOM_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 IPs to be used on UC One Mobile network
+      entry_schema:
+        type: string
+    sbg_avpn_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: |
+        comma delimited list of IPv4 IPs to be used on AVPN networks. n*2 IP address expected where n is the number of PL VM pairs. The first two addresses are assigned to the first PL VM pair, second two IPs to the second PL VM pair, and so on. Note: this is true regardless of the number of AVPN networks and sbg_AVPN_count.
+      entry_schema:
+        type: string
+    sbg_sc_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to System Controller VMs
+      entry_schema:
+        type: string
+    vnf_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: Unique ID for this VF instance
+    avpn_net_id:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of the UUIDs of the operator-created AVPN networks
+      entry_schema:
+        type: string
+    sbg_pl_image_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: the name of the Glance PXE boot image for PL VMs
+    availability_zone_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: First availability zone ID or Name.
+    availability_zone_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: Second availability zone ID or Name.
+    UCOM_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created UC One Mobile network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_UCOM_vlan_tag:
+      hidden: false
+      immutable: false
+      type: float
+      description: The internal VLAN TAG for UC One Mobile network
+      constraints:
+      - in_range:
+        - 1
+        - 4096
+    sbg_management_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable Management IP (VIP), IPv4
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    dummy_net_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Dummy network
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_core_v6_IPs:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv6 IPs to be used on Core network
+      entry_schema:
+        type: string
+    sbg_AVPN_vlan_tag_list:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of internal VLAN TAG(s) used by AVPN networks
+      entry_schema:
+        type: string
+    sbg_pl_names:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of VM names assigned to Payload VMs
+      entry_schema:
+        type: string
+    sbg_management_gateway_ip_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: IPv4 IP address of the default gateway on Management network
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_AVPN_count:
+      hidden: false
+      immutable: false
+      type: float
+      description: The number of AVPN networks
+      constraints:
+      - in_range:
+        - 1
+        - 999
+    sbg_charging_vlan_tag:
+      hidden: false
+      immutable: false
+      type: float
+      description: The internal VLAN TAG for Charging network
+      constraints:
+      - in_range:
+        - 1
+        - 4096
+    sbg_timezone:
+      hidden: false
+      immutable: false
+      type: string
+      description: Timezone.
+    ntp_servers:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of NTP servers required by System Controller VMs. Exactly 2 IPv4 values are required
+      entry_schema:
+        type: string
+    sbg_management_mac_addresses:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of MAC addresses for the VMs on the Management network
+      entry_schema:
+        type: string
+    core_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created Core subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_access_ips:
+      hidden: false
+      immutable: false
+      type: list
+      description: comma delimited list of IPv4 IPs to be used on Access network
+      entry_schema:
+        type: string
+    sbg_sc_volume_id_3:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-2 as tools volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_boot_floating_ip:
+      hidden: false
+      immutable: false
+      type: string
+      description: Moveable IP (VIP) for TFTP server on the Internal network, IPv4. Don't deviate from default!
+      constraints:
+      - pattern: (?:[0-9]{1,3}\.){3}[0-9]{1,3}
+    sbg_sc_volume_id_0:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as root volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_pl_flavor_name:
+      hidden: false
+      immutable: false
+      type: string
+      description: Flavor to use for PL VM. Minimum 8 non-HT vCPU and 64GB RAM required
+    sbg_sc_volume_id_2:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-2 as root volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    sbg_sc_volume_id_1:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the pre-created Cinder volume attached to SC-1 as tools volume
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+    dummy_subnet_id:
+      hidden: false
+      immutable: false
+      type: string
+      description: the UUID of the operator-created dummy subnet, IPv4
+      constraints:
+      - pattern: '[a-f0-9]{8}\-(?:[a-f0-9]{4}\-){3}[a-f0-9]{12}'
+  node_templates:
+    sbg_pl_trunk_subport_avpn_group_0:
+      type: org.openecomp.resource.abstract.nodes.heat.DPA3_New_VNF_TSBGv_nested_AVPN_subport
+      directives:
+      - substitutable
+      properties:
+        nested_avpn_net_id:
+          get_input: avpn_net_id
+        service_template_filter:
+          substitute_service_template: DPA3_New_VNF_TSBGv_nested_AVPN_subportServiceTemplate.yaml
+          count:
+            get_input: sbg_AVPN_count
+          mandatory: false
+        nested_sbg_AVPN_vlan_tag_list:
+          get_input: sbg_AVPN_vlan_tag_list
+        nested_trunk_port_id: sbg_pl_trunk_1_port_0
+        nested_sbg_avpn_ip_0:
+          get_input:
+          - sbg_avpn_ips
+          - 0
+        nested_avpn_subnet_id:
+          get_input: avpn_subnet_id
+        nested_sbg_AVPN_counter:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    abstract_sbg_sc:
+      type: org.openecomp.resource.abstract.nodes.sbg_sc
+      directives:
+      - substitutable
+      properties:
+        port_sbg_sc_internal_0_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        compute_sbg_sc_config_drive:
+        - true
+        port_sbg_sc_management_1_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_management_floating_ip
+        port_sbg_sc_internal_0_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_internal_ips
+            - 0
+        vm_flavor_name:
+          get_input: sbg_sc_flavor_name
+        port_sbg_sc_internal_0_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_management_1_port_replacement_policy:
+        - AUTO
+        port_sbg_sc_management_1_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        port_sbg_sc_management_1_port_mac_address:
+          get_input:
+          - sbg_management_mac_addresses
+          - 0
+        compute_sbg_sc_user_data_format:
+        - RAW
+        port_sbg_sc_management_1_port_fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_management_ips
+            - 0
+        compute_sbg_sc_name:
+        - get_input:
+          - sbg_sc_names
+          - 0
+        port_sbg_sc_internal_0_port_allowed_address_pairs:
+        - ip_address:
+            get_input: sbg_nfs_floating_ip
+        - ip_address:
+            get_input: sbg_comte_floating_ip
+        - ip_address:
+            get_input: sbg_boot_floating_ip
+        port_sbg_sc_internal_0_port_ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: true
+        compute_sbg_sc_metadata:
+        - vf_module_id:
+            get_input: vf_module_id
+          vnf_id:
+            get_input: vnf_id
+        port_sbg_sc_internal_0_port_network_role_tag: internal
+        port_sbg_sc_internal_0_port_network:
+        - get_input: internal_net_id
+        port_sbg_sc_management_1_port_network:
+        - get_input: management_net_id
+        port_sbg_sc_management_1_port_mac_requirements:
+          mac_count_required:
+            is_required: true
+        port_sbg_sc_management_1_port_network_role_tag: management
+        port_sbg_sc_internal_0_port_mac_address:
+          get_input:
+          - sbg_internal_mac_addresses
+          - 0
+        compute_sbg_sc_availability_zone:
+        - get_input: availability_zone_0
+        service_template_filter:
+          substitute_service_template: Nested_sbg_scServiceTemplate.yaml
+          count: 1
+        index_value:
+          get_property:
+          - SELF
+          - service_template_filter
+          - index_value
+    sbg_pl_trunk_1_port_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        replacement_policy: AUTO
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: false
+          floating_ip_count_required:
+            is_required: false
+        mac_requirements:
+          mac_count_required:
+            is_required: false
+        value_specs:
+          trunkport:type: trunk
+        network_role_tag: trunk
+        network:
+          get_input: trunk_net_id
+    sbg_pl_internal_0_port_0:
+      type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port
+      properties:
+        replacement_policy: AUTO
+        ip_requirements:
+        - ip_version: 4
+          ip_count_required:
+            is_required: true
+          floating_ip_count_required:
+            is_required: false
+        fixed_ips:
+        - ip_address:
+            get_input:
+            - sbg_internal_ips
+            - 2
+        mac_requirements:
+          mac_count_required:
+            is_required: true
+        mac_address:
+          get_input:
+          - sbg_internal_mac_addresses
+          - 2
+        network_role_tag: internal
+        network:
+          get_input: internal_net_id
+  groups:
+    DPA3_New_VNF_TSBGv_base_group:
+      type: org.openecomp.groups.heat.HeatStack
+      properties:
+        heat_file: ../Artifacts/DPA3_New_VNF_TSBGv_base.yaml
+        description: |
+          SC1, SC2, PL3 and PL4. This is the main template, to be used to create an initial stack, with 1 mated pair
+      members:
+      - sbg_pl_trunk_subport_avpn_group_0
+      - sbg_pl_trunk_1_port_0
+      - sbg_pl_internal_0_port_0
+      - abstract_sbg_sc
\ No newline at end of file