Use AZ to list the compute hosts

On environments with non-homogeneous compute nodes the test explicitly
sets the first available zone and hypervisor from the list, which leads
to the default flavor being used on inappropriate node.

Related-Bug: PRODX-22869
Change-Id: Ic26c9e62248a5cc091c538d0399f3be69a4bc170
diff --git a/neutron_tempest_plugin/api/clients.py b/neutron_tempest_plugin/api/clients.py
index 407e694..df0eb4d 100644
--- a/neutron_tempest_plugin/api/clients.py
+++ b/neutron_tempest_plugin/api/clients.py
@@ -13,8 +13,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from tempest.lib.services.compute import availability_zone_client
-from tempest.lib.services.compute import hypervisor_client
+from tempest.lib.services.compute import hosts_client
 from tempest.lib.services.compute import interfaces_client
 from tempest.lib.services.compute import keypairs_client
 from tempest.lib.services.compute import servers_client
@@ -78,9 +77,7 @@
             self.auth_provider, **params)
         self.keypairs_client = keypairs_client.KeyPairsClient(
             self.auth_provider, **params)
-        self.hv_client = hypervisor_client.HypervisorClient(
-            self.auth_provider, **params)
-        self.az_client = availability_zone_client.AvailabilityZoneClient(
+        self.hosts_client = hosts_client.HostsClient(
             self.auth_provider, **params)
 
     def _set_identity_clients(self):
diff --git a/neutron_tempest_plugin/scenario/admin/test_floatingip.py b/neutron_tempest_plugin/scenario/admin/test_floatingip.py
index 1774289..9bbd31f 100644
--- a/neutron_tempest_plugin/scenario/admin/test_floatingip.py
+++ b/neutron_tempest_plugin/scenario/admin/test_floatingip.py
@@ -57,20 +57,19 @@
             secgroup_id=cls.secgroup['id'],
             client=network_client),
 
-    def _list_hypervisors(self):
-        # List of hypervisors
-        return self.os_admin.hv_client.list_hypervisors()['hypervisors']
-
-    def _list_availability_zones(self):
-        # List of availability zones
-        func = self.os_admin.az_client.list_availability_zones
-        return func()['availabilityZoneInfo']
+    def _list_hosts(self, zone):
+        # List of hosts
+        return [
+            h
+            for h in self.os_admin.hosts_client.list_hosts(zone=zone)['hosts']
+            if h['service'] == 'compute'
+        ]
 
     def _create_vms(self, hyper, avail_zone, num_servers=2):
         servers, fips, server_ssh_clients = ([], [], [])
         # Create the availability zone with default zone and
         # a specific mentioned hypervisor.
-        az = avail_zone + '::' + hyper
+        az = avail_zone + ':' + hyper
         for i in range(num_servers):
             servers.append(self.create_server(
                 flavor_ref=CONF.compute.flavor_ref,
@@ -103,11 +102,11 @@
         that were created in the same compute node and same availability zone
         to reach each other.
         """
-        # Get hypervisor list to pass it for vm creation
-        hyper = self._list_hypervisors()[0]['hypervisor_hostname']
         # Get availability zone list to pass it for vm creation
-        avail_zone = self._list_availability_zones()[0]['zoneName']
-        servers, server_ssh_clients, fips = self._create_vms(hyper, avail_zone)
+        avail_zone = CONF.compute.compute_volume_common_az or 'nova'
+        # Get host list to pass it for vm creation
+        host = self._list_hosts(avail_zone)[0]['host_name']
+        servers, server_ssh_clients, fips = self._create_vms(host, avail_zone)
         self.check_remote_connectivity(
             server_ssh_clients[0], fips[1]['floating_ip_address'],
             servers=servers)