Add Ironic network

The patch connects additional ironic network to the following servers:
 * workerks
 * gateways
 * computes
 * spares

Related-Prod: PRODX-4769
Change-Id: I3d28eec496023759a219386ab15d80c79ba442a2
diff --git a/de/heat-templates/fragments/NetworkIronicFlat.yaml b/de/heat-templates/fragments/NetworkIronicFlat.yaml
new file mode 100644
index 0000000..e0da093
--- /dev/null
+++ b/de/heat-templates/fragments/NetworkIronicFlat.yaml
@@ -0,0 +1,33 @@
+heat_template_version: queens
+
+parameters:
+  ironic_baremetal_network_cidr:
+    type: string
+  ironic_baremetal_network_ipam_pool_start:
+    type: string
+  ironic_baremetal_network_ipam_pool_end:
+    type: string
+  ironic_baremetal_network_gateway:
+    type: string
+    default: ''
+
+resources:
+
+  network:
+    type: OS::Neutron::Net
+  subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      network: { get_resource: network }
+      enable_dhcp: false
+      cidr: { get_param: ironic_baremetal_network_cidr }
+      gateway_ip: ~
+      allocation_pools:
+        - start: { get_param: ironic_baremetal_network_ipam_pool_start }
+          end: { get_param: ironic_baremetal_network_ipam_pool_end }
+
+outputs:
+  ironic_baremetal_network_id:
+    value: { get_resource: network }
+  ironic_baremetal_subnet_id:
+    value: { get_resource: subnet }
diff --git a/de/heat-templates/fragments/SrvInstancesBM.yaml b/de/heat-templates/fragments/SrvInstancesBM.yaml
index cdf0647..b2fe4ad 100644
--- a/de/heat-templates/fragments/SrvInstancesBM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBM.yaml
@@ -30,6 +30,12 @@
     type: string
   control_network_cidr:
     type: string
+  ironic_baremetal_network:
+    type: string
+  ironic_baremetal_subnet_id:
+    type: string
+  ironic_baremetal_interface:
+    type: string
   functions_override:
     type: string
   boot_timeout:
@@ -72,6 +78,8 @@
             $private_floating_interface: { get_param: private_floating_interface }
             $private_floating_network_cidr: { get_param: private_floating_network_cidr }
             $private_floating_interface_ip: { get_attr: [private_floating_server_port, fixed_ips, 0, ip_address] }
+            $ironic_baremetal_interface: { get_param: ironic_baremetal_interface }
+            $ironic_baremetal_interface_ip: { get_attr: [ironic_baremetal_server_port, fixed_ips, 0, ip_address] }
             $functions_override: { get_param: functions_override }
 
   inject_files:
@@ -106,6 +114,7 @@
         - network: { get_param: accessible_network }
         # NOTE(ohryhorov): connect to accessible network only as ironic doesn't
         # support multitenancy use-case. Use private_floating_network for IPAM only.
+        # NOTE(vsaienko): ditto about ironic network
       user_data_format: SOFTWARE_CONFIG
       user_data: { get_resource:  install_config_agent}
       metadata: { get_param: metadata }
@@ -118,6 +127,14 @@
       fixed_ips:
         - subnet: { get_param: private_floating_subnet_id }
 
+  ironic_baremetal_server_port:
+    type: OS::Neutron::Port
+    properties:
+      network_id: { get_param: ironic_baremetal_network }
+      port_security_enabled: false
+      fixed_ips:
+        - subnet: { get_param: ironic_baremetal_subnet_id }
+
   wait_handle:
     type: OS::Heat::WaitConditionHandle
   wait_condition:
diff --git a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
index 2f2ae4a..c097bdf 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
@@ -38,6 +38,12 @@
     type: string
   control_network_cidr:
     type: string
+  ironic_baremetal_network:
+    type: string
+  ironic_baremetal_subnet_id:
+    type: string
+  ironic_baremetal_interface:
+    type: string
   functions_override:
     type: string
   boot_timeout:
@@ -83,6 +89,8 @@
             $storage_frontend_interface: { get_param: storage_frontend_interface }
             $storage_frontend_network_interface_ip: { get_attr: [storage_frontend_server_port, fixed_ips, 0, ip_address] }
             $storage_frontend_network_cidr: { get_param: storage_frontend_network_cidr }
+            $ironic_baremetal_interface: { get_param: ironic_baremetal_interface }
+            $ironic_baremetal_interface_ip: { get_attr: [ironic_baremetal_server_port, fixed_ips, 0, ip_address] }
 
   inject_files:
     type: "OS::Heat::CloudConfig"
@@ -116,6 +124,7 @@
         - network: { get_param: accessible_network }
         # NOTE(ohryhorov): connect to accessible network only as ironic doesn't
         # support multitenancy use-case. Use private_floating_network for IPAM only.
+        # NOTE(vsaienko): ditto about ironic baremetal network
       user_data_format: SOFTWARE_CONFIG
       user_data: { get_resource:  install_config_agent}
       metadata: { get_param: metadata }
@@ -136,6 +145,14 @@
       fixed_ips:
         - subnet: { get_param: storage_frontend_subnet_id }
 
+  ironic_baremetal_server_port:
+    type: OS::Neutron::Port
+    properties:
+      network_id: { get_param: ironic_baremetal_network }
+      port_security_enabled: false
+      fixed_ips:
+        - subnet: { get_param: ironic_baremetal_subnet_id }
+
   wait_handle:
     type: OS::Heat::WaitConditionHandle
   wait_condition:
diff --git a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
index 8804562..f034022 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
@@ -46,6 +46,12 @@
     type: string
   control_network_cidr:
     type: string
+  ironic_baremetal_network:
+    type: string
+  ironic_baremetal_subnet_id:
+    type: string
+  ironic_baremetal_interface:
+    type: string
   functions_override:
     type: string
   boot_timeout:
@@ -94,6 +100,8 @@
             $storage_backend_interface: { get_param: storage_backend_interface }
             $storage_backend_network_interface_ip: { get_attr: [storage_backend_server_port, fixed_ips, 0, ip_address] }
             $storage_backend_network_cidr: { get_param: storage_backend_network_cidr }
+            $ironic_baremetal_interface: { get_param: ironic_baremetal_interface }
+            $ironic_baremetal_interface_ip: { get_attr: [ironic_baremetal_server_port, fixed_ips, 0, ip_address] }
 
   inject_files:
     type: "OS::Heat::CloudConfig"
@@ -127,6 +135,7 @@
         - network: { get_param: accessible_network }
         # NOTE(ohryhorov): connect to accessible network only as ironic doesn't
         # support multitenancy use-case. Use private_floating_network for IPAM only.
+        # NOTE(vsaienko): ditto about ironic network
       user_data_format: SOFTWARE_CONFIG
       user_data: { get_resource:  install_config_agent}
       metadata: { get_param: metadata }
@@ -155,6 +164,14 @@
       fixed_ips:
         - subnet: { get_param: storage_frontend_subnet_id }
 
+  ironic_baremetal_server_port:
+    type: OS::Neutron::Port
+    properties:
+      network_id: { get_param: ironic_baremetal_network }
+      port_security_enabled: false
+      fixed_ips:
+        - subnet: { get_param: ironic_baremetal_subnet_id }
+
   wait_handle:
     type: OS::Heat::WaitConditionHandle
   wait_condition:
diff --git a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
index dce451e..11538ca 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
@@ -36,6 +36,12 @@
     type: string
   storage_frontend_interface:
     type: string
+  ironic_baremetal_network:
+    type: string
+  ironic_baremetal_subnet_id:
+    type: string
+  ironic_baremetal_interface:
+    type: string
   control_network_cidr:
     type: string
   functions_override:
@@ -91,6 +97,8 @@
             $storage_frontend_interface: { get_param: storage_frontend_interface }
             $storage_frontend_network_interface_ip: { get_attr: [storage_frontend_server_port, fixed_ips, 0, ip_address] }
             $storage_frontend_network_cidr: { get_param: storage_frontend_network_cidr }
+            $ironic_baremetal_interface: { get_param: ironic_baremetal_interface }
+            $ironic_baremetal_interface_ip: { get_attr: [ironic_baremetal_server_port, fixed_ips, 0, ip_address] }
 
   inject_files:
     type: "OS::Heat::CloudConfig"
@@ -125,6 +133,7 @@
         - port: { get_resource: accessible_server_port }
         - port: { get_resource: private_floating_server_port }
         - port: { get_resource: storage_frontend_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 }
@@ -159,6 +168,14 @@
       floating_network_id: { get_param: public_net_id }
       port_id: { get_resource: accessible_server_port }
 
+  ironic_baremetal_server_port:
+    type: OS::Neutron::Port
+    properties:
+      network_id: { get_param: ironic_baremetal_network }
+      port_security_enabled: false
+      fixed_ips:
+        - subnet: { get_param: ironic_baremetal_subnet_id }
+
   wait_handle:
     type: OS::Heat::WaitConditionHandle
   wait_condition:
diff --git a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
index f78a198..446c75b 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
@@ -46,6 +46,12 @@
     type: string
   control_network_cidr:
     type: string
+  ironic_baremetal_network:
+    type: string
+  ironic_baremetal_subnet_id:
+    type: string
+  ironic_baremetal_interface:
+    type: string
   functions_override:
     type: string
   boot_timeout:
@@ -102,6 +108,8 @@
             $storage_backend_interface: { get_param: storage_backend_interface }
             $storage_backend_network_interface_ip: { get_attr: [storage_backend_server_port, fixed_ips, 0, ip_address] }
             $storage_backend_network_cidr: { get_param: storage_backend_network_cidr }
+            $ironic_baremetal_interface: { get_param: ironic_baremetal_interface }
+            $ironic_baremetal_interface_ip: { get_attr: [ironic_baremetal_server_port, fixed_ips, 0, ip_address] }
 
   inject_files:
     type: "OS::Heat::CloudConfig"
@@ -137,6 +145,7 @@
         - 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 }
@@ -179,6 +188,14 @@
       floating_network_id: { get_param: public_net_id }
       port_id: { get_resource: accessible_server_port }
 
+  ironic_baremetal_server_port:
+    type: OS::Neutron::Port
+    properties:
+      network_id: { get_param: ironic_baremetal_network }
+      port_security_enabled: false
+      fixed_ips:
+        - subnet: { get_param: ironic_baremetal_subnet_id }
+
   wait_handle:
     type: OS::Heat::WaitConditionHandle
   wait_condition: