Merge "Unhardcode AZ"
diff --git a/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml b/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml
index 365afd4..988121d 100644
--- a/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml
+++ b/de/heat-templates/fragments/NetworkPrvFlVSRX.yaml
@@ -23,6 +23,9 @@
   vsrx_flavor:
     type: string
     default: oc_vsrx
+  availability_zone:
+    type: string
+    default: nova
   public_net_id:
     type: string
 
@@ -77,7 +80,7 @@
     type: OS::Nova::Server
     properties:
       name: { list_join: ['-', [get_param: "OS::stack_name", 'vsrx01']] }
-      availability_zone: nova
+      availability_zone: { get_param: availability_zone }
       image: { get_param: vsrx_image }
       flavor: { get_param: vsrx_flavor }
       networks:
diff --git a/de/heat-templates/fragments/SrvInstancesBM.yaml b/de/heat-templates/fragments/SrvInstancesBM.yaml
index 8efb0fd..5599d11 100644
--- a/de/heat-templates/fragments/SrvInstancesBM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBM.yaml
@@ -56,6 +56,9 @@
     description: The content of lab metadata.
     default: ''
     type: string
+  availability_zone:
+    type: string
+    default: nova
 
 resources:
 
@@ -110,7 +113,7 @@
       image: { get_param: image }
       flavor: { get_param: flavor }
       key_name: { get_param: key_name }
-      availability_zone: nova
+      availability_zone: { get_param: availability_zone }
       networks:
         - network: { get_param: accessible_network }
       user_data_format: SOFTWARE_CONFIG
diff --git a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
index f3d4b7a..7c6a76d 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
@@ -73,6 +73,9 @@
   hardware_metadata:
     description: The content of lab metadata.
     type: string
+  availability_zone:
+    type: string
+    default: nova
 
 resources:
 
@@ -134,7 +137,7 @@
       image: { get_param: image }
       flavor: { get_param: flavor }
       key_name: { get_param: key_name }
-      availability_zone: nova
+      availability_zone: { get_param: availability_zone }
       networks:
         - network: { get_param: accessible_network }
         # NOTE(ohryhorov): connect to accessible network only as ironic doesn't
diff --git a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
index 42e7f47..4fa2615 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
@@ -94,6 +94,9 @@
   num_volumes:
     type: number
     default: 0
+  availability_zone:
+    type: string
+    default: nova
 
 resources:
 
@@ -160,7 +163,7 @@
       image: { get_param: image }
       flavor: { get_param: flavor }
       key_name: { get_param: key_name }
-      availability_zone: nova
+      availability_zone: { get_param: availability_zone }
       networks:
         - network: { get_param: accessible_network }
         # NOTE(ohryhorov): connect to accessible network only as ironic doesn't
diff --git a/de/heat-templates/fragments/SrvInstancesVM.yaml b/de/heat-templates/fragments/SrvInstancesVM.yaml
index d82bd96..d005f8d 100644
--- a/de/heat-templates/fragments/SrvInstancesVM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVM.yaml
@@ -70,6 +70,9 @@
       # Don't mount ephemeral0 to /mnt as it's by default
       mounts:
         - [ ephemeral0, null ]
+  availability_zone:
+    type: string
+    default: nova
 
 resources:
 
@@ -127,7 +130,7 @@
       image: { get_param: image }
       flavor: { get_param: flavor }
       key_name: { get_param: key_name }
-      availability_zone: nova
+      availability_zone: { get_param: availability_zone }
       networks:
         - port: { get_resource: accessible_server_port }
         - port: { get_resource: private_floating_server_port }
diff --git a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
index cf88f83..b3db55e 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
@@ -81,6 +81,9 @@
       # Don't mount ephemeral0 to /mnt as it's by default
       mounts:
         - [ ephemeral0, null ]
+   availability_zone:
+    type: string
+    default: nova
 
 resources:
 
@@ -143,7 +146,7 @@
       image: { get_param: image }
       flavor: { get_param: flavor }
       key_name: { get_param: key_name }
-      availability_zone: nova
+      availability_zone: { get_param: availability_zone }
       networks:
         - port: { get_resource: accessible_server_port }
         - port: { get_resource: private_floating_server_port }
diff --git a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
index e5b4d9a..f9c2ce9 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
@@ -114,6 +114,9 @@
   num_volumes:
     type: number
     default: 0
+  availability_zone:
+    type: string
+    default: nova
 
 resources:
 
@@ -185,7 +188,7 @@
       image: { get_param: image }
       flavor: { get_param: flavor }
       key_name: { get_param: key_name }
-      availability_zone: nova
+      availability_zone: { get_param: availability_zone }
       networks:
         - port: { get_resource: accessible_server_port }
         - port: { get_resource: private_floating_server_port }
diff --git a/de/heat-templates/top.yaml b/de/heat-templates/top.yaml
index cbcd538..10c1c6b 100644
--- a/de/heat-templates/top.yaml
+++ b/de/heat-templates/top.yaml
@@ -335,6 +335,9 @@
       Number of extra volumes for OSD instance
     type: number
     default: 0
+  availability_zone:
+    type: string
+    default: nova
 
 conditions:
   aio_deploy:
@@ -431,6 +434,7 @@
       functions_override: { get_param: functions_override }
       hardware_metadata: { get_param: hardware_metadata}
       single_node: { get_param: single_node}
+      availability_zone: { get_param: availability_zone }
 
   masters:
     type: OS::Heat::ResourceGroup
@@ -462,6 +466,7 @@
           ucp_master_host: { get_attr: [ucp, server_private_ip] }
           functions_override: { get_param: functions_override }
           hardware_metadata: { get_param: hardware_metadata}
+          availability_zone: { get_param: availability_zone }
 
   workers:
     type: OS::Heat::ResourceGroup
@@ -511,6 +516,7 @@
           hardware_metadata: { get_param: hardware_metadata}
           lvm_loop_device_size: { get_param: cmp_lvm_loop_device_size }
           cinder_lvm_loop_device_size: { get_param: cmp_cinder_lvm_loop_device_size }
+          availability_zone: { get_param: availability_zone }
 
   cmps:
     type: OS::Heat::ResourceGroup
@@ -560,6 +566,7 @@
           hardware_metadata: { get_param: hardware_metadata}
           lvm_loop_device_size: { get_param: cmp_lvm_loop_device_size }
           cinder_lvm_loop_device_size: { get_param: cmp_cinder_lvm_loop_device_size }
+          availability_zone: { get_param: availability_zone }
 
   acmps:
     type: OS::Heat::ResourceGroup
@@ -610,6 +617,7 @@
           huge_pages: { get_param: huge_pages }
           lvm_loop_device_size: { get_param: acmp_lvm_loop_device_size }
           cinder_lvm_loop_device_size: { get_param: acmp_cinder_lvm_loop_device_size }
+          availability_zone: { get_param: availability_zone }
 
   gtws:
     type: OS::Heat::ResourceGroup
@@ -650,6 +658,7 @@
           ironic_baremetal_tunnel_cidr: { get_param: ironic_baremetal_tunnel_cidr }
           ironic_mt_enabled: { get_param: ironic_mt_enabled }
           hardware_metadata: { get_param: hardware_metadata}
+          availability_zone: { get_param: availability_zone }
 
   lmas:
     type: OS::Heat::ResourceGroup
@@ -690,6 +699,7 @@
           ironic_baremetal_tunnel_cidr: { get_param: ironic_baremetal_tunnel_cidr }
           ironic_mt_enabled: { get_param: ironic_mt_enabled }
           hardware_metadata: { get_param: hardware_metadata}
+          availability_zone: { get_param: availability_zone }
 
   osds:
     type: OS::Heat::ResourceGroup
@@ -738,6 +748,7 @@
           tun_subnet_id: { get_attr: [tun_network, tun_subnet_id] }
           hardware_metadata: { get_param: hardware_metadata}
           num_volumes: { get_param: volumes_per_osd_instance }
+          availability_zone: { get_param: availability_zone }
 
   frrs:  # spares for osds/cmps
     type: OS::Heat::ResourceGroup
@@ -786,6 +797,7 @@
           tun_subnet_id: { get_attr: [tun_network, tun_subnet_id] }
           hardware_metadata: { get_param: hardware_metadata}
           frr_bgp_neighbors: { list_join: [',', {get_attr: [workers, server_tun_ip]}] }
+          availability_zone: { get_param: availability_zone }
 
   spares:  # spares for osds/cmps
     type: OS::Heat::ResourceGroup
@@ -833,6 +845,7 @@
           tun_network: { get_attr: [tun_network, tun_network_id] }
           tun_subnet_id: { get_attr: [tun_network, tun_subnet_id] }
           hardware_metadata: { get_param: hardware_metadata}
+          availability_zone: { get_param: availability_zone }
 
   ntws:
     type: OS::Heat::ResourceGroup
@@ -880,6 +893,7 @@
           tun_network: { get_attr: [tun_network, tun_network_id] }
           tun_subnet_id: { get_attr: [tun_network, tun_subnet_id] }
           hardware_metadata: { get_param: hardware_metadata}
+          availability_zone: { get_param: availability_zone }
 
   vbmcs:
     type: OS::Heat::ResourceGroup
@@ -920,6 +934,7 @@
           ironic_baremetal_tunnel_cidr: { get_param: ironic_baremetal_tunnel_cidr }
           ironic_mt_enabled: { get_param: ironic_mt_enabled }
           hardware_metadata: { get_param: hardware_metadata}
+          availability_zone: { get_param: availability_zone }
 
 outputs:
   ucp_ips: