diff --git a/sdk/storage/azblob/CHANGELOG.md b/sdk/storage/azblob/CHANGELOG.md index 29355db9707e..a9040137b0b2 100644 --- a/sdk/storage/azblob/CHANGELOG.md +++ b/sdk/storage/azblob/CHANGELOG.md @@ -4,7 +4,8 @@ ### Features Added * Added support for [Cold tier](https://learn.microsoft.com/azure/storage/blobs/access-tiers-overview?tabs=azure-portal). -* Added CopySourceTag option for UploadBlobFromURLOptions +* Added `CopySourceTag` option for `UploadBlobFromURLOptions` +* Added `System` option to `ListContainersInclude` to allow listing of system containers. ### Breaking Changes diff --git a/sdk/storage/azblob/assets.json b/sdk/storage/azblob/assets.json index f5b9ceace293..9eecceaec276 100644 --- a/sdk/storage/azblob/assets.json +++ b/sdk/storage/azblob/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "go", "TagPrefix": "go/storage/azblob", - "Tag": "go/storage/azblob_5f550f0ded" + "Tag": "go/storage/azblob_816342f61e" } diff --git a/sdk/storage/azblob/service/client.go b/sdk/storage/azblob/service/client.go index 9266b5c66661..461775347eeb 100644 --- a/sdk/storage/azblob/service/client.go +++ b/sdk/storage/azblob/service/client.go @@ -194,6 +194,9 @@ func (s *Client) NewListContainersPager(o *ListContainersOptions) *runtime.Pager if o.Include.Metadata { listOptions.Include = append(listOptions.Include, generated.ListContainersIncludeTypeMetadata) } + if o.Include.System { + listOptions.Include = append(listOptions.Include, generated.ListContainersIncludeTypeSystem) + } listOptions.Marker = o.Marker listOptions.Maxresults = o.MaxResults listOptions.Prefix = o.Prefix diff --git a/sdk/storage/azblob/service/client_test.go b/sdk/storage/azblob/service/client_test.go index 7d9c77090956..57098e6c94a8 100644 --- a/sdk/storage/azblob/service/client_test.go +++ b/sdk/storage/azblob/service/client_test.go @@ -160,6 +160,33 @@ func (s *ServiceUnrecordedTestsSuite) TestListContainersBasic() { _require.GreaterOrEqual(count, 0) } +func (s *ServiceRecordedTestsSuite) TestListContainersSystem() { + _require := require.New(s.T()) + svcClient, err := testcommon.GetServiceClient(s.T(), testcommon.TestAccountDefault, nil) + _require.Nil(err) + + listOptions := service.ListContainersOptions{Include: service.ListContainersInclude{System: true}} + pager := svcClient.NewListContainersPager(&listOptions) + + count := 0 + for pager.More() { + resp, err := pager.NextPage(context.Background()) + _require.Nil(err) + for _, c := range resp.ContainerItems { + _require.NotNil(c.Name) + if strings.Contains(*c.Name, "$") { + count += 1 + } + } + if err != nil { + break + } + } + + _require.Nil(err) + _require.GreaterOrEqual(count, 1) // every account will always have one system container, i.e. '$logs' +} + func (s *ServiceRecordedTestsSuite) TestSetPropertiesLogging() { _require := require.New(s.T()) svcClient, err := testcommon.GetServiceClient(s.T(), testcommon.TestAccountDefault, nil) diff --git a/sdk/storage/azblob/service/models.go b/sdk/storage/azblob/service/models.go index 22f49474dee6..b70724d79743 100644 --- a/sdk/storage/azblob/service/models.go +++ b/sdk/storage/azblob/service/models.go @@ -156,6 +156,9 @@ type ListContainersInclude struct { // Tells the service whether to return soft-deleted containers. Deleted bool + + // Tells the service whether to return system containers. + System bool } // ---------------------------------------------------------------------------------------------------------------------