Add OneLake workspace client factory - #7275
Open
Akın Soysal (akeensoysal) wants to merge 10 commits into
Open
Conversation
Add fail-closed OneLake endpoint resolution, explicit DFS and Blob client pairing, offline routing coverage, and a strict live-contract harness. Preserve ring-specific Blob hosts on rename results.\n\nRefs Azure#7274
|
Thank you for your contribution Akın Soysal (@akeensoysal)! We will review the pull request and get back to you soon. |
|
Azure Pipelines: Successfully started running 2 pipeline(s). 8 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Use Azure Core JSON support, preserve the sample capability boundary, fix multi-config test discovery, and register OneLake service terms with cspell.
Restore unrelated Core CI and AMQP changes to the main-branch versions so the pull request remains focused on the OneLake workspace client API.\n\nRelated to Azure#7274.
Skip private Cargo feed authentication for fork pull requests and build the supported vendored uAMQP implementation instead. Pin the AMQP test broker, restore it through the public Azure SDK NuGet mirror, and return pre-cancelled management opens before network setup.\n\nRelated to Azure#7274.
Akın Soysal (akeensoysal)
marked this pull request as ready for review
August 4, 2026 13:49
Akın Soysal (akeensoysal)
requested review from
JinmingHu (Jinming-Hu),
Larry Osterman (LarryOsterman),
Rick Winter (RickWinter),
Amanda Nguyen (amnguye),
Anton Kolesnyk (antkmsft),
Ben Broderick Phillips (benbp),
Daniel Jurek (danieljurek),
Gauri Lamunion (gapra-msft),
Mike Harder (mikeharder) and
Jeff Fisher (xirzec)
as code owners
August 4, 2026 13:49
|
Azure Pipelines: Successfully started running 2 pipeline(s). 8 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds first-class Microsoft Fabric OneLake workspace support to azure-storage-files-datalake by introducing a validated factory (DataLakeFileSystemClient::CreateForOneLakeWorkspace) that resolves ring/cloud/workspace-scoped DFS+Blob endpoints and returns a correctly paired client configuration. It also expands test coverage (unit + offline harness) and includes a small set of ancillary changes to AMQP tests and CI to support fork scenarios.
Changes:
- Added
DataLakeFileSystemClient::CreateForOneLakeWorkspacewith strict URL/workspace validation and explicit construction of workspace DFS/Blob endpoints. - Updated rename-result client construction to preserve the workspace blob host/pipeline behavior.
- Added extensive unit tests plus a CTest + Python harness for validating/mock-probing the cloud/ring/API-family endpoint matrix; updated sample and build/pipeline wiring.
Reviewed changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| sdk/storage/azure-storage-files-datalake/test/ut/onelake_workspace_client_test.cpp | New unit tests for OneLake workspace factory behavior, validation, routing, rename behavior, and tenant discovery. |
| sdk/storage/azure-storage-files-datalake/test/ut/CMakeLists.txt | Adds the new OneLake unit test source to the UT target. |
| sdk/storage/azure-storage-files-datalake/test/live/onelake_workspace_endpoint_live_test.py | Python driver that runs the harness in validate/mock modes and verifies redaction/behavior. |
| sdk/storage/azure-storage-files-datalake/test/live/onelake_workspace_endpoint_live_test.cpp | C++ harness that validates endpoint normalization and (optionally) probes endpoints; produces redacted JSON evidence. |
| sdk/storage/azure-storage-files-datalake/test/live/fixtures/valid-two-row.tsv | Fixture: minimal valid manifest (2 rows) for harness tests. |
| sdk/storage/azure-storage-files-datalake/test/live/fixtures/missing.tsv | Fixture: manifest missing required row(s) to validate negative-path behavior. |
| sdk/storage/azure-storage-files-datalake/test/live/fixtures/malformed.tsv | Fixture: manifest row with wrong column count to validate parser error handling. |
| sdk/storage/azure-storage-files-datalake/test/live/fixtures/failed.tsv | Fixture: manifest with an invalid endpoint to validate failure reporting/redaction. |
| sdk/storage/azure-storage-files-datalake/test/live/fixtures/duplicate.tsv | Fixture: duplicate matrix key to validate duplicate detection. |
| sdk/storage/azure-storage-files-datalake/src/private/datalake_utilities.hpp | Declares GetOneLakeWorkspaceEndpoints and the endpoints pair struct. |
| sdk/storage/azure-storage-files-datalake/src/datalake_utilities.cpp | Implements OneLake URL/workspace parsing, validation, and DFS/Blob endpoint synthesis. |
| sdk/storage/azure-storage-files-datalake/src/datalake_file_system_client.cpp | Adds the public factory implementation and updates rename logic to preserve blob host/pipeline via existing container client. |
| sdk/storage/azure-storage-files-datalake/src/datalake_directory_client.cpp | Updates rename logic to preserve blob host/pipeline via existing blob client. |
| sdk/storage/azure-storage-files-datalake/samples/datalake_getting_started.cpp | Adds a OneLake path that uses DefaultAzureCredential + the new OneLake factory when env vars are present. |
| sdk/storage/azure-storage-files-datalake/samples/CMakeLists.txt | Links azure-identity for the sample due to DefaultAzureCredential usage. |
| sdk/storage/azure-storage-files-datalake/inc/azure/storage/files/datalake/datalake_file_system_client.hpp | Adds the public CreateForOneLakeWorkspace API and Doxygen remarks. |
| sdk/storage/azure-storage-files-datalake/CMakeLists.txt | Adds the harness executable and a Python-driven CTest for validate/mock coverage. |
| sdk/storage/azure-storage-files-datalake/CHANGELOG.md | Documents the additive OneLake factory feature. |
| sdk/core/azure-core-amqp/test/ut/claim_based_security_tests.cpp | Removes server listening start/stop calls from a CBS cancellation test. |
| sdk/core/azure-core-amqp/Test-Setup.ps1 | Pins azure-amqp test broker commit and adjusts NuGet sources for restore. |
| sdk/core/azure-core-amqp/src/impl/uamqp/amqp/management.cpp | Returns Cancelled early when opening management with a cancelled context. |
| eng/pipelines/templates/steps/cmake-build.yml | Skips Rust cargo feed auth for fork PRs and adds fork-specific CMake args support. |
| .vscode/cspell.json | Adds new words used by the OneLake cloud/ring matrix to the spellchecker dictionary. |
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
Add
DataLakeFileSystemClient::CreateForOneLakeWorkspaceso OneLake consumers can construct a validated workspace-scoped DFS/Blob client pair without duplicating Fabric cloud, ring, regional, and workspace-host resolution.DefaultAzureCredentialsample coverageRelated to #7274.
Tracking
Verification
WARNINGS_AS_ERRORS=ONbuild of Data Lake unit tests, live harness, and sampleOneLakeWorkspaceClientTest.*: 22/22 passedOneLakeWorkspaceEndpointHarness: passedgit diff --check: passedd82a8645) restores from an empty cache through public Azure mirrors, builds fornet8.0, starts, listens on port 25672, and accepts a connectionPending validation and release conditions
CDC will update its Azure SDK submodule to the first upstream Azure SDK for C++ release tag containing this API; it will not pin a commit from this fork.
Pull Request Checklist