diff --git a/shade/__init__.py b/shade/__init__.py index 5427a6c21..59fa88611 100644 --- a/shade/__init__.py +++ b/shade/__init__.py @@ -953,11 +953,14 @@ class OpenStackCloud(object): # First, try to actually get images from glance, it's more efficient images = [] try: - # If the cloud does not expose the glance API publically - image_gen = self.manager.submitTask(_tasks.GlanceImageList()) + # Creates a generator - does not actually talk to the cloud API + # hardcoding page size for now. We'll have to get MUCH smarter + # if we want to deal with page size per unit of rate limiting + image_gen = self.glance_client.images.list(page_size=1000) # Deal with the generator to make a list - image_list = [image for image in image_gen] + image_list = self.manager.submitTask( + _tasks.GlanceImageList(image_gen=image_gen)) if image_list: if getattr(image_list[0], 'validate', None): diff --git a/shade/_tasks.py b/shade/_tasks.py index 49d6f7d67..3dc051c0f 100644 --- a/shade/_tasks.py +++ b/shade/_tasks.py @@ -124,7 +124,7 @@ class RouterDelete(task_manager.Task): class GlanceImageList(task_manager.Task): def main(self, client): - return client.glance_client.images.list() + return [image for image in self.args['image_gen']] class NovaImageList(task_manager.Task):