Network/Router agent rebalancing bug fix.

Add fix to ignore down agents in rescheduling.

Change-Id: I5d06bd489f2d67be996e55608b77e31c1ed85114
Closes-Bug: #1824027
Signed-off-by: Kevin Smith <kevin.smith@windriver.com>
This commit is contained in:
Kevin Smith 2019-04-11 06:45:28 -04:00
parent c38bfbb4ab
commit f6736a4b0c
4 changed files with 21 additions and 9 deletions

View File

@ -45,10 +45,15 @@ def build_get_agents_response():
NUM_AGENTS = random.randint(2, MAX_AGENTS - 1)
for x in range(0, NUM_AGENTS):
host_name = "compute-" + str(x)
admin_state_up = True
# randomly set admin_state_up on some agents to False
admin_state_down = random.randint(0, 5)
if admin_state_down == 0:
admin_state_up = False
get_agents_response_entry = \
{"host": host_name, "agent_type": "DHCP agent",
"id": host_name + "_id", "alive": True,
"admin_state_up": True}
"admin_state_up": admin_state_up}
get_agents_response['result-data'].append(get_agents_response_entry)
add_to_fake_host_table(host_name)

View File

@ -49,10 +49,15 @@ def build_get_agents_response():
NUM_AGENTS = random.randint(0, MAX_AGENTS - 1)
for x in range(0, NUM_AGENTS):
host_name = "compute-" + str(x)
admin_state_up = True
# randomly set admin_state_up on some agents to False
admin_state_down = random.randint(0, 5)
if admin_state_down == 0:
admin_state_up = False
get_agents_response_entry = \
{"host": host_name, "agent_type": "L3 agent",
"id": host_name + "_id", "alive": True,
"admin_state_up": True}
"admin_state_up": admin_state_up}
get_agents_response['result-data'].append(get_agents_response_entry)
add_to_fake_host_table(host_name)

View File

@ -124,7 +124,7 @@ class DHCPAgentRebalance(object):
_DHCPRebalance.num_networks_on_agents.append(
len(_DHCPRebalance.network_ids_per_agent[agent_id]))
self.dhcpagent_idx += 1
return self.dhcpagent_idx == self.num_dhcp_agents
return self.dhcpagent_idx >= self.num_dhcp_agents
def get_host_id_of_current_dhcp_agent(self):
return self.dhcp_agents[self.dhcpagent_idx]['host_uuid']
@ -137,7 +137,7 @@ class DHCPAgentRebalance(object):
def datanetworks_done(self):
self.dhcpagent_idx += 1
if self.dhcpagent_idx == self.num_dhcp_agents:
if self.dhcpagent_idx >= self.num_dhcp_agents:
return True
else:
return False
@ -187,6 +187,7 @@ class DHCPAgentRebalance(object):
# (if applicable) first in the list.
if agent['host'] == self.get_working_host():
self.dhcp_agents.insert(0, agent_info_dict)
self.add_agent(agent['id'])
elif agent['alive'] and agent['admin_state_up']:
self.dhcp_agents.append(agent_info_dict)
self.add_agent(agent['id'])

View File

@ -129,7 +129,7 @@ class L3AgentRebalance(object):
_L3Rebalance.num_routers_on_agents.append(
len(_L3Rebalance.router_ids_per_agent[agent_id]))
self.l3agent_idx += 1
return self.l3agent_idx == self.num_l3agents
return self.l3agent_idx >= self.num_l3agents
def add_network_to_router(self, router_to_resched, network_id):
self.networks_per_router[router_to_resched].append(network_id)
@ -145,7 +145,7 @@ class L3AgentRebalance(object):
self.router_idx = 0
self.l3agent_idx += 1
if (((self.working_host is not None) and (self.l3agent_idx == 1))
or (self.l3agent_idx == self.num_l3agents)):
or (self.l3agent_idx >= self.num_l3agents)):
# We have router port info for all routers on all agents
# that we care about. Get the Physical Network info for these.
return True
@ -223,7 +223,7 @@ class L3AgentRebalance(object):
def datanetworks_done(self):
self.l3agent_idx += 1
if self.l3agent_idx == self.num_l3agents:
if self.l3agent_idx >= self.num_l3agents:
return True
else:
return False
@ -278,6 +278,7 @@ class L3AgentRebalance(object):
# (if applicable) first in the list.
if agent['host'] == self.get_working_host():
self.l3agents.insert(0, agent_info_dict)
self.add_agent(agent['id'])
elif agent['alive'] and agent['admin_state_up']:
self.l3agents.append(agent_info_dict)
self.add_agent(agent['id'])