← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1515209] [NEW] HA router can't associate an external network without gateway ip

 

Public bug reported:

When associate a HA router with an external network without gateway ip,
I will get the following error:

2015-11-11 03:23:44.599 ERROR neutron.agent.l3.agent [-] Failed to process compatible router '8114b0c3-85e6-4b71-ab74-a0c1437882cd'
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent Traceback (most recent call last):
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 503, in _process_router_update
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_router_if_compatible(router)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 444, in _process_router_if_compatible
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_added_router(router)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 452, in _process_added_router
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     ri.process(self)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 387, in process
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     super(HaRouter, self).process(agent)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 366, in call
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.logger(e)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 197, in __exit__
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     six.reraise(self.type_, self.value, self.tb)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 363, in call
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     return func(*args, **kwargs)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 694, in process
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.process_external(agent)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 660, in process_external
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_external_gateway(ex_gw_port, agent.pd)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 569, in _process_external_gateway
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.external_gateway_added(ex_gw_port, interface_name)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 356, in external_gateway_added
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._add_gateway_vip(ex_gw_port, interface_name)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 249, in _add_gateway_vip
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._add_default_gw_virtual_route(ex_gw_port, interface_name)
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 205, in _add_default_gw_virtual_route
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     instance.virtual_routes.gateway_routes = default_gw_rts
2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent UnboundLocalError: local variable 'instance' referenced before assignment


For HA router,  the default gw route should only be added when there is any gateway ip present.

https://github.com/openstack/neutron/blob/master/neutron/agent/l3/ha_router.py#L248

** Affects: neutron
     Importance: Undecided
     Assignee: Hong Hui Xiao (xiaohhui)
         Status: New


** Tags: l3-ha

** Changed in: neutron
     Assignee: (unassigned) => Hong Hui Xiao (xiaohhui)

** Tags added: l3-ha

** Description changed:

  When associate a HA router with an external network without gateway ip,
  I will get the following error:
  
- 2015-11-11 03:07:36.198 ERROR neutron.agent.l3.agent [-] Failed to process compatible router '8114b0c3-85e6-4b71-ab74-a0c1437882cd'
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent Traceback (most recent call last):
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 503, in _process_router_update
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self._process_router_if_compatible(router)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 446, in _process_router_if_compatible
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self._process_updated_router(router)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 460, in _process_updated_router
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     ri.process(self)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 387, in process
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     super(HaRouter, self).process(agent)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 366, in call
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self.logger(e)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 197, in __exit__
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     six.reraise(self.type_, self.value, self.tb)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 363, in call
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     return func(*args, **kwargs)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 694, in process
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self.process_external(agent)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 660, in process_external
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self._process_external_gateway(ex_gw_port, agent.pd)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 569, in _process_external_gateway
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self.external_gateway_added(ex_gw_port, interface_name)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 356, in external_gateway_added
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self._add_gateway_vip(ex_gw_port, interface_name)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 249, in _add_gateway_vip
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     self._add_default_gw_virtual_route(ex_gw_port, interface_name)
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 205, in _add_default_gw_virtual_route
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent     instance.virtual_routes.gateway_routes = default_gw_rts
- 2015-11-11 03:07:36.198 TRACE neutron.agent.l3.agent UnboundLocalError: local variable 'instance' referenced before assignment
+ 2015-11-11 03:23:44.599 ERROR neutron.agent.l3.agent [-] Failed to process compatible router '8114b0c3-85e6-4b71-ab74-a0c1437882cd'
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent Traceback (most recent call last):
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 503, in _process_router_update
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_router_if_compatible(router)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 444, in _process_router_if_compatible
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_added_router(router)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 452, in _process_added_router
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     ri.process(self)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 387, in process
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     super(HaRouter, self).process(agent)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 366, in call
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.logger(e)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 197, in __exit__
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     six.reraise(self.type_, self.value, self.tb)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 363, in call
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     return func(*args, **kwargs)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 694, in process
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.process_external(agent)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 660, in process_external
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_external_gateway(ex_gw_port, agent.pd)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 569, in _process_external_gateway
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.external_gateway_added(ex_gw_port, interface_name)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 356, in external_gateway_added
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._add_gateway_vip(ex_gw_port, interface_name)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 249, in _add_gateway_vip
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._add_default_gw_virtual_route(ex_gw_port, interface_name)
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 205, in _add_default_gw_virtual_route
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     instance.virtual_routes.gateway_routes = default_gw_rts
+ 2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent UnboundLocalError: local variable 'instance' referenced before assignment
  
  
  For HA router,  the default gw route should only be added when there is any gateway ip present.
  
  https://github.com/openstack/neutron/blob/master/neutron/agent/l3/ha_router.py#L248

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1515209

Title:
  HA router can't associate an external network without gateway ip

Status in neutron:
  New

Bug description:
  When associate a HA router with an external network without gateway
  ip, I will get the following error:

  2015-11-11 03:23:44.599 ERROR neutron.agent.l3.agent [-] Failed to process compatible router '8114b0c3-85e6-4b71-ab74-a0c1437882cd'
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent Traceback (most recent call last):
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 503, in _process_router_update
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_router_if_compatible(router)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 444, in _process_router_if_compatible
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_added_router(router)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/agent.py", line 452, in _process_added_router
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     ri.process(self)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 387, in process
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     super(HaRouter, self).process(agent)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 366, in call
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.logger(e)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 197, in __exit__
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     six.reraise(self.type_, self.value, self.tb)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/common/utils.py", line 363, in call
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     return func(*args, **kwargs)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 694, in process
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.process_external(agent)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 660, in process_external
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._process_external_gateway(ex_gw_port, agent.pd)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/router_info.py", line 569, in _process_external_gateway
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self.external_gateway_added(ex_gw_port, interface_name)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 356, in external_gateway_added
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._add_gateway_vip(ex_gw_port, interface_name)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 249, in _add_gateway_vip
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     self._add_default_gw_virtual_route(ex_gw_port, interface_name)
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent   File "/opt/stack/neutron/neutron/agent/l3/ha_router.py", line 205, in _add_default_gw_virtual_route
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent     instance.virtual_routes.gateway_routes = default_gw_rts
  2015-11-11 03:23:44.599 TRACE neutron.agent.l3.agent UnboundLocalError: local variable 'instance' referenced before assignment

  
  For HA router,  the default gw route should only be added when there is any gateway ip present.

  https://github.com/openstack/neutron/blob/master/neutron/agent/l3/ha_router.py#L248

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1515209/+subscriptions


Follow ups