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)
