Let a holder report a network interface available to serve - #439
Merged
Conversation
A network interface says whether its addresses are allocated and programmed, but nothing says whether the thing behind it is ready to take traffic. A service that load balances across interfaces needs that answer from whatever holds the interface, and needs to know which location each interface is served from. Add a holder-owned condition that the operator only ever seeds Unknown and resets when a retained interface is unbound, so a new holder never inherits a departed holder's word. Stamp the serving location onto each interface a cell binds and carry a bounded set of claim labels onto the interface so a selector can reach it. Key changes: - Add the HolderAvailable condition and its reasons to NetworkInterface - Seed it Unknown on create and take it back on unbind - Stamp the location label on interfaces the cell binds - Propagate selected claim labels onto the interface and its projection
ecv
approved these changes
Sep 9, 2026
ecv
left a comment
Contributor
There was a problem hiding this comment.
Reviewed the holder contract and the label allow-list. The HolderAvailable reset on unbind and the propagation/removal paths look right, and the tests cover the settled-state no-op.
One thing I checked rather than asked about: release leaves the propagated compute.datumapis.com/* and location labels on a retained interface, which looked like it could let an unheld interface match a NetworkService selector. #441 rules that out by filtering members on Phase == Bound, so the labels persisting as slot identity is consistent.
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.
A network interface reports whether its addresses are allocated and programmed, but nothing reports whether the workload behind it is ready to take traffic. This adds a condition that only the holder of an interface writes, which the operator seeds as unknown on creation and resets when a retained interface is unbound so a new holder never inherits a departed one's word. Each interface a cell binds is also stamped with the location that serves it, and a bounded set of claim labels is carried onto the interface and its project copy so a label selector can reach it. This is the first of a stack of six pull requests that split the network services prototype into reviewable pieces, and it stands on its own as the contract the compute operator writes to.
Test plan