From 6040b343455dbab426d8512ea16c7f2d0e446eee Mon Sep 17 00:00:00 2001 From: Antoni Segura Puimedon Date: Fri, 23 Mar 2018 18:31:29 +0100 Subject: [PATCH] list_servers pagination support If we want to list the servers of a deployment with more servers than nova.conf max_limit, currently we only return max_limit. This patch makes it behave as expected, getting you all the servers. Change-Id: I58844125ba37d81f1611e4e8ec641c1b8573884d Signed-off-by: Antoni Segura Puimedon --- shade/openstackcloud.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/shade/openstackcloud.py b/shade/openstackcloud.py index 8af68f801..489896617 100644 --- a/shade/openstackcloud.py +++ b/shade/openstackcloud.py @@ -2191,8 +2191,20 @@ class OpenStackCloud( params['all_tenants'] = True data = self._compute_client.get( '/servers/detail', params=params, error_message=error_msg) + unprocessed_servers = {'servers': []} + while 'servers_links' in data: + unprocessed_servers['servers'].extend(data['servers']) + parse_result = urllib.parse.urlparse( + data['servers_links'][0]['href']) + pagination_params = dict( + urllib.parse.parse_qsl(parse_result.query)) + params.update(pagination_params) + data = self._compute_client.get( + '/servers/detail', params=params, error_message=error_msg) + unprocessed_servers['servers'].extend(data['servers']) + servers = self._normalize_servers( - self._get_and_munchify('servers', data)) + self._get_and_munchify('servers', unprocessed_servers)) return [ self._expand_server(server, detailed, bare) for server in servers