rucio 37.3.0__py3-none-any.whl → 37.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rucio might be problematic. Click here for more details.

Files changed (128) hide show
  1. rucio/cli/rule.py +1 -1
  2. rucio/client/accountclient.py +205 -60
  3. rucio/client/accountlimitclient.py +84 -25
  4. rucio/client/baseclient.py +85 -48
  5. rucio/client/client.py +49 -41
  6. rucio/client/configclient.py +36 -13
  7. rucio/client/credentialclient.py +16 -6
  8. rucio/client/didclient.py +321 -133
  9. rucio/client/diracclient.py +13 -6
  10. rucio/client/downloadclient.py +435 -165
  11. rucio/client/exportclient.py +8 -2
  12. rucio/client/fileclient.py +10 -3
  13. rucio/client/importclient.py +4 -1
  14. rucio/client/lifetimeclient.py +48 -31
  15. rucio/client/lockclient.py +22 -7
  16. rucio/client/metaconventionsclient.py +59 -21
  17. rucio/client/pingclient.py +3 -1
  18. rucio/client/replicaclient.py +213 -96
  19. rucio/client/requestclient.py +124 -16
  20. rucio/client/rseclient.py +385 -160
  21. rucio/client/ruleclient.py +147 -51
  22. rucio/client/scopeclient.py +35 -10
  23. rucio/client/subscriptionclient.py +60 -27
  24. rucio/client/touchclient.py +16 -7
  25. rucio/common/constants.py +14 -17
  26. rucio/common/utils.py +18 -2
  27. rucio/core/permission/generic.py +40 -1
  28. rucio/core/replica.py +6 -6
  29. rucio/core/request.py +2 -2
  30. rucio/core/rule.py +5 -3
  31. rucio/core/transfer.py +4 -5
  32. rucio/daemons/conveyor/throttler.py +2 -1
  33. rucio/daemons/judge/evaluator.py +1 -1
  34. rucio/db/sqla/constants.py +3 -3
  35. rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +1 -1
  36. rucio/db/sqla/models.py +1 -1
  37. rucio/gateway/replica.py +129 -41
  38. rucio/gateway/request.py +177 -103
  39. rucio/gateway/subscription.py +90 -108
  40. rucio/rse/rsemanager.py +2 -2
  41. rucio/vcsversion.py +3 -3
  42. rucio/web/rest/flaskapi/v1/accountlimits.py +22 -22
  43. rucio/web/rest/flaskapi/v1/accounts.py +157 -157
  44. rucio/web/rest/flaskapi/v1/archives.py +10 -10
  45. rucio/web/rest/flaskapi/v1/auth.py +106 -106
  46. rucio/web/rest/flaskapi/v1/config.py +37 -37
  47. rucio/web/rest/flaskapi/v1/credentials.py +25 -25
  48. rucio/web/rest/flaskapi/v1/dids.py +381 -381
  49. rucio/web/rest/flaskapi/v1/dirac.py +8 -8
  50. rucio/web/rest/flaskapi/v1/export.py +6 -6
  51. rucio/web/rest/flaskapi/v1/heartbeats.py +14 -14
  52. rucio/web/rest/flaskapi/v1/identities.py +25 -25
  53. rucio/web/rest/flaskapi/v1/import.py +19 -19
  54. rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +54 -54
  55. rucio/web/rest/flaskapi/v1/locks.py +60 -60
  56. rucio/web/rest/flaskapi/v1/meta_conventions.py +29 -29
  57. rucio/web/rest/flaskapi/v1/nongrid_traces.py +4 -4
  58. rucio/web/rest/flaskapi/v1/ping.py +4 -4
  59. rucio/web/rest/flaskapi/v1/redirect.py +17 -17
  60. rucio/web/rest/flaskapi/v1/replicas.py +282 -282
  61. rucio/web/rest/flaskapi/v1/requests.py +424 -229
  62. rucio/web/rest/flaskapi/v1/rses.py +427 -427
  63. rucio/web/rest/flaskapi/v1/rules.py +129 -129
  64. rucio/web/rest/flaskapi/v1/scopes.py +21 -21
  65. rucio/web/rest/flaskapi/v1/subscriptions.py +122 -122
  66. rucio/web/rest/flaskapi/v1/traces.py +18 -18
  67. rucio/web/rest/flaskapi/v1/vos.py +32 -32
  68. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rucio.cfg.template +0 -1
  69. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rucio_multi_vo.cfg.template +0 -1
  70. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/requirements.server.txt +1 -1
  71. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/METADATA +1 -1
  72. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/RECORD +128 -128
  73. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/WHEEL +1 -1
  74. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/alembic.ini.template +0 -0
  75. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/alembic_offline.ini.template +0 -0
  76. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/globus-config.yml.template +0 -0
  77. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/ldap.cfg.template +0 -0
  78. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_approval_request.tmpl +0 -0
  79. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  80. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_approved_user.tmpl +0 -0
  81. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  82. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_denied_user.tmpl +0 -0
  83. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  84. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rse-accounts.cfg.template +0 -0
  85. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/etc/rucio.cfg.atlas.client.template +0 -0
  86. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/tools/bootstrap.py +0 -0
  87. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/tools/merge_rucio_configs.py +0 -0
  88. {rucio-37.3.0.data → rucio-37.5.0.data}/data/rucio/tools/reset_database.py +0 -0
  89. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio +0 -0
  90. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-abacus-account +0 -0
  91. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-abacus-collection-replica +0 -0
  92. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-abacus-rse +0 -0
  93. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-admin +0 -0
  94. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-atropos +0 -0
  95. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-auditor +0 -0
  96. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-automatix +0 -0
  97. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-bb8 +0 -0
  98. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-cache-client +0 -0
  99. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-cache-consumer +0 -0
  100. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-finisher +0 -0
  101. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-poller +0 -0
  102. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-preparer +0 -0
  103. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-receiver +0 -0
  104. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-stager +0 -0
  105. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-submitter +0 -0
  106. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-conveyor-throttler +0 -0
  107. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-dark-reaper +0 -0
  108. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-dumper +0 -0
  109. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-follower +0 -0
  110. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-hermes +0 -0
  111. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-cleaner +0 -0
  112. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-evaluator +0 -0
  113. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-injector +0 -0
  114. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-judge-repairer +0 -0
  115. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-kronos +0 -0
  116. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-minos +0 -0
  117. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-minos-temporary-expiration +0 -0
  118. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-necromancer +0 -0
  119. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-oauth-manager +0 -0
  120. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-reaper +0 -0
  121. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-replica-recoverer +0 -0
  122. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-rse-decommissioner +0 -0
  123. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-storage-consistency-actions +0 -0
  124. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-transmogrifier +0 -0
  125. {rucio-37.3.0.data → rucio-37.5.0.data}/scripts/rucio-undertaker +0 -0
  126. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/licenses/AUTHORS.rst +0 -0
  127. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/licenses/LICENSE +0 -0
  128. {rucio-37.3.0.dist-info → rucio-37.5.0.dist-info}/top_level.txt +0 -0
@@ -41,39 +41,39 @@ class Attributes(ErrorHandlingMethodView):
41
41
  """
42
42
  ---
43
43
  summary: List attributes
44
- description: List all attributes for an account.
44
+ description: "List all attributes for an account."
45
45
  tags:
46
46
  - Account
47
47
  parameters:
48
48
  - name: account
49
49
  in: path
50
- description: The account identifier.
50
+ description: "The account identifier."
51
51
  schema:
52
52
  type: string
53
53
  style: simple
54
54
  responses:
55
55
  200:
56
- description: OK
56
+ description: "OK"
57
57
  content:
58
58
  application/json:
59
59
  schema:
60
60
  type: array
61
61
  items:
62
62
  type: object
63
- description: An account attribute.
63
+ description: "An account attribute."
64
64
  properties:
65
65
  key:
66
- description: The key of the account attribute.
66
+ description: "The key of the account attribute."
67
67
  type: string
68
68
  value:
69
- description: The value of the account attribute.
69
+ description: "The value of the account attribute."
70
70
  type: string
71
71
  401:
72
- description: Invalid Auth Token
72
+ description: "Invalid Auth Token"
73
73
  404:
74
- description: No account found for the given id.
74
+ description: "No account found for the given id."
75
75
  406:
76
- description: Not acceptable.
76
+ description: "Not acceptable."
77
77
  """
78
78
  try:
79
79
  attribs = list_account_attributes(account, vo=request.environ.get('vo'))
@@ -86,19 +86,19 @@ class Attributes(ErrorHandlingMethodView):
86
86
  """
87
87
  ---
88
88
  summary: Create attribute
89
- description: Create an attribute to an account.
89
+ description: "Create an attribute to an account."
90
90
  tags:
91
91
  - Account
92
92
  parameters:
93
93
  - name: account
94
94
  in: path
95
- description: The account identifier.
95
+ description: "The account identifier."
96
96
  schema:
97
97
  type: string
98
98
  style: simple
99
99
  - name: key
100
100
  in: path
101
- description: The key of the account attribute.
101
+ description: "The key of the account attribute."
102
102
  schema:
103
103
  type: string
104
104
  style: simple
@@ -111,25 +111,25 @@ class Attributes(ErrorHandlingMethodView):
111
111
  - value
112
112
  properties:
113
113
  key:
114
- description: The key of the attribute. This would override the key defined in path.
114
+ description: "The key of the attribute. This would override the key defined in path."
115
115
  type: string
116
116
  value:
117
- description: The value of the attribute.
117
+ description: "The value of the attribute."
118
118
  type: string
119
119
  responses:
120
120
  201:
121
- description: OK
121
+ description: "OK"
122
122
  content:
123
123
  application/json:
124
124
  schema:
125
125
  type: string
126
126
  enum: ["Created"]
127
127
  401:
128
- description: Invalid Auth Token
128
+ description: "Invalid Auth Token"
129
129
  404:
130
- description: No account found for the given id.
130
+ description: "No account found for the given id."
131
131
  409:
132
- description: Attribute already exists
132
+ description: "Attribute already exists"
133
133
  """
134
134
  parameters = json_parameters()
135
135
  value = param_get(parameters, 'value')
@@ -148,29 +148,29 @@ class Attributes(ErrorHandlingMethodView):
148
148
  """
149
149
  ---
150
150
  summary: Delete attribute
151
- description: Delete an attribute of an account.
151
+ description: "Delete an attribute of an account."
152
152
  tags:
153
153
  - Account
154
154
  parameters:
155
155
  - name: account
156
156
  in: path
157
- description: The account identifier.
157
+ description: "The account identifier."
158
158
  schema:
159
159
  type: string
160
160
  style: simple
161
161
  - name: key
162
162
  in: path
163
- description: The key of the account attribute to remove.
163
+ description: "The key of the account attribute to remove."
164
164
  schema:
165
165
  type: string
166
166
  style: simple
167
167
  responses:
168
168
  200:
169
- description: OK
169
+ description: "OK"
170
170
  401:
171
- description: Invalid Auth Token
171
+ description: "Invalid Auth Token"
172
172
  404:
173
- description: No account found for the given id.
173
+ description: "No account found for the given id."
174
174
  """
175
175
  try:
176
176
  del_account_attribute(account=account, key=key, issuer=request.environ.get('issuer'), vo=request.environ.get('vo'))
@@ -188,33 +188,33 @@ class Scopes(ErrorHandlingMethodView):
188
188
  """
189
189
  ---
190
190
  summary: List scopes
191
- description: List all scopse for an account.
191
+ description: "List all scopse for an account."
192
192
  tags:
193
193
  - Account
194
194
  parameters:
195
195
  - name: account
196
196
  in: path
197
- description: The account identifier.
197
+ description: "The account identifier."
198
198
  schema:
199
199
  type: string
200
200
  style: simple
201
201
  responses:
202
202
  200:
203
- description: OK
203
+ description: "OK"
204
204
  content:
205
205
  application/x-json-stream:
206
206
  schema:
207
- description: All scopes for the account.
207
+ description: "All scopes for the account."
208
208
  type: array
209
209
  items:
210
- description: A scope
210
+ description: "A scope"
211
211
  type: string
212
212
  401:
213
- description: Invalid Auth Token
213
+ description: "Invalid Auth Token"
214
214
  404:
215
- description: No account or scope found for the given id.
215
+ description: "No account or scope found for the given id."
216
216
  406:
217
- description: Not acceptable
217
+ description: "Not acceptable"
218
218
  """
219
219
  try:
220
220
  scopes = get_scopes(account, vo=request.environ['vo'])
@@ -230,38 +230,38 @@ class Scopes(ErrorHandlingMethodView):
230
230
  """
231
231
  ---
232
232
  summary: Create scope
233
- description: Creates a scopse with the given name for an account.
233
+ description: "Creates a scopse with the given name for an account."
234
234
  tags:
235
235
  - Account
236
236
  parameters:
237
237
  - name: account
238
238
  in: path
239
- description: The account identifier.
239
+ description: "The account identifier."
240
240
  schema:
241
241
  type: string
242
242
  style: simple
243
243
  - name: scope
244
244
  in: path
245
- description: The scope name.
245
+ description: "The scope name."
246
246
  schema:
247
247
  type: string
248
248
  style: simple
249
249
  responses:
250
250
  201:
251
- description: OK
251
+ description: "OK"
252
252
  content:
253
253
  application/json:
254
254
  schema:
255
255
  type: string
256
256
  enum: ["Created"]
257
257
  400:
258
- description: Not acceptable
258
+ description: "Not acceptable"
259
259
  401:
260
- description: Invalid Auth Token
260
+ description: "Invalid Auth Token"
261
261
  404:
262
- description: No account found.
262
+ description: "No account found."
263
263
  409:
264
- description: Scope already exists.
264
+ description: "Scope already exists."
265
265
  """
266
266
  try:
267
267
  add_scope(scope, account, issuer=request.environ['issuer'], vo=request.environ['vo'])
@@ -285,48 +285,48 @@ class AccountParameter(ErrorHandlingMethodView):
285
285
  """
286
286
  ---
287
287
  summary: List account parameters
288
- description: Lists all parameters for an account.
288
+ description: "Lists all parameters for an account."
289
289
  tags:
290
290
  - Account
291
291
  parameters:
292
292
  - name: account
293
293
  in: path
294
- description: The account identifier.
294
+ description: "The account identifier."
295
295
  schema:
296
296
  type: string
297
297
  style: simple
298
298
  responses:
299
299
  201:
300
- description: OK
300
+ description: "OK"
301
301
  content:
302
302
  application/json:
303
303
  schema:
304
304
  type: object
305
305
  properties:
306
306
  account:
307
- description: The account identifier.
307
+ description: "The account identifier."
308
308
  type: string
309
309
  account_type:
310
- description: The account type.
310
+ description: "The account type."
311
311
  type: string
312
312
  status:
313
- description: The account status.
313
+ description: "The account status."
314
314
  type: string
315
315
  email:
316
- description: The email for the account.
316
+ description: "The email for the account."
317
317
  type: string
318
318
  suspended_at:
319
- description: Datetime if the account was suspended.
319
+ description: "Datetime if the account was suspended."
320
320
  type: string
321
321
  deleted_at:
322
- description: Datetime if the account was deleted.
322
+ description: "Datetime if the account was deleted."
323
323
  type: string
324
324
  401:
325
- description: Invalid Auth Token
325
+ description: "Invalid Auth Token"
326
326
  404:
327
- description: No account found.
327
+ description: "No account found."
328
328
  406:
329
- description: Not acceptable
329
+ description: "Not acceptable"
330
330
  """
331
331
  if account == 'whoami':
332
332
  # Redirect to the account uri
@@ -354,13 +354,13 @@ class AccountParameter(ErrorHandlingMethodView):
354
354
  """
355
355
  ---
356
356
  summary: Update
357
- description: Update a parameter for an account.
357
+ description: "Update a parameter for an account."
358
358
  tags:
359
359
  - Account
360
360
  parameters:
361
361
  - name: account
362
362
  in: path
363
- description: The account identifier.
363
+ description: "The account identifier."
364
364
  schema:
365
365
  type: string
366
366
  style: simple
@@ -368,17 +368,17 @@ class AccountParameter(ErrorHandlingMethodView):
368
368
  content:
369
369
  'application/json':
370
370
  schema:
371
- description: Json object with key-value pairs corresponding to the new values of the parameters.
371
+ description: "Json object with key-value pairs corresponding to the new values of the parameters."
372
372
  type: object
373
373
  responses:
374
374
  200:
375
- description: OK
375
+ description: "OK"
376
376
  401:
377
- description: Invalid Auth Token
377
+ description: "Invalid Auth Token"
378
378
  404:
379
- description: No account found.
379
+ description: "No account found."
380
380
  400:
381
- description: Unknown status
381
+ description: "Unknown status"
382
382
  """
383
383
  parameters = json_parameters()
384
384
  for key, value in parameters.items():
@@ -397,13 +397,13 @@ class AccountParameter(ErrorHandlingMethodView):
397
397
  """
398
398
  ---
399
399
  summary: Create
400
- description: Create an account.
400
+ description: "Create an account."
401
401
  tags:
402
402
  - Account
403
403
  parameters:
404
404
  - name: account
405
405
  in: path
406
- description: The account identifier.
406
+ description: "The account identifier."
407
407
  schema:
408
408
  type: string
409
409
  style: simple
@@ -417,26 +417,26 @@ class AccountParameter(ErrorHandlingMethodView):
417
417
  - email
418
418
  properties:
419
419
  type:
420
- description: The account type.
420
+ description: "The account type."
421
421
  type: string
422
422
  enum: ["USER", "GROUP", "SERVICE"]
423
423
  email:
424
- description: The email for the account.
424
+ description: "The email for the account."
425
425
  type: string
426
426
  responses:
427
427
  201:
428
- description: OK
428
+ description: "OK"
429
429
  content:
430
430
  application/json:
431
431
  schema:
432
432
  type: string
433
433
  enum: ["Created"]
434
434
  401:
435
- description: Invalid Auth Token
435
+ description: "Invalid Auth Token"
436
436
  409:
437
- description: Account already exists
437
+ description: "Account already exists"
438
438
  400:
439
- description: Unknown status
439
+ description: "Unknown status"
440
440
  """
441
441
  parameters = json_parameters()
442
442
  type_param = param_get(parameters, 'type')
@@ -456,23 +456,23 @@ class AccountParameter(ErrorHandlingMethodView):
456
456
  """
457
457
  ---
458
458
  summary: Delete
459
- description: Delete an account.
459
+ description: "Delete an account."
460
460
  tags:
461
461
  - Account
462
462
  parameters:
463
463
  - name: account
464
464
  in: path
465
- description: The account identifier.
465
+ description: "The account identifier."
466
466
  schema:
467
467
  type: string
468
468
  style: simple
469
469
  responses:
470
470
  201:
471
- description: OK
471
+ description: "OK"
472
472
  401:
473
- description: Invalid Auth Token
473
+ description: "Invalid Auth Token"
474
474
  404:
475
- description: Account not found
475
+ description: "Account not found"
476
476
  """
477
477
  try:
478
478
  del_account(account, issuer=request.environ.get('issuer'), vo=request.environ.get('vo'))
@@ -490,12 +490,12 @@ class Account(ErrorHandlingMethodView):
490
490
  """
491
491
  ---
492
492
  summary: List
493
- description: List all accounts.
493
+ description: "List all accounts."
494
494
  tags:
495
495
  - Account
496
496
  responses:
497
497
  200:
498
- description: OK
498
+ description: "OK"
499
499
  content:
500
500
  application/x-json-stream:
501
501
  schema:
@@ -504,16 +504,16 @@ class Account(ErrorHandlingMethodView):
504
504
  type: object
505
505
  properties:
506
506
  account:
507
- description: The account identifier.
507
+ description: "The account identifier."
508
508
  type: string
509
509
  type:
510
- description: The type.
510
+ description: "The type."
511
511
  type: string
512
512
  email:
513
- description: The email.
513
+ description: "The email."
514
514
  type: string
515
515
  401:
516
- description: Invalid Auth Token
516
+ description: "Invalid Auth Token"
517
517
  """
518
518
 
519
519
  def generate(_filter: dict[str, Any], vo: str) -> "Iterator[str]":
@@ -529,36 +529,36 @@ class LocalAccountLimits(ErrorHandlingMethodView):
529
529
  """
530
530
  ---
531
531
  summary: Get local limit
532
- description: Get the current local limits for an account on a specific RSE.
532
+ description: "Get the current local limits for an account on a specific RSE."
533
533
  tags:
534
534
  - Account
535
535
  parameters:
536
536
  - name: account
537
537
  in: path
538
- description: The account identifier.
538
+ description: "The account identifier."
539
539
  schema:
540
540
  type: string
541
541
  style: simple
542
542
  - name: rse
543
543
  in: path
544
- description: The rse identifier.
544
+ description: "The rse identifier."
545
545
  schema:
546
546
  type: string
547
547
  style: simple
548
548
  responses:
549
549
  200:
550
- description: OK
550
+ description: "OK"
551
551
  content:
552
552
  application/json:
553
553
  schema:
554
- description: Json object with rse identifiers as keys and account limits in bytes as values.
554
+ description: "Json object with rse identifiers as keys and account limits in bytes as values."
555
555
  type: object
556
556
  401:
557
- description: Invalid Auth Token
557
+ description: "Invalid Auth Token"
558
558
  404:
559
- description: RSE not found
559
+ description: "RSE not found"
560
560
  406:
561
- description: Not Acceptable
561
+ description: "Not Acceptable"
562
562
  """
563
563
  try:
564
564
  limits = get_local_account_limit(account=account, rse=rse, vo=request.environ.get('vo'))
@@ -574,36 +574,36 @@ class GlobalAccountLimits(ErrorHandlingMethodView):
574
574
  """
575
575
  ---
576
576
  summary: Get global limit
577
- description: Get the current global limits for an account on a specific RSE expression.
577
+ description: "Get the current global limits for an account on a specific RSE expression."
578
578
  tags:
579
579
  - Account
580
580
  parameters:
581
581
  - name: account
582
582
  in: path
583
- description: The account identifier.
583
+ description: "The account identifier."
584
584
  schema:
585
585
  type: string
586
586
  style: simple
587
587
  - name: rse_expression
588
588
  in: path
589
- description: The rse identifier.
589
+ description: "The rse identifier."
590
590
  schema:
591
591
  type: string
592
592
  style: simple
593
593
  responses:
594
594
  200:
595
- description: OK
595
+ description: "OK"
596
596
  content:
597
597
  application/json:
598
598
  schema:
599
- description: Json object with rse expression as keys and limits in bytes as values.
599
+ description: "Json object with rse expression as keys and limits in bytes as values."
600
600
  type: object
601
601
  401:
602
- description: Invalid Auth Token
602
+ description: "Invalid Auth Token"
603
603
  404:
604
- description: RSE not found
604
+ description: "RSE not found"
605
605
  406:
606
- description: Not Acceptable
606
+ description: "Not Acceptable"
607
607
  """
608
608
  try:
609
609
  limits = get_global_account_limit(account=account, rse_expression=rse_expression, vo=request.environ.get('vo'))
@@ -618,13 +618,13 @@ class Identities(ErrorHandlingMethodView):
618
618
  """
619
619
  ---
620
620
  summary: Create identity
621
- description: Grant an account identity access to an account.
621
+ description: "Grant an account identity access to an account."
622
622
  tags:
623
623
  - Account
624
624
  parameters:
625
625
  - name: account
626
626
  in: path
627
- description: The account identifier.
627
+ description: "The account identifier."
628
628
  schema:
629
629
  type: string
630
630
  style: simple
@@ -639,38 +639,38 @@ class Identities(ErrorHandlingMethodView):
639
639
  - email
640
640
  properties:
641
641
  identity:
642
- description: The identity.
642
+ description: "The identity."
643
643
  type: string
644
644
  authtype:
645
- description: The authtype.
645
+ description: "The authtype."
646
646
  type: string
647
647
  email:
648
- description: The email.
648
+ description: "The email."
649
649
  type: string
650
650
  password:
651
- description: The password.
651
+ description: "The password."
652
652
  type: string
653
653
  default: none
654
654
  default:
655
- description: Should this be the default account?
655
+ description: "Should this be the default account?"
656
656
  type: string
657
657
  default: false
658
658
  responses:
659
659
  201:
660
- description: OK
660
+ description: "OK"
661
661
  content:
662
662
  application/json:
663
663
  schema:
664
664
  type: string
665
665
  enum: ["Created"]
666
666
  401:
667
- description: Invalid Auth Token
667
+ description: "Invalid Auth Token"
668
668
  404:
669
- description: Account not found
669
+ description: "Account not found"
670
670
  409:
671
- description: Already exists
671
+ description: "Already exists"
672
672
  400:
673
- description: Parameter missing
673
+ description: "Parameter missing"
674
674
  """
675
675
  parameters = json_parameters()
676
676
  identity = param_get(parameters, 'identity')
@@ -710,19 +710,19 @@ class Identities(ErrorHandlingMethodView):
710
710
  """
711
711
  ---
712
712
  summary: List identities
713
- description: Lists all identities for an account.
713
+ description: "Lists all identities for an account."
714
714
  tags:
715
715
  - Account
716
716
  parameters:
717
717
  - name: account
718
718
  in: path
719
- description: The account identifier.
719
+ description: "The account identifier."
720
720
  schema:
721
721
  type: string
722
722
  style: simple
723
723
  responses:
724
724
  200:
725
- description: OK
725
+ description: "OK"
726
726
  content:
727
727
  application/x-json-stream:
728
728
  schema:
@@ -734,11 +734,11 @@ class Identities(ErrorHandlingMethodView):
734
734
  items:
735
735
  type: string
736
736
  401:
737
- description: Invalid Auth Token
737
+ description: "Invalid Auth Token"
738
738
  404:
739
- description: Account not found
739
+ description: "Account not found"
740
740
  406:
741
- description: Not acceptable
741
+ description: "Not acceptable"
742
742
  """
743
743
  try:
744
744
  def generate(vo: str) -> "Iterator[str]":
@@ -753,13 +753,13 @@ class Identities(ErrorHandlingMethodView):
753
753
  """
754
754
  ---
755
755
  summary: Delete identity
756
- description: Delete an account identity.
756
+ description: "Delete an account identity."
757
757
  tags:
758
758
  - Account
759
759
  parameters:
760
760
  - name: account
761
761
  in: path
762
- description: The account identifier.
762
+ description: "The account identifier."
763
763
  schema:
764
764
  type: string
765
765
  style: simple
@@ -773,18 +773,18 @@ class Identities(ErrorHandlingMethodView):
773
773
  - authtype
774
774
  properties:
775
775
  identity:
776
- description: The identity.
776
+ description: "The identity."
777
777
  type: string
778
778
  authtype:
779
- description: The authtype.
779
+ description: "The authtype."
780
780
  type: string
781
781
  responses:
782
782
  200:
783
- description: OK
783
+ description: "OK"
784
784
  401:
785
- description: Invalid Auth Token
785
+ description: "Invalid Auth Token"
786
786
  404:
787
- description: Account or identity not found
787
+ description: "Account or identity not found"
788
788
  """
789
789
  parameters = json_parameters()
790
790
  identity = param_get(parameters, 'identity')
@@ -813,19 +813,19 @@ class Rules(ErrorHandlingMethodView):
813
813
  """
814
814
  ---
815
815
  summary: List rules
816
- description: Lists all rules for an account.
816
+ description: "Lists all rules for an account."
817
817
  tags:
818
818
  - Account
819
819
  parameters:
820
820
  - name: account
821
821
  in: path
822
- description: The account identifier.
822
+ description: "The account identifier."
823
823
  schema:
824
824
  type: string
825
825
  style: simple
826
826
  responses:
827
827
  200:
828
- description: OK
828
+ description: "OK"
829
829
  content:
830
830
  application/x-json-stream:
831
831
  schema:
@@ -833,11 +833,11 @@ class Rules(ErrorHandlingMethodView):
833
833
  items:
834
834
  type: string
835
835
  401:
836
- description: Invalid Auth Token
836
+ description: "Invalid Auth Token"
837
837
  404:
838
- description: Account or rule not found
838
+ description: "Account or rule not found"
839
839
  406:
840
- description: Not acceptable
840
+ description: "Not acceptable"
841
841
  """
842
842
  filters = {'account': account}
843
843
  filters.update(request.args)
@@ -858,25 +858,25 @@ class UsageHistory(ErrorHandlingMethodView):
858
858
  """
859
859
  ---
860
860
  summary: Get account usage history
861
- description: Returns the account usage history.
861
+ description: "Returns the account usage history."
862
862
  tags:
863
863
  - Account
864
864
  parameters:
865
865
  - name: account
866
866
  in: path
867
- description: The account identifier.
867
+ description: "The account identifier."
868
868
  schema:
869
869
  type: string
870
870
  style: simple
871
871
  - name: rse
872
872
  in: path
873
- description: The rse identifier.
873
+ description: "The rse identifier."
874
874
  schema:
875
875
  type: string
876
876
  style: simple
877
877
  responses:
878
878
  200:
879
- description: OK
879
+ description: "OK"
880
880
  content:
881
881
  application/json:
882
882
  schema:
@@ -885,20 +885,20 @@ class UsageHistory(ErrorHandlingMethodView):
885
885
  type: object
886
886
  properties:
887
887
  bytes:
888
- description: The number of bytes used.
888
+ description: "The number of bytes used."
889
889
  type: integer
890
890
  files:
891
- description: The files.
891
+ description: "The files."
892
892
  type: string
893
893
  updated_at:
894
- description: When the data was provided.
894
+ description: "When the data was provided."
895
895
  type: string
896
896
  401:
897
- description: Invalid Auth Token
897
+ description: "Invalid Auth Token"
898
898
  404:
899
- description: Account not found
899
+ description: "Account not found"
900
900
  406:
901
- description: Not acceptable
901
+ description: "Not acceptable"
902
902
  """
903
903
  try:
904
904
  usage = get_usage_history(account=account, rse=rse, issuer=request.environ.get('issuer'), vo=request.environ.get('vo'))
@@ -922,25 +922,25 @@ class LocalUsage(ErrorHandlingMethodView):
922
922
  """
923
923
  ---
924
924
  summary: Get local account usage
925
- description: Returns the local account usage.
925
+ description: "Returns the local account usage."
926
926
  tags:
927
927
  - Account
928
928
  parameters:
929
929
  - name: account
930
930
  in: path
931
- description: The account identifier.
931
+ description: "The account identifier."
932
932
  schema:
933
933
  type: string
934
934
  style: simple
935
935
  - name: rse
936
936
  in: path
937
- description: The rse identifier.
937
+ description: "The rse identifier."
938
938
  schema:
939
939
  type: string
940
940
  style: simple
941
941
  responses:
942
942
  200:
943
- description: OK
943
+ description: "OK"
944
944
  content:
945
945
  application/x-json-stream:
946
946
  schema:
@@ -949,23 +949,23 @@ class LocalUsage(ErrorHandlingMethodView):
949
949
  type: object
950
950
  properties:
951
951
  rse_id:
952
- description: The rse id.
952
+ description: "The rse id."
953
953
  type: string
954
954
  bytes:
955
- description: The number of bytes used.
955
+ description: "The number of bytes used."
956
956
  type: integer
957
957
  bytes_limit:
958
- description: The maximum number of bytes.
958
+ description: "The maximum number of bytes."
959
959
  type: integer
960
960
  bytes_remaining:
961
- description: The remaining number of bytes.
961
+ description: "The remaining number of bytes."
962
962
  type: integer
963
963
  401:
964
- description: Invalid Auth Token
964
+ description: "Invalid Auth Token"
965
965
  404:
966
- description: Account or rse not found
966
+ description: "Account or rse not found"
967
967
  406:
968
- description: Not acceptable
968
+ description: "Not acceptable"
969
969
  """
970
970
  try:
971
971
  def generate(issuer: str, vo: str) -> "Iterator[str]":
@@ -986,25 +986,25 @@ class GlobalUsage(ErrorHandlingMethodView):
986
986
  """
987
987
  ---
988
988
  summary: Get local account usage
989
- description: Returns the local account usage.
989
+ description: "Returns the local account usage."
990
990
  tags:
991
991
  - Account
992
992
  parameters:
993
993
  - name: account
994
994
  in: path
995
- description: The account identifier.
995
+ description: "The account identifier."
996
996
  schema:
997
997
  type: string
998
998
  style: simple
999
999
  - name: rse_expression
1000
1000
  in: path
1001
- description: The rse expression.
1001
+ description: "The rse expression."
1002
1002
  schema:
1003
1003
  type: string
1004
1004
  style: simple
1005
1005
  responses:
1006
1006
  200:
1007
- description: OK
1007
+ description: "OK"
1008
1008
  content:
1009
1009
  application/x-json-stream:
1010
1010
  schema:
@@ -1013,23 +1013,23 @@ class GlobalUsage(ErrorHandlingMethodView):
1013
1013
  type: object
1014
1014
  properties:
1015
1015
  rse_expression:
1016
- description: The rse expression.
1016
+ description: "The rse expression."
1017
1017
  type: string
1018
1018
  bytes:
1019
- description: The number of bytes used.
1019
+ description: "The number of bytes used."
1020
1020
  type: integer
1021
1021
  bytes_limit:
1022
- description: The maximum number of bytes.
1022
+ description: "The maximum number of bytes."
1023
1023
  type: integer
1024
1024
  bytes_remaining:
1025
- description: The remaining number of bytes.
1025
+ description: "The remaining number of bytes."
1026
1026
  type: integer
1027
1027
  401:
1028
- description: Invalid Auth Token
1028
+ description: "Invalid Auth Token"
1029
1029
  404:
1030
- description: Account or rse not found
1030
+ description: "Account or rse not found"
1031
1031
  406:
1032
- description: Not acceptable
1032
+ description: "Not acceptable"
1033
1033
  """
1034
1034
  try:
1035
1035
  def generate(vo: str, issuer: str) -> "Iterator[str]":