fix(lb,floatingip): live-validation fixes from the CE lab - #25
Merged
Conversation
Two provider bugs surfaced by running the acceptance suites against a fully-featured CE lab, plus the test corrections that exercised them. pcd_lb_loadbalancer: add loadbalancer_provider (default "ovn"). Octavia's server-side default provider is "amphora", which PCD does not enable, so every load balancer create failed with "Provider 'amphora' is not enabled". PCD ships only the OVN (L4) provider; the field lets users select it and defaults to it. The LB acceptance test now uses OVN-compatible L4 settings (TCP listener, SOURCE_IP_PORT pool, TCP monitor) and the examples were updated to match. pcd_networking_floatingip: fix disassociation and the inconsistent-result error when an association changes. port_id/fixed_ip use UseStateForUnknown so removing them from config was hidden from the plan (the disassociate update never fired), and the server-derived fields (router_id, status, fixed_ip) were not re-planned when the association changed, producing "inconsistent result after apply". A ModifyPlan now marks those fields unknown only while the association is actually changing; inline disassociation is port_id = "" (leaving port_id unset delegates to pcd_networking_floatingip_associate). The floating-IP acceptance tests gained the router (external gateway + interface) that a floating IP requires, and testAccCheckNetworkDestroy now skips data-source networks. Validated live: identity, images, key management, the full networking suite (incl. floating IPs), compute control-plane, all quotasets, and the full OVN load-balancer tree. Lab-side blockers (not provider defects) remain for compute VM boot (nova->glance image data), Cinder volumes (synology backend down), and DNS (Designate pool has no nameservers). See DECISIONS.md.
PF9-pushkar
added a commit
that referenced
this pull request
Jul 14, 2026
fix(lb,floatingip): live-validation fixes from the CE lab
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ran the acceptance suites against a fully-featured CE lab (compute/KVM, image library, Cinder/Synology, DNS roles converged). Two real provider bugs surfaced, both fixed here.
Provider bugs fixed
pcd_lb_loadbalancerwas unusable on PCDOctavia's server-side default provider is
amphora, which PCD does not enable, so every LB create failed withProvider 'amphora' is not enabled. Added aloadbalancer_providerattribute (defaultovn) — gophercloud'sCreateOpts.Providerwas never wired up. PCD ships only the OVN (L4) provider.pcd_networking_floatingipcouldn't disassociateport_id/fixed_ipusedUseStateForUnknown, so removing them from config was hidden from the plan and the disassociate update never fired; and when an association changed, the server-derived fields (router_id,status,fixed_ip) weren't re-planned, producing "inconsistent result after apply". Fixed with aModifyPlanthat marks those fields unknown only while the association is actually changing. Inline disassociation is nowport_id = ""; leavingport_idunset delegates topcd_networking_floatingip_associate(the two mechanisms no longer conflict).Test corrections (these paths had never run live)
ROUND_ROBIN(amphora L7) → now OVN L4: TCP listener,SOURCE_IP_PORTpool, TCP monitor. Examples updated to match.testAccCheckNetworkDestroymatched data-source networks (surfaced by the newdata.pcd_networking_network.extlookup) → now skipsdata.addresses.Validated live (this run)
identity · images · key management · all of networking (network/subnet/secgroup/router/port/routes/QoS/quotas and floating IPs) · compute control-plane (keypair/flavor/servergroup/quotaset) · all three quotasets · the full OVN load-balancer tree (lb + listener + pool + member + monitor + DS + rename + import).
Lab-side blockers (not provider defects — resources create correctly and surface the real fault)
instance,interface_attach,volume_attach)volumecinder-volume@synologyservice is down (Synology NAS unreachable / creds)zone/recordset500 no_servers_configured— pool has no nameservers (BIND9/pools.yamlnot applied)Checks
go build,go vet,gofmt,golangci-lint(0 issues), unit tests,terraform fmt, docs generate — all clean.