Merge "test_schedule_to_all_nodes should choose available nodes"
diff --git a/tempest/scenario/test_server_multinode.py b/tempest/scenario/test_server_multinode.py
index 333079c..170d220 100644
--- a/tempest/scenario/test_server_multinode.py
+++ b/tempest/scenario/test_server_multinode.py
@@ -47,9 +47,17 @@
     @test.attr(type='smoke')
     @test.services('compute', 'network')
     def test_schedule_to_all_nodes(self):
-        host_client = self.manager.hosts_client
-        hosts = host_client.list_hosts()['hosts']
-        hosts = [x for x in hosts if x['service'] == 'compute']
+        available_zone = \
+            self.os_adm.availability_zone_client.list_availability_zones(
+                detail=True)['availabilityZoneInfo']
+        hosts = []
+        for zone in available_zone:
+            if zone['zoneState']['available']:
+                for host in zone['hosts']:
+                    if 'nova-compute' in zone['hosts'][host] and \
+                        zone['hosts'][host]['nova-compute']['available']:
+                        hosts.append({'zone': zone['zoneName'],
+                                      'host_name': host})
 
         # ensure we have at least as many compute hosts as we expect
         if len(hosts) < CONF.compute.min_compute_nodes: