Skip to content

Storage - STG102 Beta Features#48532

Merged
ibrandes merged 19 commits intomainfrom
feature/storage/stg102base
Mar 24, 2026
Merged

Storage - STG102 Beta Features#48532
ibrandes merged 19 commits intomainfrom
feature/storage/stg102base

Conversation

@ibrandes
Copy link
Member

@ibrandes ibrandes commented Mar 23, 2026

live test failures The value for one of the HTTP headers is not in the correct format regarding x-ms-access-tier <HeaderValue>Smart</HeaderValue> is a known issue and the public rest documentation to reflect this.

the large number of files changed (200+) is due to the bump in autorest version.

browndav-msft and others added 9 commits February 26, 2026 12:17
* bump latest service version from 2026_04_06 to 2026_06_06 for stg102

* refactor transformutils to use switch

* made changes based on comments
* get tags

* set tags

* sas permissions for tag

* adding tag to datalake sas model tests

* add only datalake files from 38db6fd

* fix linting errors:remove unused imports, add return annotation setTags method

* fix sasPermissionsParseSupplier test

* recorded tests for DirectoryApiTests.getSetTags()

* split getSetTagsAC into getTagsAC and setTagsAC

* record tests for getTagsAC and setTagsAC

* change generatePathName() to dc.getDirectoryPath

* create recordings for getSetTagsDirectorySas

* Record DirectoryApiTests#getSetTagsOAuth

* Record DirectoryApiTests#getSetTagsLease

* Record DirectoryApiTests#getTagsLeaseFailed

* Record DirectoryApiTests#setTagsLeaseFailed

* Record DirectoryApiTests#getSetTagsFileSystemSas

* Record DirectoryApiTests#getSetTagsAccountSas

* Record DirectoryApiTests#getSetTagsDirectoryIdentitySas

* Record DirectoryApiTests#getSetTagsFileSystemIdentitySas

* Record DirectoryApiTests#getTagsError

* Record DirectoryApiTests#setTagsError

* Record DirectoryApiTests#setTagsACFail

* Record DirectoryApiTests#getTagsACFail

* Add x-ms-blob-if-modified/unmodified-since to CustomMatcher headers in DataLakeTestBase

This matches the behavior in BlobBaseTest https://github.com/Azure/azure-sdk-for-java/blob/a86d1fbe0002f087552c78e32df5447665d53939/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobTestBase.java#L202
- This adds x-ms-blob-if-modified/unmodified. Four tests use NEW_DATE and OLD_DATE, which change the date in the header. We can't change this because the data comes from a supplier that is used by other tests and the other tests pass.
- The reason we have to do this is because getTagsWithResponse and setTagsWithResponse both delegate to blockBlobClient, which uses  instead of  like the rest of DFS.

* Re-record getTagsAC with full access conditions

* update comment in sasPermissionsToStringSupplier

* setTags returns Mono<Void> but maps Response::getValue, which will be null for Response<Void>. Reactor doesn't allow emitting null, so this will likely fail with an NPE when subscribed. Use the same pattern as other void-returning APIs in this client (e.g., setMetadata): convert the Mono<Response<Void>> to a completion-only Mono<Void> (such as flatMap(FluxUtil::toMono) or then()).

* make DLgettags and settags options classes final

* create aysnc tests based on sync tests

* Update recordings for DirectoryAsyncApiTests

---------

Co-authored-by: Isabelle <ibrandes@microsoft.com>
* revert pull changes from STG100 for all files

* add all tests, bump version from 2026-02-06 to 2026-06-06

* fix filePropertySemantics not getting passed, recorded tests

- filePropertySemantics was not getting passed as an arg for the function in ShareDirectoryClient or ShareDirectoryAsyncClient
- created recordings for the new tests

* pass filePropertySemantics to createWithResponse service method

* create new recordings for missing tests

* fix java docs, change ternary to fluxMD5wrapper

* remove local config file
…th UDS create permission (#48390)

* finish upload for put block

* add test for transfer with create permission

* add recording for transferBlobWithCreatePermission

* create commitBlockLIst sync with recording

* create transfer async with recording

* finish commitblocklist with permission and recording

* wrap user-delegation SAS tests  in liveTestScenarioWithRetry(...)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* add sanitizer for skoid

* accept sanitization recommendation from copilot

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* remove unncessary arg from lambda

* made sanitization recommendations from copilot, rerecorded tests

* add key.setSignedObjectId(testResourceNamer.recordValueFromConfig(key.getSignedObjectId())), rerecord tests

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* generate new api based on swaggerfile

* create base test for new api

* switch to premiumstorageaccount for smart-tier

* recording for setblobaccesstiersmart

* rerecording for setblobaccesstiersmart

* updating assets

* add SMART access tier in enum, accessTierInferred and smartAcessTier to PathProps

* create basic test for smart tier in datalake

* fix linting in PathProperties

* fixed broken deps for FileApiTest#getInferredTierWhenAssignedSmart

- We needed to add AccessTier smartAccessTier to all constructors in BlobProperties, which is different than what is recommended in BlobPropertiesInternal. Made a deliberate decision to go this route, but will go the other route, if necessessary

* changed boolean to Boolean to allow for null

* add premiumDataLakeServiceClient for smart tier

* remove code to test access tier smart on get props for datalake

@test
@RequiredServiceVersion(clazz = DataLakeServiceVersion.class, min = "2026-02-04")
public void getInferredTierWhenAssignedSmart() {
    // Arrange
    // Create a file in a file system with the smart tiering feature enabled, and set the access tier to smart.
    // Did this manually to prove feature works
    fc = premiumDataLakeServiceClient.getFileSystemClient("5333bf800setblobaccesstiersmart26f99030889cd17d8581")
        .getFileClient("5333bf801setblobaccesstiersmart26f71508c0c760a5e356");

    Response<PathProperties> response = fc.getPropertiesWithResponse(null, null, null);
    HttpHeaders headers = response.getHeaders();
    PathProperties properties = response.getValue();

    validateBasicHeaders(headers);

    assertEquals(AccessTier.SMART, properties.getAccessTier());
    assertEquals(AccessTier.HOT, properties.getSmartAccessTier());
}

* add params for smartAccessTier to javadocs

* removing breaking changes

* removing datalake breaking changes

* add recordings for BlobBaseApiTests

* add recordings for BlobApiTests#uploadStreamAccessTierSmart

* add recordings for BlobAsyncApiTests#uploadStreamAccessTierSmart

* add recordings for BlobAsyncApiTests#uploadStreamAccessTierSmart

* uncomment a reqeust in setTierAllSucceed

* remove javadoc params for smartAccessTier

* change getSmartAccessTier to return actual value instead of null

* finmish startCopyFromURLSmartAccessTier, no recording

* finish creating async versions of sync tests

* add recordings

* make uploadStreamAccessTierSmart more concise

* rerecord for uploadStreamAccessTierSmart

* remove unused variables from Transforms and DataLakeTestBase

* restore the previous way of setting teh accessor

* wrap tests in StepVerifier.create()

* update javadocs description for getSmartAccessTier, fix casing on variable

* wrap tests in StepVerifier.create()

* rerecord for BatchApiTest#setTierAllSucceed

* rerecord for missing tests

* remove unused imports

* remove unused imports

---------

Co-authored-by: Isabelle <ibrandes@microsoft.com>
* wip

* more tests

* addressing copilot comments and adding async tests

* addressing more copilot comments

* adding extra verification to sas tests

* adding recordings

* resolving analyze error
* refactor so BuiderHelpers and BobUrlParts use StorageImplUtils

* fix linting issues

* fix linting issues

* fix spacing issue in Constant file

* add connection string parse test

* finish builderhelper tests

* finish refactor of BuilderHelperTests

* remove unused imports

* remove throw for illegal exception

* remove subclasses for uri constants
@github-actions github-actions bot added the Storage Storage Service (Queues, Blobs, Files) label Mar 23, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 23, 2026

API Change Check

APIView identified API level changes in this PR and created the following API reviews

com.azure:azure-storage-blob
com.azure:azure-storage-file-datalake
com.azure:azure-storage-file-share
com.azure:azure-storage-queue

@ibrandes ibrandes requested a review from Copilot March 23, 2026 17:53
@ibrandes
Copy link
Member Author

/azp run java - storage - tests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Azure Storage Java SDK libraries to the 2026-06-06 service version and introduces new beta features across Blob, File Share, Queue, and Data Lake, including Smart Tier support, directory-scoped SAS, file-create payload upload, and Data Lake path tags.

Changes:

  • Bump service versions/spec inputs to 2026-06-06 across modules and test configurations.
  • Add/restore beta features: Blob Smart Tier + directory-scoped SAS, File Share create-file upload (up to 4 MiB) + file property semantics, Data Lake path tags APIs and SAS permission updates.
  • Improve endpoint/account-name parsing to support secondary/dualstack/ipv6 host variants and add coverage for these patterns.

Reviewed changes

Copilot reviewed 78 out of 78 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
sdk/storage/azure-storage-queue/swagger/README.md Updates swagger input to newer queue spec commit.
sdk/storage/azure-storage-queue/src/test/java/com/azure/storage/queue/BuildHelperTests.java Adds parameterized tests for account-name parsing with secondary/dualstack/ipv6 endpoints.
sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/implementation/util/BuilderHelper.java Switches account-name extraction to shared StorageImplUtils.getAccountNameFromHost.
sdk/storage/azure-storage-queue/src/main/java/com/azure/storage/queue/QueueServiceVersion.java Adds V2026_06_06 and updates getLatest().
sdk/storage/azure-storage-file-share/swagger/README.md Updates swagger input to 2026-06-06 file spec.
sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAsyncApiTests.java Re-enables tests for file property semantics and create-file upload/MD5 behaviors.
sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileApiTests.java Sync equivalents of the restored create-file upload and semantics tests.
sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/DirectoryAsyncApiTests.java Re-enables directory property semantics tests.
sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/DirectoryApiTests.java Sync equivalents of restored directory semantics tests.
sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/BuilderHelperTests.java Adds endpoint parsing tests for secondary/dualstack/ipv6 file endpoints.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/options/ShareFileCreateOptions.java Restores FilePropertySemantics and BinaryData upload options for create file.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/options/ShareDirectoryCreateOptions.java Restores FilePropertySemantics option for create directory.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/util/BuilderHelper.java Uses shared account-name extraction for file hosts.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/models/FilesCreateHeaders.java Adds header model for x-ms-structured-body.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/implementation/DirectoriesImpl.java Swagger-generated client updates (includes docstring changes).
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareServiceVersion.java Adds V2026_06_06 and updates getLatest().
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareFileClient.java Wires BinaryData upload + MD5 + property semantics into create file call.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareFileAsyncClient.java Async create file: computes MD5/length and sends payload/semantics.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareDirectoryClient.java Adds file property semantics when creating directories.
sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareDirectoryAsyncClient.java Async directory create/createIfNotExists uses file property semantics.
sdk/storage/azure-storage-file-share/assets.json Updates assets tag for recorded tests.
sdk/storage/azure-storage-file-share/CHANGELOG.md Notes create-file upload support (up to 4 MiB).
sdk/storage/azure-storage-file-datalake/swagger/README.md Updates swagger input to 2026-06-06 datalake spec.
sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/DirectoryAsyncApiTests.java Adds extensive async coverage for get/set tags scenarios (OAuth/SAS/lease/AC).
sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/DirectoryApiTests.java Adds sync coverage for get/set tags scenarios (OAuth/SAS/lease/AC).
sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/DataLakeTestBase.java Adds helper getTags() and updates test-proxy matcher headers.
sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/DataLakeServiceSasModelsTests.java Updates SAS permission tests to include tag permission (t).
sdk/storage/azure-storage-file-datalake/src/test/java/com/azure/storage/file/datalake/BuilderHelperTests.java Adds endpoint parsing tests for secondary/dualstack/ipv6 dfs endpoints.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/sas/PathSasPermission.java Adds tags permission (t) support in parse/toString/accessors.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/sas/FileSystemSasPermission.java Adds tags permission (t) support in parse/toString/accessors.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/options/DataLakeSetTagsOptions.java New options bag for set tags (with request conditions).
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/options/DataLakeGetTagsOptions.java New options bag for get tags (with request conditions).
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/PathProperties.java Adds accessTierInferred + smartAccessTier to path properties.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/models/AccessTier.java Adds SMART access tier enum value.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/implementation/util/TransformUtils.java Refactors version mapping using switch; adds 2026-06-06 mapping.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/implementation/util/AccessorUtility.java Extends PathProperties accessor to include smart-tier fields.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/Transforms.java Populates PathProperties with inferred/smart tier values from blob properties.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/DataLakeServiceVersion.java Adds V2026_06_06 and updates getLatest().
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/DataLakePathClient.java Adds sync getTags/setTags APIs backed by blob tags APIs.
sdk/storage/azure-storage-file-datalake/src/main/java/com/azure/storage/file/datalake/DataLakePathAsyncClient.java Adds async getTags/setTags APIs backed by blob tags APIs.
sdk/storage/azure-storage-file-datalake/assets.json Updates assets tag for recorded tests.
sdk/storage/azure-storage-file-datalake/CHANGELOG.md Notes new tags APIs (sync + async).
sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/implementation/connectionstring/StorageConnectionStringTest.java Adds test coverage around connection string parsing with explicit endpoints.
sdk/storage/azure-storage-common/src/main/java/com/azure/storage/common/implementation/UploadUtils.java Restores/introduces sync computeMd5(ByteBuffer, logger) helper.
sdk/storage/azure-storage-common/src/main/java/com/azure/storage/common/implementation/StorageImplUtils.java Adds host-based account-name extraction that strips -secondary/-ipv6/-dualstack.
sdk/storage/azure-storage-common/src/main/java/com/azure/storage/common/implementation/Constants.java Bumps SAS service version default to 2026-06-06 and adds URL subdomain constants.
sdk/storage/azure-storage-common/ci.system.properties Updates live-test service version + SAS service version to 2026-06-06.
sdk/storage/azure-storage-blob/swagger/README.md Updates swagger input to 2026-06-06 blob spec.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlobBaseAsyncApiTests.java Adds async tests validating Smart Tier behavior across copy/tier operations.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/BlobBaseApiTests.java Adds sync tests validating Smart Tier behavior across copy/tier operations.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/SasClientTests.java Adds directory-scoped SAS and create-permission scenarios; refactors permission setup.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/SasAsyncClientTests.java Async equivalents for directory-scoped SAS and create-permission scenarios.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BuilderHelperTests.java Adds endpoint parsing tests for secondary/dualstack/ipv6 blob endpoints.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobTestBase.java Adds helper to build “all supported SAS permissions” based on SAS version.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobServiceSasModelsTests.java Adds tests for directory-scoped SAS query parameter encoding + depth.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobAsyncApiTests.java Adds async test for uploading with Smart Tier.
sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/BlobApiTests.java Adds sync test for uploading with Smart Tier.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/sas/BlobServiceSasSignatureValues.java Adds isDirectory flag for directory-scoped SAS signing.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobProperties.java Adds getSmartAccessTier() to expose underlying tier for Smart Tier.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/BlobItemProperties.java Adds smartAccessTier accessor/mutator for listing models.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/ArchiveStatus.java Adds REHYDRATE_PENDING_TO_SMART.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/models/AccessTier.java Adds SMART.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/util/BlobSasImplUtil.java Implements directory-scoped SAS resource (sr=d) and directory depth (sdd).
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/models/BlobsGetPropertiesHeaders.java Adds header model for x-ms-smart-access-tier.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/models/BlobPropertiesInternalGetProperties.java Maps x-ms-smart-access-tier into internal properties.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/models/BlobPropertiesInternalDownload.java Implements getSmartAccessTier() as null for download-only properties.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/models/BlobPropertiesInternalConstructorProperties.java Adds smart-tier field to constructor-backed internal properties.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/models/BlobPropertiesInternal.java Adds getSmartAccessTier() to internal interface.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/models/BlobItemPropertiesInternal.java Adds SmartAccessTier XML serialization support.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/implementation/accesshelpers/BlobPropertiesConstructorProxy.java Minor javadoc fix and accessor-init clarification.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobUrlParts.java Updates account-name extraction to use StorageImplUtils.getAccountNameFromHost.
sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/BlobServiceVersion.java Adds V2026_06_06 and updates getLatest().
sdk/storage/azure-storage-blob/assets.json Updates assets tag for recorded tests.
sdk/storage/azure-storage-blob/CHANGELOG.md Notes Smart Tier and directory-scoped SAS support.
sdk/storage/azure-storage-blob-batch/src/test/java/com/azure/storage/blob/batch/BlobBatchTestBase.java Adds premium storage client to support Smart Tier tests.
sdk/storage/azure-storage-blob-batch/src/test/java/com/azure/storage/blob/batch/BatchApiTests.java Adds Smart Tier test for batch set-tier on premium storage account.
sdk/storage/azure-storage-blob-batch/assets.json Updates assets tag for recorded tests.

@ibrandes
Copy link
Member Author

/azp run java - storage - tests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@ibrandes ibrandes marked this pull request as ready for review March 23, 2026 23:44
@ibrandes ibrandes requested review from a team, kyleknap and seanmcc-msft as code owners March 23, 2026 23:44
ibrandes and others added 2 commits March 23, 2026 16:45
…/blob/BlobUrlParts.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@ibrandes ibrandes merged commit 7ccc6e8 into main Mar 24, 2026
20 checks passed
@ibrandes ibrandes deleted the feature/storage/stg102base branch March 24, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Storage Storage Service (Queues, Blobs, Files)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants