Port information (binding:host_id) not updated for network:router_gateway after qRouter failover
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu Cloud Archive |
Invalid
|
Undecided
|
Unassigned | ||
Mitaka |
Fix Released
|
Undecided
|
Unassigned | ||
Newton |
Fix Released
|
Undecided
|
Unassigned | ||
Ocata |
Fix Released
|
Undecided
|
Unassigned | ||
neutron |
Fix Released
|
Undecided
|
Felipe Reyes | ||
neutron (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Felipe Reyes | ||
Yakkety |
Won't Fix
|
Undecided
|
Felipe Reyes | ||
Zesty |
Fix Released
|
Undecided
|
Felipe Reyes |
Bug Description
[Impact]
When using l3 ha and a router agent fails over, the interface holding the network:
[Steps to reproduce]
0) Deploy a cloud with l3ha enabled
- If familiar with juju, it's possible to use this bundle http://
1) Once it's deployed, configure it and create a router see https:/
- This is the script used during the troubleshooting
-----8<------
#!/bin/bash -x
source novarc # admin
neutron net-create ext-net --router:external True --provider:
neutron subnet-create ext-net 10.5.0.0/16 --name ext-subnet --allocation-pool start=10.
keystone tenant-create --name demo 2>/dev/null
keystone user-role-add --user admin --tenant demo --role Admin 2>/dev/null
export TENANT_
neutron net-create demo-net --tenant-id ${TENANT_ID_DEMO} --provider:
env OS_TENANT_NAME=demo neutron subnet-create demo-net 192.168.1.0/24 --name demo-subnet --gateway 192.168.1.1
env OS_TENANT_NAME=demo neutron router-create demo-router
env OS_TENANT_NAME=demo neutron router-
env OS_TENANT_NAME=demo neutron router-gateway-set demo-router ext-net
# verification
neutron net-list
neutron l3-agent-
neutron router-port-list demo-router
----- 8< -------
2) Kill the associated master keepalived process for the router
ps aux | grep keepalived | grep $ROUTER_ID
kill $PID
3) Wait until "neutron l3-agent-
4) Check the binding:host_id property for the interfaces of the router
for ID in `neutron port-list --device-id $ROUTER_ID | tail -n +4 | head -n -1| awk -F' ' '{print $2}' `; do neutron port-show $ID ; done
Expected results:
The interface where the device_owner is network:
Actual result:
The binding:host_id is never updated, it stays set with the value obtainer during the creation of the port.
[Regression Potential]
- This patch changes the UPDATE query to the port bindings in the database, a possible regression will express as failures in the query or binding:host_id property outdated.
[Other Info]
The patches for zesty and yakkety are a direct backport from stable/ocata and stable/newton respectively. The patch for xenial is NOT merged in stable/xenial because it's already EOL.
tags: | added: l3-ha sts |
Changed in neutron: | |
assignee: | nobody → Felipe Reyes (freyes) |
status: | New → In Progress |
tags: | added: neutron-proactive-backport-potential |
Changed in neutron (Ubuntu): | |
assignee: | nobody → Felipe Reyes (freyes) |
Changed in neutron (Ubuntu Xenial): | |
assignee: | nobody → Felipe Reyes (freyes) |
Changed in neutron (Ubuntu Yakkety): | |
assignee: | nobody → Felipe Reyes (freyes) |
Changed in neutron (Ubuntu Zesty): | |
assignee: | nobody → Felipe Reyes (freyes) |
Changed in neutron (Ubuntu): | |
status: | New → Fix Released |
assignee: | Felipe Reyes (freyes) → nobody |
tags: | added: sts-sru-needed |
Changed in neutron (Ubuntu Yakkety): | |
status: | In Progress → Won't Fix |
Changed in cloud-archive: | |
status: | New → Invalid |
Reviewed: https:/ /review. openstack. org/466414 /git.openstack. org/cgit/ openstack/ neutron/ commit/ ?id=d8334b41d2c 5bcd4916347d200 08b1538d48b0ef
Committed: https:/
Submitter: Jenkins
Branch: master
commit d8334b41d2c5bcd 4916347d20008b1 538d48b0ef
Author: Felipe Reyes <email address hidden>
Date: Fri May 19 17:13:52 2017 -0400
Update the host_id for network: router_ gateway interfaces
The ports owned by a router_gateway need to get its host_id property
updated during the failover of a router. Otherwise the port connected
to the external network will always have its host_id set to the value
obtained during creation.
Change-Id: I5eca20e3cc64d7 a9e52b0556a3cad d29eb4c821d
Closes-Bug: 1694337