fip router config is not created if the vm ports attached to FIPs have no device_owner
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Expired
|
Low
|
Unassigned |
Bug Description
With dvr_snat or dvr mode, if you create a port like described, and then attach it to
a netns in any of the computes or dvr_snat node, the _floatingips key is not set
by neutron-server on a sync_routers call from l3-agent.
This leads to the FIP namespace not being updated for the specific floating ip, or
not even being created.
We either document that a valid device_owner is necessary[1] for a floating-ip in DVR,
or we accept an empty device owner.
I believe we should accept an empty device_owner to don't differ from the non-DVR implementation.
Script to reproduce:
neutron net-create dmz
ID_DMZ=$(neutron subnet-create dmz --name dmz_subnet 172.16.255.128/26 | awk '/ id / { print $4 }')
neutron port-create --name dmz-vm1 dmz --fixed-ip subnet_
ID_DMZ_
DMZ_VM1_
DMZ_VM1_
sudo ip netns add vm1
sudo ovs-vsctl -- --may-exist add-port br-int vm1 \
-- set Interface vm1 type=internal \
sudo ip link set vm1 address $DMZ_VM1_MAC
sudo ip link set vm1 netns vm1
sudo ip netns exec vm1 ip link set dev vm1 up
sudo ip netns exec vm1 dhclient -I vm1 --no-pid vm1
sudo ip netns exec vm1 ip addr show
sudo ip netns exec vm1 ip route show
neutron router-create router_dmz
neutron router-gateway-set router_dmz public
neutron router-
FIP_ID=$(neutron floatingip-create public | awk '/ id / { print $4 }')
FIP_IP=$(neutron floatingip-show $FIP_ID | awk '/ floating_ip_address / { print $4 }')
neutron floatingip-
Changed in neutron: | |
status: | New → Triaged |
importance: | Undecided → Low |
tags: | added: l3-dvr-backlog |
Changed in neutron: | |
assignee: | nobody → Zhixin Li (lizhixin) |
Changed in neutron: | |
assignee: | Zhixin Li (lizhixin) → nobody |
Changed in neutron: | |
assignee: | nobody → Brian Haley (brian-haley) |
Changed in neutron: | |
assignee: | Brian Haley (brian-haley) → nobody |
I think this is more of a documentation issue to make sure these ports have a "compute:" prefix on them.