net-controller: expose authorized asynchronous node diagnostics - #761
Closed
Patrick W. Healy (phealy) wants to merge 17 commits into
Closed
Patrick W. Healy (phealy) wants to merge 17 commits into
Patrick W. Healy (phealy) wants to merge 17 commits into
Conversation
Remove the Network card and heatmap navigation without changing Site summaries, node filtering, or per-node diagnostics. Remove unused graph edge-health derivation. Retain the detached topology implementation for an isolated follow-up deletion. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Isolate the 949-line deletion of the topology component after its render paths were removed. No remaining imports reference it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Remove matrix construction and broadcast fields, obsolete matrix-only coverage, and detached graph helpers. Preserve node overview and resource summaries and unrelated status tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Preserve full publication by default until the later runtime activation layer. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Keep detailed snapshots in one immutable shallow-owned TTL store. Add read-time and proactive deadline expiry, lifecycle cancellation and restart, and deterministic ownership and concurrency tests. Leave existing status ingestion and broadcasts unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Factor legacy peer health and observed-route mismatch calculations into reusable status helpers. Preserve lightweight metadata without carrying peer, route, or BPF arrays. Reuse the calculations for existing controller summaries without changing their output. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Keep explicit node-reported counts separate from lightweight metadata and reject legacy deltas against summary bases. Preserve enrichment and summary health indicators, and snapshot mutable cluster containers so concurrent patches cannot change a returned overview. Existing legacy full publication and bulk behavior remain unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Accept summary-only protobuf and JSON over WebSocket and HTTP, validate nested identity and observed counts, reject mixed detail payloads, and advertise summary capability in acknowledgments. Patch overview cache and notify viewers without retaining diagnostic arrays. Preserve legacy publication formats. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Separate detail snapshot construction from peer visitation and kernel route filtering so summary collection can reuse inspection without retaining detail arrays. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Reuse kernel inspection and expected-route planning while preserving legacy missing-route and unbounded0 annotation semantics. Add table, family, missing, mismatch, and multipath parity fixtures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Collect shared metadata, bootstrap errors, aggregate health and exact peer/route summary facts without BPF traversal or outbound detail arrays. Add /status/summary using the existing local status policy and an additive protobuf converter. Leave all publishers and full endpoints unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Use PeerHealthyForOverview during streamed summary collection and shared legacy projection/mismatch helpers in parity tests. Do not collect full snapshots in the production summary path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Coalesce per-node requests, reuse UID-bound cached details, dispatch through a WebSocket hook or bounded HTTP pull, and expose POST polling fallback. Keep only request metadata outside the TTL detail cache; reject stale or mismatched replies and proactively retire requests. Add shared detail result JSON types and deterministic lifecycle tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Add per-node POST and GET detail APIs using existing viewer and aggregated authorization. Start request and cache lifecycles with the leader context and configured durations, invalidate replaced or deleted node UIDs, and use informer-resolved HTTP pulls regardless of background pull settings. Reject oversized decoded HTTP detail payloads without imposing a cache or WebSocket cap. Preserve legacy status routes and publication behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
Do not apply the status POST wire-size limit to an uncompressed HTTP GET response. Preserve existing explicit-pull behavior, avoid an extra full JSON allocation, and cover a response larger than one MiB. WebSocket and status POST frame limits are unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d2243398-6c36-4c3d-969e-7ed7bfb5b459
This was referenced Sep 16, 2026
This was referenced Sep 16, 2026
Patrick W. Healy (phealy)
force-pushed
the
phealy/lightweight-status-detail-requests
branch
from
September 17, 2026 14:46
b714aa4 to
4896fa5
Compare
Contributor
Author
|
This PR was mistaken churn from splitting the lightweight-status work into unnecessarily small PRs. That was my mistake, not a requirement from the user. Its changes are preserved in #760 within the user-approved, consolidated 12-PR draft stack. Closing this superseded PR; the implementation is not being discarded, and nothing has been merged into main. |
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.
Scope
Stacked on #760. Adds authorized POST/GET /status/node/{name}/details with explicit pending/complete/expired/unavailable/retryable results, configurable leader-local lifecycle, and node UID invalidation. Without an active command dispatcher, explicit requests immediately use informer-resolved HTTP pull regardless of background-pull/publication mode; failures remain pending for status-POST command delivery in the transport layer.
Preserves existing HTTP GET response behavior; the status POST wire limit is not incorrectly imposed on decoded GET data. Existing transport limits remain unchanged. Ordinary bulk endpoints and node publishing defaults are unchanged.
Validation
Controller package race tests, scoped formatting/lint including actionlint, config/lifecycle/API auth/HTTP tests passed. Includes >1 MiB explicit pull, disabled background pull, wrong-node/failure handling, coalescing, expiry, and leadership invalidation. Diff is below 1,000 additions-plus-deletions.
Lightweight status draft stack
Base: #745. Each layer targets the preceding branch and remains draft.
#746 -> #747 -> #748 -> #750 -> #751 -> #752 -> #753 -> #754 -> #755 -> #756 -> #757 -> #758 -> #759 -> #760 -> #761 -> #762 -> #763 -> #764 -> #765 -> #766 -> #767 -> #768 -> #769 -> #770 -> #771 -> #772 -> #773 -> #774 -> #775 -> #776 -> #777 -> #778 -> #779 -> #780 -> #781 -> #782 -> #783 -> #784 -> #785 -> #786 -> #787 -> #788 -> #789 -> #790 -> #791 -> #792 -> #793 -> #794 -> #795 -> #796 -> #797 -> #798 -> #799