[dvr] router remove subnet <router> <subnet> silently fails
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Scenario: Queens, DVR without L3 HA, distributed non-HA virtual router (pubrouter), all subnets are attached to 2 different subnet pools, all of them have one global address scope so DVR "fast exit" is triggered (https:/
Commands:
openstack address scope create dev
openstack subnet pool create --address-scope dev --pool-prefix 10.232.40.0/21 --pool-prefix 10.232.16.0/21 dev
openstack subnet pool create --address-scope dev --pool-prefix 192.168.100.0/24 tenant
openstack network create --external --provider-
openstack network segment set --name segment1 d8391bfb-
openstack network segment create --physical-network physnet2 --network-type flat --network pubnet segment2
openstack subnet create --no-dhcp --subnet-pool dev --subnet-range 10.232.16.0/21 --allocation-pool start=10.
openstack subnet create --gateway 10.232.40.100 --no-dhcp --subnet-pool dev --subnet-range 10.232.40.0/21 --allocation-pool start=10.
openstack network create --internal --provider-
openstack subnet create --dhcp --ip-version 4 --subnet-range 192.168.100.0/24 --subnet-pool tenant --dns-nameserver 10.232.36.101 --network tenantnet tenantsubnet
openstack router create --disable --no-ha --distributed pubrouter
openstack router set --disable-snat --external-gateway pubnet --enable pubrouter
openstack network create --internal --provider-
openstack subnet pool set --pool-prefix 192.168.200.0/24 tenant
openstack subnet create --dhcp --ip-version 4 --subnet-range 192.168.200.0/24 --subnet-pool tenant --dns-nameserver 10.232.36.101 --network othertenantnet othertenantsubnet
openstack router add subnet pubrouter othertenantsubnet
outputs in case they are needed: https:/
Note: (This setup uses routed provider networks so unit names correspond to nodes that have connectivity to the right physnets, however, this is irrelevant for this bug)
l1 - leaf 1
l2 - leaf 2)
openstack subnet show tenantsubnet | grep cid
| cidr | 192.168.100.0/24 |
openstack subnet show othertenantsubnet | grep cid
| cidr | 192.168.200.0/24 |
# 2 qr- interfaces per namespace on every compute - one per tenant network
juju run --application neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nqr-a9696fa7-
\nqr-
\n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nqr-a9696fa7-
\nqr-
\n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
# removed 192.168.200.0/24 from pubrouter
openstack router remove subnet pubrouter othertenantsubnet
# ports are still there
juju run --application neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nqr-a9696fa7-
\nqr-
\n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nrfp-4f9ca9ef-
\nqr-
\ 192.168.200.1/24 \n"
UnitId: neutron-
- Stdout: "lo UNKNOWN 127.0.0.1/8 \nqr-a9696fa7-
\nqr-
\n"
UnitId: neutron-
# but not policy rules
juju run --application neutron-
- Stdout: "0:\tfrom all lookup local \n32766:\tfrom all lookup main \n32767:\tfrom
all lookup default \n80000:\tfrom 192.168.100.0/24 lookup 16 \n80000:\tfrom 192.168.200.0/24
lookup 16 \n"
UnitId: neutron-
- Stdout: "0:\tfrom all lookup local \n32766:\tfrom all lookup main \n32767:\tfrom
all lookup default \n80000:\tfrom 192.168.100.0/24 lookup 16 \n80000:\tfrom 192.168.200.0/24
lookup 16 \n"
UnitId: neutron-
- Stdout: "0:\tfrom all lookup local \n32766:\tfrom all lookup main \n32767:\tfrom
all lookup default \n80000:\tfrom 192.168.100.0/24 lookup 16 \n80000:\tfrom 192.168.200.0/24
lookup 16 \n"
UnitId: neutron-
- Stdout: "0:\tfrom all lookup local \n32766:\tfrom all lookup main \n32767:\tfrom
all lookup default \n80000:\tfrom 192.168.100.0/24 lookup 16 \n80000:\tfrom 192.168.200.0/24
lookup 16 \n"
UnitId: neutron-
- Stdout: "0:\tfrom all lookup local \n32766:\tfrom all lookup main \n32767:\tfrom
all lookup default \n80000:\tfrom 192.168.100.0/24 lookup 16 \n80000:\tfrom 192.168.200.0/24
lookup 16 \n"
UnitId: neutron-
- Stdout: "0:\tfrom all lookup local \n32766:\tfrom all lookup main \n32767:\tfrom
all lookup default \n80000:\tfrom 192.168.100.0/24 lookup 16 \n80000:\tfrom 192.168.200.0/24
lookup 16 \n"
UnitId: neutron-
- Stdout: "0:\tfrom all lookup local \n32766:\tfrom all lookup main \n32767:\tfrom
all lookup default \n80000:\tfrom 192.168.100.0/24 lookup 16 \n80000:\tfrom 192.168.200.0/24
lookup 16 \n"
UnitId: neutron-
A subnet is not even removed from a router after "openstack router remove subnet <id>"
openstack router show pubrouter -f value -c interfaces_info && openstack router remove subnet pubrouter 6694cc70- 7667-4583- 8eec-1decb19063 c9 && openstack router show pubrouter -f value -c interfaces_info 30f2-4991- 8541-a65e9717dd 28", "ip_address": "192.168.100.1", "port_id": "a9696fa7- 967c-4789- 97c1-6ae47733ac 0d"}, {"subnet_id": "6694cc70- 7667-4583- 8eec-1decb19063 c9", "ip_address": "192.168.200.1", "port_id": "ad410866- 0c90-46db- 8cae-eb9f28e336 fa"}, {"subnet_id": "40a17fc3- 30f2-4991- 8541-a65e9717dd 28", "ip_address": "192.168.100.11", "port_id": "b8dcfe58- b6e8-4237- ac90-5245bd4956 64"}, {"subnet_id": "6694cc70- 7667-4583- 8eec-1decb19063 c9", "ip_address": "192.168.200.12", "port_id": "ea140f1d- d006-4f77- b2c1-85d6fba94a 4a"}] 30f2-4991- 8541-a65e9717dd 28", "ip_address": "192.168.100.1", "port_id": "a9696fa7- 967c-4789- 97c1-6ae47733ac 0d"}, {"subnet_id": "6694cc70- 7667-4583- 8eec-1decb19063 c9", "ip_address": "192.168.200.1", "port_id": "ad410866- 0c90-46db- 8cae-eb9f28e336 fa"}, {"subnet_id": "40a17fc3- 30f2-4991- 8541-a65e9717dd 28", "ip_address": "192.168.100.11", "port_id": "b8dcfe58- b6e8-4237- ac90-5245bd4956 64"}, {"subnet_id": "6694cc70- 7667-4583- 8eec-1decb19063 c9", "ip_address": "192.168.200.12", "port_id": "ea140f1d- d006-4f77- b2c1-85d6fba94a 4a"}]
[{"subnet_id": "40a17fc3-
[{"subnet_id": "40a17fc3-