feat: Implement azkustoingestv2 - Ingest V2 SDK#339
Draft
asaharn wants to merge 7 commits into
Draft
Conversation
… APIs, and tests - Add shared BaseClient with bearer auth, tracing headers, S2S token support - Implement queued, streaming, and managed streaming ingestion clients - Add error classification for managed streaming fallback decisions - Add configuration client with caching (DM endpoint) - Add comprehensive unit tests (93 tests) and E2E test framework - E2E tests support static token, service principal, and az cli auth - Port ingest-v2 spec from Java SDK (PR #466) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add comprehensive README.md with API overview, quick start, and reference - Add streaming ingestion sample (samples/streaming/) - Add queued ingestion sample with status tracking (samples/queued/) - Add managed streaming sample with automatic fallback (samples/managed/) - Add KUSTO_ACCESS_TOKEN support to E2E test env for easy local testing Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add azkustoingestv2 to root README.md with documentation links, description, and usage example - Add build/test steps for azkustoingestv2 in build.yml workflow - Add azkustoingestv2 tag trigger in release.yml workflow - Add test result display/parse steps for ingest-v2 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Keep azkustoingest release job from master - Add separate azkustoingestv2 release job - Fix TAG_PREFIX_REGEX for azkustodata job (was incorrectly combined) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The azkustodata TokenProvider requires SetHttp() to be called before AcquireToken() can work — it needs an HTTP client to fetch cloud metadata. Normally this is done during query execution, but the V2 E2E tests call AcquireToken() directly. This caused a nil interface panic in CI. Also updates README ingestion documentation to clearly distinguish V1 (legacy) from V2 (recommended) with comparison table and all client types. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nit() Multiple parallel test functions were calling testshared.SetDefaultDatabase() concurrently, causing a data race on the package-level 'database' variable. Fix: call it once in init() (which runs before any tests) and remove it from individual test functions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
asaharn
marked this pull request as ready for review
May 21, 2026 04:56
asaharn
marked this pull request as draft
June 12, 2026 10:01
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.
Summary
Implements the Ingest V2 SDK for Azure Kusto Go, porting the design from Java SDK PR #466.
Changes
New module:
azkustoingestv2Core implementation:
BaseClientwith bearer auth, tracing headers, and S2S token supportQueuedIngestClient— queued ingestion via DM with blob uploadStreamingIngestClient— direct streaming ingestion to engineManagedStreamingIngestClient— smart routing with retry + queued fallbackREST API endpoints:
POST /v1/rest/ingestion/queued/{db}/{table}— queued ingestPOST /v1/rest/ingest/{db}/{table}— streaming ingestGET /v1/rest/ingestion/queued/{db}/{table}/{operationId}— status trackingGET /v1/rest/ingestion/configuration— DM configurationTesting:
How to run E2E tests