Problem description
The floatingip-create-full E2E test is flaky. It fails when Neutron's auto-allocated IP for the router gateway port collides with the hardcoded floatingIP: 192.168.155.5 requested by the FloatingIP resource.
Observed failure
Root cause
The test creates an external subnet 192.168.155.0/24 without allocationPools, then:
- A Router with an external gateway on that subnet — Neutron auto-allocates an IP from the full pool for the gateway port
- A FloatingIP requesting
floatingIP: 192.168.155.5
In the failing run, Neutron assigned 192.168.155.5 to the router gateway port. The subsequent FloatingIP creation received HTTP 409 Conflict because the IP was already in use:
INFO neutron.api.v2.resource create failed (client error):
There was a conflict when trying to complete your request.
POST /networking/v2.0/floatingips => HTTP/1.1 409
ORC correctly classified this as a terminal error (non-quota 409), set Progressing=False, and stopped reconciling. The test timed out waiting for status.resource which would never appear.
Why it's flaky
The router gateway IP is non-deterministically assigned by Neutron. Most runs get an IP other than .5 and the test passes. Occasionally it gets .5, causing the collision.
Fix
Add allocationPools to the external subnet to constrain auto-allocated IPs away from 192.168.155.5:
resource:
networkRef: floatingip-create-full-external
ipVersion: 4
cidr: 192.168.155.0/24
allocationPools:
- start: 192.168.155.100
end: 192.168.155.200
This is the only test affected. All other floatingip tests either don't have a router on the same external network, or don't request a specific floating IP address.
Want me to adjust anything — title, labels, wording, level of detail?
ORC version
main
Additional information
No response
Relevant log output
Problem description
The
floatingip-create-fullE2E test is flaky. It fails when Neutron's auto-allocated IP for the router gateway port collides with the hardcodedfloatingIP: 192.168.155.5requested by the FloatingIP resource.Observed failure
floatingip-create-full, step0-create-resource.status.resourcenever populated;Progressing=Falsewith terminal errorRoot cause
The test creates an external subnet
192.168.155.0/24withoutallocationPools, then:floatingIP: 192.168.155.5In the failing run, Neutron assigned
192.168.155.5to the router gateway port. The subsequent FloatingIP creation received HTTP 409 Conflict because the IP was already in use:ORC correctly classified this as a terminal error (non-quota 409), set
Progressing=False, and stopped reconciling. The test timed out waiting forstatus.resourcewhich would never appear.Why it's flaky
The router gateway IP is non-deterministically assigned by Neutron. Most runs get an IP other than
.5and the test passes. Occasionally it gets.5, causing the collision.Fix
Add
allocationPoolsto the external subnet to constrain auto-allocated IPs away from192.168.155.5:This is the only test affected. All other floatingip tests either don't have a router on the same external network, or don't request a specific floating IP address.
Want me to adjust anything — title, labels, wording, level of detail?
ORC version
main
Additional information
No response
Relevant log output