Skip to content

Commit 6138a56

Browse files
Add transfer pagination
1 parent d418a11 commit 6138a56

5 files changed

Lines changed: 44 additions & 15 deletions

File tree

coriolisclient/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def __init__(self, client):
167167

168168
@wrap_unauthorized_exception
169169
def _list(self, url, response_key=None, obj_class=None, json=None,
170-
values_key='values', query: dict | list | None=None):
170+
values_key='values', query: dict | list | None = None):
171171
"""List the collection.
172172
:param url: a partial URL, e.g., '/servers'
173173
:param response_key: the key to be looked up in response dictionary,

coriolisclient/cli/deployments.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,15 +281,15 @@ def get_parser(self, prog_name):
281281
help='Maximum number of executions to retrieve.')
282282
parser.add_argument(
283283
'--sort',
284-
help='Comma-separated list of sort keys and directions in the form '
285-
'of <key>[:<asc|desc>]. The direction defaults to descending if '
286-
'not specified.')
284+
help='Comma-separated list of sort keys and directions in the '
285+
'form of <key>[:<asc|desc>]. The direction defaults to '
286+
'descending if not specified.')
287287
return parser
288288

289289
def take_action(self, args):
290290
obj_list = self.app.client_manager.coriolis.deployments.list(
291291
marker=args.marker,
292292
limit=args.limit,
293-
sort_keys=sort_keys,
294-
sort_dirs=sort_dirs)
293+
sort_keys=args.sort_keys,
294+
sort_dirs=args.sort_dirs)
295295
return DeploymentFormatter().list_objects(obj_list)

coriolisclient/cli/transfer_executions.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,17 +189,17 @@ def get_parser(self, prog_name):
189189
help='Maximum number of executions to retrieve.')
190190
parser.add_argument(
191191
'--sort',
192-
help='Comma-separated list of sort keys and directions in the form '
193-
'of <key>[:<asc|desc>]. The direction defaults to descending if '
194-
'not specified.')
192+
help='Comma-separated list of sort keys and directions in the '
193+
'form of <key>[:<asc|desc>]. The direction defaults to '
194+
'descending if not specified.')
195195
return parser
196196

197197
def take_action(self, args):
198-
sort_keys, sort_dirs = cli_utils.parse_sort_args(arg.sort)
198+
sort_keys, sort_dirs = cli_utils.parse_sort_args(args.sort)
199199
obj_list = self.app.client_manager.coriolis.transfer_executions.list(
200200
args.transfer,
201201
marker=args.marker,
202202
limit=args.limit,
203-
sort_keys=sort_keys,
204-
sort_dirs=sort_dirs)
203+
sort_keys=args.sort_keys,
204+
sort_dirs=args.sort_dirs)
205205
return TransferExecutionFormatter().list_objects(obj_list)

coriolisclient/cli/transfers.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,10 +320,25 @@ class ListTransfer(lister.Lister):
320320

321321
def get_parser(self, prog_name):
322322
parser = super(ListTransfer, self).get_parser(prog_name)
323+
parser.add_argument(
324+
'--marker',
325+
help='The id of the last retrieved execution.')
326+
parser.add_argument(
327+
'--limit', type=int,
328+
help='Maximum number of executions to retrieve.')
329+
parser.add_argument(
330+
'--sort',
331+
help='Comma-separated list of sort keys and directions in the '
332+
'form of <key>[:<asc|desc>]. The direction defaults to '
333+
'descending if not specified.')
323334
return parser
324335

325336
def take_action(self, args):
326-
obj_list = self.app.client_manager.coriolis.transfers.list()
337+
obj_list = self.app.client_manager.coriolis.transfers.list(
338+
marker=args.marker,
339+
limit=args.limit,
340+
sort_keys=args.sort_keys,
341+
sort_dirs=args.sort_dirs)
327342
return TransferFormatter().list_objects(obj_list)
328343

329344

coriolisclient/v1/transfers.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,25 @@ class TransferManager(base.BaseManager):
4747
def __init__(self, api):
4848
super(TransferManager, self).__init__(api)
4949

50-
def list(self, detail=False):
50+
def list(self, detail=False, marker=None, limit=None,
51+
sort_keys=None, sort_dirs=None):
52+
# List of key-value tuples.
53+
query = []
54+
if marker is not None:
55+
query.append(("marker", marker))
56+
if limit is not None:
57+
query.append(("limit", limit))
58+
if sort_keys is not None:
59+
query.extend(('sort_key', sort_key)
60+
for sort_key in sort_keys)
61+
if sort_dirs is not None:
62+
query.extend(('sort_dir', sort_dir)
63+
for sort_dir in sort_dirs)
64+
5165
path = "/transfers"
5266
if detail:
5367
path = "%s/detail" % path
54-
return self._list(path, 'transfers')
68+
return self._list(path, 'transfers', query=query)
5569

5670
def get(self, transfer):
5771
return self._get('/transfers/%s' % base.getid(transfer), 'transfer')

0 commit comments

Comments
 (0)