Deploy multirack env with L3

Related-PRODX: PRODX-13355

Change-Id: I820a71cab6ba5cd6098aae508aa4cb180f028e94
diff --git a/de/heat-templates/multirack.yaml b/de/heat-templates/multirack.yaml
index 5833899..8e37448 100644
--- a/de/heat-templates/multirack.yaml
+++ b/de/heat-templates/multirack.yaml
@@ -10,6 +10,9 @@
     description: >
       ID of public network for which floating IP addresses will be allocated/
       for baremetal case flat provision network for nodes
+  dns_nameservers:
+    type: json
+    default: ['172.18.224.6', '172.18.176.6']
   lab_network_cidr:
     type: string
     default: '10.0.0.0/8'
@@ -25,16 +28,42 @@
     default: '10.0.2.0/24'
   main_storage_frontend_network_cidr:
     type: string
-    default: '10.0.3.0/24'
+    default: '10.12.0.0/24'
+  main_storage_frontend_interface:
+    type: string
+    default: 'ens5'
   main_storage_backend_network_cidr:
     type: string
-    default: '10.0.4.0/24'
-  main_private_floating_network_cidr:
+    default: '10.11.0.0/24'
+  main_storage_backend_interface:
     type: string
-    default: '10.0.5.0/24'
-  main_private_floating_network_interface:
+    default: 'ens6'
+  private_floating_network_cidr:
     type: string
-    default: 'ens4'
+    default: '10.11.12.0/24'
+  private_floating_network_ipam_pool_start:
+    type: string
+    description: pool start which is used as pool for IPAM and assigned to instances port
+    default: '10.11.12.2'
+  private_floating_network_ipam_pool_end:
+    type: string
+    description: pool end which is used as pool for IPAM and assigned to instances port
+    default: '10.11.12.99'
+  private_floating_network_pool_start:
+    type: string
+    default: '10.11.12.100'
+  private_floating_network_pool_end:
+    type: string
+    default: '10.11.12.200'
+  private_floating_network_gateway:
+    type: string
+    default: ''
+  private_floating_network_interface:
+    type: string
+    default: 'veth-phy'
+  private_floating_interface:
+    description: Interface which carries floating network for child OpenStack.
+    type: string
   rack01_network_cidr:
     type: string
     default: '10.1.0.0/16'
@@ -104,12 +133,36 @@
     default: 'docker/ucp:3.2.4'
   docker_default_address_pool:
     type: string
+    description: Default address pool for Docker ucp specific local networks
+    default: '10.10.1.0/16'
   tunnel_interface:
     type: string
     default: ''
+  tungstenfabric_enabled:
+    type: boolean
+    default: false
+  live_migration_interface:
+    type: string
+    default: ''
+  metallb_address_pools:
+    type: comma_delimited_list
+    default: ''
   main_worker_hardware_metadata:
     type: string
     default: ''
+  central_boot_timeout:
+    type: number
+    description: Boot timeout for central site instances
+    default: 5400
+  rack_boot_timeout:
+    type: number
+    description: Boot timeout for rack instances
+    default: 3600
+  rack_private_floating_interface:
+    type: string
+  rack_functions_override:
+    type: string
+    default: ''
 
 resources:
   keypair_name:
@@ -139,14 +192,20 @@
       public_net_id: { get_param: public_net_id }
       control_network_cidr: { get_param: main_control_network_cidr }
       tunnel_network_cidr: { get_param: main_tunnel_network_cidr }
+      storage_frontend_interface: { get_param: main_storage_frontend_interface }
       storage_frontend_network_cidr: { get_param: main_storage_frontend_network_cidr }
+      storage_backend_interface: { get_param: main_storage_backend_interface }
       storage_backend_network_cidr: { get_param: main_storage_backend_network_cidr }
-      private_floating_network_cidr: { get_param: main_private_floating_network_cidr }
-      private_floating_network_interface: { get_param: main_private_floating_network_interface }
+      private_floating_network_cidr: { get_param: private_floating_network_cidr }
+      private_floating_interface: { get_param: private_floating_interface }
+      private_floating_network_ipam_pool_start: { get_param: private_floating_network_ipam_pool_start }
+      private_floating_network_ipam_pool_end: { get_param: private_floating_network_ipam_pool_end }
       worker_size: { get_param: main_worker_size }
       worker_flavor: { get_param: main_worker_flavor }
       worker_metadata: { get_param: main_worker_metadata }
       worker_hardware_metadata: { get_param: main_worker_hardware_metadata }
+      dns_nameservers: { get_param: dns_nameservers }
+      boot_timeout: { get_param: central_boot_timeout }
 
   rack01_router_routes:
     type: MCP2::RackRouterRoutes
@@ -175,6 +234,9 @@
       cmp_metadata: { get_param: rack01_cmp_metadata }
       ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
       rack_router: {get_attr: [rack01_router_routes, router_id] }
+      boot_timeout: { get_param: rack_boot_timeout }
+      private_floating_interface: { get_param: rack_private_floating_interface }
+      functions_override: { get_param: rack_functions_override }
 
   rack02_router_routes:
     depends_on:
@@ -205,18 +267,57 @@
       cmp_metadata: { get_param: rack02_cmp_metadata }
       ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
       rack_router: {get_attr: [rack02_router_routes, router_id] }
+      boot_timeout: { get_param: rack_boot_timeout }
+      private_floating_interface: { get_param: rack_private_floating_interface }
+      functions_override: { get_param: rack_functions_override }
 
 outputs:
   central_site_worker_public_ip:
     description: IP address of server in private network
     value: { get_attr: [central_site, worker_public_ip] }
-  ucp_public_ip:
+  ucp_ips:
     description: IP address of server in private network
     value: { get_attr: [central_site, ucp_public_ip] }
-  central_site_worker_wc_data:
+  workers_wc_data:
     description: Metadata from instance
     value: { get_attr: [central_site, worker_wc_data]}
+  cmps_wc_data:
+    description: Metadata from cmps
+    value: {list_concat: [ {get_attr: [rack01, cmp_wc_data]},  {get_attr: [rack02, cmp_wc_data]} ]}
   rack01_cmp_public_ip:
     value: { get_attr: [rack01, cmp_public_ip] }
   rack02_cmp_public_ip:
     value: { get_attr: [rack02, cmp_public_ip] }
+  worker_private_floating_ips:
+    description: IPs might be used as gateway
+    value: { get_attr: [central_site, server_private_floating_ip] }
+  private_floating_cidr:
+    value: { get_param: private_floating_network_cidr }
+  private_floating_network_pool_start:
+    value: { get_param: private_floating_network_pool_start }
+  private_floating_network_pool_end:
+    value: { get_param: private_floating_network_pool_end }
+  private_floating_network_gateway:
+    value: { get_param: private_floating_network_gateway }
+  live_migration_interface:
+    value: { get_param: live_migration_interface }
+  tunnel_interface:
+    value: { get_param: tunnel_interface }
+  metallb_address_pools:
+    value: { get_param: metallb_address_pools }
+  storage_frontend_network_cidr:
+    description: Storage network which is used as clientNet in Ceph CR
+    value: { get_param: main_storage_frontend_network_cidr }
+  storage_backend_network_cidr:
+    description: Storage network which is used as clusterNet in Ceph CR
+    value: { get_param: main_storage_backend_network_cidr }
+  private_floating_network_interface:
+    value: { get_param: private_floating_network_interface }
+  tungstenfabric_enabled:
+    value: { get_param: tungstenfabric_enabled }
+  workers_ips:
+    description: Private IP addresses of the deployed worker instances
+    value: { get_attr: [central_site, worker_public_ip] }
+  cmps_ips:
+    description: Private IP addresses of the deployed cmp instances
+    value: {list_concat: [ {get_attr: [rack01, cmp_public_ip]},  {get_attr: [rack02, cmp_public_ip]} ]}