From 3aaa29c86651190752ad25e015a222ff086d4ebc Mon Sep 17 00:00:00 2001 From: Azure SDK Bot Date: Wed, 25 Sep 2019 11:26:37 +0800 Subject: [PATCH] Generated from 51020f68a1a7cd0fd66f44a493e8a8b2a23f1e2a (#5875) Add nextLink --- .../latest/storage/mgmt/storage/models.go | 12 +- .../preview/storage/mgmt/storage/models.go | 12 +- .../mgmt/2019-04-01/storage/accounts.go | 48 ++++- .../storage/mgmt/2019-04-01/storage/models.go | 173 ++++++++++++++++-- .../storage/storageapi/interfaces.go | 2 +- 5 files changed, 220 insertions(+), 27 deletions(-) diff --git a/profiles/latest/storage/mgmt/storage/models.go b/profiles/latest/storage/mgmt/storage/models.go index fd36b99aaccf..634f84dc0232 100644 --- a/profiles/latest/storage/mgmt/storage/models.go +++ b/profiles/latest/storage/mgmt/storage/models.go @@ -282,6 +282,8 @@ type AccountCreateParameters = original.AccountCreateParameters type AccountKey = original.AccountKey type AccountListKeysResult = original.AccountListKeysResult type AccountListResult = original.AccountListResult +type AccountListResultIterator = original.AccountListResultIterator +type AccountListResultPage = original.AccountListResultPage type AccountProperties = original.AccountProperties type AccountPropertiesCreateParameters = original.AccountPropertiesCreateParameters type AccountPropertiesUpdateParameters = original.AccountPropertiesUpdateParameters @@ -302,6 +304,8 @@ type BlobServicePropertiesProperties = original.BlobServicePropertiesProperties type BlobServicesClient = original.BlobServicesClient type ChangeFeed = original.ChangeFeed type CheckNameAvailabilityResult = original.CheckNameAvailabilityResult +type CloudError = original.CloudError +type CloudErrorBody = original.CloudErrorBody type ContainerProperties = original.ContainerProperties type CorsRule = original.CorsRule type CorsRules = original.CorsRules @@ -314,8 +318,6 @@ type Encryption = original.Encryption type EncryptionService = original.EncryptionService type EncryptionServices = original.EncryptionServices type Endpoints = original.Endpoints -type ErrorResponse = original.ErrorResponse -type ErrorResponseBody = original.ErrorResponseBody type FileServiceItems = original.FileServiceItems type FileServiceProperties = original.FileServiceProperties type FileServicePropertiesProperties = original.FileServicePropertiesProperties @@ -382,6 +384,12 @@ type VirtualNetworkRule = original.VirtualNetworkRule func New(subscriptionID string) BaseClient { return original.New(subscriptionID) } +func NewAccountListResultIterator(page AccountListResultPage) AccountListResultIterator { + return original.NewAccountListResultIterator(page) +} +func NewAccountListResultPage(getNextPage func(context.Context, AccountListResult) (AccountListResult, error)) AccountListResultPage { + return original.NewAccountListResultPage(getNextPage) +} func NewAccountsClient(subscriptionID string) AccountsClient { return original.NewAccountsClient(subscriptionID) } diff --git a/profiles/preview/storage/mgmt/storage/models.go b/profiles/preview/storage/mgmt/storage/models.go index d2407205cd2d..48320cf10e7a 100644 --- a/profiles/preview/storage/mgmt/storage/models.go +++ b/profiles/preview/storage/mgmt/storage/models.go @@ -282,6 +282,8 @@ type AccountCreateParameters = original.AccountCreateParameters type AccountKey = original.AccountKey type AccountListKeysResult = original.AccountListKeysResult type AccountListResult = original.AccountListResult +type AccountListResultIterator = original.AccountListResultIterator +type AccountListResultPage = original.AccountListResultPage type AccountProperties = original.AccountProperties type AccountPropertiesCreateParameters = original.AccountPropertiesCreateParameters type AccountPropertiesUpdateParameters = original.AccountPropertiesUpdateParameters @@ -302,6 +304,8 @@ type BlobServicePropertiesProperties = original.BlobServicePropertiesProperties type BlobServicesClient = original.BlobServicesClient type ChangeFeed = original.ChangeFeed type CheckNameAvailabilityResult = original.CheckNameAvailabilityResult +type CloudError = original.CloudError +type CloudErrorBody = original.CloudErrorBody type ContainerProperties = original.ContainerProperties type CorsRule = original.CorsRule type CorsRules = original.CorsRules @@ -314,8 +318,6 @@ type Encryption = original.Encryption type EncryptionService = original.EncryptionService type EncryptionServices = original.EncryptionServices type Endpoints = original.Endpoints -type ErrorResponse = original.ErrorResponse -type ErrorResponseBody = original.ErrorResponseBody type FileServiceItems = original.FileServiceItems type FileServiceProperties = original.FileServiceProperties type FileServicePropertiesProperties = original.FileServicePropertiesProperties @@ -382,6 +384,12 @@ type VirtualNetworkRule = original.VirtualNetworkRule func New(subscriptionID string) BaseClient { return original.New(subscriptionID) } +func NewAccountListResultIterator(page AccountListResultPage) AccountListResultIterator { + return original.NewAccountListResultIterator(page) +} +func NewAccountListResultPage(getNextPage func(context.Context, AccountListResult) (AccountListResult, error)) AccountListResultPage { + return original.NewAccountListResultPage(getNextPage) +} func NewAccountsClient(subscriptionID string) AccountsClient { return original.NewAccountsClient(subscriptionID) } diff --git a/services/storage/mgmt/2019-04-01/storage/accounts.go b/services/storage/mgmt/2019-04-01/storage/accounts.go index 86bb049aaec9..4ca8db150dec 100644 --- a/services/storage/mgmt/2019-04-01/storage/accounts.go +++ b/services/storage/mgmt/2019-04-01/storage/accounts.go @@ -518,13 +518,13 @@ func (client AccountsClient) GetPropertiesResponder(resp *http.Response) (result // List lists all the storage accounts available under the subscription. Note that storage keys are not returned; use // the ListKeys operation for this. -func (client AccountsClient) List(ctx context.Context) (result AccountListResult, err error) { +func (client AccountsClient) List(ctx context.Context) (result AccountListResultPage, err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/AccountsClient.List") defer func() { sc := -1 - if result.Response.Response != nil { - sc = result.Response.Response.StatusCode + if result.alr.Response.Response != nil { + sc = result.alr.Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() @@ -535,6 +535,7 @@ func (client AccountsClient) List(ctx context.Context) (result AccountListResult return result, validation.NewError("storage.AccountsClient", "List", err.Error()) } + result.fn = client.listNextResults req, err := client.ListPreparer(ctx) if err != nil { err = autorest.NewErrorWithError(err, "storage.AccountsClient", "List", nil, "Failure preparing request") @@ -543,12 +544,12 @@ func (client AccountsClient) List(ctx context.Context) (result AccountListResult resp, err := client.ListSender(req) if err != nil { - result.Response = autorest.Response{Response: resp} + result.alr.Response = autorest.Response{Response: resp} err = autorest.NewErrorWithError(err, "storage.AccountsClient", "List", resp, "Failure sending request") return } - result, err = client.ListResponder(resp) + result.alr, err = client.ListResponder(resp) if err != nil { err = autorest.NewErrorWithError(err, "storage.AccountsClient", "List", resp, "Failure responding to request") } @@ -595,6 +596,43 @@ func (client AccountsClient) ListResponder(resp *http.Response) (result AccountL return } +// listNextResults retrieves the next set of results, if any. +func (client AccountsClient) listNextResults(ctx context.Context, lastResults AccountListResult) (result AccountListResult, err error) { + req, err := lastResults.accountListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "storage.AccountsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "storage.AccountsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client AccountsClient) ListComplete(ctx context.Context) (result AccountListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AccountsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} + // ListAccountSAS list SAS credentials of a storage account. // Parameters: // resourceGroupName - the name of the resource group within the user's subscription. The name is case diff --git a/services/storage/mgmt/2019-04-01/storage/models.go b/services/storage/mgmt/2019-04-01/storage/models.go index d6c89992a21c..265f9a9dbac7 100644 --- a/services/storage/mgmt/2019-04-01/storage/models.go +++ b/services/storage/mgmt/2019-04-01/storage/models.go @@ -832,6 +832,145 @@ type AccountListResult struct { autorest.Response `json:"-"` // Value - READ-ONLY; Gets the list of storage accounts and their properties. Value *[]Account `json:"value,omitempty"` + // NextLink - READ-ONLY; Request URL that can be used to query next page of storage accounts. Returned when total number of requested storage accounts exceed maximum page size. + NextLink *string `json:"nextLink,omitempty"` +} + +// AccountListResultIterator provides access to a complete listing of Account values. +type AccountListResultIterator struct { + i int + page AccountListResultPage +} + +// NextWithContext advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *AccountListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AccountListResultIterator.NextWithContext") + defer func() { + sc := -1 + if iter.Response().Response.Response != nil { + sc = iter.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err = iter.page.NextWithContext(ctx) + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (iter *AccountListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter AccountListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter AccountListResultIterator) Response() AccountListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter AccountListResultIterator) Value() Account { + if !iter.page.NotDone() { + return Account{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the AccountListResultIterator type. +func NewAccountListResultIterator(page AccountListResultPage) AccountListResultIterator { + return AccountListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (alr AccountListResult) IsEmpty() bool { + return alr.Value == nil || len(*alr.Value) == 0 +} + +// accountListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (alr AccountListResult) accountListResultPreparer(ctx context.Context) (*http.Request, error) { + if alr.NextLink == nil || len(to.String(alr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(alr.NextLink))) +} + +// AccountListResultPage contains a page of Account values. +type AccountListResultPage struct { + fn func(context.Context, AccountListResult) (AccountListResult, error) + alr AccountListResult +} + +// NextWithContext advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *AccountListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/AccountListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.alr) + if err != nil { + return err + } + page.alr = next + return nil +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +// Deprecated: Use NextWithContext() instead. +func (page *AccountListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page AccountListResultPage) NotDone() bool { + return !page.alr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page AccountListResultPage) Response() AccountListResult { + return page.alr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page AccountListResultPage) Values() []Account { + if page.alr.IsEmpty() { + return nil + } + return *page.alr.Value +} + +// Creates a new instance of the AccountListResultPage type. +func NewAccountListResultPage(getNextPage func(context.Context, AccountListResult) (AccountListResult, error)) AccountListResultPage { + return AccountListResultPage{fn: getNextPage} } // AccountProperties properties of the storage account. @@ -1295,6 +1434,23 @@ type CheckNameAvailabilityResult struct { Message *string `json:"message,omitempty"` } +// CloudError an error response from the Storage service. +type CloudError struct { + Error *CloudErrorBody `json:"error,omitempty"` +} + +// CloudErrorBody an error response from the Storage service. +type CloudErrorBody struct { + // Code - An identifier for the error. Codes are invariant and are intended to be consumed programmatically. + Code *string `json:"code,omitempty"` + // Message - A message describing the error, intended to be suitable for display in a user interface. + Message *string `json:"message,omitempty"` + // Target - The target of the particular error. For example, the name of the property in error. + Target *string `json:"target,omitempty"` + // Details - A list of additional details about the error. + Details *[]CloudErrorBody `json:"details,omitempty"` +} + // ContainerProperties the properties of a container. type ContainerProperties struct { // PublicAccess - Specifies whether data in the container may be accessed publicly and the level of access. Possible values include: 'PublicAccessContainer', 'PublicAccessBlob', 'PublicAccessNone' @@ -1434,23 +1590,6 @@ type Endpoints struct { Dfs *string `json:"dfs,omitempty"` } -// ErrorResponse an error response from the Storage service. -type ErrorResponse struct { - Error *ErrorResponseBody `json:"error,omitempty"` -} - -// ErrorResponseBody an error response from the Storage service. -type ErrorResponseBody struct { - // Code - An identifier for the error. Codes are invariant and are intended to be consumed programmatically. - Code *string `json:"code,omitempty"` - // Message - A message describing the error, intended to be suitable for display in a user interface. - Message *string `json:"message,omitempty"` - // Target - The target of the particular error. For example, the name of the property in error. - Target *string `json:"target,omitempty"` - // Details - A list of additional details about the error. - Details *[]ErrorResponseBody `json:"details,omitempty"` -} - // FileServiceItems ... type FileServiceItems struct { autorest.Response `json:"-"` diff --git a/services/storage/mgmt/2019-04-01/storage/storageapi/interfaces.go b/services/storage/mgmt/2019-04-01/storage/storageapi/interfaces.go index f4af674cd8bd..2b70fbf217e2 100644 --- a/services/storage/mgmt/2019-04-01/storage/storageapi/interfaces.go +++ b/services/storage/mgmt/2019-04-01/storage/storageapi/interfaces.go @@ -44,7 +44,7 @@ type AccountsClientAPI interface { Delete(ctx context.Context, resourceGroupName string, accountName string) (result autorest.Response, err error) Failover(ctx context.Context, resourceGroupName string, accountName string) (result storage.AccountsFailoverFuture, err error) GetProperties(ctx context.Context, resourceGroupName string, accountName string, expand storage.AccountExpand) (result storage.Account, err error) - List(ctx context.Context) (result storage.AccountListResult, err error) + List(ctx context.Context) (result storage.AccountListResultPage, err error) ListAccountSAS(ctx context.Context, resourceGroupName string, accountName string, parameters storage.AccountSasParameters) (result storage.ListAccountSasResponse, err error) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result storage.AccountListResult, err error) ListKeys(ctx context.Context, resourceGroupName string, accountName string) (result storage.AccountListKeysResult, err error)