def list(self, project=None, marker=None, limit=storage.DEFAULT_QUEUES_PER_PAGE, detailed=False): def all_pages(): for shard in self._shard_catalog._shards_ctrl.list(limit=0): yield next( self._shard_catalog.get_driver( shard['name']).queue_controller.list( project=project, marker=marker, limit=limit, detailed=detailed)) # make a heap compared with 'name' ls = heapq.merge(*[utils.keyify('name', page) for page in all_pages()]) marker_name = {} # limit the iterator and strip out the comparison wrapper def it(): for queue_cmp in itertools.islice(ls, limit): marker_name['next'] = queue_cmp.obj['name'] yield queue_cmp.obj yield it() yield marker_name['next']
def list(self, project=None, marker=None, limit=storage.DEFAULT_QUEUES_PER_PAGE, detailed=False): def all_pages(): for shard in self._shard_catalog._shards_ctrl.list(limit=0): yield next(self._shard_catalog.get_driver(shard['name']) .queue_controller.list( project=project, marker=marker, limit=limit, detailed=detailed)) # make a heap compared with 'name' ls = heapq.merge(*[ utils.keyify('name', page) for page in all_pages() ]) marker_name = {} # limit the iterator and strip out the comparison wrapper def it(): for queue_cmp in itertools.islice(ls, limit): marker_name['next'] = queue_cmp.obj['name'] yield queue_cmp.obj yield it() yield marker_name['next']
def list(self, project=None, marker=None, limit=None, detailed=False): def all_pages(): for shard in self._shard_catalog._shards_ctrl.list(limit=0): yield next( self._shard_catalog.get_driver(shard["name"]).queue_controller.list( project=project, marker=marker, limit=limit, detailed=detailed ) ) # make a heap compared with 'name' ls = heapq.merge(*[utils.keyify("name", page) for page in all_pages()]) if limit is None: limit = self._shard_catalog._limits_conf.default_queue_paging marker_name = {} # limit the iterator and strip out the comparison wrapper def it(): for queue_cmp in itertools.islice(ls, limit): marker_name["next"] = queue_cmp.obj["name"] yield queue_cmp.obj yield it() yield marker_name["next"]