Skip to content

Fix Filter Blob API encoding issue #23800

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Dec 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
5e8d4ba
Prep for stg 95 GA release
tanyasethi-msft Nov 13, 2024
1a43ba6
Update CHANGELOG.md
tanyasethi-msft Nov 13, 2024
eb18ecb
Fix FilterBlob API
tanyasethi-msft Nov 26, 2024
d74c5f0
Fix FilterBlob API
tanyasethi-msft Nov 26, 2024
81e4499
Merge branch 'release/storage/feat' of github.com:Azure/azure-sdk-for…
tanyasethi-msft Nov 26, 2024
60070d0
Merge branch 'main' into release/storage/feat
tanyasethi-msft Nov 26, 2024
2d56adc
Add url encoding to azdatalake
tanyasethi-msft Nov 26, 2024
f334ee0
Merge branch 'release/storage/feat' of https://github.com/Azure/azure…
tanyasethi-msft Nov 26, 2024
f68203b
change regex globally - azblob
tanyasethi-msft Dec 2, 2024
52b32dd
Merge branch 'release/storage/feat' of github.com:Azure/azure-sdk-for…
tanyasethi-msft Dec 2, 2024
03897fc
add blob tag back
tanyasethi-msft Dec 11, 2024
20d57de
Add url encoding to azdatalake
tanyasethi-msft Dec 11, 2024
7bf0e95
add new test for blob
tanyasethi-msft Dec 11, 2024
98591cf
Merge branch 'release/storage/feat' of https://github.com/Azure/azure…
tanyasethi-msft Dec 12, 2024
3e17436
remove all changes other than storage
tanyasethi-msft Dec 13, 2024
208f0f9
remove other than storage changes
tanyasethi-msft Dec 13, 2024
48dc295
global regex to azdatalake generated blob
tanyasethi-msft Dec 13, 2024
3d8e6f0
Merge branch 'release/storage/feat' of https://github.com/Azure/azure…
tanyasethi-msft Dec 13, 2024
75bb2aa
remove container client from transform
tanyasethi-msft Dec 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions sdk/storage/azblob/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
### Breaking Changes

### Bugs Fixed
* Fix FilterBlob API if Query contains a space character. Fixes [#23546](https://github.com/Azure/azure-sdk-for-go/issues/23546)

### Other Changes

Expand Down
53 changes: 51 additions & 2 deletions sdk/storage/azblob/container/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2439,7 +2439,7 @@ func (s *ContainerUnrecordedTestsSuite) TestSASContainerClient() {
_require.NoError(err)
}

func (s *ContainerUnrecordedTestsSuite) TestFilterBlobsByTags() {
func (s *ContainerUnrecordedTestsSuite) TestFilterBlobsByBasicTags() {
_require := require.New(s.T())
testName := s.T().Name()
svcClient, err := testcommon.GetServiceClient(s.T(), testcommon.TestAccountDefault, nil)
Expand Down Expand Up @@ -2483,11 +2483,60 @@ func (s *ContainerUnrecordedTestsSuite) TestFilterBlobsByTags() {
opts := container.FilterBlobsOptions{MaxResults: to.Ptr(int32(10)), Marker: to.Ptr("")}
lResp, err := containerSasClient.FilterBlobs(context.Background(), where, &opts)
_require.NoError(err)
_require.Len(lResp.FilterBlobSegment.Blobs[0].Tags.BlobTagSet, 1)
_require.Equal(*lResp.FilterBlobSegment.Blobs[0].Tags.BlobTagSet[0].Key, "azure")
_require.Equal(*lResp.FilterBlobSegment.Blobs[0].Tags.BlobTagSet[0].Value, "blob")
}

func (s *ContainerUnrecordedTestsSuite) TestFilterBlobsBySpecialCharTags() {
_require := require.New(s.T())
testName := s.T().Name()
svcClient, err := testcommon.GetServiceClient(s.T(), testcommon.TestAccountDefault, nil)
_require.NoError(err)

containerClient := testcommon.CreateNewContainer(context.Background(), _require, testcommon.GenerateContainerName(testName), svcClient)
defer testcommon.DeleteContainer(context.Background(), _require, containerClient)

// Adding SAS and options
permissions := sas.ContainerPermissions{
Read: true,
Add: true,
Write: true,
Create: true,
Delete: true,
Tag: true,
FilterByTags: true,
}
expiry := time.Now().Add(time.Hour)

// ContainerSASURL is created with GetSASURL
sasUrl, err := containerClient.GetSASURL(permissions, expiry, nil)
_require.NoError(err)

// Create container client with sasUrl
containerSasClient, err := container.NewClientWithNoCredential(sasUrl, nil)
_require.NoError(err)

abClient := containerSasClient.NewAppendBlobClient(testcommon.GenerateBlobName(testName))

createAppendBlobOptions := appendblob.CreateOptions{
Tags: testcommon.SpecialCharBlobTagsMap,
}
createResp, err := abClient.Create(context.Background(), &createAppendBlobOptions)
_require.NoError(err)
_require.NotNil(createResp.VersionID)
time.Sleep(10 * time.Second)

// Use container client to filter blobs by tag

where := "\"go\"='written in golang'"
opts := container.FilterBlobsOptions{MaxResults: to.Ptr(int32(10))}
lResp, err := containerSasClient.FilterBlobs(context.Background(), where, &opts)
_require.NoError(err)
_require.Len(lResp.FilterBlobSegment.Blobs[0].Tags.BlobTagSet, 1)
_require.Equal(*lResp.FilterBlobSegment.Blobs[0].Tags.BlobTagSet[0].Key, "go")
_require.Equal(*lResp.FilterBlobSegment.Blobs[0].Tags.BlobTagSet[0].Value, "written in golang")
}

func (s *ContainerUnrecordedTestsSuite) TestFilterBlobsByTagsNegative() {
_require := require.New(s.T())
testName := s.T().Name()
Expand Down
12 changes: 7 additions & 5 deletions sdk/storage/azblob/internal/generated/autorest.md
Original file line number Diff line number Diff line change
Expand Up @@ -410,11 +410,13 @@ directive:

``` yaml
directive:
- from: zz_service_client.go
where: $
transform: >-
return $.
replace(/req.Raw\(\).URL.RawQuery \= reqQP.Encode\(\)/, `req.Raw().URL.RawQuery = strings.Replace(reqQP.Encode(), "+", "%20", -1)`)
- from:
- zz_service_client.go
- zz_container_client.go
where: $
transform: >-
return $.
replace(/req.Raw\(\).URL.RawQuery \= reqQP.Encode\(\)/g, `req.Raw().URL.RawQuery = strings.Replace(reqQP.Encode(), "+", "%20", -1)`);
```

### Change `where` parameter in blob filtering to be required
Expand Down
36 changes: 18 additions & 18 deletions sdk/storage/azblob/internal/generated/zz_container_client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions sdk/storage/azblob/internal/generated/zz_service_client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions sdk/storage/azblob/internal/testcommon/clients_auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ var SpecialCharBlobTagsMap = map[string]string{
"Microsoft Azure": "Azure Storage",
"Storage+SDK": "SDK/GO",
"GO ": ".Net",
"go": "written in golang",
}

func SetClientOptions(t *testing.T, opts *azcore.ClientOptions) {
Expand Down
1 change: 0 additions & 1 deletion sdk/storage/azblob/pageblob/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4225,7 +4225,6 @@ func (s *PageBlobUnrecordedTestsSuite) TestPageBlobSetBlobTagForSnapshot() {

blobGetTagsResponse, err := pbClient.GetTags(context.Background(), nil)
_require.NoError(err)
// _require.Equal(blobGetTagsResponse.RawResponse.StatusCode, 200)
blobTagsSet := blobGetTagsResponse.BlobTagSet
_require.NotNil(blobTagsSet)
_require.Len(blobTagsSet, len(testcommon.SpecialCharBlobTagsMap))
Expand Down
1 change: 1 addition & 0 deletions sdk/storage/azdatalake/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
### Breaking Changes

### Bugs Fixed
* Fix FilterBlob API if Query contains a space character. Fixes [#23546](https://github.com/Azure/azure-sdk-for-go/issues/23546)

### Other Changes

Expand Down
10 changes: 5 additions & 5 deletions sdk/storage/azdatalake/internal/generated/autorest.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,11 +208,11 @@ directive:

``` yaml
directive:
- from: zz_service_client.go
where: $
transform: >-
return $.
replace(/req.Raw\(\).URL.RawQuery \= reqQP.Encode\(\)/, `req.Raw().URL.RawQuery = strings.Replace(reqQP.Encode(), "+", "%20", -1)`)
- from: zz_service_client.go
where: $
transform: >-
return $.
replace(/req.Raw\(\).URL.RawQuery \= reqQP.Encode\(\)/, `req.Raw().URL.RawQuery = strings.Replace(reqQP.Encode(), "+", "%20", -1)`);
```

### Change `Duration` parameter in leases to be required
Expand Down
12 changes: 7 additions & 5 deletions sdk/storage/azdatalake/internal/generated_blob/autorest.md
Original file line number Diff line number Diff line change
Expand Up @@ -347,11 +347,13 @@ directive:

``` yaml
directive:
- from: zz_service_client.go
where: $
transform: >-
return $.
replace(/req.Raw\(\).URL.RawQuery \= reqQP.Encode\(\)/, `req.Raw().URL.RawQuery = strings.Replace(reqQP.Encode(), "+", "%20", -1)`)
- from:
- zz_service_client.go
- zz_container_client.go
where: $
transform: >-
return $.
replace(/req.Raw\(\).URL.RawQuery \= reqQP.Encode\(\)/g, `req.Raw().URL.RawQuery = strings.Replace(reqQP.Encode(), "+", "%20", -1)`);
```

### Change `where` parameter in blob filtering to be required
Expand Down
Loading
Loading