[TF] Add separate network for TF data plane

Related-PROD: PRODX-4735
Change-Id: I0e4209d4d8ff146442360a87696942172b687747
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: