[TF] Add separate network for TF data plane

Related-PROD: PRODX-4735
Change-Id: I0e4209d4d8ff146442360a87696942172b687747
diff --git a/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3-lma3.yaml b/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3-lma3.yaml
index f309a7e..fc3ccf0 100644
--- a/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3-lma3.yaml
+++ b/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3-lma3.yaml
@@ -3,6 +3,7 @@
   "MCP2::NetworkAccStorage": ../fragments/NetworkAccVMStorage.yaml
   "MCP2::NetworkPrvFl": ../fragments/NetworkPrvFlVSRX.yaml
   "MCP2::NetworkIronicFlat": ../fragments/NetworkIronicFlat.yaml
+  "MCP2::NetworkTFData": ../fragments/NetworkTFData.yaml
   "MCP2::SrvInstances": ../fragments/SrvInstancesVM.yaml
   "MCP2::SrvInstancesCeph": ../fragments/SrvInstancesVMCeph.yaml
   "MCP2::SrvInstancesCephOSD": ../fragments/SrvInstancesVMCephOSD.yaml
@@ -20,11 +21,13 @@
   ntw_size: 3
   ucp_boot_timeout: 3600
   cluster_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp
+  tungstenfabric_enabled: true
   private_floating_network_cidr: '10.11.12.0/24'
   private_floating_network_gateway: '10.11.12.1'
   private_floating_network_ipam_pool_start: '10.11.12.3'
   private_floating_network_ipam_pool_end: '10.11.12.99'
   control_network_vsrx_peering_ip: '10.10.0.131'
+  data_network_vsrx_ip: '10.15.0.131'
   private_floating_interface: 'ens4'
   worker_metadata: {"labels": {"openstack-control-plane":"enabled""role":"ceph-osd-node"}}
   cmp_metadata: {"labels": {"openstack-compute-node":"enabled","tfvrouter":"enabled", "role":"ceph-osd-node","local-volume-provisioner": "enabled"}}
diff --git a/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3.yaml b/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3.yaml
index 44f7cd7..e152c87 100644
--- a/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3.yaml
+++ b/de/heat-templates/env/mstr1-wrkr3-cmp2-ntw3.yaml
@@ -3,6 +3,7 @@
   "MCP2::NetworkAccStorage": ../fragments/NetworkAccVMStorage.yaml
   "MCP2::NetworkPrvFl": ../fragments/NetworkPrvFlVSRX.yaml
   "MCP2::NetworkIronicFlat": ../fragments/NetworkIronicFlat.yaml
+  "MCP2::NetworkTFData": ../fragments/NetworkTFData.yaml
   "MCP2::SrvInstances": ../fragments/SrvInstancesVM.yaml
   "MCP2::SrvInstancesCeph": ../fragments/SrvInstancesVMCeph.yaml
   "MCP2::SrvInstancesCephOSD": ../fragments/SrvInstancesVMCephOSD.yaml
@@ -19,11 +20,13 @@
   ntw_size: 3
   ucp_boot_timeout: 3600
   cluster_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp
+  tungstenfabric_enabled: true
   private_floating_network_cidr: '10.11.12.0/24'
   private_floating_network_ipam_pool_start: '10.11.12.3'
   private_floating_network_ipam_pool_end: '10.11.12.99'
   private_floating_network_gateway: '10.11.12.1'
   control_network_vsrx_peering_ip: '10.10.0.131'
+  data_network_vsrx_ip: '10.15.0.131'
   private_floating_interface: 'ens4'
   worker_metadata: {"labels": {"openstack-control-plane":"enabled","role":"ceph-osd-node","local-volume-provisioner": "enabled"}}
   cmp_metadata: {"labels": {"openstack-compute-node":"enabled","tfvrouter":"enabled", "role":"ceph-osd-node"}}
diff --git a/de/heat-templates/env/mstr1-wrkr3-cmp3-ntw3.yaml b/de/heat-templates/env/mstr1-wrkr3-cmp3-ntw3.yaml
index d46cee8..a98de50 100644
--- a/de/heat-templates/env/mstr1-wrkr3-cmp3-ntw3.yaml
+++ b/de/heat-templates/env/mstr1-wrkr3-cmp3-ntw3.yaml
@@ -3,6 +3,7 @@
   "MCP2::NetworkAccStorage": ../fragments/NetworkAccVMStorage.yaml
   "MCP2::NetworkPrvFl": ../fragments/NetworkPrvFlVSRX.yaml
   "MCP2::NetworkIronicFlat": ../fragments/NetworkIronicFlat.yaml
+  "MCP2::NetworkTFData": ../fragments/NetworkTFData.yaml
   "MCP2::SrvInstances": ../fragments/SrvInstancesVM.yaml
   "MCP2::SrvInstancesCeph": ../fragments/SrvInstancesVMCeph.yaml
   "MCP2::SrvInstancesCephOSD": ../fragments/SrvInstancesVMCephOSD.yaml
@@ -19,11 +20,13 @@
   ntw_size: 3
   ucp_boot_timeout: 3600
   cluster_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp
+  tungstenfabric_enabled: true
   private_floating_network_cidr: '10.11.12.0/24'
   private_floating_network_gateway: '10.11.12.1'
   private_floating_network_ipam_pool_start: '10.11.12.3'
   private_floating_network_ipam_pool_end: '10.11.12.99'
   control_network_vsrx_peering_ip: '10.10.0.131'
+  data_network_vsrx_ip: '10.15.0.131'
   private_floating_interface: 'ens4'
   worker_metadata: {"labels": {"openstack-control-plane":"enabled","role":"ceph-osd-node","local-volume-provisioner": "enabled"}}
   cmp_metadata: {"labels": {"openstack-compute-node":"enabled","tfvrouter":"enabled", "role":"ceph-osd-node"}}
diff --git a/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma0-osd3.yaml b/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma0-osd3.yaml
index a712146..b62f79f 100644
--- a/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma0-osd3.yaml
+++ b/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma0-osd3.yaml
@@ -3,6 +3,7 @@
   "MCP2::NetworkAccStorage": ../fragments/NetworkAccVMStorage.yaml
   "MCP2::NetworkPrvFl": ../fragments/NetworkPrvFlVSRX.yaml
   "MCP2::NetworkIronicFlat": ../fragments/NetworkIronicFlat.yaml
+  "MCP2::NetworkTFData": ../fragments/NetworkTFData.yaml
   "MCP2::SrvInstances": ../fragments/SrvInstancesVM.yaml
   "MCP2::SrvInstancesCeph": ../fragments/SrvInstancesVMCeph.yaml
   "MCP2::SrvInstancesCephOSD": ../fragments/SrvInstancesVMCephOSD.yaml
@@ -25,11 +26,13 @@
   ntw_size: 3
   ucp_boot_timeout: 3600
   cluster_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp
+  tungstenfabric_enabled: true
   private_floating_network_cidr: '10.11.12.0/24'
   private_floating_network_gateway: '10.11.12.1'
   private_floating_network_ipam_pool_start: '10.11.12.3'
   private_floating_network_ipam_pool_end: '10.11.12.99'
   control_network_vsrx_peering_ip: '10.10.0.131'
+  data_network_vsrx_ip: '10.15.0.131'
   private_floating_interface: 'ens4'
   worker_metadata: {"labels": {"openstack-control-plane":"enabled", "openvswitch":"enabled", "openstack-gateway": "enabled","local-volume-provisioner": "enabled","role": "stacklight", "stacklight": "enabled"}}
   cmp_metadata: {"labels": {"openstack-compute-node": "enabled", "tfvrouter": "enabled"}}
diff --git a/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma3-osd3.yaml b/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma3-osd3.yaml
index ddac835..baf3fcf 100644
--- a/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma3-osd3.yaml
+++ b/de/heat-templates/env/mstr3-wrkr3-cmp2-ntw3-lma3-osd3.yaml
@@ -3,6 +3,7 @@
   "MCP2::NetworkAccStorage": ../fragments/NetworkAccVMStorage.yaml
   "MCP2::NetworkPrvFl": ../fragments/NetworkPrvFlVSRX.yaml
   "MCP2::NetworkIronicFlat": ../fragments/NetworkIronicFlat.yaml
+  "MCP2::NetworkTFData": ../fragments/NetworkTFData.yaml
   "MCP2::SrvInstances": ../fragments/SrvInstancesVM.yaml
   "MCP2::SrvInstancesCeph": ../fragments/SrvInstancesVMCeph.yaml
   "MCP2::SrvInstancesCephOSD": ../fragments/SrvInstancesVMCephOSD.yaml
@@ -26,11 +27,13 @@
   ntw_size: 3
   ucp_boot_timeout: 3600
   cluster_public_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp
+  tungstenfabric_enabled: true
   private_floating_network_cidr: '10.11.12.0/24'
   private_floating_network_gateway: '10.11.12.1'
   private_floating_network_ipam_pool_start: '10.11.12.3'
   private_floating_network_ipam_pool_end: '10.11.12.99'
   control_network_vsrx_peering_ip: '10.10.0.131'
+  data_network_vsrx_ip: '10.15.0.131'
   private_floating_interface: 'ens4'
   worker_metadata: {"labels": {"openstack-control-plane": "enabled", "openvswitch": "enabled","openstack-gateway":"enabled","local-volume-provisioner": "enabled"}}
   cmp_metadata: {"labels": {"openstack-compute-node": "enabled", "tfvrouter": "enabled"}}
diff --git a/de/heat-templates/fragments/NetworkPrvFl.yaml b/de/heat-templates/fragments/NetworkPrvFl.yaml
index ac4c5d3..26bb882 100644
--- a/de/heat-templates/fragments/NetworkPrvFl.yaml
+++ b/de/heat-templates/fragments/NetworkPrvFl.yaml
@@ -16,6 +16,10 @@
   control_network_vsrx_peering_ip:
     type: string
     default: ''
+  data_network_vsrx_ip:
+    type: string
+  tf_data_network:
+    type: string
 
 resources:
 
diff --git a/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml b/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml
index b8b63b5..00d7bcf 100644
--- a/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml
+++ b/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml
@@ -13,6 +13,10 @@
     type: string
   control_network_vsrx_peering_ip:
     type: string
+  data_network_vsrx_ip:
+    type: string
+  tf_data_network:
+    type: string
 
 resources:
 
@@ -45,16 +49,25 @@
       fixed_ips:
         - ip_address: { get_param: private_floating_network_gateway}
 
+  tf_data_server_port:
+    type: OS::Neutron::Port
+    properties:
+      network_id: { get_param: tf_data_network }
+      port_security_enabled: false
+      fixed_ips:
+      - ip_address: { get_param: data_network_vsrx_ip}
+
   vsrx_instance:
     type: OS::Nova::Server
     properties:
       name: { list_join: ['-', [get_param: "OS::stack_name", 'vsrx01']] }
       availability_zone: nova
-      image: vsrx-mcp2-tf
+      image: vsrx-mcp2-tf-3-nets
       flavor: oc_vsrx
       networks:
         - port: { get_resource: accessible_server_port }
         - port: { get_resource: private_floating_server_port }
+        - port: { get_resource: tf_data_server_port }
 
 outputs:
   private_floating_network_id:
diff --git a/de/heat-templates/fragments/NetworkTFData.yaml b/de/heat-templates/fragments/NetworkTFData.yaml
new file mode 100644
index 0000000..a98b510
--- /dev/null
+++ b/de/heat-templates/fragments/NetworkTFData.yaml
@@ -0,0 +1,30 @@
+heat_template_version: queens
+
+parameters:
+  tf_data_network_cidr:
+    type: string
+  tf_data_network_pool_start:
+    type: string
+  tf_data_network_pool_end:
+    type: string
+
+resources:
+
+  network:
+    type: OS::Neutron::Net
+  subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      network: { get_resource: network }
+      enable_dhcp: false
+      cidr: { get_param: tf_data_network_cidr }
+      gateway_ip: ~
+      allocation_pools:
+        - start: { get_param: tf_data_network_pool_start }
+          end: { get_param: tf_data_network_pool_end }
+
+outputs:
+  tf_data_network_id:
+    value: { get_resource: network }
+  tf_data_subnet_id:
+    value: { get_resource: subnet }
diff --git a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
index 8ba5d55..5a4d94a 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
@@ -52,6 +52,12 @@
     type: string
   ironic_baremetal_network_cidr:
     type: string
+  tungstenfabric_enabled:
+    type: boolean
+  tf_data_network:
+    type: string
+  tf_data_subnet_id:
+    type: string
   functions_override:
     type: string
   boot_timeout:
@@ -80,6 +86,10 @@
       mounts:
         - [ ephemeral0, null ]
 
+conditions:
+  create_tf_data_network_res:
+    get_param: tungstenfabric_enabled
+
 resources:
 
   software_config:
@@ -141,11 +151,19 @@
       key_name: { get_param: key_name }
       availability_zone: nova
       networks:
-        - port: { get_resource: accessible_server_port }
-        - port: { get_resource: private_floating_server_port }
-        - port: { get_resource: storage_frontend_server_port }
-        - port: { get_resource: storage_backend_server_port }
-        - port: { get_resource: ironic_baremetal_server_port }
+        if:
+        - "create_tf_data_network_res"
+        - - port: { get_resource: accessible_server_port }
+          - port: { get_resource: private_floating_server_port }
+          - port: { get_resource: storage_frontend_server_port }
+          - port: { get_resource: storage_backend_server_port }
+          - port: { get_resource: ironic_baremetal_server_port }
+          - port: { get_resource: tf_data_server_port }
+        - - port: { get_resource: accessible_server_port }
+          - port: { get_resource: private_floating_server_port }
+          - port: { get_resource: storage_frontend_server_port }
+          - port: { get_resource: storage_backend_server_port }
+          - port: { get_resource: ironic_baremetal_server_port }
       user_data_format: SOFTWARE_CONFIG
       user_data: { get_resource:  install_config_agent}
       metadata: { get_param: metadata }
@@ -196,6 +214,15 @@
       fixed_ips:
         - subnet: { get_param: ironic_baremetal_subnet_id }
 
+  tf_data_server_port:
+    type: OS::Neutron::Port
+    condition: create_tf_data_network_res
+    properties:
+      network_id: { get_param: tf_data_network }
+      port_security_enabled: false
+      fixed_ips:
+      - subnet: { get_param: tf_data_subnet_id }
+
   wait_handle:
     type: OS::Heat::WaitConditionHandle
   wait_condition:
@@ -214,6 +241,10 @@
   server_ironic_baremetal_ip:
     description: IP address of server in ironic baremetal network
     value: { get_attr: [ironic_baremetal_server_port, fixed_ips, 0, ip_address] }
+  server_tf_data_ip:
+    description: IP address of server in tf data network
+    value: { get_attr: [tf_data_server_port, fixed_ips, 0, ip_address] }
+    condition: create_tf_data_network_res
   server_public_ip:
     description: Floating IP address of server in public network
     value: { get_attr: [ server_floating_ip, floating_ip_address ] }
diff --git a/de/heat-templates/top.yaml b/de/heat-templates/top.yaml
index 34dcde7..d89529d 100644
--- a/de/heat-templates/top.yaml
+++ b/de/heat-templates/top.yaml
@@ -18,6 +18,10 @@
     type: string
     description: IP address of vsrx for tungsten fabric peering
     default: ''
+  data_network_vsrx_ip:
+    type: string
+    description: IP address of vsrx in tungsten fabric data network
+    default: ''
   masters_size:
     type: number
     description: Number of masters instances to deploy
@@ -129,6 +133,22 @@
     type: string
     default: 'br-baremetal'
     description: 'The name of interface on node to which IP ironic services will bind.'
+  tungstenfabric_enabled:
+    type: boolean
+    default: false
+  tf_data_network_cidr:
+    type: string
+    default: '10.15.0.0/24'
+  tf_data_network_pool_start:
+    type: string
+    default: '10.15.0.2'
+  tf_data_network_pool_end:
+    type: string
+    default: '10.15.0.99'
+  tf_data_network_interface:
+    type: string
+    default: 'ens8'
+    description: 'The name of interface that should be used by vrouter in deployment with TF'
   ucp_metadata:
     type: json
     default: {"role":"ucp"}
@@ -216,6 +236,10 @@
     default: ''
     type: string
 
+conditions:
+  create_tf_data_network_res:
+    get_param: tungstenfabric_enabled
+
 resources:
   key_pair:
     type: OS::Nova::KeyPair
@@ -230,6 +254,14 @@
       public_net_id: { get_param: public_net_id }
       control_network_cidr: { get_param: control_network_cidr }
 
+  tf_data_network:
+    type: MCP2::NetworkTFData
+    condition: create_tf_data_network_res
+    properties:
+      tf_data_network_cidr: { get_param: tf_data_network_cidr }
+      tf_data_network_pool_start: { get_param: tf_data_network_pool_start }
+      tf_data_network_pool_end: { get_param: tf_data_network_pool_end }
+
   private_floating_network:
     type: MCP2::NetworkPrvFl
     properties:
@@ -239,6 +271,8 @@
       private_floating_network_gateway: {get_param: private_floating_network_gateway}
       control_network_vsrx_peering_ip: {get_param: control_network_vsrx_peering_ip}
       accessible_network: { get_attr: [accessible_network, public_network]}
+      data_network_vsrx_ip: { get_param: data_network_vsrx_ip }
+      tf_data_network: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_network_id] }, ""]}
 
   storage_network:
     type: MCP2::NetworkAccStorage
@@ -345,6 +379,9 @@
           ironic_baremetal_network: { get_attr: [ironic_baremetal_network, ironic_baremetal_network_id] }
           ironic_baremetal_subnet_id: { get_attr: [ironic_baremetal_network, ironic_baremetal_subnet_id] }
           ironic_baremetal_network_cidr: { get_param: ironic_baremetal_network_cidr }
+          tungstenfabric_enabled: { get_param: tungstenfabric_enabled }
+          tf_data_network: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_network_id] }, ""]}
+          tf_data_subnet_id: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_subnet_id] }, ""]}
           hardware_metadata: { get_param: hardware_metadata}
 
   cmps:
@@ -384,6 +421,9 @@
           ironic_baremetal_network: { get_attr: [ironic_baremetal_network, ironic_baremetal_network_id] }
           ironic_baremetal_subnet_id: { get_attr: [ironic_baremetal_network, ironic_baremetal_subnet_id] }
           ironic_baremetal_network_cidr: { get_param: ironic_baremetal_network_cidr }
+          tungstenfabric_enabled: { get_param: tungstenfabric_enabled }
+          tf_data_network: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_network_id] }, ""]}
+          tf_data_subnet_id: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_subnet_id] }, ""]}
           hardware_metadata: { get_param: hardware_metadata}
 
   gtws:
@@ -493,6 +533,9 @@
           ironic_baremetal_network: { get_attr: [ironic_baremetal_network, ironic_baremetal_network_id] }
           ironic_baremetal_subnet_id: { get_attr: [ironic_baremetal_network, ironic_baremetal_subnet_id] }
           ironic_baremetal_network_cidr: { get_param: ironic_baremetal_network_cidr }
+          tungstenfabric_enabled: { get_param: tungstenfabric_enabled }
+          tf_data_network: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_network_id] }, ""]}
+          tf_data_subnet_id: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_subnet_id] }, ""]}
           hardware_metadata: { get_param: hardware_metadata}
 
   spares:  # spares for osds/cmps
@@ -532,6 +575,9 @@
           ironic_baremetal_network: { get_attr: [ironic_baremetal_network, ironic_baremetal_network_id] }
           ironic_baremetal_subnet_id: { get_attr: [ironic_baremetal_network, ironic_baremetal_subnet_id] }
           ironic_baremetal_network_cidr: { get_param: ironic_baremetal_network_cidr }
+          tungstenfabric_enabled: { get_param: tungstenfabric_enabled }
+          tf_data_network: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_network_id] }, ""]}
+          tf_data_subnet_id: {if: ["create_tf_data_network_res", { get_attr: [tf_data_network, tf_data_subnet_id] }, ""]}
           hardware_metadata: { get_param: hardware_metadata}
 
   ntws: