Patch I322c392529c04aca2448fd957a35f4908b323449 added a new device_owner for HA interfaces between a router and an internal subnet, which is used to differentiate it from normal, non-HA interfaces. However, when migrating a router from HA to legacy, the device_owner isn't switched back to its non-HA counterpart. This can cause migration of the router to DVR to not work properly as the snat interface isn't created.
A log and reproducible can be found in .
To expand on comment 0:
DVR is a key feature for OSP 10. We'd like to support both green field and brown field deployments, e.g. support migrating an OSP 10 deployment using HA routers to DVR. The migration of a router from HA to DVR is in two steps:
1) Migrate the HA router to "legacy"
2) Migrate the "legacy" router to DVR
Step 1 isn't working properly, essentially blocking DVR migrations. Green field deployments are not affected.
Tested on openstack-neutron-9.1.0-8.el7ost.noarch
3 controllers and compute
Steps of verification:
1)HA router created and internal network attached
<neutron router-create --ha True --distributed False <router_ha>>
2)Port owner - network:ha_router_replicated_interface
3)Turn off admin state
< neutron router-update <router_ha> --admin_state_up False
4)Migrate the HA router to legacy
<neutron router-update <router_ha> --ha False>
5)Port owner - network:router_interface
6)Migrate the legacy router to distributed
< neutron router-update <router_ha> --distributed True>
7)Port owner - network:router_interface_distributed
8)set external gateway to the router
9) snat port appeared as expected on hosting l3 agent controller
<neutron l3-agent-list-hosting-router <router_ha>>
[root@controller-0 ~]# ip netns
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.