In TestDvrRouter class, two methods, _add_fip_agent_gw_port_info_to_router and _add_snat_port_info_to_router don't work for dual_stack case.
Method generate_dvr_router_info will try to call prepare_router_data to get a basic router dict, and then call the two methods to process additional data in router dict.
If we passing dual_stack=True, in the router dict, ex_gw_port will have two subnets and two fixed_ips [1], and two subnets and two fixed_ips for each interface [2], one for v4 and another for v6.
But in _add_fip_agent_gw_port_info_to_router, it will only process the first fixed_ip and subnet in ex_gw_port in router dict [3],
and in _add_snat_port_info_to_router, it will only process fixed_ip and subnet for the first interface [4].
That will make dual_stack finally fail to work.
[1] https://github.com/openstack/neutron/blob/master/neutron/tests/common/l3_test_common.py#L61-L94
[2] https://github.com/openstack/neutron/blob/master/neutron/tests/common/l3_test_common.py#L140-L174
[3] https://github.com/openstack/neutron/blob/master/neutron/tests/functional/agent/l3/test_dvr_router.py#L230-L251
[4] https://github.com/openstack/neutron/blob/master/neutron/tests/functional/agent/l3/test_dvr_router.py#L258-L280
Change abandoned by Armando Migliaccio (<email address hidden>) on branch: master /review. openstack. org/269712
Review: https:/
Reason: This review is > 4 weeks without comment, and failed Jenkins the last time it was checked. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and leaving a 'recheck' comment to get fresh test results.