Skip to content

fix(lb,floatingip): live-validation fixes from the CE lab - #25

Merged
PF9-pushkar merged 1 commit into
mainfrom
fix/live-validation
Jul 13, 2026
Merged

fix(lb,floatingip): live-validation fixes from the CE lab#25
PF9-pushkar merged 1 commit into
mainfrom
fix/live-validation

Conversation

@PF9-pushkar

Copy link
Copy Markdown
Collaborator

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_loadbalancer was unusable on PCD

Octavia's server-side default provider is amphora, which PCD does not enable, so every LB create failed with Provider 'amphora' is not enabled. Added a loadbalancer_provider attribute (default ovn) — gophercloud's CreateOpts.Provider was never wired up. PCD ships only the OVN (L4) provider.

pcd_networking_floatingip couldn't disassociate

port_id/fixed_ip used UseStateForUnknown, 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 a ModifyPlan that marks those fields unknown only while the association is actually changing. Inline disassociation is now port_id = ""; leaving port_id unset delegates to pcd_networking_floatingip_associate (the two mechanisms no longer conflict).

Test corrections (these paths had never run live)

  • LB tree test used HTTP / ROUND_ROBIN (amphora L7) → now OVN L4: TCP listener, SOURCE_IP_PORT pool, TCP monitor. Examples updated to match.
  • Floating-IP tests had no router — a floating IP can only associate when the fixed IP's subnet reaches the external network through a router (external gateway + interface). Added it.
  • testAccCheckNetworkDestroy matched data-source networks (surfaced by the new data.pcd_networking_network.ext lookup) → now skips data. 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)

Suite Cause
compute VM boot (instance, interface_attach, volume_attach) nova-compute can't connect to Glance to fetch image data (image-library data path)
block storage volume cinder-volume@synology service is down (Synology NAS unreachable / creds)
DNS zone/recordset Designate 500 no_servers_configured — pool has no nameservers (BIND9/pools.yaml not applied)

Checks

go build, go vet, gofmt, golangci-lint (0 issues), unit tests, terraform fmt, docs generate — all clean.

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
PF9-pushkar merged commit bbcf514 into main Jul 13, 2026
5 checks passed
@PF9-pushkar
PF9-pushkar deleted the fix/live-validation branch July 13, 2026 22:32
PF9-pushkar added a commit that referenced this pull request Jul 14, 2026
fix(lb,floatingip): live-validation fixes from the CE lab
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant