yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #27547
[Bug 1417409] [NEW] Add dvr router to dvr_snat agent failed
Public bug reported:
reproduce progress:
1. create a dvr router
2. 'router-interface-add' add a subnet to this dvr
3. 'router-gateway-set'
4. 'l3-agent-router-remove' remove the dvr_snat agent from the router
5. l3-agent-router-add this dvr_snat agent to the router
the error log in neutron-server is bellow:
create failed (client error): Agent 3b61ea90-8373-4609-adda-c10118401f4a is n
ot a L3 Agent or has been disabled
the reason is that when it check the ports on l3 agent, if l3_agent['host'] != port['binding:host_id']), this agent will be pass, but for
a dvr_snat agent, there will no port on it
def check_ports_exist_on_l3agent(self, context, l3_agent, router_id):
"""
This function checks for existence of dvr serviceable
ports on the host, running the input l3agent.
"""
subnet_ids = self.get_subnet_ids_on_router(context, router_id)
core_plugin = manager.NeutronManager.get_plugin()
filter = {'fixed_ips': {'subnet_id': subnet_ids}}
ports = core_plugin.get_ports(context, filters=filter)
for port in ports:
if (n_utils.is_dvr_serviced(port['device_owner']) and
l3_agent['host'] == port['binding:host_id']):
return True
return False
** Affects: neutron
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1417409
Title:
Add dvr router to dvr_snat agent failed
Status in OpenStack Neutron (virtual network service):
New
Bug description:
reproduce progress:
1. create a dvr router
2. 'router-interface-add' add a subnet to this dvr
3. 'router-gateway-set'
4. 'l3-agent-router-remove' remove the dvr_snat agent from the router
5. l3-agent-router-add this dvr_snat agent to the router
the error log in neutron-server is bellow:
create failed (client error): Agent 3b61ea90-8373-4609-adda-c10118401f4a is n
ot a L3 Agent or has been disabled
the reason is that when it check the ports on l3 agent, if l3_agent['host'] != port['binding:host_id']), this agent will be pass, but for
a dvr_snat agent, there will no port on it
def check_ports_exist_on_l3agent(self, context, l3_agent, router_id):
"""
This function checks for existence of dvr serviceable
ports on the host, running the input l3agent.
"""
subnet_ids = self.get_subnet_ids_on_router(context, router_id)
core_plugin = manager.NeutronManager.get_plugin()
filter = {'fixed_ips': {'subnet_id': subnet_ids}}
ports = core_plugin.get_ports(context, filters=filter)
for port in ports:
if (n_utils.is_dvr_serviced(port['device_owner']) and
l3_agent['host'] == port['binding:host_id']):
return True
return False
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1417409/+subscriptions
Follow ups
References