Skip to content

Commit e8074e1

Browse files
siminsavani-msftmohsha-msftadreed-msftsemkzezha-msft
authored
v0.14.0 Release (#281)
* Removed requestId, Timeout, versionId, snapshot from the function signature of GetTags() and SetTags() (#252) * Changed the function signature of getTags and setTags * Minor Adjustment * Review - 1 * Adding Support for PutBlobFromUrl (#251) * Regenerate SDK * Regenerate SDK with proper version * Adding support for PutBlobFromURL * Correcting regen code and handling other errors * Resolving comments on PR * Correcting SetTags method * Updating tests with GetTags and SetTags * Remove swagger/Go_BlobStorage/code-model-v1 * Checks value of metadata & reorganized tests Co-authored-by: Adele Reed <[email protected]> * Keep compatibility with Go 1.13.14. (#264) * - Keep compliance with Golang 1.13.14. http.Header has no method Values on older go versions. * Do not return error when client request id is missing * Adding MSI Login Example (#241) * Added MSI login example * Minor edits Co-authored-by: zezha-msft <[email protected]> * Offer Knob to Disable Syslog | Default logging to syslog enabled (#268) * Provide Knob For Syslog * Reverting changes to GetTags/SetTags & BlobPropertiesInternal (#269) * Adding MSI Login Example (#241) * Added MSI login example * Minor edits Co-authored-by: zezha-msft <[email protected]> * Reverting changes to GetTags/SetTags & BlobPropertiesInternal Co-authored-by: Mohit Sharma <[email protected]> Co-authored-by: zezha-msft <[email protected]> Co-authored-by: siminsavani-msft <[email protected]> Co-authored-by: zezha-msft <[email protected]> * Update go dependencies * Resolving Concurrency Issues (#275) * Resolving concurrency issues * Fixing concurrency test * Minor changes * Incremented version and added to changelog * Updated version to 0.14 Co-authored-by: Mohit Sharma <[email protected]> Co-authored-by: Adele Reed <[email protected]> Co-authored-by: Sreejith Kesavan <[email protected]> Co-authored-by: zezha-msft <[email protected]> Co-authored-by: Yang Peng <[email protected]>
1 parent d80c8c7 commit e8074e1

27 files changed

+1947
-400
lines changed

ChangeLog.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
> See [BreakingChanges](BreakingChanges.md) for a detailed list of API breaks.
44
5+
## Version 0.14.0:
6+
- Updated [Get Blob Tags](https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-tags) and [Set Blob Tags](https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tags) function signatures
7+
- Added [Put Blob From URL](https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob-from-url)
8+
- Offer knob to disable application logging (Syslog)
9+
- Added examples for MSI Login
10+
- Updated go.mod to address dependency issues
11+
- Fixed issues [#260](https://github.com/Azure/azure-storage-blob-go/issues/260) and [#257](https://github.com/Azure/azure-storage-blob-go/issues/257)
12+
513
## Version 0.13.0:
614
- Validate echoed client request ID from the service
715
- Added new TransferManager option for UploadStreamToBlockBlob to fine-tune the concurrency and memory usage

azblob/chunkwriting.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ func copyFromReader(ctx context.Context, from io.Reader, to blockWriter, o Uploa
5656
}
5757
// If the error is not EOF, then we have a problem.
5858
if err != nil && !errors.Is(err, io.EOF) {
59+
cp.wg.Wait()
5960
return nil, err
6061
}
6162

azblob/url_blob.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,22 +139,22 @@ func (b BlobURL) Delete(ctx context.Context, deleteOptions DeleteSnapshotsOption
139139
return b.blobClient.Delete(ctx, nil, nil, nil, ac.LeaseAccessConditions.pointers(), deleteOptions,
140140
ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag,
141141
nil, // Blob ifTags
142-
nil)
142+
nil, BlobDeleteNone)
143143
}
144144

145145
// SetTags operation enables users to set tags on a blob or specific blob version, but not snapshot.
146146
// Each call to this operation replaces all existing tags attached to the blob.
147147
// To remove all tags from the blob, call this operation with no tags set.
148148
// https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tags
149-
func (b BlobURL) SetTags(ctx context.Context, timeout *int32, versionID *string, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, requestID *string, ifTags *string, blobTagsMap BlobTagsMap) (*BlobSetTagsResponse, error) {
149+
func (b BlobURL) SetTags(ctx context.Context, transactionalContentMD5 []byte, transactionalContentCrc64 []byte, ifTags *string, blobTagsMap BlobTagsMap) (*BlobSetTagsResponse, error) {
150150
tags := SerializeBlobTags(blobTagsMap)
151-
return b.blobClient.SetTags(ctx, timeout, versionID, transactionalContentMD5, transactionalContentCrc64, requestID, ifTags, &tags)
151+
return b.blobClient.SetTags(ctx, nil, nil, transactionalContentMD5, transactionalContentCrc64, nil, ifTags, nil, &tags)
152152
}
153153

154154
// GetTags operation enables users to get tags on a blob or specific blob version, or snapshot.
155155
// https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-tags
156-
func (b BlobURL) GetTags(ctx context.Context, timeout *int32, requestID *string, snapshot *string, versionID *string, ifTags *string) (*BlobTags, error) {
157-
return b.blobClient.GetTags(ctx, timeout, requestID, snapshot, versionID, ifTags)
156+
func (b BlobURL) GetTags(ctx context.Context, ifTags *string) (*BlobTags, error) {
157+
return b.blobClient.GetTags(ctx, nil, nil, nil, nil, ifTags, nil)
158158
}
159159

160160
// Undelete restores the contents and metadata of a soft-deleted blob and any associated soft-deleted snapshots.
@@ -173,7 +173,8 @@ func (b BlobURL) Undelete(ctx context.Context) (*BlobUndeleteResponse, error) {
173173
func (b BlobURL) SetTier(ctx context.Context, tier AccessTierType, lac LeaseAccessConditions) (*BlobSetTierResponse, error) {
174174
return b.blobClient.SetTier(ctx, tier, nil,
175175
nil, // Blob versioning
176-
nil, RehydratePriorityNone, nil, lac.pointers())
176+
nil, RehydratePriorityNone, nil, lac.pointers(),
177+
nil) // Blob ifTags
177178
}
178179

179180
// GetProperties returns the blob's properties.

azblob/url_block_blob.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,22 @@ func (bb BlockBlobURL) CopyFromURL(ctx context.Context, source url.URL, metadata
154154
nil, // Blob ifTags
155155
dstLeaseID, nil, srcContentMD5,
156156
blobTagsString, // Blob tags
157-
nil, // seal Blob
158157
)
159158
}
159+
160+
// PutBlobFromURL synchronously creates a new Block Blob with data from the source URL up to a max length of 256MB.
161+
// For more information, see https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob-from-url.
162+
func (bb BlockBlobURL) PutBlobFromURL(ctx context.Context, h BlobHTTPHeaders, source url.URL, metadata Metadata, srcac ModifiedAccessConditions, dstac BlobAccessConditions, srcContentMD5 []byte, dstContentMD5 []byte, tier AccessTierType, blobTagsMap BlobTagsMap, cpk ClientProvidedKeyOptions) (*BlockBlobPutBlobFromURLResponse, error) {
163+
164+
srcIfModifiedSince, srcIfUnmodifiedSince, srcIfMatchETag, srcIfNoneMatchETag := srcac.pointers()
165+
dstIfModifiedSince, dstIfUnmodifiedSince, dstIfMatchETag, dstIfNoneMatchETag := dstac.ModifiedAccessConditions.pointers()
166+
dstLeaseID := dstac.LeaseAccessConditions.pointers()
167+
blobTagsString := SerializeBlobTagsHeader(blobTagsMap)
168+
169+
return bb.bbClient.PutBlobFromURL(ctx, 0, source.String(), nil, nil,
170+
&h.ContentType, &h.ContentEncoding, &h.ContentLanguage, dstContentMD5, &h.CacheControl,
171+
metadata, dstLeaseID, &h.ContentDisposition, cpk.EncryptionKey, cpk.EncryptionKeySha256,
172+
cpk.EncryptionAlgorithm, cpk.EncryptionScope, tier, dstIfModifiedSince, dstIfUnmodifiedSince,
173+
dstIfMatchETag, dstIfNoneMatchETag, nil, srcIfModifiedSince, srcIfUnmodifiedSince,
174+
srcIfMatchETag, srcIfNoneMatchETag, nil, nil, srcContentMD5, blobTagsString, nil)
175+
}

azblob/url_page_blob.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func (pb PageBlobURL) ClearPages(ctx context.Context, offset int64, count int64,
126126
cpk.EncryptionKey, cpk.EncryptionKeySha256, cpk.EncryptionAlgorithm, // CPK
127127
cpk.EncryptionScope, // CPK-N
128128
ifSequenceNumberLessThanOrEqual, ifSequenceNumberLessThan,
129-
ifSequenceNumberEqual, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
129+
ifSequenceNumberEqual, ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil, nil)
130130
}
131131

132132
// GetPageRanges returns the list of valid page ranges for a page blob or snapshot of a page blob.
@@ -175,7 +175,7 @@ func (pb PageBlobURL) Resize(ctx context.Context, size int64, ac BlobAccessCondi
175175
return pb.pbClient.Resize(ctx, size, nil, ac.LeaseAccessConditions.pointers(),
176176
cpk.EncryptionKey, cpk.EncryptionKeySha256, cpk.EncryptionAlgorithm, // CPK
177177
cpk.EncryptionScope, // CPK-N
178-
ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
178+
ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil, nil)
179179
}
180180

181181
// UpdateSequenceNumber sets the page blob's sequence number.
@@ -188,7 +188,7 @@ func (pb PageBlobURL) UpdateSequenceNumber(ctx context.Context, action SequenceN
188188
ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch := ac.ModifiedAccessConditions.pointers()
189189
return pb.pbClient.UpdateSequenceNumber(ctx, action, nil,
190190
ac.LeaseAccessConditions.pointers(), ifModifiedSince, ifUnmodifiedSince, ifMatch, ifNoneMatch,
191-
sn, nil)
191+
nil, sn, nil)
192192
}
193193

194194
// StartCopyIncremental begins an operation to start an incremental copy from one page blob's snapshot to this page blob.
@@ -202,7 +202,7 @@ func (pb PageBlobURL) StartCopyIncremental(ctx context.Context, source url.URL,
202202
qp.Set("snapshot", snapshot)
203203
source.RawQuery = qp.Encode()
204204
return pb.pbClient.CopyIncremental(ctx, source.String(), nil,
205-
ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil)
205+
ifModifiedSince, ifUnmodifiedSince, ifMatchETag, ifNoneMatchETag, nil, nil)
206206
}
207207

208208
func (pr PageRange) pointers() *string {

azblob/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package azblob
22

3-
const serviceLibVersion = "0.13"
3+
const serviceLibVersion = "0.14"

azblob/zc_policy_request_log.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ type RequestLogOptions struct {
1818
// LogWarningIfTryOverThreshold logs a warning if a tried operation takes longer than the specified
1919
// duration (-1=no logging; 0=default threshold).
2020
LogWarningIfTryOverThreshold time.Duration
21+
22+
// SyslogDisabled is a flag to check if logging to Syslog/Windows-Event-Logger is enabled or not
23+
// We by default print to Syslog/Windows-Event-Logger.
24+
// If SyslogDisabled is not provided explicitly, the default value will be false.
25+
SyslogDisabled bool
2126
}
2227

2328
func (o RequestLogOptions) defaults() RequestLogOptions {
@@ -59,7 +64,7 @@ func NewRequestLogPolicyFactory(o RequestLogOptions) pipeline.Factory {
5964
// If the response took too long, we'll upgrade to warning.
6065
if o.LogWarningIfTryOverThreshold > 0 && tryDuration > o.LogWarningIfTryOverThreshold {
6166
// Log a warning if the try duration exceeded the specified threshold
62-
logLevel, forceLog = pipeline.LogWarning, true
67+
logLevel, forceLog = pipeline.LogWarning, !o.SyslogDisabled
6368
}
6469

6570
var sc int
@@ -73,8 +78,9 @@ func NewRequestLogPolicyFactory(o RequestLogOptions) pipeline.Factory {
7378
}
7479
}
7580

76-
if sc == 0 || ((sc >= 400 && sc <= 499) && sc != http.StatusNotFound && sc != http.StatusConflict && sc != http.StatusPreconditionFailed && sc != http.StatusRequestedRangeNotSatisfiable) || (sc >= 500 && sc <= 599) {
77-
logLevel, forceLog = pipeline.LogError, true // Promote to Error any 4xx (except those listed is an error) or any 5xx
81+
if sc == 0 || ((sc >= 400 && sc <= 499) && sc != http.StatusNotFound && sc != http.StatusConflict &&
82+
sc != http.StatusPreconditionFailed && sc != http.StatusRequestedRangeNotSatisfiable) || (sc >= 500 && sc <= 599) {
83+
logLevel, forceLog = pipeline.LogError, !o.SyslogDisabled // Promote to Error any 4xx (except those listed is an error) or any 5xx
7884
} else {
7985
// For other status codes, we leave the level as is.
8086
}

azblob/zc_policy_unique_request_id.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package azblob
33
import (
44
"context"
55
"errors"
6+
67
"github.com/Azure/azure-pipeline-go/pipeline"
78
)
89

@@ -21,11 +22,9 @@ func NewUniqueRequestIDPolicyFactory() pipeline.Factory {
2122
resp, err := next.Do(ctx, request)
2223

2324
if err == nil && resp != nil {
24-
val := resp.Response().Header.Values(xMsClientRequestID)
25-
if len(val) > 0 {
26-
if val[0] != id {
27-
err = errors.New("client Request ID from request and response does not match")
28-
}
25+
crId := resp.Response().Header.Get(xMsClientRequestID)
26+
if crId != "" && crId != id {
27+
err = errors.New("client Request ID from request and response does not match")
2928
}
3029
}
3130

azblob/zt_blob_tags_test.go

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ func (s *aztestsSuite) TestSetBlobTags(c *chk.C) {
2727
blockBlobUploadResp, err := blobURL.Upload(ctx, bytes.NewReader([]byte("data")), BlobHTTPHeaders{}, basicMetadata, BlobAccessConditions{}, DefaultAccessTier, nil, ClientProvidedKeyOptions{})
2828
c.Assert(err, chk.IsNil)
2929
c.Assert(blockBlobUploadResp.StatusCode(), chk.Equals, 201)
30-
blobSetTagsResponse, err := blobURL.SetTags(ctx, nil, nil, nil, nil, nil, nil, blobTagsMap)
30+
blobSetTagsResponse, err := blobURL.SetTags(ctx, nil, nil, nil, blobTagsMap)
3131
c.Assert(err, chk.IsNil)
3232
c.Assert(blobSetTagsResponse.StatusCode(), chk.Equals, 204)
3333

34-
blobGetTagsResponse, err := blobURL.GetTags(ctx, nil, nil, nil, nil, nil)
34+
blobGetTagsResponse, err := blobURL.GetTags(ctx, nil)
3535
c.Assert(err, chk.IsNil)
3636
c.Assert(blobGetTagsResponse.StatusCode(), chk.Equals, 200)
3737
c.Assert(blobGetTagsResponse.BlobTagSet, chk.HasLen, 3)
@@ -60,19 +60,21 @@ func (s *aztestsSuite) TestSetBlobTagsWithVID(c *chk.C) {
6060
c.Assert(blockBlobUploadResp.StatusCode(), chk.Equals, 201)
6161
versionId2 := blockBlobUploadResp.VersionID()
6262

63-
blobSetTagsResponse, err := blobURL.SetTags(ctx, nil, &versionId1, nil, nil, nil, nil, blobTagsMap)
63+
blobURL1 := blobURL.WithVersionID(versionId1)
64+
blobSetTagsResponse, err := blobURL1.SetTags(ctx, nil, nil, nil, blobTagsMap)
6465
c.Assert(err, chk.IsNil)
6566
c.Assert(blobSetTagsResponse.StatusCode(), chk.Equals, 204)
6667

67-
blobGetTagsResponse, err := blobURL.GetTags(ctx, nil, nil, nil, &versionId1, nil)
68+
blobGetTagsResponse, err := blobURL1.GetTags(ctx, nil)
6869
c.Assert(err, chk.IsNil)
6970
c.Assert(blobGetTagsResponse.StatusCode(), chk.Equals, 200)
7071
c.Assert(blobGetTagsResponse.BlobTagSet, chk.HasLen, 3)
7172
for _, blobTag := range blobGetTagsResponse.BlobTagSet {
7273
c.Assert(blobTagsMap[blobTag.Key], chk.Equals, blobTag.Value)
7374
}
7475

75-
blobGetTagsResponse, err = blobURL.GetTags(ctx, nil, nil, nil, &versionId2, nil)
76+
blobURL2 := blobURL.WithVersionID(versionId2)
77+
blobGetTagsResponse, err = blobURL2.GetTags(ctx, nil)
7678
c.Assert(err, chk.IsNil)
7779
c.Assert(blobGetTagsResponse.StatusCode(), chk.Equals, 200)
7880
c.Assert(blobGetTagsResponse.BlobTagSet, chk.IsNil)
@@ -100,11 +102,12 @@ func (s *aztestsSuite) TestSetBlobTagsWithVID2(c *chk.C) {
100102
"Javascript": "Android",
101103
}
102104

103-
blobSetTagsResponse, err := blobURL.SetTags(ctx, nil, &versionId1, nil, nil, nil, nil, blobTags1)
105+
blobURL1 := blobURL.WithVersionID(versionId1)
106+
blobSetTagsResponse, err := blobURL1.SetTags(ctx, nil, nil, nil, blobTags1)
104107
c.Assert(err, chk.IsNil)
105108
c.Assert(blobSetTagsResponse.StatusCode(), chk.Equals, 204)
106109

107-
blobGetTagsResponse, err := blobURL.GetTags(ctx, nil, nil, nil, &versionId1, nil)
110+
blobGetTagsResponse, err := blobURL1.GetTags(ctx, nil)
108111
c.Assert(err, chk.IsNil)
109112
c.Assert(blobGetTagsResponse.StatusCode(), chk.Equals, 200)
110113
c.Assert(blobGetTagsResponse.BlobTagSet, chk.HasLen, 3)
@@ -116,11 +119,13 @@ func (s *aztestsSuite) TestSetBlobTagsWithVID2(c *chk.C) {
116119
"a123": "321a",
117120
"b234": "432b",
118121
}
119-
blobSetTagsResponse, err = blobURL.SetTags(ctx, nil, &versionId2, nil, nil, nil, nil, blobTags2)
122+
123+
blobURL2 := blobURL.WithVersionID(versionId2)
124+
blobSetTagsResponse, err = blobURL2.SetTags(ctx, nil, nil, nil, blobTags2)
120125
c.Assert(err, chk.IsNil)
121126
c.Assert(blobSetTagsResponse.StatusCode(), chk.Equals, 204)
122127

123-
blobGetTagsResponse, err = blobURL.GetTags(ctx, nil, nil, nil, &versionId2, nil)
128+
blobGetTagsResponse, err = blobURL2.GetTags(ctx, nil)
124129
c.Assert(err, chk.IsNil)
125130
c.Assert(blobGetTagsResponse.StatusCode(), chk.Equals, 200)
126131
c.Assert(blobGetTagsResponse.BlobTagSet, chk.NotNil)
@@ -143,7 +148,7 @@ func (s *aztestsSuite) TestUploadBlockBlobWithSpecialCharactersInTags(c *chk.C)
143148
c.Assert(err, chk.IsNil)
144149
c.Assert(blockBlobUploadResp.StatusCode(), chk.Equals, 201)
145150

146-
blobGetTagsResponse, err := blobURL.GetTags(ctx, nil, nil, nil, nil, nil)
151+
blobGetTagsResponse, err := blobURL.GetTags(ctx, nil)
147152
c.Assert(err, chk.IsNil)
148153
c.Assert(blobGetTagsResponse.StatusCode(), chk.Equals, 200)
149154
c.Assert(blobGetTagsResponse.BlobTagSet, chk.HasLen, 3)
@@ -192,15 +197,16 @@ func (s *aztestsSuite) TestStageBlockWithTags(c *chk.C) {
192197
contentData, err := ioutil.ReadAll(contentResp.Body(RetryReaderOptions{}))
193198
c.Assert(contentData, chk.DeepEquals, []uint8(strings.Join(data, "")))
194199

195-
blobGetTagsResp, err := blobURL.GetTags(ctx, nil, nil, nil, &versionId, nil)
200+
blobURL1 := blobURL.WithVersionID(versionId)
201+
blobGetTagsResp, err := blobURL1.GetTags(ctx, nil)
196202
c.Assert(err, chk.IsNil)
197203
c.Assert(blobGetTagsResp, chk.NotNil)
198204
c.Assert(blobGetTagsResp.BlobTagSet, chk.HasLen, 3)
199205
for _, blobTag := range blobGetTagsResp.BlobTagSet {
200206
c.Assert(blobTagsMap[blobTag.Key], chk.Equals, blobTag.Value)
201207
}
202208

203-
blobGetTagsResp, err = blobURL.GetTags(ctx, nil, nil, nil, nil, nil)
209+
blobGetTagsResp, err = blobURL.GetTags(ctx, nil)
204210
c.Assert(err, chk.IsNil)
205211
c.Assert(blobGetTagsResp, chk.NotNil)
206212
c.Assert(blobGetTagsResp.BlobTagSet, chk.HasLen, 3)
@@ -284,7 +290,7 @@ func (s *aztestsSuite) TestStageBlockFromURLWithTags(c *chk.C) {
284290
c.Assert(err, chk.IsNil)
285291
c.Assert(destData, chk.DeepEquals, sourceData)
286292

287-
blobGetTagsResp, err := destBlob.GetTags(ctx, nil, nil, nil, nil, nil)
293+
blobGetTagsResp, err := destBlob.GetTags(ctx, nil)
288294
c.Assert(err, chk.IsNil)
289295
c.Assert(blobGetTagsResp.BlobTagSet, chk.HasLen, 3)
290296
for _, blobTag := range blobGetTagsResp.BlobTagSet {
@@ -396,7 +402,7 @@ func (s *aztestsSuite) TestSetBlobTagForSnapshot(c *chk.C) {
396402
"Storage+SDK": "SDK/GO",
397403
"GO ": ".Net",
398404
}
399-
_, err := blobURL.SetTags(ctx, nil, nil, nil, nil, nil, nil, blobTagsMap)
405+
_, err := blobURL.SetTags(ctx, nil, nil, nil, blobTagsMap)
400406
c.Assert(err, chk.IsNil)
401407

402408
resp, err := blobURL.CreateSnapshot(ctx, nil, BlobAccessConditions{}, ClientProvidedKeyOptions{})
@@ -427,7 +433,7 @@ func (s *aztestsSuite) TestCreatePageBlobWithTags(c *chk.C) {
427433
c.Assert(putResp.Version(), chk.Not(chk.Equals), "")
428434
c.Assert(putResp.rawResponse.Header.Get("x-ms-version-id"), chk.NotNil)
429435

430-
setTagResp, err := blob.SetTags(ctx, nil, nil, nil, nil, nil, nil, blobTagsMap)
436+
setTagResp, err := blob.SetTags(ctx, nil, nil, nil, blobTagsMap)
431437
c.Assert(err, chk.IsNil)
432438
c.Assert(setTagResp.StatusCode(), chk.Equals, 204)
433439

@@ -441,7 +447,7 @@ func (s *aztestsSuite) TestCreatePageBlobWithTags(c *chk.C) {
441447
"b0l1o2b3": "s0d1k2",
442448
}
443449

444-
setTagResp, err = blob.SetTags(ctx, nil, nil, nil, nil, nil, nil, modifiedBlobTags)
450+
setTagResp, err = blob.SetTags(ctx, nil, nil, nil, modifiedBlobTags)
445451
c.Assert(err, chk.IsNil)
446452
c.Assert(setTagResp.StatusCode(), chk.Equals, 204)
447453

@@ -476,7 +482,7 @@ func (s *aztestsSuite) TestSetTagOnPageBlob(c *chk.C) {
476482
"b0l1o2b3": "s0d1k2",
477483
}
478484

479-
setTagResp, err := blob.SetTags(ctx, nil, nil, nil, nil, nil, nil, modifiedBlobTags)
485+
setTagResp, err := blob.SetTags(ctx, nil, nil, nil, modifiedBlobTags)
480486
c.Assert(err, chk.IsNil)
481487
c.Assert(setTagResp.StatusCode(), chk.Equals, 204)
482488

@@ -513,7 +519,7 @@ func (s *aztestsSuite) TestListBlobReturnsTags(c *chk.C) {
513519
"tag2": "+-./:=_",
514520
"+-./:=_1": "+-./:=_",
515521
}
516-
resp, err := blobURL.SetTags(ctx, nil, nil, nil, nil, nil, nil, blobTagsMap)
522+
resp, err := blobURL.SetTags(ctx, nil, nil, nil, blobTagsMap)
517523
c.Assert(err, chk.IsNil)
518524
c.Assert(resp.StatusCode(), chk.Equals, 204)
519525

@@ -576,7 +582,15 @@ func (s *aztestsSuite) TestFindBlobsByTags(c *chk.C) {
576582
c.Assert(err, chk.IsNil)
577583

578584
for _, blob := range lResp.Blobs {
579-
c.Assert(blob.TagValue, chk.Equals, "firsttag")
585+
containsTag := false
586+
587+
for _, tag := range blob.Tags.BlobTagSet {
588+
if tag.Value == "firsttag" {
589+
containsTag = true
590+
}
591+
}
592+
593+
c.Assert(containsTag, chk.Equals, true)
580594
}
581595
}
582596

@@ -618,11 +632,11 @@ func (s *aztestsSuite) TestFilterBlobsUsingAccountSAS(c *chk.C) {
618632
}
619633

620634
blobTagsMap := BlobTagsMap{"tag1": "firsttag", "tag2": "secondtag", "tag3": "thirdtag"}
621-
setBlobTagsResp, err := blobURL.SetTags(ctx, nil, nil, nil, nil, nil, nil, blobTagsMap)
635+
setBlobTagsResp, err := blobURL.SetTags(ctx, nil, nil, nil, blobTagsMap)
622636
c.Assert(err, chk.IsNil)
623637
c.Assert(setBlobTagsResp.StatusCode(), chk.Equals, 204)
624638

625-
blobGetTagsResp, err := blobURL.GetTags(ctx, nil, nil, nil, nil, nil)
639+
blobGetTagsResp, err := blobURL.GetTags(ctx, nil)
626640
c.Assert(err, chk.IsNil)
627641
c.Assert(blobGetTagsResp.StatusCode(), chk.Equals, 200)
628642
c.Assert(blobGetTagsResp.BlobTagSet, chk.HasLen, 3)

0 commit comments

Comments
 (0)