Check routers/azs using short hostnames

Recently FQDNs were needed for traffic flow tests [1],
but it seems AZ tests are affected as well from this fix.

This change fixes API network agent listing
for 'OVN Controller Gateway agent' to match short hostnames to zones.
Short hostnames used since API may show a mix of short/full names.

[1] 926195: Use long names when getting router gateway | https://review.opendev.org/c/x/whitebox-neutron-tempest-plugin/+/926195

Change-Id: Iafeced62b4ebe50a20f976803fd8a0cdbfeb3330
This commit is contained in:
Maor Blaustein 2024-09-02 14:29:52 +03:00
parent ebd07ef03b
commit 0219e833da

View File

@ -53,14 +53,14 @@ class OvnAvaliabilityzonesTest(
body = cls.client.list_agents()
agents = body['agents']
cls.AZs_list = []
cls.ovn_controller_gw_agent_list = {}
cls.ovn_controller_gw_agent_dict = {}
cls.agent_conf = {}
for agent in agents:
if agent.get('agent_type') in AZ_SUPPORTED_AGENTS:
az = agent.get('availability_zone')
if (az and (az not in cls.AZs_list)):
cls.AZs_list.append(az)
cls.ovn_controller_gw_agent_list[
cls.ovn_controller_gw_agent_dict[
agent.get('host').replace('"', '').split('.')[0]] = az
cmd = '{} crudini --get {} DEFAULT {{}} || echo'.format(
cls.neutron_api_prefix, cls.neutron_conf)
@ -100,16 +100,17 @@ class OvnAvaliabilityzonesTest(
as a hint. In this case the resource should be spawned over 3 random
availability zones (one network node per zone).
"""
resource_list = self.ovn_controller_gw_agent_list
resource_dict = self.ovn_controller_gw_agent_dict
router_port = self.os_admin.network_client.list_ports(
device_owner=constants.DEVICE_OWNER_ROUTER_GW,
device_id=router['id'])['ports'][0]
chassis_list = self.get_router_gateway_chassis_list(
router_port['id'])
resource_hosts = list(self.get_router_gateway_chassis_by_id(iden)
for iden in chassis_list)
resource_hosts = list(
self.get_router_gateway_chassis_by_id(iden).split('.')[0]
for iden in chassis_list)
az_hosts = []
for agent_host, agent_zone in resource_list.items():
for agent_host, agent_zone in resource_dict.items():
if agent_zone in az:
az_hosts.append(agent_host)
@ -126,7 +127,7 @@ class OvnAvaliabilityzonesTest(
# Check that the router is only deployed over az hosts
for host in resource_hosts:
self.assertIn(host, az_hosts)
tmp_zones.append(resource_list[host])
tmp_zones.append(resource_dict[host])
# Check that it is deployed over all the azs
self.assertEqual(set(az).symmetric_difference(set(tmp_zones)),
set())
@ -139,7 +140,7 @@ class OvnAvaliabilityzonesTest(
# Check that the router is only deployed over az hosts
for host in resource_hosts:
self.assertIn(host, az_hosts)
tmp_zones.append(resource_list[host])
tmp_zones.append(resource_dict[host])
# Check that it is deployed only th one instance per az
self.assertEqual(len(tmp_zones), len(set(tmp_zones)))
# Check that the max redundancy is reached
@ -156,7 +157,7 @@ class OvnAvaliabilityzonesTest(
"""
az_host_counter = {}
for tmp_az in self.ovn_controller_gw_agent_list.values():
for tmp_az in self.ovn_controller_gw_agent_dict.values():
tmp_counter = az_host_counter.get(tmp_az, 0) + 1
az_host_counter[tmp_az] = tmp_counter
for tmp_az, counter in az_host_counter.items():
@ -179,7 +180,7 @@ class OvnAvaliabilityzonesTest(
"""
az_host_counter = {}
for tmp_az in self.ovn_controller_gw_agent_list.values():
for tmp_az in self.ovn_controller_gw_agent_dict.values():
tmp_counter = az_host_counter.get(tmp_az, 0) + 1
az_host_counter[tmp_az] = tmp_counter
for tmp_az, counter in az_host_counter.items():