feat(server): register standard gRPC reflection on the primary listener
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 52/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- grpc, rust
- Bereich
- api, authentication, backend, documentation, testing
Rechercherichtung
Beginne mit dem Authentifizierungs-Bypass für /grpc.reflection. und den Listener-Tests, die primäre und ausschließlich Callback-basierte Listener abdecken, und untersuche anschließend openshell_core::FILE_DESCRIPTOR_SET sowie den Einstiegspunkt für die Registrierung des Gateway-Servers. Überprüfe das Verhalten des Reflection-Service mit einem laufenden Gateway und einem Reflection-Client, einschließlich der erwarteten Services, der Authentifizierung und der Zurückweisung von Callback-Listenern. Füge abschließend die angeforderte grpcurl-Dokumentation hinzu und halte die Arbeiten am Health-Service in #2569 davon getrennt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
User Story
As an API developer or operator, I want the gateway to serve standard gRPC reflection on its primary listener, so that supported tools can discover services and message descriptors without a separately distributed descriptor file.
Problem Statement
The gateway authentication and listener-routing code recognizes gRPC reflection paths as unauthenticated on the primary listener, and the build already produces a complete descriptor set. The server does not register a standard reflection service, so requests routed through that exception reach no implementation.
Impact / Why This Matters
Tools such as grpcurl, schema browsers, and integration diagnostics cannot discover the live gateway API. The existing unauthenticated routing rule suggests reflection is supported when it is not. Developers must locate matching source protos or descriptor artifacts and ensure they correspond to the running gateway version.
Proposed Design
Register the standard gRPC reflection v1 service on the primary gateway listener using the descriptor set produced by the existing protobuf build. Reflection remains unavailable on callback-only listeners and follows the existing unauthenticated primary-listener policy.
Expose all intentionally discoverable public services while excluding any service that is not actually routed by that listener. Document the security and deployment behavior.
Acceptance Criteria
- Standard gRPC reflection v1 is served on the primary listener.
- Reflection returns descriptors for every intentionally discoverable service routed by that listener.
- Callback-only listeners reject reflection using their existing protocol-appropriate response.
- Reflection does not require OIDC or mTLS user authentication on the primary listener, matching the documented policy.
- An integration test uses a reflection client against a running gateway and enumerates expected services.
- Documentation includes a minimal
grpcurldiscovery example and explains listener/auth behavior. - Standard health service work remains independently tracked in #2569.
Alternatives Considered
Remove reflection from the unauthenticated routing allowlist and distribute descriptor files only. This avoids serving reflection but provides a poorer diagnostics workflow and requires artifact/version coordination. Implement a custom schema endpoint. Standard reflection already has broad tooling support and avoids another OpenShell-specific contract.
Agent Investigation
The auth bypass includes /grpc.reflection., listener tests expect reflection on the primary listener and reject it on callback-only listeners, and openshell_core::FILE_DESCRIPTOR_SET contains the compiled descriptors. No reflection service dependency or registration is present.
Related: #2565, #2569. Source audit: https://gist.github.com/mrunalp/e80942c1544a0225ee588796a41ab30b.
- Vorherrschende Sprache
- Rust
- Sterne
- 15.4k
- Forks
- 1.7k
- Ø Merge
- 2 T. 22 Min.
- Gemergte PRs (30 T.)
- 352
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus NVIDIA/OpenShell
-
state:triage-needed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
state:triage-needed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Maintainer antworten meist innerhalb von 1 Tag
-
state:triage-needed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag
-
docs: document workspace and provider label capabilitiesEvtl. vergeben @johntmyers hat das vor 6 Tagen übernommen. Offenarea:docs
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
NVIDIA/OpenShell#4250 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug(driver-mxc): test helper fails to compile after gateway-name argumentEvtl. vergeben @feloy hat das vor 7 Tagen übernommen. Offenstate:triage-needed
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in NVIDIA/OpenShell
Ähnliche Issues
-
Docs: refresh target-app-parity and file-format-parity against mainEvtl. vergeben @vangel76 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
storytold/photocraft#4417 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
bevyengine/dlss_wgpu#37 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 63/100
bherbruck/solvecraft#369 ·
-
enhancement
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 83/100
alunduil/git-worktree-poi#11 ·