feat(intake): add traces API to intake#9
Merged
Conversation
Contributor
|
All contributors have signed the DCO ✍️ ✅ |
Contributor
Author
|
I have read the DCO document, and I hereby sign the DCO. |
Contributor
Documentation preview is readyPreview: https://jubilant-adventure-g4rv38m.pages.github.io/pr-preview/pr-9/pr-9/ Built from This preview is deployed from this PR branch, updates when docs changes are pushed, and will be removed when the PR closes. |
Contributor
|
shanaiabuggy
approved these changes
May 21, 2026
BrianNewsom
force-pushed
the
brnewsom/fp-157-get-traces-api
branch
from
May 21, 2026 18:41
f785f6c to
533757b
Compare
Mirrors the traces API work from the original Platform repository and includes generated SDK/CLI/auth updates plus review feedback. Signed-off-by: Brian Newsom <brnewsom@nvidia.com>
BrianNewsom
force-pushed
the
brnewsom/fp-157-get-traces-api
branch
from
May 21, 2026 18:44
533757b to
b988a41
Compare
benmccown
added a commit
that referenced
this pull request
Jun 23, 2026
Composition over inheritance for the k8s reconcilers (review #2/#3): * Extract StatusProjector (pod-status projection, crash-loop/pending-timeout error builders, host URL) and ResourceDeleter (idempotent 404-tolerant delete) as standalone collaborators. * Reconciler is now a pure interface (the 5 verbs); NimOperatorReconciler and K8sReconciler compose the projector + deleter instead of inheriting them. The backend builds both collaborators in init() and injects them. Thread the reconcile context through the backend interface (review #19): * create/update/get_model_deployment_status now take a single ctx: ModelContext instead of (deployment, config, model_entity); applied across the ServiceBackend ABC and the docker / none / k8s backends, the deployment reconciler call sites, and the test mocks. delete stays (workspace, name). Fixes + nits: * Harden NIMService status read against a null status/state (review #15): (nim_status.get("state") or "").lower() can no longer raise. * Convert nim_operator logging to structured extra={} (review #13); avoid the reserved LogRecord 'name' key (use resource_name / deployment_name). * Flatten the Files-service create/update branches into a guard-clause helper (review #14). * compile_puller_job: rename args -> container_args (review #17). * Reconciler nits: import the vllm_k8s_compiler module under its full name (review #7), reflow the P3 (a)/(b) comment (review #8), quote values in the model-source error (review #9), drop the _ = image_pull_secrets dance (review #12), name the event-message cap MAX_EVENT_MESSAGE_CHARS (review #6), and document the _select_reconciler None contract (review #16). Signed-off-by: Ben McCown <bmccown@nvidia.com>
benmccown
added a commit
that referenced
this pull request
Jun 24, 2026
Composition over inheritance for the k8s reconcilers (review #2/#3): * Extract StatusProjector (pod-status projection, crash-loop/pending-timeout error builders, host URL) and ResourceDeleter (idempotent 404-tolerant delete) as standalone collaborators. * Reconciler is now a pure interface (the 5 verbs); NimOperatorReconciler and K8sReconciler compose the projector + deleter instead of inheriting them. The backend builds both collaborators in init() and injects them. Thread the reconcile context through the backend interface (review #19): * create/update/get_model_deployment_status now take a single ctx: ModelContext instead of (deployment, config, model_entity); applied across the ServiceBackend ABC and the docker / none / k8s backends, the deployment reconciler call sites, and the test mocks. delete stays (workspace, name). Fixes + nits: * Harden NIMService status read against a null status/state (review #15): (nim_status.get("state") or "").lower() can no longer raise. * Convert nim_operator logging to structured extra={} (review #13); avoid the reserved LogRecord 'name' key (use resource_name / deployment_name). * Flatten the Files-service create/update branches into a guard-clause helper (review #14). * compile_puller_job: rename args -> container_args (review #17). * Reconciler nits: import the vllm_k8s_compiler module under its full name (review #7), reflow the P3 (a)/(b) comment (review #8), quote values in the model-source error (review #9), drop the _ = image_pull_secrets dance (review #12), name the event-message cap MAX_EVENT_MESSAGE_CHARS (review #6), and document the _select_reconciler None contract (review #16). Signed-off-by: Ben McCown <bmccown@nvidia.com>
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.
Also fixes a number of subtle bugs, including duplicate ATIF token counting.
Validation:
uv run --frozen pytest services/intake/tests/test_traces_api.py services/intake/tests/test_traces_clickhouse_repository.py services/intake/tests/test_spans_schemas.py services/intake/tests/test_atif_v17.py services/intake/tests/integration/spans/test_chat_completions_ingest.py services/intake/tests/integration/spans/test_atif_ingest.py services/intake/tests/integration/spans/test_traces_read.py -quv run --frozen pytest sdk/python/nemo-platform/tests/api_resources/intake/test_traces.py -quv run --frozen ruff check services/intake/src/nmp/intake services/intake/testspnpm --filter @nemo/sdk testpnpm gen:check