Skip to content

Commit 6e1f268

Browse files
committed
added pagination parameters
1 parent 7b4a54c commit 6e1f268

10 files changed

+804
-554
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Unreleased
44
**Improvements**
55
- Added `create_model_version` and `list_model_versions` to `model_repository`
66
- Added an explicit `ValueError` when attempting to register an ASTORE that can't be downloaded.
7+
- Added `start` and `limit` pagination parameters to all default `list_*` service methods.
78

89
**Bugfixes**
910
- Fixed an issue where `model_repository` did not find models by name once pagination limits were reached.

src/sasctl/_services/service.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,16 @@ def get_filter(item):
188188
return dict(filter='eq(name, "%s")' % item)
189189

190190
@sasctl_command('list')
191-
def list_items(cls, filter=None, **kwargs):
191+
def list_items(cls, filter=None, start=None, limit=None, **kwargs):
192192
"""List all {items} available in the environment.
193193
194194
Parameters
195195
----------
196196
filter : str, optional
197+
start : int, optional
198+
Zero-based index of the first item to return. Defaults to 0.
199+
limit : int, optional
200+
The maximum number of items to return. Defaults to 20.
197201
198202
Returns
199203
-------
@@ -209,7 +213,12 @@ def list_items(cls, filter=None, **kwargs):
209213
"""
210214
if filter is not None:
211215
kwargs['filter'] = filter
212-
params = '&'.join(['%s=%s' % (k, quote(v, safe='/(),"'))
216+
if start is not None:
217+
kwargs['start'] = int(start)
218+
if limit is not None:
219+
kwargs['limit'] = int(limit)
220+
221+
params = '&'.join(['%s=%s' % (k, quote(str(v), safe='/(),"'))
213222
for k, v in six.iteritems(kwargs)])
214223

215224
results = cls.get(path, params=params)

tests/cassettes/tests.integration.test_folders.test_create_folder.json renamed to tests/cassettes/tests.integration.test_folders.TestFolders.test_create_folder.json

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"http_interactions": [
33
{
4-
"recorded_at": "2019-06-10T21:42:56",
4+
"recorded_at": "2019-08-14T10:42:22",
55
"request": {
66
"body": {
77
"encoding": "utf-8",
@@ -21,13 +21,13 @@
2121
"keep-alive"
2222
],
2323
"Content-Length": [
24-
"60"
24+
"54"
2525
],
2626
"Content-Type": [
2727
"application/x-www-form-urlencoded"
2828
],
2929
"User-Agent": [
30-
"python-requests/2.18.4"
30+
"python-requests/2.22.0"
3131
]
3232
},
3333
"method": "POST",
@@ -36,7 +36,7 @@
3636
"response": {
3737
"body": {
3838
"encoding": "UTF-8",
39-
"string": "{\"access_token\":\"[redacted]\",\"token_type\":\"bearer\",\"expires_in\":35999,\"scope\":\"esvakmcorionterritoryaccess viyapython SCR CARYEMPS misvaclrcustomers esvanemeainstructorconsumers rdinformoptin esvakmcrenewalforecastconsumers esvakmcorionoppaccess AWSSandboxAccount01 GLOBALSALES FSL modelmanager testdivsna uaa.resource instltech RNDSIMSUsers openid domainemps1 demoacl-fsriskint gelupdates scim.read SASAdministrators OneDriveUsers gsopsussales openstackusers CASDiscussion scr_us intcawebcertreq esvakmcorionconsultforecastconsumers ANALYSIS USCALA mercuryusers CTRYUNITEDSTATES BLDGC tisurvey GLOBALPRESALES intcausers INSURTEAMS HADOOP-DEV clients.secret esvaallempsconsumers midena SIMSEdit uscompresales Safari_list rdtcaccess DSCIENCE SAS_TE AWSsalesenableAccount unix_marketing csatechxchange DataBuilders USemps AWS-617292774228-sandbox SIMSView Weekly_Wrap opsglobalorion DomainEmployees salessupportcredittech AWS-TAM-Call esvanemeaeduconsumers C3RD googlecloudusers bareosdeploy KSA_mail_list revegyusercommunity uaa.admin clients.admin AMTX esvakmcorionconsumers AMPSX esvanemeaeduadmins azurecloudusers lanpanfilter EMINERS sas92_install ApplicationAdministrators techoffice COOALLSTAFF ussales allamazonusers clients.read WWMGlobalBanking GuestFSBU aideas hrsb BLDALL TESSAUSERS KSA_ADGroup birdrace ITatSAS democenterusers HADOOP-L RE_PYTHON clients.write scim.write\",\"jti\":\"eff7b3d0060c4f0fb02d8b97e6b45c86\"}"
39+
"string": "{\"access_token\":\"[redacted]\",\"token_type\":\"bearer\",\"expires_in\":35999,\"scope\":\"DataBuilders ApplicationAdministrators qasDataAdmin qasFQAAnalyst SASScoreUsers qasAPAAnalyst qasInfoConsumer clients.read clients.secret uaa.resource openid uaa.admin clients.admin EsriUsers scim.read SASAdministrators qasPQAAnalyst clients.write scim.write qasAppAdmin CASHostAccountRequired\",\"jti\":\"720ef6af8e8940d79ea572857bbd6678\"}"
4040
},
4141
"headers": {
4242
"Cache-Control": [
@@ -50,7 +50,7 @@
5050
"application/json;charset=UTF-8"
5151
],
5252
"Date": [
53-
"Mon, 10 Jun 2019 21:42:56 GMT"
53+
"Wed, 14 Aug 2019 10:42:22 GMT"
5454
],
5555
"Expires": [
5656
"0"
@@ -62,9 +62,6 @@
6262
"no-cache",
6363
"no-cache"
6464
],
65-
"Server": [
66-
"Apache/2.4"
67-
],
6865
"Strict-Transport-Security": [
6966
"max-age=31536000 ; includeSubDomains"
7067
],
@@ -92,7 +89,7 @@
9289
}
9390
},
9491
{
95-
"recorded_at": "2019-06-10T21:42:56",
92+
"recorded_at": "2019-08-14T10:42:22",
9693
"request": {
9794
"body": {
9895
"encoding": "utf-8",
@@ -112,7 +109,7 @@
112109
"keep-alive"
113110
],
114111
"User-Agent": [
115-
"python-requests/2.18.4"
112+
"python-requests/2.22.0"
116113
]
117114
},
118115
"method": "GET",
@@ -137,7 +134,7 @@
137134
"application/vnd.sas.collection+json;charset=UTF-8"
138135
],
139136
"Date": [
140-
"Mon, 10 Jun 2019 21:42:56 GMT"
137+
"Wed, 14 Aug 2019 10:42:22 GMT"
141138
],
142139
"Expires": [
143140
"0"
@@ -148,9 +145,6 @@
148145
"Pragma": [
149146
"no-cache"
150147
],
151-
"Server": [
152-
"Apache/2.4"
153-
],
154148
"Strict-Transport-Security": [
155149
"max-age=31536000 ; includeSubDomains"
156150
],
@@ -178,7 +172,7 @@
178172
}
179173
},
180174
{
181-
"recorded_at": "2019-06-10T21:42:56",
175+
"recorded_at": "2019-08-14T10:42:22",
182176
"request": {
183177
"body": {
184178
"encoding": "utf-8",
@@ -204,7 +198,7 @@
204198
"application/vnd.sas.content.folder+json"
205199
],
206200
"User-Agent": [
207-
"python-requests/2.18.4"
201+
"python-requests/2.22.0"
208202
]
209203
},
210204
"method": "POST",
@@ -213,7 +207,7 @@
213207
"response": {
214208
"body": {
215209
"encoding": null,
216-
"string": "{\"creationTimeStamp\":\"2019-06-10T21:42:56.922Z\",\"modifiedTimeStamp\":\"2019-06-10T21:42:56.922Z\",\"createdBy\":\"USERNAME\",\"modifiedBy\":\"USERNAME\",\"id\":\"8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"name\":\"Test Folder\",\"type\":\"folder\",\"memberCount\":0,\"links\":[{\"method\":\"GET\",\"rel\":\"self\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"type\":\"application/vnd.sas.content.folder\"},{\"method\":\"PUT\",\"rel\":\"validateRename\",\"href\":\"/folders/commons/validations/folders/@root/members/@new/name?value={newname}&type=folder\",\"uri\":\"/folders/commons/validations/folders/@root/members/@new/name?value={newname}&type=folder\",\"type\":\"application/vnd.sas.validation\"},{\"method\":\"PUT\",\"rel\":\"validateNewMemberName\",\"href\":\"/folders/commons/validations/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685/members/@new/name?value={newname}&type={newtype}\",\"uri\":\"/folders/commons/validations/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685/members/@new/name?value={newname}&type={newtype}\"},{\"method\":\"GET\",\"rel\":\"ancestors\",\"href\":\"/folders/ancestors?childUri=/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"uri\":\"/folders/ancestors?childUri=/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"type\":\"application/vnd.sas.content.folder.ancestor\"},{\"method\":\"PUT\",\"rel\":\"update\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"type\":\"application/vnd.sas.content.folder\",\"responseType\":\"application/vnd.sas.content.folder\"},{\"method\":\"DELETE\",\"rel\":\"delete\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\"},{\"method\":\"DELETE\",\"rel\":\"deleteRecursively\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685?recursive=true\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685?recursive=true\"},{\"method\":\"GET\",\"rel\":\"members\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685/members\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685/members\",\"type\":\"application/vnd.sas.collection\",\"itemType\":\"application/vnd.sas.content.folder.member\"},{\"method\":\"POST\",\"rel\":\"addMember\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685/members\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685/members\",\"type\":\"application/vnd.sas.content.folder.member\"},{\"method\":\"POST\",\"rel\":\"createChild\",\"href\":\"/folders/folders?parentFolderUri=/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"uri\":\"/folders/folders?parentFolderUri=/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"type\":\"application/vnd.sas.content.folder\"},{\"method\":\"GET\",\"rel\":\"transferExport\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"responseType\":\"application/vnd.sas.transfer.object\"},{\"method\":\"PUT\",\"rel\":\"transferImportUpdate\",\"href\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"uri\":\"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685\",\"type\":\"application/vnd.sas.transfer.object\",\"responseType\":\"application/vnd.sas.summary\"},{\"method\":\"POST\",\"rel\":\"transferImport\",\"href\":\"/folders/folders\",\"uri\":\"/folders/folders\",\"type\":\"application/vnd.sas.transfer.object\",\"responseType\":\"application/vnd.sas.summary\"}],\"version\":1}"
210+
"string": "{\"creationTimeStamp\":\"2019-08-14T10:42:22.696Z\",\"modifiedTimeStamp\":\"2019-08-14T10:42:22.696Z\",\"createdBy\":\"USERNAME\",\"modifiedBy\":\"USERNAME\",\"id\":\"b566bae1-da57-49ad-a3d0-257c282d3573\",\"name\":\"Test Folder\",\"type\":\"folder\",\"memberCount\":0,\"links\":[{\"method\":\"GET\",\"rel\":\"self\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"type\":\"application/vnd.sas.content.folder\"},{\"method\":\"PUT\",\"rel\":\"validateRename\",\"href\":\"/folders/commons/validations/folders/@root/members/@new/name?value={newname}&type=folder\",\"uri\":\"/folders/commons/validations/folders/@root/members/@new/name?value={newname}&type=folder\",\"type\":\"application/vnd.sas.validation\"},{\"method\":\"PUT\",\"rel\":\"validateNewMemberName\",\"href\":\"/folders/commons/validations/folders/b566bae1-da57-49ad-a3d0-257c282d3573/members/@new/name?value={newname}&type={newtype}\",\"uri\":\"/folders/commons/validations/folders/b566bae1-da57-49ad-a3d0-257c282d3573/members/@new/name?value={newname}&type={newtype}\"},{\"method\":\"GET\",\"rel\":\"ancestors\",\"href\":\"/folders/ancestors?childUri=/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"uri\":\"/folders/ancestors?childUri=/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"type\":\"application/vnd.sas.content.folder.ancestor\"},{\"method\":\"PUT\",\"rel\":\"update\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"type\":\"application/vnd.sas.content.folder\",\"responseType\":\"application/vnd.sas.content.folder\"},{\"method\":\"DELETE\",\"rel\":\"delete\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\"},{\"method\":\"DELETE\",\"rel\":\"deleteRecursively\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573?recursive=true\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573?recursive=true\"},{\"method\":\"GET\",\"rel\":\"members\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573/members\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573/members\",\"type\":\"application/vnd.sas.collection\",\"itemType\":\"application/vnd.sas.content.folder.member\"},{\"method\":\"POST\",\"rel\":\"addMember\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573/members\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573/members\",\"type\":\"application/vnd.sas.content.folder.member\"},{\"method\":\"POST\",\"rel\":\"createChild\",\"href\":\"/folders/folders?parentFolderUri=/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"uri\":\"/folders/folders?parentFolderUri=/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"type\":\"application/vnd.sas.content.folder\"},{\"method\":\"GET\",\"rel\":\"transferExport\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"responseType\":\"application/vnd.sas.transfer.object\"},{\"method\":\"PUT\",\"rel\":\"transferImportUpdate\",\"href\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"uri\":\"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573\",\"type\":\"application/vnd.sas.transfer.object\",\"responseType\":\"application/vnd.sas.summary\"},{\"method\":\"POST\",\"rel\":\"transferImport\",\"href\":\"/folders/folders\",\"uri\":\"/folders/folders\",\"type\":\"application/vnd.sas.transfer.object\",\"responseType\":\"application/vnd.sas.summary\"}],\"version\":1}"
217211
},
218212
"headers": {
219213
"Cache-Control": [
@@ -223,7 +217,7 @@
223217
"Keep-Alive"
224218
],
225219
"Content-Location": [
226-
"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685"
220+
"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573"
227221
],
228222
"Content-Security-Policy": [
229223
"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' *.sas.com blob: data:; style-src 'self' 'unsafe-inline'; child-src 'self' blob: data: mailto:;"
@@ -232,10 +226,10 @@
232226
"application/vnd.sas.content.folder+json"
233227
],
234228
"Date": [
235-
"Mon, 10 Jun 2019 21:42:56 GMT"
229+
"Wed, 14 Aug 2019 10:42:22 GMT"
236230
],
237231
"ETag": [
238-
"\"-111669277\""
232+
"\"-1614570135\""
239233
],
240234
"Expires": [
241235
"0"
@@ -244,17 +238,14 @@
244238
"timeout=5, max=98"
245239
],
246240
"Last-Modified": [
247-
"Mon, 10 Jun 2019 21:42:56 GMT"
241+
"Wed, 14 Aug 2019 10:42:22 GMT"
248242
],
249243
"Location": [
250-
"/folders/folders/8275bcc5-efd9-409d-b8fc-6cdfedd06685"
244+
"/folders/folders/b566bae1-da57-49ad-a3d0-257c282d3573"
251245
],
252246
"Pragma": [
253247
"no-cache"
254248
],
255-
"Server": [
256-
"Apache/2.4"
257-
],
258249
"Strict-Transport-Security": [
259250
"max-age=31536000 ; includeSubDomains"
260251
],

0 commit comments

Comments
 (0)