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)