[TF] Add separate network for TF data plane

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