Skip to content

fix: read a location's subnet range from spec when status is absent - #8

Merged
scotwells merged 1 commit into
mainfrom
fix/subnet-range-from-spec
Aug 21, 2026
Merged

fix: read a location's subnet range from spec when status is absent#8
scotwells merged 1 commit into
mainfrom
fix/subnet-range-from-spec

Conversation

@scotwells

Copy link
Copy Markdown
Collaborator

Instances cannot get VPC networking even now that a location has address space. The subnet reaches the cell, but the VPC is never created and every interface sits at Prepared=False / AwaitingVPC.

networksForContext reads subnet.Status.StartAddress and Status.PrefixLength. A location's copy arrives by Karmada propagation, which carries spec and never the status subresource, and no cell runs the reconciler that would populate status there. So the controller sees a subnet with no range and concludes the location has no address space.

Live on us-central-1-staging-lab — the propagated copy:

spec:
  startAddress: "fd20::"
  prefixLength: 64
status:
  conditions: [...]      # no startAddress, no prefixLength

Read status first and fall back to spec, which is what network-services-operator's own subnetGateway does with the same object for the same reason. Status still wins where it exists, which is the control plane's own copy.

Related

Completes the chain behind datum-cloud/compute#244, which waits on Prepared. The subnet itself arrives via datum-cloud/network-services-operator#396 and #397.

Not fixed here, and worth its own change: vpc.Spec.Networks is written only at creation and VPCSpec is immutable, so a second address family arriving later is silently dropped.

A location's Subnet arrives by Karmada propagation, which carries spec and
never the status subresource, and no cell runs the reconciler that would
populate status there. networksForContext read status only, so it found no
address space, never created the VPC, and every interface stayed at
Prepared=False/AwaitingVPC.

Confirmed on us-central-1-staging-lab: the propagated copy carries
startAddress fd20:: and prefixLength 64 in spec, with an empty status.

Status still wins where it exists, which is the control plane's own copy.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@scotwells
scotwells requested a review from privateip August 21, 2026 17:08
@scotwells
scotwells marked this pull request as ready for review August 21, 2026 17:08
@scotwells
scotwells requested a review from a team as a code owner August 21, 2026 17:08
@scotwells
scotwells merged commit f470673 into main Aug 21, 2026
5 checks passed
@scotwells
scotwells deleted the fix/subnet-range-from-spec branch August 21, 2026 17:09
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.

2 participants