Skip to content

private-networking: controller reads links from the table, retire the projection#3070

Draft
jshearer wants to merge 1 commit into
jshearer/privatelinks_fast_followfrom
jshearer/privatelinks-contract
Draft

private-networking: controller reads links from the table, retire the projection#3070
jshearer wants to merge 1 commit into
jshearer/privatelinks_fast_followfrom
jshearer/privatelinks-contract

Conversation

@jshearer

Copy link
Copy Markdown
Contributor

Stacked on #3063 (base branch jshearer/privatelinks_fast_follow); review and merge that first.

The cutover that follows the additive private-networking change. In #3063 desired links live in data_plane_private_links while the controller still reads them from the projected data_planes.private_links column, so it has no deploy-ordering dependency on the agent-api cutover. This PR moves the controller onto the table directly and retires the projection.

What changed

  • dpc reads desired links from data_plane_private_links (ordered by created_at, id); the id is still withheld from est-dry-dock, so the Pulumi input shape is unchanged.
  • The data_plane_private_links trigger drops its projection into data_planes.private_links and becomes wake-only, still sending the controller a converge promptly on any link change.

Deploy ordering

Roll out the controller binary before applying the migration. A controller still reading the column keeps getting projected updates until it is replaced; once it reads the table, the projection is gone.

Not in this PR

The now-unused private_links column is left in place. It and the legacy *_link_endpoints columns are all projected by the data_planes_overview view and exposed by the agent-api endpoint resolvers, so dropping them (recreating the view once, and removing those resolvers) is a single follow-up rather than recreating the view per column.

Testing

  • Cutover migration applies via supabase db reset; sqlx cache regenerated.
  • dpc and control-plane-api data_planes suites green; offline build clean.

… projection

Cutover on top of the additive private-networking change. The controller now reads desired links from `data_plane_private_links` directly rather than the projected `data_planes.private_links` column, so the transition projection trigger is replaced with a wake-only version that still converges the controller promptly on a link change.

Deploy the controller binary before applying this migration. The now-unused `private_links` and legacy `*_link_endpoints` columns (shared by the `data_planes_overview` view and the agent-api endpoint resolvers) are dropped in a single follow-up so the view is recreated once.
@jshearer jshearer force-pushed the jshearer/privatelinks_fast_follow branch from be57daf to eb61a36 Compare June 29, 2026 20:50
@jshearer jshearer force-pushed the jshearer/privatelinks-contract branch from 1bfac72 to a282e05 Compare June 29, 2026 20:50
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