diff --git a/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/edge_nodes.rb b/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/edge_nodes.rb index 4c37439511..a47306a4e5 100644 --- a/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/edge_nodes.rb +++ b/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/edge_nodes.rb @@ -30,11 +30,11 @@ def initialize(client) # @param custom_headers [Hash{String => String}] A hash of custom headers that # will be added to the HTTP request. # - # @return [EdgenodeResult] operation results. + # @return [Array] operation results. # def list(custom_headers = nil) - response = list_async(custom_headers).value! - response.body unless response.nil? + first_page = list_as_lazy(custom_headers) + first_page.get_all_items end # @@ -105,5 +105,111 @@ def list_async(custom_headers = nil) promise.execute end + # + # Lists all the edge nodes of a CDN service. + # + # @param next_page_link [String] The NextLink from the previous successful call + # to List operation. + # @param custom_headers [Hash{String => String}] A hash of custom headers that + # will be added to the HTTP request. + # + # @return [EdgenodeResult] operation results. + # + def list_next(next_page_link, custom_headers = nil) + response = list_next_async(next_page_link, custom_headers).value! + response.body unless response.nil? + end + + # + # Lists all the edge nodes of a CDN service. + # + # @param next_page_link [String] The NextLink from the previous successful call + # to List operation. + # @param custom_headers [Hash{String => String}] A hash of custom headers that + # will be added to the HTTP request. + # + # @return [MsRestAzure::AzureOperationResponse] HTTP response information. + # + def list_next_with_http_info(next_page_link, custom_headers = nil) + list_next_async(next_page_link, custom_headers).value! + end + + # + # Lists all the edge nodes of a CDN service. + # + # @param next_page_link [String] The NextLink from the previous successful call + # to List operation. + # @param [Hash{String => String}] A hash of custom headers that will be added + # to the HTTP request. + # + # @return [Concurrent::Promise] Promise object which holds the HTTP response. + # + def list_next_async(next_page_link, custom_headers = nil) + fail ArgumentError, 'next_page_link is nil' if next_page_link.nil? + + + request_headers = {} + + # Set Headers + request_headers['x-ms-client-request-id'] = SecureRandom.uuid + request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil? + path_template = '{nextLink}' + + request_url = @base_url || @client.base_url + + options = { + middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]], + skip_encoding_path_params: {'nextLink' => next_page_link}, + headers: request_headers.merge(custom_headers || {}), + base_url: request_url + } + promise = @client.make_request_async(:get, path_template, options) + + promise = promise.then do |result| + http_response = result.response + status_code = http_response.status + response_content = http_response.body + unless status_code == 200 + error_model = JSON.load(response_content) + fail MsRest::HttpOperationError.new(result.request, http_response, error_model) + end + + result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil? + # Deserialize Response + if status_code == 200 + begin + parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content) + result_mapper = EdgenodeResult.mapper() + result.body = @client.deserialize(result_mapper, parsed_response, 'result.body') + rescue Exception => e + fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result) + end + end + + result + end + + promise.execute + end + + # + # Lists all the edge nodes of a CDN service. + # + # @param custom_headers [Hash{String => String}] A hash of custom headers that + # will be added to the HTTP request. + # + # @return [EdgenodeResult] which provide lazy access to pages of the response. + # + def list_as_lazy(custom_headers = nil) + response = list_async(custom_headers).value! + unless response.nil? + page = response.body + page.next_method = Proc.new do |next_page_link| + list_next_async(next_page_link, custom_headers) + end + page + end + end + end end diff --git a/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/models/edgenode_result.rb b/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/models/edgenode_result.rb index 7a5a87caaf..b42f2ef147 100644 --- a/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/models/edgenode_result.rb +++ b/management/azure_mgmt_cdn/lib/generated/azure_mgmt_cdn/models/edgenode_result.rb @@ -16,6 +16,41 @@ class EdgenodeResult # @return [Array] Edge node of CDN service. attr_accessor :value + # @return [String] URL to get the next set of edgenode list results if + # there are any. + attr_accessor :next_link + + # return [Proc] with next page method call. + attr_accessor :next_method + + # + # Gets the rest of the items for the request, enabling auto-pagination. + # + # @return [Array] operation results. + # + def get_all_items + items = @value + page = self + while page.next_link != nil do + page = page.get_next_page + items.concat(page.value) + end + items + end + + # + # Gets the next page of results. + # + # @return [EdgenodeResult] with next page content. + # + def get_next_page + response = @next_method.call(@next_link).value! unless @next_method.nil? + unless response.nil? + @next_link = response.body.next_link + @value = response.body.value + self + end + end # # Mapper for EdgenodeResult class as Ruby Hash. @@ -43,6 +78,13 @@ def self.mapper() } } } + }, + next_link: { + required: false, + serialized_name: 'nextLink', + type: { + name: 'String' + } } } }