Change networks and subnets schemes due to different
ways of deploying BM cloud or virtaul

Add heat template for BM deploy (heat-bm-cicd-queens-contrail-sl)
Add bm-eu-cloud.env with parameters for BM deploy
Normalize output for getting correct IP of foundation node
Align all virtual models to new changes

Change-Id: I1e0daac4e82aea06e75de61d2fc5041e6ec4d138
diff --git a/tcp_tests/templates/_heat_environments/ReadMe.md b/tcp_tests/templates/_heat_environments/ReadMe.md
index 09f568a..b7250b3 100644
--- a/tcp_tests/templates/_heat_environments/ReadMe.md
+++ b/tcp_tests/templates/_heat_environments/ReadMe.md
@@ -104,13 +104,29 @@
 heat stack. Depending on environment, the Foundation node could be connected
 to several or to all the internal networks to run necessary tests.
 
-The template 'outputs' should contain the 'foundation_floating' key, for example:
+The template 'outputs' should contain the 'foundation_public_ip' key,
+in case of virtual deploy it will be floating IP, but in case of BM deploy
+we should use management address. Management address will came from
+instance_address attribute of foundation node, according to output of
+FoundationNode.yaml fragment.
+For example:
+For virtual deploys:
 ```
 outputs:
-  foundation_floating:
+  foundation_public_ip:
     description: foundation node IP address (floating) from external network
     value:
       get_attr:
       - foundation_node
       - instance_floating_address
 ```
+For Baremetal deploys
+```
+outputs:
+  foundation_public_ip:
+    description: foundation node IP address from management network
+    value:
+      get_attr:
+      - foundation_node
+      - instance_address # Here we will get management IP
+```
diff --git a/tcp_tests/templates/_heat_environments/bm-eu-cloud.env b/tcp_tests/templates/_heat_environments/bm-eu-cloud.env
new file mode 100644
index 0000000..149a7af
--- /dev/null
+++ b/tcp_tests/templates/_heat_environments/bm-eu-cloud.env
@@ -0,0 +1,51 @@
+
+resource_registry:
+  "MCP::MultipleInstance": fragments/MultipleInstance.yaml
+  #"MCP::Flavors": fragments/Flavors.yaml
+  "MCP::MasterNode": fragments/MasterNode.yaml
+  "MCP::Compute": fragments/Compute.yaml
+  "MCP::Networks": fragments/Networks.yaml
+  "MCP::SingleInstance": fragments/Instance.yaml
+  "MCP::FoundationNode": fragments/FoundationNode.yaml
+  "MCP::VsrxNode": fragments/VsrxNode.yaml
+  "MCP::Subnets": fragments/Subnets.yaml
+
+parameter_defaults:
+
+  cfg_flavor: system.virtual.salt_master
+  ctl_flavor: system.compact.openstack.control
+  cid_flavor: system.compact.cicd.control
+  ntw_flavor: system.compact.opencontrail.control
+  nal_flavor: system.compact.opencontrail.analytics
+  dbs_flavor: system.compact.openstack.database
+  msg_flavor: system.compact.openstack.message_queue
+  mon_flavor: system.compact.stacklight.server
+  log_flavor: system.compact.stacklight.log
+  mtr_flavor: system.compact.stacklight.telemetry
+  cmp_flavor: system.virtual.openstack.compute
+  cmn_flavor: system.compact.ceph.mon
+  rgw_flavor: system.compact.ceph.rgw
+  osd_flavor: system.virtual.ceph.osd
+  dns_flavor: system.compact.openstack.dns
+  kmn_flavor: system.compact.openstack.barbican
+  prx_flavor: system.compact.openstack.proxy
+  gtw_flavor: system.compact.openstack.gateway
+  kvm_fake_flavor: system.virtual.fake_kvm
+  mdb_flavor: system.compact.openstack.telemetry
+  foundation_flavor: system.virtual.foundation
+  vsrx_flavor: oc_vsrx
+  key_pair: system_key_8133
+  bm_availability_zone: BM
+  net_public: public
+
+  foundation_image: system.foundation
+  nameservers: 172.18.208.44
+  control_subnet_cidr: "10.6.0.0/24"
+  tenant_subnet_cidr: "10.8.0.0/24"
+  external_subnet_cidr: "192.168.200.0/24"
+  management_subnet_cidr: "172.16.49.64/26"
+  management_subnet_cfg01_ip: 172.16.49.66
+  management_subnet_gateway_ip: 172.16.49.65
+  management_subnet_pool_start: 172.16.49.68
+  management_subnet_pool_end: 172.16.49.124
+  salt_master_control_ip: 10.6.0.15
diff --git a/tcp_tests/templates/_heat_environments/eu-cloud.env b/tcp_tests/templates/_heat_environments/eu-cloud.env
index 7f670c5..b2f1396 100644
--- a/tcp_tests/templates/_heat_environments/eu-cloud.env
+++ b/tcp_tests/templates/_heat_environments/eu-cloud.env
@@ -8,6 +8,7 @@
   "MCP::SingleInstance": fragments/Instance.yaml
   "MCP::FoundationNode": fragments/FoundationNode.yaml
   "MCP::VsrxNode": fragments/VsrxNode.yaml
+  "MCP::Subnets": fragments/Subnets.yaml
 
 parameter_defaults:
 
@@ -25,7 +26,7 @@
   cmp_flavor: system.virtual.openstack.compute
   cmn_flavor: system.compact.ceph.mon
   rgw_flavor: system.compact.ceph.rgw
-  osd_flavor: system.virtual.openstack.compute
+  osd_flavor: system.virtual.ceph.osd
   dns_flavor: system.compact.openstack.dns
   kmn_flavor: system.compact.openstack.barbican
   prx_flavor: system.compact.openstack.proxy
@@ -35,7 +36,7 @@
   vsrx_flavor: oc_vsrx
 
   key_pair: system_key_8133
-
+  bm_availability_zone: BM
   net_public: public
 
   foundation_image: system.foundation
diff --git a/tcp_tests/templates/_heat_environments/fragments/Compute.yaml b/tcp_tests/templates/_heat_environments/fragments/Compute.yaml
index 40ff833..39ff118 100644
--- a/tcp_tests/templates/_heat_environments/fragments/Compute.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/Compute.yaml
@@ -3,8 +3,6 @@
 description: Single server instance fragment
 
 parameters:
-  network:
-    type: string
   instance_flavor:
     type: string
   instance_name:
diff --git a/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml b/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml
index 5b2c2d4..533edc0 100644
--- a/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/FoundationNode.yaml
@@ -3,8 +3,6 @@
 description: Single server instance fragment
 
 parameters:
-  network:
-    type: string
   instance_flavor:
     type: string
   instance_image:
@@ -13,18 +11,32 @@
     type: string
   instance_config_host:
     type: string
+  management_net:
+    type: string
+  control_net:
+    type: string
+  tenant_net:
+    type: string
+  external_net:
+    type: string
   key_pair:
     type: string
   instance_domain:
     type: string
   net_public:
     type: string
+  management_net_static_ip:
+    type: string
   control_net_static_ip:
     type: string
   tenant_net_static_ip:
     type: string
   external_net_static_ip:
     type: string
+  management_subnet_gateway_ip:
+    type: string
+  nameservers:
+    type: string
   underlay_userdata:
     type: string
   env_name:
@@ -34,32 +46,40 @@
   role:
     type: comma_delimited_list
     default: [foundation_jenkins_slave]
+  bm_availability_zone:
+    type: string
 
 resources:
   instance_port01:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      network_id: { get_param: management_net }
+      #network_id: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      fixed_ips:
+        - ip_address: { get_param: management_net_static_ip }
   instance_port02:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      network_id: { get_param: control_net }
+      #network_id: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
       fixed_ips:
         - ip_address: { get_param: control_net_static_ip }
   instance_port03:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      network_id: { get_param: tenant_net }
+      #network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
       fixed_ips:
         - ip_address: { get_param: tenant_net_static_ip }
   instance_port04:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+      network_id: { get_param: external_net }
+      #network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       fixed_ips:
         - ip_address: { get_param: external_net_static_ip }
 
@@ -70,6 +90,7 @@
       flavor: { get_param: instance_flavor }
       image: { get_param: instance_image }
       key_name: { get_param: key_pair }
+      availability_zone: { get_param: bm_availability_zone }
       name:
         list_join:
         - '.'
@@ -90,6 +111,10 @@
             $node_hostname: { get_param: instance_name }
             $node_domain: { get_param: instance_domain }
             $config_host: { get_param: instance_config_host }
+            $management_static_ip: { get_param: management_net_static_ip }
+            $control_static_ip: { get_param: control_net_static_ip }
+            $management_gw: { get_param: management_subnet_gateway_ip }
+            $dnsaddress: { get_param: nameservers }
       metadata:
         roles: { get_param: role }
 
@@ -120,10 +145,10 @@
       get_attr:
       - instance_instance
       - addresses
-      - 'management_net'
+      - { get_param: management_net }
       - 0
       - addr
-    description: "Instance's private IP address"
+    description: "Instance's management IP address"
   instance:
     value: { get_resource: instance_instance }
     description: "Instance"
diff --git a/tcp_tests/templates/_heat_environments/fragments/Instance.yaml b/tcp_tests/templates/_heat_environments/fragments/Instance.yaml
index 5ead2ed..9ffe121 100644
--- a/tcp_tests/templates/_heat_environments/fragments/Instance.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/Instance.yaml
@@ -3,8 +3,6 @@
 description: Single server instance fragment
 
 parameters:
-  network:
-    type: string
   instance_flavor:
     type: string
   instance_name:
diff --git a/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml b/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml
index 0d85600..24123b3 100644
--- a/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/MasterNode.yaml
@@ -11,7 +11,13 @@
     type: string
   external_net_static_ip:
     type: string
-  network:
+  management_net:
+    type: string
+  control_net:
+    type: string
+  tenant_net:
+    type: string
+  external_net:
     type: string
   cfg01_flavor:
     type: string
@@ -30,13 +36,16 @@
   role:
     type: comma_delimited_list
     default: [salt_master]
+  bm_availability_zone:
+    type: string
 
 resources:
   instance_port01:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      network_id: { get_param: management_net }
+      #network_id: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
       fixed_ips:
         - ip_address: { get_param: management_subnet_cfg01_ip }
 
@@ -44,7 +53,8 @@
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      network_id: { get_param: control_net }
+      #network_id: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
       fixed_ips:
         - ip_address: { get_param: salt_master_control_ip }
 
@@ -52,7 +62,8 @@
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      network_id: { get_param: tenant_net }
+      #network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
       fixed_ips:
         - ip_address: { get_param: tenant_net_static_ip }
 
@@ -60,7 +71,8 @@
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+      network_id: { get_param: external_net }
+      #network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       fixed_ips:
         - ip_address: { get_param: external_net_static_ip }
 
@@ -71,6 +83,7 @@
       flavor: { get_param: cfg01_flavor }
       image: { list_join: ['', [ 'cfg01-day01-', { get_param: mcp_version } ]] }
       key_name: { get_param: key_pair }
+      availability_zone: { get_param: bm_availability_zone }
       name:
         list_join:
         - '.'
@@ -109,7 +122,7 @@
       get_attr:
       - instance_instance
       - addresses
-      - 'management_net'
+      - { get_param: management_net }
       - 0
       - addr
     description: "Instance's private IP address"
diff --git a/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml b/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml
index b7282d8..bf14ee0 100644
--- a/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/MultipleInstance.yaml
@@ -5,8 +5,6 @@
 parameters:
   key_pair:
     type: string
-  network:
-    type: string
   instance01_name:
     type: string
   instance02_name:
@@ -60,7 +58,6 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       key_pair: { get_param: key_pair }
-      network: { get_param: network }
       control_net_static_ip: {get_param: instance01_control_net_static_ip }
       tenant_net_static_ip: {get_param: instance01_tenant_net_static_ip }
       external_net_static_ip: {get_param: instance01_external_net_static_ip }
@@ -77,7 +74,6 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       key_pair: { get_param: key_pair }
-      network: { get_param: network }
       control_net_static_ip: {get_param: instance02_control_net_static_ip }
       tenant_net_static_ip: {get_param: instance02_tenant_net_static_ip }
       external_net_static_ip: {get_param: instance02_external_net_static_ip }
@@ -94,7 +90,6 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       key_pair: { get_param: key_pair }
-      network: { get_param: network }
       control_net_static_ip: {get_param: instance03_control_net_static_ip }
       tenant_net_static_ip: {get_param: instance03_tenant_net_static_ip }
       external_net_static_ip: {get_param: instance03_external_net_static_ip }
diff --git a/tcp_tests/templates/_heat_environments/fragments/Networks.yaml b/tcp_tests/templates/_heat_environments/fragments/Networks.yaml
index 076684b..46bb048 100644
--- a/tcp_tests/templates/_heat_environments/fragments/Networks.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/Networks.yaml
@@ -62,112 +62,8 @@
       port_security_enabled: false
       name: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
 
-  control_subnet:
-    type: OS::Neutron::Subnet
-    properties:
-      name: { list_join: ['-', [ 'control_subnet', { get_param: env_name } ]] }
-      #name: control_subnet
-      network: { get_resource: control_net }
-      cidr: { get_param: control_subnet_cidr }
-      #enable_dhcp: { get_param: control_net_dhcp }
-      #dns_nameservers: { get_param: nameservers }
-      dns_nameservers: [0.0.0.0]
-      gateway_ip: null
-      tags:
-      - private-pool01
-
-  tenant_subnet:
-    type: OS::Neutron::Subnet
-    properties:
-      name: { list_join: ['-', [ 'tenant_subnet', { get_param: env_name } ]] }
-      #name: tenant_subnet
-      network: { get_resource: tenant_net }
-      cidr: { get_param: tenant_subnet_cidr }
-      #enable_dhcp: { get_param: tenant_net_dhcp }
-      #dns_nameservers: { get_param: nameservers }
-      dns_nameservers: [0.0.0.0]
-      gateway_ip: null
-      tags:
-      - tenant-pool01
-
-  management_subnet:
-    type: OS::Neutron::Subnet
-    properties:
-      gateway_ip: { get_param: management_subnet_gateway_ip }
-      name: { list_join: ['-', [ 'management_subnet', { get_param: env_name } ]] }
-      #name: management_subnet
-      network: { get_resource: management_net }
-      cidr: { get_param: management_subnet_cidr }
-      enable_dhcp: { get_param: management_net_dhcp }
-      allocation_pools:
-        - start: { get_param: management_subnet_pool_start }
-          end: { get_param: management_subnet_pool_end }
-      dns_nameservers: { get_param: nameservers }
-      tags:
-      - admin-pool01
-
-  external_subnet:
-    type: OS::Neutron::Subnet
-    properties:
-      name: { list_join: ['-', [ 'external_subnet', { get_param: env_name } ]] }
-      #name: external_subnet
-      network: { get_resource: external_net }
-      cidr: { get_param: external_subnet_cidr }
-      #enable_dhcp: { get_param: external_net_dhcp }
-      #dns_nameservers: { get_param: nameservers }
-      dns_nameservers: [0.0.0.0]
-      gateway_ip: null
-      tags:
-      - external-pool01
-
-  router:
-    type: OS::Neutron::Router
-    properties:
-      #name: publicbarerouter
-      external_gateway_info:
-        network: { get_param: net_public }
-        #enable_snat: True
-
-  router_subnet:
-    type: OS::Neutron::RouterInterface
-    depends_on: management_subnet
-    properties:
-      router: { get_resource: router }
-      subnet: { get_resource: management_subnet }
-
 outputs:
   network:
     value: { get_param: stack_name }
-  management_net_prefix:
-    value:
-      list_join:
-        - '.'
-        - - str_split: ['.', { get_param: management_subnet_cidr }, 0]
-          - str_split: ['.', { get_param: management_subnet_cidr }, 1]
-          - str_split: ['.', { get_param: management_subnet_cidr }, 2]
-
-  control_net_prefix:
-    value:
-      list_join:
-        - '.'
-        - - str_split: ['.', { get_param: control_subnet_cidr }, 0]
-          - str_split: ['.', { get_param: control_subnet_cidr }, 1]
-          - str_split: ['.', { get_param: control_subnet_cidr }, 2]
-
-  tenant_net_prefix:
-    value:
-      list_join:
-        - '.'
-        - - str_split: ['.', { get_param: tenant_subnet_cidr }, 0]
-          - str_split: ['.', { get_param: tenant_subnet_cidr }, 1]
-          - str_split: ['.', { get_param: tenant_subnet_cidr }, 2]
-
-  external_net_prefix:
-    value:
-      list_join:
-        - '.'
-        - - str_split: ['.', { get_param: external_subnet_cidr }, 0]
-          - str_split: ['.', { get_param: external_subnet_cidr }, 1]
-          - str_split: ['.', { get_param: external_subnet_cidr }, 2]
 
 ...
diff --git a/tcp_tests/templates/_heat_environments/fragments/Subnets.yaml b/tcp_tests/templates/_heat_environments/fragments/Subnets.yaml
new file mode 100644
index 0000000..330d379
--- /dev/null
+++ b/tcp_tests/templates/_heat_environments/fragments/Subnets.yaml
@@ -0,0 +1,161 @@
+---
+heat_template_version: queens
+
+description: Subnets fragment
+
+parameters:
+  env_name:
+    type: string
+  net_public:
+    type: string
+  stack_name:
+    type: string
+  management_net:
+    type: string
+  control_net:
+    type: string
+  tenant_net:
+    type: string
+  external_net:
+    type: string
+  control_subnet_cidr:
+    type: string
+  tenant_subnet_cidr:
+    type: string
+  management_subnet_cidr:
+    type: string
+  external_subnet_cidr:
+    type: string
+  management_subnet_gateway_ip:
+    type: string
+#  control_net_dhcp:
+#    type: boolean
+#    default: false
+#  tenant_net_dhcp:
+#    type: boolean
+#    default: false
+  management_net_dhcp:
+    type: boolean
+    default: true
+  management_subnet_pool_start:
+    type: string
+  management_subnet_pool_end:
+    type: string
+#  external_net_dhcp:
+#    type: boolean
+#    default: false
+
+  nameservers:
+    type: comma_delimited_list
+
+resources:
+
+  control_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      name: { list_join: ['-', [ { get_param: control_net }, 'subnet', { get_param: env_name } ]] }
+      #name: control_subnet
+      network: { get_param: control_net }
+      cidr: { get_param: control_subnet_cidr }
+      #enable_dhcp: { get_param: control_net_dhcp }
+      #dns_nameservers: { get_param: nameservers }
+      dns_nameservers: [0.0.0.0]
+      gateway_ip: null
+      tags:
+      - private-pool01
+
+  tenant_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      name: { list_join: ['-', [ { get_param: tenant_net }, 'subnet', { get_param: env_name } ]] }
+      #name: tenant_subnet
+      network: { get_param: tenant_net }
+      cidr: { get_param: tenant_subnet_cidr }
+      #enable_dhcp: { get_param: tenant_net_dhcp }
+      #dns_nameservers: { get_param: nameservers }
+      dns_nameservers: [0.0.0.0]
+      gateway_ip: null
+      tags:
+      - tenant-pool01
+
+  management_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      gateway_ip: { get_param: management_subnet_gateway_ip }
+      name: { list_join: ['-', [ { get_param: management_net }, 'subnet', { get_param: env_name } ]] }
+      #name: management_subnet
+      network: { get_param: management_net }
+      cidr: { get_param: management_subnet_cidr }
+      enable_dhcp: { get_param: management_net_dhcp }
+      allocation_pools:
+        - start: { get_param: management_subnet_pool_start }
+          end: { get_param: management_subnet_pool_end }
+      dns_nameservers: { get_param: nameservers }
+      tags:
+      - admin-pool01
+
+  external_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      name: { list_join: ['-', [ { get_param: external_net }, 'subnet', { get_param: env_name } ]] }
+      #name: external_subnet
+      network: { get_param: external_net }
+      cidr: { get_param: external_subnet_cidr }
+      #enable_dhcp: { get_param: external_net_dhcp }
+      #dns_nameservers: { get_param: nameservers }
+      dns_nameservers: [0.0.0.0]
+      gateway_ip: null
+      tags:
+      - external-pool01
+
+  router:
+    type: OS::Neutron::Router
+    properties:
+      #name: publicbarerouter
+      external_gateway_info:
+        network: { get_param: net_public }
+        #enable_snat: True
+
+  router_subnet:
+    type: OS::Neutron::RouterInterface
+    depends_on: management_subnet
+    properties:
+      router: { get_resource: router }
+      subnet: { get_resource: management_subnet }
+
+outputs:
+  network:
+    value: { get_param: stack_name }
+  management_net_prefix:
+    value:
+      list_join:
+        - '.'
+        - - str_split: ['.', { get_param: management_subnet_cidr }, 0]
+          - str_split: ['.', { get_param: management_subnet_cidr }, 1]
+          - str_split: ['.', { get_param: management_subnet_cidr }, 2]
+
+  control_net_prefix:
+    value:
+      list_join:
+        - '.'
+        - - str_split: ['.', { get_param: control_subnet_cidr }, 0]
+          - str_split: ['.', { get_param: control_subnet_cidr }, 1]
+          - str_split: ['.', { get_param: control_subnet_cidr }, 2]
+
+  tenant_net_prefix:
+    value:
+      list_join:
+        - '.'
+        - - str_split: ['.', { get_param: tenant_subnet_cidr }, 0]
+          - str_split: ['.', { get_param: tenant_subnet_cidr }, 1]
+          - str_split: ['.', { get_param: tenant_subnet_cidr }, 2]
+
+  external_net_prefix:
+    value:
+      list_join:
+        - '.'
+        - - str_split: ['.', { get_param: external_subnet_cidr }, 0]
+          - str_split: ['.', { get_param: external_subnet_cidr }, 1]
+          - str_split: ['.', { get_param: external_subnet_cidr }, 2]
+
+...
diff --git a/tcp_tests/templates/_heat_environments/fragments/VsrxNode.yaml b/tcp_tests/templates/_heat_environments/fragments/VsrxNode.yaml
index b3b32ef..e0e3a84 100644
--- a/tcp_tests/templates/_heat_environments/fragments/VsrxNode.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/VsrxNode.yaml
@@ -3,14 +3,20 @@
 description: Single server instance fragment
 
 parameters:
-  network:
-    type: string
   instance_flavor:
     type: string
   instance_image:
     type: string
   instance_name:
     type: string
+  management_net:
+    type: string
+  control_net:
+    type: string
+  tenant_net:
+    type: string
+  external_net:
+    type: string
   instance_config_host:
     type: string
   key_pair:
@@ -37,28 +43,28 @@
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      network_id: { get_param: control_net }
       fixed_ips:
         - ip_address: { get_param: control_net_static_ip }
   instance_port02:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      network_id: { get_param: tenant_net }
       fixed_ips:
         - ip_address: { get_param: tenant_net_static_ip }
   instance_port03:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+      network_id: { get_param: external_net }
       fixed_ips:
         - ip_address: { get_param: external_net_static_ip }
   instance_port04:
     type: OS::Neutron::Port
     properties:
       port_security_enabled: false
-      network_id: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      network_id: { get_param: management_net }
 
   instance_instance:
     type: OS::Nova::Server
diff --git a/tcp_tests/templates/cookied-model-generator/salt_heat-bm-cicd-queens-contrail-sl.yaml b/tcp_tests/templates/cookied-model-generator/salt_heat-bm-cicd-queens-contrail-sl.yaml
new file mode 100644
index 0000000..b658289
--- /dev/null
+++ b/tcp_tests/templates/cookied-model-generator/salt_heat-bm-cicd-queens-contrail-sl.yaml
@@ -0,0 +1,66 @@
+{% from 'cookied-model-generator/underlay.yaml' import HOSTNAME_CFG01 with context %}
+{% from 'cookied-model-generator/underlay.yaml' import DOMAIN_NAME with context %}
+
+{% set LAB_CONFIG_NAME = 'heat-bm-cicd-queens-contrail-sl' %}
+# Name of the context file (without extension, that is fixed .yaml) used to render the Environment model
+{% set ENVIRONMENT_MODEL_INVENTORY_NAME = os_env('ENVIRONMENT_MODEL_INVENTORY_NAME','heat-bm-cicd-queens-contrail-sl') %}
+# Path to the context files used to render Cluster and Environment models
+{%- set CLUSTER_CONTEXT_NAME = 'salt-context-cookiecutter-contrail.yaml' %}
+{%- set ENVIRONMENT_CONTEXT_NAMES = ['salt-context-environment.yaml', 'salt-context-cookiecutter-contrail.yaml'] %}
+{%- set CONTROL_VLAN = os_env('CONTROL_VLAN', '2422') %}
+{%- set TENANT_VLAN = os_env('TENANT_VLAN', '2423') %}
+
+{%- set IPMI_USER = os_env('IPMI_USER', 'mcp-qa') %}
+{%- set IPMI_PASS = os_env('IPMI_PASS', 'password') %}
+
+{% import 'shared-salt.yaml' as SHARED with context %}
+
+{{ SHARED.MACRO_INSTALL_PACKAGES_ON_NODES(HOSTNAME_CFG01) }}
+
+{{ SHARED.MACRO_INSTALL_FORMULAS_FROM_UPDATE() }}
+
+{{ SHARED.MACRO_INSTALL_FORMULAS('\*') }}
+
+{{ SHARED.MACRO_GENERATE_COOKIECUTTER_MODEL(CONTROL_VLAN=CONTROL_VLAN, TENANT_VLAN=TENANT_VLAN) }}
+
+{{ SHARED.MACRO_GENERATE_AND_ENABLE_ENVIRONMENT_MODEL() }}
+
+- description: Temporary WR for correct bridge name according to envoronment templates
+  cmd: |
+    sed -i 's/br\-ctl/br\_ctl/g' /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/infra/kvm.yml;
+    sed -i 's/br\-mgm/br\_mgm/g' /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/infra/kvm.yml;
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 10}
+  skip_fail: false
+
+{{ SHARED.MACRO_GENERATE_INVENTORY(RERUN_SALTMASTER_STATE=true) }}
+
+- description: "Add cpu_mode"
+  cmd: |
+    set -e;
+    set -x;
+    . /root/venv-reclass-tools/bin/activate;
+    reclass-tools add-key parameters.nova.compute.cpu_mode custom /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/openstack/compute/init.yml;
+    reclass-tools add-key parameters.nova.compute.libvirt.cpu_model kvm64 /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/openstack/compute/init.yml;
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+
+- description: Defining username and password params for IPMI access
+  cmd: |
+    sed -i 's/==IPMI_USER==/${_param:power_user}/g' /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/infra/maas_machines.yml;
+    sed -i 's/==IPMI_PASS==/${_param:power_password}/g' /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/infra/maas_machines.yml;
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 10}
+  skip_fail: false
+
+- description: "Add user/password for IPMI access"
+  cmd: |
+    set -e;
+    set -x;
+    . /root/venv-reclass-tools/bin/activate;
+    reclass-tools add-key parameters._param.power_user {{ IPMI_USER }} /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/infra/maas_machines.yml;
+    reclass-tools add-key parameters._param.power_password {{ IPMI_PASS }} /srv/salt/reclass/classes/cluster/{{ LAB_CONFIG_NAME }}/infra/maas_machines.yml;
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
\ No newline at end of file
diff --git a/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt-context-cookiecutter-contrail.yaml b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt-context-cookiecutter-contrail.yaml
new file mode 100644
index 0000000..22292a8
--- /dev/null
+++ b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt-context-cookiecutter-contrail.yaml
@@ -0,0 +1,504 @@
+default_context:
+  backup_private_key: |-
+    -----BEGIN RSA PRIVATE KEY-----
+    MIIEpAIBAAKCAQEApq5WxkagvkNWO85FtS1ByHDKkNWhmFdpY9D49dZrSwuE9XGQ
+    +WW79F2AGwKki2N2j1iyfpMEKRIEIb/5cbl6fZzTGTndhd7Jxkx6xGdhZkX9VM6N
+    qotaO4ckj7NsfiZKTwp58/YSRkz3Ii1XPpt0NQqZLuNAwus4Bl9e1Wk5dNw+gHN3
+    m4JmAczJbQ81lrQURC7f3d2xjoFkXWXC2FKkMS6AOl1j87ATeeSG9xeHLbOvIyBw
+    7IwP9MFA5vUtHl8DzsdmzWmVRabe2VMtGa1Ya5JTTgK8nXmtYW3dvEQ/DtgzcKPJ
+    2fO31cze9LRpDSS0E6d/cISBgzsPfBJuUCGHTQIDAQABAoIBAQCmFVVVoA6PRt1o
+    HjMLQpsntGvDQXsRJxhWY2WO4CZs0n+baZvBRgOwjHIXd9ypH2SFlSXWRXuByPfh
+    AT72eJB7FYaqviPjPojjVFWH2lMM63RvypkSdGRmqFRf87KJSHIGrDO0SV8QOaSO
+    o4spURDLwVG9jKd9EY/zmZgPIhgkPazzVrFoGr8YnKE6qSJh5HivscNl8D3+36SN
+    5uhuElzBTNGd2iU4elLJIGjahetIalEZqL0Fvi1ZzAWoK0YXDmbI8uG8/epJ5Sy4
+    XyyHc7+0Jvm1JWwXczdDFuy+RlL9r66Ja8V9MauuJyigOKnNOJhE2b5/klEcczhC
+    AHA/Hw4pAoGBANcJ/gdouXgcuq3JNXq5Cb4w9lvZbDwQdEtY3+qdHAVndomoGsDT
+    USKq6ZRZzkAAnjiN2YywAQzqFGevoYig+WNLTPd2TdNdlNHfw9Wc4G2iSFb1pIr2
+    uoJ+TQGv4Ck/7LS2NVnWfqNoeo8Iq+Wvnh+F3twv0UIazGI8Bj/xLxvrAoGBAMZu
+    QErf3vzbY4g50HFVbPNi2Nl63A7/P421pEe4JAT1clwIVMyntRpNdVyHKkkKdDWr
+    98tBOhf71+shgsVPEMkfPyZ2nuiBit7LzZ+EAztG9i3hhm8yIUPXoipo0YCOe+yF
+    r+r03pX97aciXuRMPmMTHH6N1vFaUXHSgVs6Y7OnAoGAP4v1ZO0eug8LX6XxRuX9
+    qhXAB96VrJ5UL5wA980b5cDwd7eUyFzqQittwWhUmfdUynOo0XmFpfJau1VckAq6
+    CAzNnud4Ejk6bFcLAUpNzDhD1mbbDDHjZgK68P+vZ6E7ax/ZXkYTwGh0p2Yxnjuq
+    p7gg5sK+vSE8Ot9wHV9Bw6cCgYEAguPq6PjvgF+/Mfbg9kFhUtKbNCoEyqe4ZmOw
+    79YZfGPjga3FMhJWNfluNxC55eBNc7HyDFMEXRm0/dbnCfvzmJdR8q9AdyIsVnad
+    NmHAN/PBI9al9OdeZf/xaoQl3eUe/Y/Z0OShhtMvVpYnffSFGplarGgnpqDrJGe1
+    CFZlufUCgYBemuy+C6gLwTOzhcTcCo4Ir5ZiKcXAE6ufk8OIdGnMWJcmTxxmIMY6
+    XyKu0oobWpOBXPiipQ6TmDpI+flxWYRHwPFFzPa+jhCtupRuTdORKrklV2UfdIWZ
+    N4e+J2yCu7lyz0upwa3MkFIVQ1ez0o8X9NRvAz243qi64y1+KOMPmQ==
+    -----END RSA PRIVATE KEY-----
+  backup_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmrlbGRqC+Q1Y7zkW1LUHIcMqQ1aGYV2lj0Pj11mtLC4T1cZD5Zbv0XYAbAqSLY3aPWLJ+kwQpEgQhv/lxuXp9nNMZOd2F3snGTHrEZ2FmRf1Uzo2qi1o7hySPs2x+JkpPCnnz9hJGTPciLVc+m3Q1Cpku40DC6zgGX17VaTl03D6Ac3ebgmYBzMltDzWWtBRELt/d3bGOgWRdZcLYUqQxLoA6XWPzsBN55Ib3F4cts68jIHDsjA/0wUDm9S0eXwPOx2bNaZVFpt7ZUy0ZrVhrklNOArydea1hbd28RD8O2DNwo8nZ87fVzN70tGkNJLQTp39whIGDOw98Em5QIYdN
+  bmk_enabled: 'False'
+  cicd_control_node01_address: ==IPV4_NET_CONTROL_PREFIX==.91
+  cicd_control_node01_hostname: cid01
+  cicd_control_node02_address: ==IPV4_NET_CONTROL_PREFIX==.92
+  cicd_control_node02_hostname: cid02
+  cicd_control_node03_address: ==IPV4_NET_CONTROL_PREFIX==.93
+  cicd_control_node03_hostname: cid03
+  cicd_control_vip_address: ==IPV4_NET_CONTROL_PREFIX==.90
+  cicd_control_vip_hostname: cid
+  cicd_enabled: 'True'
+  cicd_private_key: |-
+    -----BEGIN RSA PRIVATE KEY-----
+    MIIEowIBAAKCAQEAuBC224XQZFyzqC56EyS7yr/rlpRRYsr2vji77faoWQFmgYbZ
+    oeyqqqm8eSN0Cc0wAnxWsQ7H3ZN9uTnyWVrsogs1vx8597iorZAT4Mu6JDbkWlZh
+    IUHo9P9itWJdUWpxjDavqIvjZo+DmOO1mfv9K1asP8COanQEsgHSyuf+XKMBg0ko
+    kEammAUtS9HRxCAJ47QgLPSCFij5ih/MRWY3HWFUFEF3gRdUodWmeJNmW+7JH7T2
+    wId1kn8oRya7eadKxd6wEaCGm5ILXwwVFmFkOGlEeC8wHnbkatd/A53DxzUfOHBi
+    27Gaf83DPxKqDWW0aAh7b49EnFhdkuF3ZyXbYwIDAQABAoIBAFtioQbYpyBNDj2f
+    5af/guUk6Di4pregAWVsEZIR9n9KPLRuWTsVn55f611Rhtke8IkrZnc92WlfQvpl
+    lLdcd0P0wNiFDmi5W7XgZJ4lR+OXBUT8wfibGqgY688WaTJ04K82r3vFCD/xXOrZ
+    k15CR+3ueFKmrY6Yz4P5d8iZ6iXfR47ZYm+wdmx3vmJ+IVfZCRRPAGP25GxqsOs5
+    3qMl9hV7a1MGVVaVPmVzrq0Xzk6IAW2+0p5udGmezn4y6HFPIvOriUVUkni3mNjX
+    dokrETqVbOjkdFkSw28cMBfP/tO3vyfGh5VX24xvRztWtcpAm6Qr5lKEDSvFv13r
+    0z/DxRECgYEA8oZ4+w2cqLJz91fKpWutGZKj4m/HEY6FZfjVflsTT2bKTt+nTtRY
+    qAeKGYIbrjZMAyy4dG+RgW7WORFcRHFyeSrS5Aw51zO+JQ0KzuBv83UqcbqNLcsz
+    BAPHPk/7f30W4wuInqgXrWMTiGePz0hQsvNU6aR7MH4Sd2C0ot4W+00CgYEAwkq+
+    UtugC8ywK+F0xZvjXHi3VJRJZf4WLtRxZGy8CimaritSKpZZRG23Sk0ifDE6+4fD
+    VtxeTfTmeZBictg/fEAPVHzhsNPNyDMA8t7t4ZKmMX9DNYAqVX21s5YQ9encH6KT
+    1q0NRpjvw7QzhfbFfsxeAxHKZFbFlVmROplF+W8CgYAWHVz6x4r5dwxMCZ1Y6DCo
+    nE6FX1vvpedUHRSaqQNhwiXAe3RuI77R054sJUkQ4bKct386XtIN02WFXqfjNdUS
+    Z21DjjnX/cfg6QeLRbvvn0d3h2NIQbctLosEi5aLUYS8v1h93yYJkXc+gPMEG7wA
+    FWAwzebNzTEx4YeXMlk2IQKBgCt8JxTMawm5CkUH9Oa1eTGdIwsfFT5qm/RnP+nG
+    HF/559DLiVxWwiv6kmdi1DEPo6/gNuwd7k1sXpkeo6oolCzu+X9jY+/7t7bzE2dI
+    Vd2CwQebACPdR5xSwnQrRiiD6ux5qrUFjk8as68NieqVzKYQf4oYVUAX26kNnt+K
+    poqpAoGBAINHTGBFVK3XC+fCbu7rhFS8wZAjBmvEDHGnUBp19JREEr3q7a2D84T3
+    17zo0bwxL09QFnOCDDJcXsh8eGbCONV0hJvJU2o7wGol+lRFSd+v6WYZ37bPEyEx
+    l8kv0xXAElriC1RE1CNtvoOn/uxyRs+2OnNgBVxtAGqUWVdpm6CD
+    -----END RSA PRIVATE KEY-----
+  cicd_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4ELbbhdBkXLOoLnoTJLvKv+uWlFFiyva+OLvt9qhZAWaBhtmh7Kqqqbx5I3QJzTACfFaxDsfdk325OfJZWuyiCzW/Hzn3uKitkBPgy7okNuRaVmEhQej0/2K1Yl1RanGMNq+oi+Nmj4OY47WZ+/0rVqw/wI5qdASyAdLK5/5cowGDSSiQRqaYBS1L0dHEIAnjtCAs9IIWKPmKH8xFZjcdYVQUQXeBF1Sh1aZ4k2Zb7skftPbAh3WSfyhHJrt5p0rF3rARoIabkgtfDBUWYWQ4aUR4LzAeduRq138DncPHNR84cGLbsZp/zcM/EqoNZbRoCHtvj0ScWF2S4XdnJdtj
+  cluster_domain: heat-bm-cicd-queens-contrail-sl.local
+  cluster_name: heat-bm-cicd-queens-contrail-sl
+  opencontrail_version: 4.1
+  linux_repo_contrail_component: oc41
+  compute_bond_mode: active-backup
+  compute_padding_with_zeros: 'True'
+  compute_primary_first_nic: eth1
+  compute_primary_second_nic: eth2
+  context_seed: TFWH0xgUevQkslwhbWVedwwYhBtImHLiGUIExjT9ahxPAUBHh9Kg3QSAIrqTqtvk
+  control_network_netmask: 255.255.255.0
+  control_network_subnet: ==IPV4_NET_CONTROL_PREFIX==.0/24
+  control_vlan: '2422'
+  tenant_vlan: '2423'
+  backend_vlan: '2424'
+  storage_vlan: '2425'  # not implemented yet, placeholder
+  cookiecutter_template_branch: ''
+  cookiecutter_template_credentials: gerrit
+  cookiecutter_template_url: https://gerrit.mcp.mirantis.com/mk/cookiecutter-templates.git
+  deploy_network_gateway: ==IPV4_NET_ADMIN_PREFIX==.65
+  deploy_network_netmask: 255.255.255.192
+  deploy_network_subnet: ==IPV4_NET_ADMIN_PREFIX==.64/26
+  deployment_type: physical
+  dns_server01: 172.18.208.44
+  dns_server02: 172.18.176.6
+  email_address: sgudz@mirantis.com
+  infra_bond_mode: active-backup
+  infra_deploy_nic: eth0
+  infra_kvm01_control_address: ==IPV4_NET_CONTROL_PREFIX==.241
+  infra_kvm01_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.67
+  infra_kvm01_hostname: kvm01
+  infra_kvm02_control_address: ==IPV4_NET_CONTROL_PREFIX==.242
+  infra_kvm02_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.68
+  infra_kvm02_hostname: kvm02
+  infra_kvm03_control_address: ==IPV4_NET_CONTROL_PREFIX==.243
+  infra_kvm03_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.69
+  infra_kvm03_hostname: kvm03
+  infra_kvm04_control_address: ==IPV4_NET_CONTROL_PREFIX==.244
+  infra_kvm04_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.70
+  infra_kvm04_hostname: kvm04
+  infra_kvm05_control_address: ==IPV4_NET_CONTROL_PREFIX==.245
+  infra_kvm05_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.71
+  infra_kvm05_hostname: kvm05
+  infra_kvm06_control_address: ==IPV4_NET_CONTROL_PREFIX==.246
+  infra_kvm06_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.72
+  infra_kvm06_hostname: kvm06
+  infra_kvm_vip_address: ==IPV4_NET_CONTROL_PREFIX==.240
+  infra_primary_first_nic: eth1
+  infra_primary_second_nic: eth2
+  internal_proxy_enabled: 'False'
+  kqueen_custom_mail_enabled: 'False'
+  kqueen_enabled: 'False'
+  kubernetes_enabled: 'False'
+  local_repositories: 'False'
+  maas_enabled: 'True'
+  maas_deploy_address: ==IPV4_NET_ADMIN_PREFIX==.66
+  maas_deploy_cidr: ==IPV4_NET_ADMIN_PREFIX==.64/26
+  maas_deploy_gateway: ==IPV4_NET_ADMIN_PREFIX==.65
+  maas_deploy_range_end: ==IPV4_NET_ADMIN_PREFIX==.119
+  maas_deploy_range_start: ==IPV4_NET_ADMIN_PREFIX==.78
+  maas_deploy_vlan: '0'
+  maas_dhcp_enabled: 'True'
+  maas_fabric_name: fabric-0
+  maas_hostname: cfg01
+  maas_manage_deploy_network: 'True'
+  maas_machines: |
+        kvm01: # cz8062-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          # pxe_interface_mac:
+          pxe_interface_mac: "0c:c4:7a:a8:d3:44"
+          interfaces:
+            enp8s0f0:
+              mac: "0c:c4:7a:a8:d3:44"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.67"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.227.106"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        kvm02: # #cz8063-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:a8:b8:18"
+          interfaces:
+            enp8s0f0:
+              mac: "0c:c4:7a:a8:b8:18"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.68"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.227.107"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        kvm03: # #cz8064-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:a8:d0:40"
+          interfaces:
+            enp8s0f0:
+              mac: "0c:c4:7a:a8:d0:40"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.69"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.227.108"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        kvm04: # cz8065-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          # pxe_interface_mac:
+          pxe_interface_mac: "0c:c4:7a:a8:b8:22"
+          interfaces:
+            enp8s0f0:
+              mac: "0c:c4:7a:a8:b8:22"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.70"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.227.110"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        kvm05: # #cz8066-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:a8:b8:1a"
+          interfaces:
+            enp8s0f0:
+              mac: "0c:c4:7a:a8:b8:1a"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.71"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.227.111"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        kvm06: # #cz8067-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:a8:b8:1c"
+          interfaces:
+            enp8s0f0:
+              mac: "0c:c4:7a:a8:b8:1c"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.72"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.227.112"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        osd001: # #cz5272-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:aa:51:f8"
+          interfaces:
+            eno1:
+              mac: "0c:c4:7a:aa:51:f8"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.73"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.225.182"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        osd002: # #cz7857-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:6d:3a:80"
+          interfaces:
+            eno1:
+              mac: "0c:c4:7a:6d:3a:80"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.74"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.225.199"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        osd003: # #cz7787-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:6b:f7:7a"
+          interfaces:
+            eno1:
+              mac: "0c:c4:7a:6b:f7:7a"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.75"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.225.123"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        cmp001: # #cz7987-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:a8:72:ac"
+          interfaces:
+            eno1:
+              mac: "0c:c4:7a:a8:72:ac"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.76"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.225.181"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+        cmp002: # cz7842-kvm.host-telecom.com
+          distro_series: "xenial"
+          # hwe_kernel: "hwe-16.04"
+          pxe_interface_mac: "0c:c4:7a:6d:3a:c6"
+          interfaces:
+            eno1:
+              mac: "0c:c4:7a:6d:3a:c6"
+              mode: "static"
+              ip: "==IPV4_NET_ADMIN_PREFIX==.77"
+              subnet: ${maas:region:subnets:deploy_network:cidr} # create it manually... in UI
+              gateway: ${_param:deploy_network_gateway}
+          power_parameters:
+            power_address: "5.43.225.201"
+            power_pass: ==IPMI_PASS==
+            power_type: ipmi
+            power_user: ==IPMI_USER==
+
+  mcp_common_scripts_branch: ''
+  mcp_version: proposed
+  offline_deployment: 'False'
+  opencontrail_analytics_address: ==IPV4_NET_CONTROL_PREFIX==.30
+  opencontrail_analytics_hostname: nal
+  opencontrail_analytics_node01_address: ==IPV4_NET_CONTROL_PREFIX==.31
+  opencontrail_analytics_node01_hostname: nal01
+  opencontrail_analytics_node02_address: ==IPV4_NET_CONTROL_PREFIX==.32
+  opencontrail_analytics_node02_hostname: nal02
+  opencontrail_analytics_node03_address: ==IPV4_NET_CONTROL_PREFIX==.33
+  opencontrail_analytics_node03_hostname: nal03
+  opencontrail_compute_iface_mask: '24'
+  opencontrail_control_address: ==IPV4_NET_CONTROL_PREFIX==.20
+  opencontrail_control_hostname: ntw
+  opencontrail_control_node01_address: ==IPV4_NET_CONTROL_PREFIX==.21
+  opencontrail_control_node01_hostname: ntw01
+  opencontrail_control_node02_address: ==IPV4_NET_CONTROL_PREFIX==.22
+  opencontrail_control_node02_hostname: ntw02
+  opencontrail_control_node03_address: ==IPV4_NET_CONTROL_PREFIX==.23
+  opencontrail_control_node03_hostname: ntw03
+  opencontrail_enabled: 'True'
+  opencontrail_router01_address: ==IPV4_NET_CONTROL_PREFIX==.220
+  opencontrail_router01_hostname: rtr01
+  opencontrail_router02_address: ==IPV4_NET_CONTROL_PREFIX==.101
+  opencontrail_router02_hostname: rtr02
+  openssh_groups: ''
+  openstack_benchmark_node01_address: ==IPV4_NET_CONTROL_PREFIX==.95
+  openstack_benchmark_node01_hostname: bmk01
+  openstack_cluster_size: compact
+  openstack_compute_count: '2'
+  openstack_compute_rack01_hostname: cmp
+  openstack_compute_single_address_ranges: ==IPV4_NET_CONTROL_PREFIX==.101-==IPV4_NET_CONTROL_PREFIX==.102
+  openstack_compute_deploy_address_ranges: ==IPV4_NET_ADMIN_PREFIX==.76-==IPV4_NET_ADMIN_PREFIX==.77
+  openstack_compute_tenant_address_ranges: ==IPV4_NET_TENANT_PREFIX==.101-==IPV4_NET_TENANT_PREFIX==.102
+  openstack_compute_backend_address_ranges: ==IPV4_NET_TENANT_PREFIX==.101-==IPV4_NET_TENANT_PREFIX==.102
+  openstack_control_address: ==IPV4_NET_CONTROL_PREFIX==.10
+  openstack_control_hostname: ctl
+  openstack_control_node01_address: ==IPV4_NET_CONTROL_PREFIX==.11
+  openstack_control_node01_hostname: ctl01
+  openstack_control_node02_address: ==IPV4_NET_CONTROL_PREFIX==.12
+  openstack_control_node02_hostname: ctl02
+  openstack_control_node03_address: ==IPV4_NET_CONTROL_PREFIX==.13
+  openstack_control_node03_hostname: ctl03
+  openstack_database_address: ==IPV4_NET_CONTROL_PREFIX==.50
+  openstack_database_hostname: dbs
+  openstack_database_node01_address: ==IPV4_NET_CONTROL_PREFIX==.51
+  openstack_database_node01_hostname: dbs01
+  openstack_database_node02_address: ==IPV4_NET_CONTROL_PREFIX==.52
+  openstack_database_node02_hostname: dbs02
+  openstack_database_node03_address: ==IPV4_NET_CONTROL_PREFIX==.53
+  openstack_database_node03_hostname: dbs03
+  openstack_enabled: 'True'
+  openstack_message_queue_address: ==IPV4_NET_CONTROL_PREFIX==.40
+  openstack_message_queue_hostname: msg
+  openstack_message_queue_node01_address: ==IPV4_NET_CONTROL_PREFIX==.41
+  openstack_message_queue_node01_hostname: msg01
+  openstack_message_queue_node02_address: ==IPV4_NET_CONTROL_PREFIX==.42
+  openstack_message_queue_node02_hostname: msg02
+  openstack_message_queue_node03_address: ==IPV4_NET_CONTROL_PREFIX==.43
+  openstack_message_queue_node03_hostname: msg03
+  openstack_network_engine: opencontrail
+  openstack_neutron_bgp_vpn: 'False'
+  openstack_neutron_bgp_vpn_driver: bagpipe
+  openstack_nfv_dpdk_enabled: 'False'
+  openstack_nfv_sriov_enabled: 'False'
+  openstack_nova_compute_nfv_req_enabled: 'False'
+  openstack_nova_compute_reserved_host_memory_mb: '900'
+  openstack_proxy_address: ==IPV4_NET_CONTROL_PREFIX==.80
+  openstack_proxy_hostname: prx
+  openstack_proxy_node01_address: ==IPV4_NET_CONTROL_PREFIX==.81
+  openstack_proxy_node01_hostname: prx01
+  openstack_proxy_node02_address: ==IPV4_NET_CONTROL_PREFIX==.82
+  openstack_proxy_node02_hostname: prx02
+  openstack_upgrade_node01_address: ==IPV4_NET_CONTROL_PREFIX==.19
+  openstack_version: queens
+  oss_enabled: 'False'
+  oss_node03_address: ${_param:stacklight_monitor_node03_address}
+  oss_webhook_app_id: '24'
+  oss_webhook_login_id: '13'
+  platform: openstack_enabled
+  public_host: ${_param:openstack_proxy_address}
+  publication_method: email
+  reclass_repository: https://github.com/Mirantis/mk-lab-salt-model.git
+  salt_api_password: BNRhXeGFdgVNx0Ikm2CAMw7eyeHf4grH
+  salt_api_password_hash: $6$jriFnsbZ$eon54Ts/Kn4ywKpexe/W8srpBF64cxr2D8jd0RzTH8zdZVjS3viYt64m1d1VlXenurwpcGLkGzaGmOI0dlOox0
+  salt_master_address: ==IPV4_NET_CONTROL_PREFIX==.15
+  salt_master_hostname: cfg01
+  salt_master_management_address: ==IPV4_NET_ADMIN_PREFIX==.66
+  shared_reclass_branch: ''
+  shared_reclass_url: https://gerrit.mcp.mirantis.com/salt-models/reclass-system.git
+  stacklight_enabled: 'True'
+  stacklight_log_address: ==IPV4_NET_CONTROL_PREFIX==.60
+  stacklight_log_hostname: log
+  stacklight_log_node01_address: ==IPV4_NET_CONTROL_PREFIX==.61
+  stacklight_log_node01_hostname: log01
+  stacklight_log_node02_address: ==IPV4_NET_CONTROL_PREFIX==.62
+  stacklight_log_node02_hostname: log02
+  stacklight_log_node03_address: ==IPV4_NET_CONTROL_PREFIX==.63
+  stacklight_log_node03_hostname: log03
+  stacklight_long_term_storage_type: prometheus
+  stacklight_monitor_address: ==IPV4_NET_CONTROL_PREFIX==.70
+  stacklight_monitor_hostname: mon
+  stacklight_monitor_node01_address: ==IPV4_NET_CONTROL_PREFIX==.71
+  stacklight_monitor_node01_hostname: mon01
+  stacklight_monitor_node02_address: ==IPV4_NET_CONTROL_PREFIX==.72
+  stacklight_monitor_node02_hostname: mon02
+  stacklight_monitor_node03_address: ==IPV4_NET_CONTROL_PREFIX==.73
+  stacklight_monitor_node03_hostname: mon03
+  stacklight_telemetry_address: ==IPV4_NET_CONTROL_PREFIX==.85
+  stacklight_telemetry_hostname: mtr
+  stacklight_telemetry_node01_address: ==IPV4_NET_CONTROL_PREFIX==.86
+  stacklight_telemetry_node01_hostname: mtr01
+  stacklight_telemetry_node02_address: ==IPV4_NET_CONTROL_PREFIX==.87
+  stacklight_telemetry_node02_hostname: mtr02
+  stacklight_telemetry_node03_address: ==IPV4_NET_CONTROL_PREFIX==.88
+  stacklight_telemetry_node03_hostname: mtr03
+  stacklight_version: '2'
+  static_ips_on_deploy_network_enabled: 'False'
+  tenant_network_gateway: ==IPV4_NET_TENANT_PREFIX==.220
+  tenant_network_netmask: 255.255.255.0
+  tenant_network_subnet: ==IPV4_NET_TENANT_PREFIX==.0/24
+  upstream_proxy_enabled: 'False'
+  use_default_network_scheme: 'True'
+  openldap_domain: heat-bm-cicd-queens-contrail-sl.local
+  openldap_enabled: 'True'
+  openldap_organisation: ${_param:cluster_name}
+  ceph_enabled: 'True'
+  ceph_version: "luminous"
+  ceph_hyper_converged: "False"
+  ceph_osd_backend: "bluestore"
+  ceph_osd_count: "3"
+  ceph_osd_node_count: 3
+  ceph_osd_block_db_size: 20
+  ceph_osd_journal_size: 20
+  ceph_osd_bond_mode: "active-backup"
+  ceph_osd_data_partition_prefix: ""
+
+  ceph_public_network_allocation: storage
+  ceph_public_network: "==IPV4_NET_CONTROL_PREFIX==.0/24"
+  ceph_cluster_network: "==IPV4_NET_CONTROL_PREFIX==.0/24"
+
+# for 2018.11.0+
+  ceph_osd_single_address_ranges: "==IPV4_NET_CONTROL_PREFIX==.200-==IPV4_NET_CONTROL_PREFIX==.202"
+  ceph_osd_deploy_address_ranges: "==IPV4_NET_ADMIN_PREFIX==.73-==IPV4_NET_ADMIN_PREFIX==.75"
+  ceph_osd_storage_address_ranges: "==IPV4_NET_CONTROL_PREFIX==.200-==IPV4_NET_CONTROL_PREFIX==.202"
+  ceph_osd_backend_address_ranges: "==IPV4_NET_TENANT_PREFIX==.200-==IPV4_NET_TENANT_PREFIX==.202"
+
+  ceph_osd_data_disks: "/dev/sdb"
+  ceph_osd_journal_or_block_db_disks: "/dev/sdb"
+  ceph_osd_mode: "separated"
+  ceph_osd_deploy_nic: "eth0"
+  ceph_osd_primary_first_nic: "eth1"
+  ceph_osd_primary_second_nic: "eth2"
+  #ceph_mon_node01_address: "172.16.47.66"
+  #ceph_mon_node01_deploy_address: "172.16.48.66"
+  ceph_mon_node01_address: "==IPV4_NET_CONTROL_PREFIX==.66"
+  ceph_mon_node01_hostname: "cmn01"
+  #ceph_mon_node02_address: "172.16.47.67"
+  #ceph_mon_node02_deploy_address: "172.16.48.67"
+  ceph_mon_node02_address: "==IPV4_NET_CONTROL_PREFIX==.67"
+  ceph_mon_node02_hostname: "cmn02"
+  #ceph_mon_node03_address: "172.16.47.68"
+  #ceph_mon_node03_deploy_address: "172.16.48.68"
+  ceph_mon_node03_address: "==IPV4_NET_CONTROL_PREFIX==.68"
+  ceph_mon_node03_hostname: "cmn03"
+  #ceph_rgw_address: "172.16.47.75"
+  ceph_rgw_address: "==IPV4_NET_CONTROL_PREFIX==.75"
+  #ceph_rgw_node01_address: "172.16.47.76"
+  #ceph_rgw_node01_deploy_address: "172.16.48.76"
+  ceph_rgw_node01_address: "==IPV4_NET_CONTROL_PREFIX==.76"
+  ceph_rgw_node01_hostname: "rgw01"
+  #ceph_rgw_node02_address: "172.16.47.77"
+  #ceph_rgw_node02_deploy_address: "172.16.48.77"
+  ceph_rgw_node02_address: "==IPV4_NET_CONTROL_PREFIX==.77"
+  ceph_rgw_node02_hostname: "rgw02"
+  #ceph_rgw_node03_address: "172.16.47.78"
+  #ceph_rgw_node03_deploy_address: "172.16.48.78"
+  ceph_rgw_node03_address: "==IPV4_NET_CONTROL_PREFIX==.78"
+  ceph_rgw_node03_hostname: "rgw03"
+  manila_enabled: 'False'
+  barbican_enabled: 'False'
+  barbican_integration_enabled: 'False'
+  # SSL settings
+  nova_vnc_tls_enabled: 'True'
+  galera_ssl_enabled: 'True'
+  openstack_mysql_x509_enabled: 'True'
+  rabbitmq_ssl_enabled: 'True'
+  openstack_rabbitmq_x509_enabled: 'True'
+  openstack_internal_protocol: 'https'
+  cinder_backup_engine: 'ceph'
+  cinder_ceph_backup_pool_name: 'backups'
diff --git a/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt-context-environment.yaml b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt-context-environment.yaml
new file mode 100644
index 0000000..37c1941
--- /dev/null
+++ b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt-context-environment.yaml
@@ -0,0 +1,513 @@
+nodes:
+    cfg01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: infra_config_node01
+      roles:
+      - infra_config
+      - linux_system_codename_xenial
+      - features_runtest_cfg
+      interfaces:
+        ens3:
+          role: single_static_mgm
+        ens4:
+          role: single_static_ctl
+    # Physical nodes
+
+    kvm01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: infra_kvm_node01
+      roles:
+      - infra_kvm
+      - linux_system_codename_xenial
+      interfaces:
+        enp8s0f0:
+          role: single_mgm_dhcp
+        ens4f1:
+          role: bond_ctl_contrail_lacp
+        ens11f1:
+          role: bond_ctl_contrail_lacp
+
+    kvm02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: infra_kvm_node02
+      roles:
+      - infra_kvm
+      - linux_system_codename_xenial
+      interfaces:
+        enp8s0f0:
+          role: single_mgm_dhcp
+        ens4f1:
+          role: bond_ctl_contrail_lacp
+        ens11f1:
+          role: bond_ctl_contrail_lacp
+
+    kvm03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: infra_kvm_node03
+      roles:
+      - infra_kvm
+      - linux_system_codename_xenial
+      interfaces:
+        enp8s0f0:
+          role: single_mgm_dhcp
+        ens4f1:
+          role: bond_ctl_contrail_lacp
+        ens11f1:
+          role: bond_ctl_contrail_lacp
+
+    kvm04.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: infra_kvm_node04
+      roles:
+      - infra_kvm_wo_gluster
+      - linux_system_codename_xenial
+      - salt_master_host
+      interfaces:
+        enp8s0f0:
+          role: single_mgm_dhcp
+        ens4f1:
+          role: bond_ctl_contrail_lacp
+        ens11f1:
+          role: bond_ctl_contrail_lacp
+
+    kvm05.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: infra_kvm_node05
+      roles:
+      - infra_kvm_wo_gluster
+      - linux_system_codename_xenial
+      - salt_master_host
+      interfaces:
+        enp8s0f0:
+          role: single_mgm_dhcp
+        ens4f1:
+          role: bond_ctl_contrail_lacp
+        ens11f1:
+          role: bond_ctl_contrail_lacp
+
+    kvm06.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: infra_kvm_node06
+      roles:
+      - infra_kvm_wo_gluster
+      - linux_system_codename_xenial
+      - salt_master_host
+      interfaces:
+        enp8s0f0:
+          role: single_mgm_dhcp
+        ens4f1:
+          role: bond_ctl_contrail_lacp
+        ens11f1:
+          role: bond_ctl_contrail_lacp
+
+    osd<<count>>:
+      reclass_storage_name: ceph_osd_rack01
+      roles:
+      - ceph_osd
+      - linux_system_codename_xenial
+      interfaces:
+        eno1:
+          role: single_dhcp
+        ens1f1:
+          role: bond_ctl_contrail_lacp
+        ens2f1:
+          role: bond_ctl_contrail_lacp
+#          role: bond0_ab_vlan_ceph_storage_backend
+# todo: add storage net for ceph to second lacp bond
+
+    cmp<<count>>:
+      reclass_storage_name: openstack_compute_rack01
+      roles:
+      - openstack_compute
+      - linux_system_codename_xenial
+      interfaces:
+        eno1:
+          role: single_dhcp
+        ens1f0:
+          role: bond_ctl_contrail_lacp
+        ens1f1:
+          role: bond_contrail_lacp
+        ens2f0:
+          role: bond_ctl_contrail_lacp
+        ens2f1:
+          role: bond_contrail_lacp
+
+    cid01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: cicd_control_node01
+      roles:
+      - cicd_control_leader
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    cid02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: cicd_control_node02
+      roles:
+      - cicd_control_manager
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    cid03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: cicd_control_node03
+      roles:
+      - cicd_control_manager
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    ctl01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_control_node01
+      roles:
+      - openstack_control_leader
+      - linux_system_codename_xenial
+      classes:
+      - system.linux.system.repo.mcp.apt_mirantis.docker
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    ctl02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_control_node02
+      roles:
+      - openstack_control
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    ctl03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_control_node03
+      roles:
+      - openstack_control
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    dbs01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_database_node01
+      roles:
+      - openstack_database_leader
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    dbs02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_database_node02
+      roles:
+      - openstack_database
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    dbs03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_database_node03
+      roles:
+      - openstack_database
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    msg01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_message_queue_node01
+      roles:
+      - openstack_message_queue
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    msg02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_message_queue_node02
+      roles:
+      - openstack_message_queue
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    msg03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_message_queue_node03
+      roles:
+      - openstack_message_queue
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    prx01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_proxy_node01
+      roles:
+      - openstack_proxy
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    prx02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: openstack_proxy_node02
+      roles:
+      - openstack_proxy
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    mon01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_server_node01
+      roles:
+      - stacklightv2_server_leader
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    mon02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_server_node02
+      roles:
+      - stacklightv2_server
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    mon03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_server_node03
+      roles:
+      - stacklightv2_server
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    nal01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: opencontrail_analytics_node01
+      roles:
+      - opencontrail_analytics
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    nal02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: opencontrail_analytics_node02
+      roles:
+      - opencontrail_analytics
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    nal03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: opencontrail_analytics_node03
+      roles:
+      - opencontrail_analytics
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    ntw01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: opencontrail_control_node01
+      roles:
+      - opencontrail_control
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    ntw02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: opencontrail_control_node02
+      roles:
+      - opencontrail_control
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    ntw03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: opencontrail_control_node03
+      roles:
+      - opencontrail_control
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    mtr01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_telemetry_node01
+      roles:
+      - stacklight_telemetry
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    mtr02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_telemetry_node02
+      roles:
+      - stacklight_telemetry
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    mtr03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_telemetry_node03
+      roles:
+      - stacklight_telemetry
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    log01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_log_node01
+      roles:
+      - stacklight_log_leader_v2
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    log02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_log_node02
+      roles:
+      - stacklight_log
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    log03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: stacklight_log_node03
+      roles:
+      - stacklight_log
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    cmn01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: ceph_mon_node01
+      roles:
+      - ceph_mon
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    cmn02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: ceph_mon_node02
+      roles:
+      - ceph_mon
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    cmn03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: ceph_mon_node03
+      roles:
+      - ceph_mon
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    rgw01.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: ceph_rgw_node01
+      roles:
+      - ceph_rgw
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    rgw02.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: ceph_rgw_node02
+      roles:
+      - ceph_rgw
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    rgw03.heat-bm-cicd-queens-contrail-sl.local:
+      reclass_storage_name: ceph_rgw_node03
+      roles:
+      - ceph_rgw
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
diff --git a/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt.yaml b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt.yaml
new file mode 100644
index 0000000..fa3aa30
--- /dev/null
+++ b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/salt.yaml
@@ -0,0 +1,75 @@
+{% set HOSTNAME_CFG01='cfg01.heat-bm-cicd-queens-contrail-sl.local' %}
+{% set LAB_CONFIG_NAME='heat-bm-cicd-queens-contrail-sl' %}
+{% set DOMAIN_NAME='heat-bm-cicd-queens-contrail-sl.local' %}
+
+# Other salt model repository parameters see in shared-salt.yaml
+
+{% import 'shared-salt.yaml' as SHARED with context %}
+
+- description: Wait for salt-master is ready after configdrive user-data
+  cmd: |
+    timeout 120 salt-call test.ping
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 2, delay: 5}
+  skip_fail: false
+
+{{ SHARED.MACRO_INSTALL_SALT_MINIONS() }}
+
+{{SHARED.MACRO_CHECK_SALT_VERSION_SERVICES_ON_CFG()}}
+
+{{SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES()}}
+
+- description: Generate a public key for machines in MAAS
+  cmd: |
+    ssh-keygen -y -f ~root/.ssh/id_rsa > ~root/.ssh/id_rsa.pub
+    maas mirantis sshkeys create key="$(cat ~root/.ssh/id_rsa.pub)"
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+
+- description: Run comissioning of BM nodes
+  cmd: |
+    salt-call maas.process_machines
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+
+- description: Wait for machines ready
+  cmd: |
+    salt-call maas.machines_status && timeout 120 salt-call state.sls maas.machines.wait_for_ready
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 7, delay: 5}
+  skip_fail: false
+
+- description: Enforce the interfaces configuration defined in the model for servers
+  cmd: |
+    salt-call state.sls maas.machines.assign_ip;
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+
+- description: Remove all the salt-minions and re-register the cfg01 minion
+  cmd: |
+    salt-key -y -D;
+    salt-call test.ping
+    sleep 5
+    # Check that the cfg01 is registered
+    salt-key | grep cfg01
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 1, delay: 5}
+  skip_fail: false
+
+- description: provision the automatically commissioned physical nodes through MAAS
+  cmd: |
+    salt-call maas.deploy_machines;
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 3, delay: 5}
+  skip_fail: false
+
+- description: Wait for machines deployed
+  cmd: |
+    salt-call maas.machines_status && timeout 300 salt-call state.sls maas.machines.wait_for_deployed
+  node_name: {{ HOSTNAME_CFG01 }}
+  retry: {count: 6, delay: 5}
+  skip_fail: false
+
diff --git a/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay--user-data-foundation.yaml b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay--user-data-foundation.yaml
new file mode 100644
index 0000000..c9fd9d6
--- /dev/null
+++ b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay--user-data-foundation.yaml
@@ -0,0 +1,82 @@
+#cloud-config, see http://cloudinit.readthedocs.io/en/latest/topics/examples.html
+
+ssh_pwauth: True
+users:
+  - name: root
+    sudo: ALL=(ALL) NOPASSWD:ALL
+    shell: /bin/bash
+  - name: jenkins
+    sudo: ALL=(ALL) NOPASSWD:ALL
+    shell: /bin/bash
+    ssh_authorized_keys:
+      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFSxeuXh2sO4VYL8N2dlNFVyNcr2RvoH4MeDD/cV2HThfU4/BcH6IOOWXSDibIU279bWVKCL7QUp3mf0Vf7HPuyFuC12QM+l7MwT0jCYh5um3hmAvM6Ga0nkhJygHexe9/rLEYzZJkIjP9/IS/YXSv8rhHg484wQ6qkEuq15nyMqil8tbDQCq0XQ+AWEpNpIa4pUoKmFMsOP8lq10KZXIXsJyZxizadr6Bh4Lm9LWrk8YCw7qP3rmgWxK/s8qXQh1ISZe6ONfcmk6p03qbh4H3CwKyWzxmnIHQvE6PgN/O+PuAZj3PbR2mkkJjYX4jNPlxvj8uTStaVPhAwfR9Spdx jenkins@cz8133
+
+disable_root: false
+chpasswd:
+  list: |
+    root:r00tme
+    jenkins:qalab
+  expire: False
+
+packages:
+  - openjdk-8-jre-headless
+  - libyaml-dev
+  - libffi-dev
+  - libvirt-dev
+  - python-dev
+  - python-pip
+  - python-virtualenv
+  #- python-psycopg2
+  - pkg-config
+  - vlan
+  - bridge-utils
+  - ebtables
+
+bootcmd:
+  # Enable root access
+  - sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
+  - service sshd restart
+output:
+  all: '| tee -a /var/log/cloud-init-output.log /dev/tty0'
+
+runcmd:
+  # Create swap
+  - fallocate -l 16G /swapfile
+  - chmod 600 /swapfile
+  - mkswap /swapfile
+  - swapon /swapfile
+  - echo "/swapfile   none    swap    defaults   0   0" >> /etc/fstab
+  - find /etc/network/interfaces.d/ -type f -delete
+  - kill $(pidof /sbin/dhclient) || /bin/true
+  - ip a flush dev ens3
+  - ip a flush dev ens4
+  - rm -f /var/run/network/ifstate.ens3
+  - rm -f /var/run/network/ifstate.ens4
+  - ip route delete default || /bin/true
+  - ifup ens3
+  - ifup ens4
+
+write_files:
+  - path: /etc/default/grub.d/97-enable-grub-menu.cfg
+    content: |
+      GRUB_RECORDFAIL_TIMEOUT=30
+      GRUB_TIMEOUT=3
+      GRUB_TIMEOUT_STYLE=menu
+
+  - path: /etc/network/interfaces
+    content: |
+      auto ens3
+      iface ens3 inet static
+      address $management_static_ip
+      netmask 255.255.255.192
+      gateway $management_gw
+      dns-nameservers $dnsaddress
+
+      auto ens4
+      iface ens4 inet static
+      address $control_static_ip
+      netmask 255.255.255.0
+
+  - path: /etc/bash_completion.d/fuel_devops30_activate
+    content: |
+      source /home/jenkins/fuel-devops30/bin/activate
diff --git a/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay-userdata.yaml b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay-userdata.yaml
new file mode 100644
index 0000000..567a445
--- /dev/null
+++ b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay-userdata.yaml
@@ -0,0 +1,78 @@
+#cloud-config, see http://cloudinit.readthedocs.io/en/latest/topics/examples.html
+
+ssh_pwauth: True
+users:
+   - name: root
+     sudo: ALL=(ALL) NOPASSWD:ALL
+     shell: /bin/bash
+
+disable_root: false
+chpasswd:
+   list: |
+    root:r00tme
+   expire: False
+
+bootcmd:
+   # Enable root access
+   - sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
+   - service sshd restart
+output:
+    all: '| tee -a /var/log/cloud-init-output.log /dev/tty0'
+
+runcmd:
+   - if lvs vg0; then pvresize /dev/vda3; fi
+   - if lvs vg0; then /usr/bin/growlvm.py --image-layout-file /usr/share/growlvm/image-layout.yml; fi
+
+   - export TERM=linux
+   - export LANG=C
+   # Configure dhclient
+   - sudo resolvconf -u
+   #- sudo echo "nameserver {gateway}" >> /etc/resolvconf/resolv.conf.d/base
+   # Enable grub menu using updated config below
+   - update-grub
+
+   # Prepare network connection
+   - sudo ifup ens3
+   #- sudo route add default gw {gateway} {interface_name}
+
+   # Create swap
+   - fallocate -l 16G /swapfile
+   - chmod 600 /swapfile
+   - mkswap /swapfile
+   - swapon /swapfile
+   - echo "/swapfile   none    swap    defaults   0   0" >> /etc/fstab
+
+write_files:
+   - path: /etc/default/grub.d/97-enable-grub-menu.cfg
+     content: |
+         GRUB_RECORDFAIL_TIMEOUT=30
+         GRUB_TIMEOUT=3
+         GRUB_TIMEOUT_STYLE=menu
+
+   - path: /etc/network/interfaces
+     content: |
+          auto ens3
+          iface ens3 inet dhcp
+
+   - path: /usr/share/growlvm/image-layout.yml
+     content: |
+       root:
+         size: '65%VG'
+       home:
+         size: '1%VG'
+       var_log:
+         size: '10%VG'
+       var_log_audit:
+         size: '5%VG'
+       var_tmp:
+         size: '10%VG'
+       tmp:
+         size: '5%VG'
+     owner: root:root
+
+growpart:
+    mode: auto
+    devices:
+      - '/'
+      - '/dev/vda3'
+    ignore_growroot_disabled: false
diff --git a/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay.hot b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay.hot
new file mode 100644
index 0000000..b018a20
--- /dev/null
+++ b/tcp_tests/templates/heat-bm-cicd-queens-contrail-sl/underlay.hot
@@ -0,0 +1,101 @@
+---
+
+heat_template_version: queens
+
+description: MCP environment for heat-bm-cicd-queens-contrail-sl
+
+parameters:
+  instance_domain:
+    type: string
+    default: heat-bm-cicd-queens-contrail-sl.local
+  mcp_version:
+    type: string
+  env_name:
+    type: string
+  key_pair:
+    type: string
+  cfg_flavor:
+    type: string
+  vsrx_flavor:
+    type: string
+  foundation_image:
+    type: string
+  foundation_flavor:
+    type: string
+
+resources:
+  subnets:
+    type: MCP::Subnets
+    properties:
+      stack_name: { get_param: "OS::stack_name" }
+      env_name: { get_param: env_name }
+      management_net: 'system-phys-2421'
+      control_net: 'system-phys-2422'
+      tenant_net: 'system-phys-2423'
+      external_net: 'system-phys-2424'
+
+  #flavors:
+  #  type: MCP::Flavors
+
+  cfg01_node:
+    type: MCP::MasterNode
+    depends_on: [subnets]
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      cfg01_flavor: { get_param: cfg_flavor }
+      management_net: 'system-phys-2421'
+      control_net: 'system-phys-2422'
+      tenant_net: 'system-phys-2423'
+      external_net: 'system-phys-2424'
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '15' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '15' ]
+      instance_name: cfg01
+      instance_domain: {get_param: instance_domain}
+
+  foundation_node:
+    type: MCP::FoundationNode
+    depends_on: [subnets]
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance_name: foundation
+      management_net: 'system-phys-2421'
+      control_net: 'system-phys-2422'
+      tenant_net: 'system-phys-2423'
+      external_net: 'system-phys-2424'
+      instance_image: { get_param: foundation_image }
+      instance_flavor: {get_param: foundation_flavor}
+      underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+      management_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, management_net_prefix] }, '125' ]
+      control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, control_net_prefix] }, '5' ]
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '5' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '5' ]
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+outputs:
+  foundation_public_ip:
+    description: foundation node IP address (management)
+    value:
+      get_attr:
+      - foundation_node
+      - instance_address
+...
diff --git a/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay.hot b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay.hot
index c8ec4fe..d1f77b4 100644
--- a/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-k8s-calico-sl/underlay.hot
@@ -59,6 +59,16 @@
     properties:
       stack_name: { get_param: "OS::stack_name" }
       env_name: { get_param: env_name }
+  subnets:
+    depends_on: [networks]
+    type: MCP::Subnets
+    properties:
+      stack_name: { get_param: "OS::stack_name" }
+      env_name: { get_param: env_name }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
 
   #flavors:
   #  type: MCP::Flavors
@@ -70,17 +80,20 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       cfg01_flavor: { get_param: cfg_flavor }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '15' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '15' ]
       instance_name: cfg01
       instance_domain: {get_param: instance_domain}
-      network: { get_attr: [networks, network] }
 
   control_cluster:
     type: MCP::MultipleInstance
@@ -94,44 +107,43 @@
       instance03_name: ctl03
       instance01_role: k8s_controller
       instance_flavor: {get_param: ctl_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '11' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '12' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '13' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '11' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '12' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '13' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '11' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '12' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '13' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -146,44 +158,43 @@
       instance02_name: kvm02
       instance03_name: kvm03
       instance_flavor: {get_param: kvm_fake_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '241' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '242' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '243' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '241' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '242' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '243' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '241' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '242' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '243' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -198,44 +209,43 @@
       instance02_name: cid02
       instance03_name: cid03
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '91' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '92' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '93' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '91' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '92' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '93' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '91' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '92' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '93' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -250,44 +260,43 @@
       instance02_name: mon02
       instance03_name: mon03
       instance_flavor: {get_param: mon_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '71' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '72' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '73' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '71' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '72' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '73' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '71' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '72' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '73' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -302,44 +311,43 @@
       instance02_name: log02
       instance03_name: log03
       instance_flavor: {get_param: log_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '61' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '62' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '63' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '61' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '62' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '63' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '61' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '62' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '63' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -354,44 +362,43 @@
       instance02_name: mtr02
       instance03_name: mtr03
       instance_flavor: {get_param: mtr_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '86' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '87' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '88' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '86' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '87' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '88' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '86' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '87' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '88' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -404,20 +411,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx01
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '221' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '221' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '221' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -430,20 +436,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx02
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '222' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '222' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '222' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -456,20 +461,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp001
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '101' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '101' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '101' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -482,20 +486,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp002
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '102' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '102' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '102' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -508,20 +511,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp003
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '103' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '103' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '103' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '103' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '103' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '103' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -534,20 +536,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp004
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '104' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '104' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '104' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '104' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '104' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '104' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -561,34 +562,32 @@
       instance_name: foundation
       instance_image: { get_param: foundation_image }
       instance_flavor: {get_param: foundation_flavor}
-      network: { get_attr: [networks, network] }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+      management_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, management_net_prefix] }, '5' ]
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '5' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '5' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '5' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
 outputs:
-
-  control_subnet_cidr:
-    description: Control network CIDR
-    value: { get_param: control_subnet_cidr }
-
-  management_subnet_cidr:
-    description: Admin network CIDR
-    value: { get_param: management_subnet_cidr }
-
-  foundation_floating:
+  foundation_public_ip:
     description: foundation node IP address (floating) from external network
     value:
       get_attr:
diff --git a/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot b/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot
index 0003d16..6bf5b77 100644
--- a/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-k8s-contrail41-sl/underlay.hot
@@ -65,6 +65,16 @@
     properties:
       stack_name: { get_param: "OS::stack_name" }
       env_name: { get_param: env_name }
+  subnets:
+    depends_on: [networks]
+    type: MCP::Subnets
+    properties:
+      stack_name: { get_param: "OS::stack_name" }
+      env_name: { get_param: env_name }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
 
   #flavors:
   #  type: MCP::Flavors
@@ -76,17 +86,20 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       cfg01_flavor: { get_param: cfg_flavor }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '15' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '15' ]
       instance_name: cfg01
       instance_domain: {get_param: instance_domain}
-      network: { get_attr: [networks, network] }
 
   control_cluster:
     type: MCP::MultipleInstance
@@ -100,44 +113,43 @@
       instance03_name: ctl03
       instance01_role: k8s_controller
       instance_flavor: {get_param: ctl_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '11' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '12' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '13' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '11' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '12' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '13' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '11' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '12' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '13' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -152,44 +164,43 @@
       instance02_name: kvm02
       instance03_name: kvm03
       instance_flavor: {get_param: kvm_fake_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '241' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '242' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '243' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '241' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '242' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '243' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '241' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '242' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '243' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -204,44 +215,43 @@
       instance02_name: cid02
       instance03_name: cid03
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '91' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '92' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '93' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '91' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '92' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '93' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '91' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '92' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '93' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -256,44 +266,43 @@
       instance02_name: mon02
       instance03_name: mon03
       instance_flavor: {get_param: mon_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '71' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '72' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '73' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '71' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '72' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '73' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '71' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '72' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '73' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -308,44 +317,43 @@
       instance02_name: log02
       instance03_name: log03
       instance_flavor: {get_param: log_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '61' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '62' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '63' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '61' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '62' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '63' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '61' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '62' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '63' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -360,44 +368,43 @@
       instance02_name: mtr02
       instance03_name: mtr03
       instance_flavor: {get_param: mtr_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '86' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '87' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '88' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '86' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '87' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '88' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '86' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '87' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '88' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -412,44 +419,43 @@
       instance02_name: cmn02
       instance03_name: cmn03
       instance_flavor: {get_param: cmn_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '66' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '67' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '68' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '66' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '67' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '68' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '66' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '67' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '68' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -464,44 +470,43 @@
       instance02_name: rgw02
       instance03_name: rgw03
       instance_flavor: {get_param: rgw_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '76' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '77' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '78' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '76' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '77' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '78' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '76' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '77' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '78' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -516,44 +521,43 @@
       instance02_name: osd002
       instance03_name: osd003
       instance_flavor: {get_param: osd_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '201' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '202' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '203' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '201' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '202' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '203' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '201' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '202' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '203' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -566,20 +570,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx01
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '221' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '221' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '221' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -592,20 +595,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx02
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '222' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '222' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '222' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
   cmp001_virtual:
@@ -617,20 +619,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp001
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '101' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '101' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '101' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -643,20 +644,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp002
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '102' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '102' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '102' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -670,34 +670,32 @@
       instance_name: foundation
       instance_image: { get_param: foundation_image }
       instance_flavor: {get_param: foundation_flavor}
-      network: { get_attr: [networks, network] }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+      management_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, management_net_prefix] }, '5' ]
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '5' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '5' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '5' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
 outputs:
-
-  control_subnet_cidr:
-    description: Control network CIDR
-    value: { get_param: control_subnet_cidr }
-
-  management_subnet_cidr:
-    description: Admin network CIDR
-    value: { get_param: management_subnet_cidr }
-
-  foundation_floating:
+  foundation_public_ip:
     description: foundation node IP address (floating) from external network
     value:
       get_attr:
diff --git a/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot b/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot
index 158f366..c6287c6 100644
--- a/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-k8s-genie/underlay.hot
@@ -60,6 +60,17 @@
       stack_name: { get_param: "OS::stack_name" }
       env_name: { get_param: env_name }
 
+  subnets:
+    depends_on: [networks]
+    type: MCP::Subnets
+    properties:
+      stack_name: { get_param: "OS::stack_name" }
+      env_name: { get_param: env_name }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
+
   #flavors:
   #  type: MCP::Flavors
 
@@ -70,17 +81,20 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       cfg01_flavor: { get_param: cfg_flavor }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '15' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '15' ]
       instance_name: cfg01
       instance_domain: {get_param: instance_domain}
-      network: { get_attr: [networks, network] }
 
   control_cluster:
     type: MCP::MultipleInstance
@@ -94,44 +108,43 @@
       instance03_name: ctl03
       instance01_role: [k8s_controller]
       instance_flavor: {get_param: ctl_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '11' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '12' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '13' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '11' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '12' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '13' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '11' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '12' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '13' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -146,44 +159,43 @@
       instance02_name: kvm02
       instance03_name: kvm03
       instance_flavor: {get_param: kvm_fake_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '241' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '242' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '243' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '241' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '242' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '243' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '241' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '242' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '243' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -198,44 +210,43 @@
       instance02_name: cid02
       instance03_name: cid03
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '91' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '92' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '93' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '91' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '92' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '93' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '91' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '92' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '93' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -248,20 +259,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx01
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '221' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '221' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '221' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '221' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -274,20 +284,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx02
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '222' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '222' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '222' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '222' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -300,20 +309,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp001
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '101' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '101' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '101' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -326,20 +334,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp002
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '102' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '102' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '102' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -352,20 +359,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp003
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '103' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '103' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '103' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '103' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '103' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '103' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -378,20 +384,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp004
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '104' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '104' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '104' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '104' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '104' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '104' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -405,34 +410,32 @@
       instance_name: foundation
       instance_image: { get_param: foundation_image }
       instance_flavor: {get_param: foundation_flavor}
-      network: { get_attr: [networks, network] }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+      management_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, management_net_prefix] }, '5' ]
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '5' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '5' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '5' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
 outputs:
-
-  control_subnet_cidr:
-    description: Control network CIDR
-    value: { get_param: control_subnet_cidr }
-
-  management_subnet_cidr:
-    description: Admin network CIDR
-    value: { get_param: management_subnet_cidr }
-
-  foundation_floating:
+  foundation_public_ip:
     description: foundation node IP address (floating) from external network
     value:
       get_attr:
diff --git a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
index 4b82924..bca1c84 100644
--- a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
@@ -74,6 +74,16 @@
     properties:
       stack_name: { get_param: "OS::stack_name" }
       env_name: { get_param: env_name }
+  subnets:
+    depends_on: [networks]
+    type: MCP::Subnets
+    properties:
+      stack_name: { get_param: "OS::stack_name" }
+      env_name: { get_param: env_name }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
 
   #flavors:
   #  type: MCP::Flavors
@@ -85,17 +95,20 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       cfg01_flavor: { get_param: cfg_flavor }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '15' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '15' ]
       instance_name: cfg01
       instance_domain: {get_param: instance_domain}
-      network: { get_attr: [networks, network] }
 
   control_cluster:
     type: MCP::MultipleInstance
@@ -108,44 +121,43 @@
       instance02_name: ctl02
       instance03_name: ctl03
       instance_flavor: {get_param: ctl_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '11' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '12' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '13' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '11' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '12' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '13' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '11' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '12' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '13' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -160,44 +172,43 @@
       instance02_name: dbs02
       instance03_name: dbs03
       instance_flavor: {get_param: dbs_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '51' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '52' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '53' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '51' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '52' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '53' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '51' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '52' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '53' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -212,44 +223,43 @@
       instance02_name: kvm02
       instance03_name: kvm03
       instance_flavor: {get_param: kvm_fake_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '241' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '242' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '243' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '241' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '242' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '243' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '241' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '242' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '243' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -264,44 +274,43 @@
       instance02_name: msg02
       instance03_name: msg03
       instance_flavor: {get_param: msg_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '41' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '42' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '43' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '41' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '42' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '43' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '41' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '42' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '43' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -316,44 +325,43 @@
       instance02_name: cid02
       instance03_name: cid03
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '91' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '92' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '93' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '91' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '92' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '93' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '91' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '92' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '93' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -368,44 +376,43 @@
       instance02_name: ntw02
       instance03_name: ntw03
       instance_flavor: {get_param: ntw_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '21' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '21' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '22' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '22' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '23' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '23' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '21' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '21' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '22' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '22' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '23' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '23' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '21' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '21' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '22' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '22' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '23' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '23' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -420,44 +427,43 @@
       instance02_name: nal02
       instance03_name: nal03
       instance_flavor: {get_param: nal_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '31' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '31' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '32' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '32' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '33' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '33' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '31' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '31' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '32' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '32' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '33' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '33' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '31' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '31' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '32' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '32' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '33' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '33' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -472,44 +478,43 @@
       instance02_name: mon02
       instance03_name: mon03
       instance_flavor: {get_param: mon_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '71' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '72' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '73' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '71' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '72' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '73' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '71' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '72' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '73' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -524,44 +529,43 @@
       instance02_name: log02
       instance03_name: log03
       instance_flavor: {get_param: log_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '61' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '62' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '63' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '61' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '62' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '63' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '61' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '62' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '63' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -576,44 +580,43 @@
       instance02_name: mtr02
       instance03_name: mtr03
       instance_flavor: {get_param: mtr_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '86' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '87' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '88' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '86' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '87' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '88' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '86' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '87' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '87' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '88' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '88' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -628,44 +631,43 @@
       instance02_name: cmn02
       instance03_name: cmn03
       instance_flavor: {get_param: cmn_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '66' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '67' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '68' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '66' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '67' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '68' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '66' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '67' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '68' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
   ceph_rgw_cluster:
@@ -679,44 +681,43 @@
       instance02_name: rgw02
       instance03_name: rgw03
       instance_flavor: {get_param: rgw_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '76' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '77' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '78' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '76' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '77' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '78' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '76' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '77' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '78' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
   ceph_osd_cluster:
@@ -730,44 +731,43 @@
       instance02_name: osd002
       instance03_name: osd003
       instance_flavor: {get_param: osd_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '201' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '202' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '203' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '201' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '202' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '203' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '201' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '202' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '203' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -780,20 +780,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx01
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '81' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '81' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '81' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -806,20 +805,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp001
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '101' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '101' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '101' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -832,20 +830,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp002
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '102' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '102' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '102' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -859,20 +856,27 @@
       instance_name: foundation
       instance_image: { get_param: foundation_image }
       instance_flavor: {get_param: foundation_flavor}
-      network: { get_attr: [networks, network] }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+      management_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, management_net_prefix] }, '5' ]
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '5' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '5' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '5' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
   vsrx_node:
@@ -884,33 +888,27 @@
       instance_domain: {get_param: instance_domain}
       instance_name: vsrx
       instance_flavor: {get_param: vsrx_flavor}
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       instance_image: system_vsrx-12.1X46-D20.5
-      network: { get_attr: [networks, network] }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '220' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '220' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '220' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '220' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '220' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '220' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
 outputs:
-
-  control_subnet_cidr:
-    description: Control network CIDR
-    value: { get_param: control_subnet_cidr }
-
-  management_subnet_cidr:
-    description: Admin network CIDR
-    value: { get_param: management_subnet_cidr }
-
-  foundation_floating:
+  foundation_public_ip:
     description: foundation node IP address (floating) from external network
     value:
       get_attr:
diff --git a/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot b/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
index ea0cb7a..df23b9d 100644
--- a/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
@@ -79,6 +79,16 @@
     properties:
       stack_name: { get_param: "OS::stack_name" }
       env_name: { get_param: env_name }
+  subnets:
+    depends_on: [networks]
+    type: MCP::Subnets
+    properties:
+      stack_name: { get_param: "OS::stack_name" }
+      env_name: { get_param: env_name }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
 
   #flavors:
   #  type: MCP::Flavors
@@ -90,17 +100,20 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       cfg01_flavor: { get_param: cfg_flavor }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '15' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '15' ]
       instance_name: cfg01
       instance_domain: {get_param: instance_domain}
-      network: { get_attr: [networks, network] }
 
   control_cluster:
     type: MCP::MultipleInstance
@@ -113,44 +126,43 @@
       instance02_name: ctl02
       instance03_name: ctl03
       instance_flavor: {get_param: ctl_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '11' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '12' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '13' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '11' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '12' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '13' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '11' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '12' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '13' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -165,44 +177,43 @@
       instance02_name: dbs02
       instance03_name: dbs03
       instance_flavor: {get_param: dbs_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '51' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '52' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '53' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '51' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '52' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '53' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '51' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '52' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '53' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -217,44 +228,43 @@
       instance02_name: kvm02
       instance03_name: kvm03
       instance_flavor: {get_param: kvm_fake_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '241' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '242' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '243' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '241' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '242' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '243' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '241' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '242' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '243' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -269,44 +279,43 @@
       instance02_name: msg02
       instance03_name: msg03
       instance_flavor: {get_param: msg_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '41' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '42' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '43' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '41' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '42' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '43' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '41' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '42' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '43' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -321,44 +330,43 @@
       instance02_name: cid02
       instance03_name: cid03
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '91' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '92' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '93' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '91' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '92' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '93' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '91' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '92' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '93' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -373,44 +381,43 @@
       instance02_name: mon02
       instance03_name: mon03
       instance_flavor: {get_param: mon_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '71' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '72' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '73' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '71' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '72' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '73' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '71' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '72' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '73' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -425,44 +432,43 @@
       instance02_name: log02
       instance03_name: log03
       instance_flavor: {get_param: log_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '61' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '62' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '63' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '61' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '62' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '63' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '61' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '62' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '63' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -477,44 +483,43 @@
       instance02_name: mtr02
       instance03_name: mtr03
       instance_flavor: {get_param: mtr_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '97' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '97' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '98' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '98' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '99' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '99' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '97' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '97' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '98' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '98' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '99' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '99' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '97' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '97' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '98' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '98' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '99' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '99' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -527,20 +532,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx01
       instance_flavor: {get_param: prx_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '81' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '81' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '81' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -553,20 +557,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx02
       instance_flavor: {get_param: prx_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '82' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '82' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '82' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '82' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '82' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '82' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -579,20 +582,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp001
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '101' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '101' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '101' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -605,20 +607,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp002
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '102' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '102' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '102' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -632,20 +633,27 @@
       instance_name: foundation
       instance_image: { get_param: foundation_image }
       instance_flavor: {get_param: foundation_flavor}
-      network: { get_attr: [networks, network] }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+      management_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, management_net_prefix] }, '5' ]
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '5' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '5' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '5' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -660,44 +668,43 @@
       instance02_name: cmn02
       instance03_name: cmn03
       instance_flavor: {get_param: cmn_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '66' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '67' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '68' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '66' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '67' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '68' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '66' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '67' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '68' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -712,44 +719,43 @@
       instance02_name: rgw02
       instance03_name: rgw03
       instance_flavor: {get_param: rgw_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '76' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '77' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '78' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '76' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '77' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '78' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '76' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '77' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '78' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -764,44 +770,43 @@
       instance02_name: osd002
       instance03_name: osd003
       instance_flavor: {get_param: osd_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '201' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '202' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '203' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '201' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '202' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '203' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '201' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '202' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '203' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -816,44 +821,43 @@
       instance02_name: gtw02
       instance03_name: gtw03
       instance_flavor: {get_param: gtw_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '224' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '224' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '225' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '225' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '226' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '226' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '224' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '224' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '225' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '225' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '226' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '226' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '224' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '224' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '225' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '225' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '226' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '226' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -868,44 +872,43 @@
       instance02_name: kmn02
       instance03_name: kmn03
       instance_flavor: {get_param: kmn_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '45' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '45' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '46' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '46' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '47' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '47' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '45' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '45' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '46' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '46' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '47' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '47' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '45' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '45' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '46' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '46' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '47' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '47' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -918,20 +921,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: dns01
       instance_flavor: {get_param: dns_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '113' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '113' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '113' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '113' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '113' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '113' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -944,20 +946,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: dns02
       instance_flavor: {get_param: dns_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '114' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '114' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '114' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '114' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '114' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '114' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -972,58 +973,49 @@
       instance02_name: mdb02
       instance03_name: mdb03
       instance_flavor: {get_param: mdb_flavor}
-      network: { get_attr: [networks, network] }
+      network: { get_attr: [subnets, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '84' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '84' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '85' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '85' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '86' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '84' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '84' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '85' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '85' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '86' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '84' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '84' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '85' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '85' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '86' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
 outputs:
-
-  control_subnet_cidr:
-    description: Control network CIDR
-    value: { get_param: control_subnet_cidr }
-
-  management_subnet_cidr:
-    description: Admin network CIDR
-    value: { get_param: management_subnet_cidr }
-
-  foundation_floating:
+  foundation_public_ip:
     description: foundation node IP address (floating) from external network
     value:
       get_attr:
diff --git a/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot b/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
index f759b3a..6020707 100644
--- a/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
@@ -79,6 +79,16 @@
     properties:
       stack_name: { get_param: "OS::stack_name" }
       env_name: { get_param: env_name }
+  subnets:
+    depends_on: [networks]
+    type: MCP::Subnets
+    properties:
+      stack_name: { get_param: "OS::stack_name" }
+      env_name: { get_param: env_name }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
 
   #flavors:
   #  type: MCP::Flavors
@@ -90,17 +100,20 @@
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
       cfg01_flavor: { get_param: cfg_flavor }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '15' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '15' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '15' ]
       instance_name: cfg01
       instance_domain: {get_param: instance_domain}
-      network: { get_attr: [networks, network] }
 
   control_cluster:
     type: MCP::MultipleInstance
@@ -113,44 +126,43 @@
       instance02_name: ctl02
       instance03_name: ctl03
       instance_flavor: {get_param: ctl_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '11' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '12' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '13' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '11' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '12' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '13' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '11' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '11' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '12' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '12' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '13' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '13' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -165,44 +177,43 @@
       instance02_name: dbs02
       instance03_name: dbs03
       instance_flavor: {get_param: dbs_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '51' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '52' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '53' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '51' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '52' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '53' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '51' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '51' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '52' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '52' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '53' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '53' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -217,44 +228,43 @@
       instance02_name: kvm02
       instance03_name: kvm03
       instance_flavor: {get_param: kvm_fake_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '241' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '242' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '243' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '241' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '242' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '243' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '241' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '241' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '242' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '242' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '243' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '243' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -269,44 +279,43 @@
       instance02_name: msg02
       instance03_name: msg03
       instance_flavor: {get_param: msg_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '41' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '42' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '43' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '41' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '42' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '43' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '41' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '41' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '42' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '42' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '43' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '43' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -321,44 +330,43 @@
       instance02_name: cid02
       instance03_name: cid03
       instance_flavor: {get_param: cid_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '91' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '92' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '93' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '91' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '92' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '93' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '91' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '91' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '92' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '92' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '93' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '93' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -373,44 +381,43 @@
       instance02_name: mon02
       instance03_name: mon03
       instance_flavor: {get_param: mon_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '71' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '72' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '73' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '71' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '72' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '73' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '71' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '71' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '72' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '72' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '73' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '73' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -425,44 +432,43 @@
       instance02_name: log02
       instance03_name: log03
       instance_flavor: {get_param: log_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '61' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '62' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '63' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '61' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '62' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '63' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '61' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '61' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '62' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '62' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '63' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '63' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -477,44 +483,43 @@
       instance02_name: mtr02
       instance03_name: mtr03
       instance_flavor: {get_param: mtr_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '97' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '97' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '98' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '98' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '99' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '99' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '97' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '97' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '98' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '98' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '99' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '99' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '97' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '97' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '98' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '98' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '99' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '99' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -527,20 +532,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx01
       instance_flavor: {get_param: prx_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '81' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '81' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '81' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '81' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -553,20 +557,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: prx02
       instance_flavor: {get_param: prx_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '82' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '82' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '82' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '82' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '82' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '82' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -579,20 +582,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp001
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '101' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '101' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '101' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '101' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -605,20 +607,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: cmp002
       instance_flavor: {get_param: cmp_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '102' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '102' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '102' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '102' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -632,20 +633,27 @@
       instance_name: foundation
       instance_image: { get_param: foundation_image }
       instance_flavor: {get_param: foundation_flavor}
-      network: { get_attr: [networks, network] }
+      management_net: { list_join: ['-', [ 'management_net', { get_param: env_name } ]] }
+      control_net: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
+      tenant_net: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
+      external_net: { list_join: ['-', [ 'external_net', { get_param: env_name } ]] }
       underlay_userdata: { get_file: ./underlay--user-data-foundation.yaml }
+      management_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, management_net_prefix] }, '5' ]
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '5' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '5' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '5' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '5' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -660,44 +668,43 @@
       instance02_name: cmn02
       instance03_name: cmn03
       instance_flavor: {get_param: cmn_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '66' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '67' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '68' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '66' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '67' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '68' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '66' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '66' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '67' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '67' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '68' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '68' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -712,44 +719,43 @@
       instance02_name: rgw02
       instance03_name: rgw03
       instance_flavor: {get_param: rgw_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '76' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '77' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '78' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '76' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '77' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '78' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '76' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '76' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '77' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '77' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '78' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '78' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -764,44 +770,43 @@
       instance02_name: osd002
       instance03_name: osd003
       instance_flavor: {get_param: osd_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '201' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '202' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '203' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '201' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '202' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '203' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '201' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '201' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '202' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '202' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '203' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '203' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -816,44 +821,43 @@
       instance02_name: gtw02
       instance03_name: gtw03
       instance_flavor: {get_param: gtw_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '224' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '224' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '225' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '225' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '226' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '226' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '224' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '224' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '225' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '225' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '226' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '226' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '224' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '224' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '225' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '225' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '226' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '226' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -868,44 +872,43 @@
       instance02_name: kmn02
       instance03_name: kmn03
       instance_flavor: {get_param: kmn_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '45' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '45' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '46' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '46' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '47' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '47' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '45' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '45' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '46' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '46' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '47' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '47' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '45' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '45' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '46' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '46' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '47' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '47' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -918,20 +921,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: dns01
       instance_flavor: {get_param: dns_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '113' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '113' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '113' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '113' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '113' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '113' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -944,20 +946,19 @@
       instance_domain: {get_param: instance_domain}
       instance_name: dns02
       instance_flavor: {get_param: dns_flavor}
-      network: { get_attr: [networks, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '114' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '114' ]
       tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '114' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '114' ]
       external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '114' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '114' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
@@ -972,58 +973,49 @@
       instance02_name: mdb02
       instance03_name: mdb03
       instance_flavor: {get_param: mdb_flavor}
-      network: { get_attr: [networks, network] }
+      network: { get_attr: [subnets, network] }
       underlay_userdata: { get_file: ./underlay-userdata.yaml }
       instance01_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '84' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '84' ]
       instance02_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '85' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '85' ]
       instance03_control_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, control_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, control_net_prefix] }, '86' ]
       instance01_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '84' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '84' ]
       instance02_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '85' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '85' ]
       instance03_tenant_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, tenant_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '86' ]
       instance01_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '84' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '84' ]
       instance02_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '85' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '85' ]
       instance03_external_net_static_ip:
         list_join:
         - '.'
-        - [ { get_attr: [networks, external_net_prefix] }, '86' ]
+        - [ { get_attr: [subnets, external_net_prefix] }, '86' ]
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
 outputs:
-
-  control_subnet_cidr:
-    description: Control network CIDR
-    value: { get_param: control_subnet_cidr }
-
-  management_subnet_cidr:
-    description: Admin network CIDR
-    value: { get_param: management_subnet_cidr }
-
-  foundation_floating:
+  foundation_public_ip:
     description: foundation node IP address (floating) from external network
     value:
       get_attr: