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
@@ -29,21 +29,21 @@ class Config(ErrorHandlingMethodView):
29
29
  """
30
30
  ---
31
31
  summary: List
32
- description: List the full configuration.
32
+ description: "List the full configuration."
33
33
  tags:
34
34
  - Config
35
35
  responses:
36
36
  200:
37
- description: OK
37
+ description: "OK"
38
38
  content:
39
39
  application/json:
40
40
  schema:
41
- description: A dict with the sections as keys and a dict with the configuration as value.
41
+ description: "A dict with the sections as keys and a dict with the configuration as value."
42
42
  type: object
43
43
  401:
44
- description: Invalid Auth Token
44
+ description: "Invalid Auth Token"
45
45
  406:
46
- description: Not acceptable
46
+ description: "Not acceptable"
47
47
  """
48
48
  res = {}
49
49
  for section in config.sections(issuer=request.environ['issuer'], vo=request.environ['vo']):
@@ -57,7 +57,7 @@ class Config(ErrorHandlingMethodView):
57
57
  """
58
58
  ---
59
59
  summary: Create
60
- description: Create or set the configuration option in the requested section.
60
+ description: "Create or set the configuration option in the requested section."
61
61
  tags:
62
62
  - Config
63
63
  requestBody:
@@ -68,18 +68,18 @@ class Config(ErrorHandlingMethodView):
68
68
  type: object
69
69
  responses:
70
70
  201:
71
- description: OK
71
+ description: "OK"
72
72
  content:
73
73
  application/json:
74
74
  schema:
75
75
  type: string
76
76
  enum: ['Created']
77
77
  401:
78
- description: Invalid Auth Token
78
+ description: "Invalid Auth Token"
79
79
  400:
80
- description: The input data was incomplete or invalid
80
+ description: "The input data was incomplete or invalid"
81
81
  500:
82
- description: Configuration error
82
+ description: "Configuration error"
83
83
  """
84
84
  parameters = json_parameters()
85
85
  for section, section_config in parameters.items():
@@ -106,7 +106,7 @@ class Section(ErrorHandlingMethodView):
106
106
  parameters:
107
107
  - name: section
108
108
  in: path
109
- description: The section to return.
109
+ description: "The section to return."
110
110
  schema:
111
111
  type: string
112
112
  style: simple
@@ -119,22 +119,22 @@ class Section(ErrorHandlingMethodView):
119
119
  - bytes
120
120
  properties:
121
121
  bytes:
122
- description: The new limit in bytes.
122
+ description: "The new limit in bytes."
123
123
  type: integer
124
124
  responses:
125
125
  200:
126
- description: OK
126
+ description: "OK"
127
127
  content:
128
128
  application/json:
129
129
  schema:
130
- description: Dictionary of section options.
130
+ description: "Dictionary of section options."
131
131
  type: object
132
132
  401:
133
- description: Invalid Auth Token
133
+ description: "Invalid Auth Token"
134
134
  404:
135
- description: Config not found
135
+ description: "Config not found"
136
136
  406:
137
- description: Not acceptable
137
+ description: "Not acceptable"
138
138
  """
139
139
  res = {}
140
140
  for item in config.items(section, issuer=request.environ['issuer'], vo=request.environ['vo']):
@@ -158,36 +158,36 @@ class OptionGetDel(ErrorHandlingMethodView):
158
158
  """
159
159
  ---
160
160
  summary: Get option
161
- description: Returns the value of an option
161
+ description: "Returns the value of an option"
162
162
  tags:
163
163
  - Config
164
164
  parameters:
165
165
  - name: section
166
166
  in: path
167
- description: The section.
167
+ description: "The section."
168
168
  schema:
169
169
  type: string
170
170
  style: simple
171
171
  - name: option
172
172
  in: path
173
- description: The option of the section.
173
+ description: "The option of the section."
174
174
  schema:
175
175
  type: string
176
176
  style: simple
177
177
  responses:
178
178
  200:
179
- description: OK
179
+ description: "OK"
180
180
  content:
181
181
  application/json:
182
182
  schema:
183
- description: The value of the option
183
+ description: "The value of the option"
184
184
  type: string
185
185
  401:
186
- description: Invalid Auth Token
186
+ description: "Invalid Auth Token"
187
187
  404:
188
- description: Config not found
188
+ description: "Config not found"
189
189
  406:
190
- description: Not acceptable
190
+ description: "Not acceptable"
191
191
  """
192
192
  try:
193
193
  result = config.get(section=section, option=option, issuer=request.environ['issuer'], vo=request.environ['vo'])
@@ -201,27 +201,27 @@ class OptionGetDel(ErrorHandlingMethodView):
201
201
  """
202
202
  ---
203
203
  summary: Delete option
204
- description: Delete an option of a section.
204
+ description: "Delete an option of a section."
205
205
  tags:
206
206
  - Config
207
207
  parameters:
208
208
  - name: section
209
209
  in: path
210
- description: The section.
210
+ description: "The section."
211
211
  schema:
212
212
  type: string
213
213
  style: simple
214
214
  - name: option
215
215
  in: path
216
- description: The option of the section.
216
+ description: "The option of the section."
217
217
  schema:
218
218
  type: string
219
219
  style: simple
220
220
  responses:
221
221
  200:
222
- description: OK
222
+ description: "OK"
223
223
  401:
224
- description: Invalid Auth Token
224
+ description: "Invalid Auth Token"
225
225
  """
226
226
  config.remove_option(section=section, option=option, issuer=request.environ['issuer'], vo=request.environ['vo'])
227
227
  return '', 200
@@ -234,40 +234,40 @@ class OptionSet(ErrorHandlingMethodView):
234
234
  """
235
235
  ---
236
236
  summary: Create value
237
- description: Create or set the value of an option.
237
+ description: "Create or set the value of an option."
238
238
  tags:
239
239
  - Config
240
240
  parameters:
241
241
  - name: section
242
242
  in: path
243
- description: The section.
243
+ description: "The section."
244
244
  schema:
245
245
  type: string
246
246
  style: simple
247
247
  - name: option
248
248
  in: path
249
- description: The option of the section.
249
+ description: "The option of the section."
250
250
  schema:
251
251
  type: string
252
252
  style: simple
253
253
  - name: value
254
254
  in: path
255
- description: The value to set.
255
+ description: "The value to set."
256
256
  schema:
257
257
  type: string
258
258
  style: simple
259
259
  responses:
260
260
  201:
261
- description: OK
261
+ description: "OK"
262
262
  content:
263
263
  application/json:
264
264
  schema:
265
265
  type: string
266
266
  enum: ['Created']
267
267
  401:
268
- description: Invalid Auth Token
268
+ description: "Invalid Auth Token"
269
269
  500:
270
- description: Value could not be set
270
+ description: "Value could not be set"
271
271
  content:
272
272
  application/json:
273
273
  schema:
@@ -47,38 +47,38 @@ class SignURL(ErrorHandlingMethodView):
47
47
  """
48
48
  ---
49
49
  summary: Cross-Site Scripting
50
- description: Allow cross-site scripting. Explicit for Authentication.
50
+ description: "Allow cross-site scripting. Explicit for Authentication."
51
51
  tags:
52
52
  - Credentials
53
53
  responses:
54
54
  200:
55
- description: OK
55
+ description: "OK"
56
56
  headers:
57
57
  Access-Control-Allow-Origin:
58
58
  schema:
59
59
  type: string
60
- description: The http origin.
60
+ description: "The http origin."
61
61
  Access-Control-Allow-Headers:
62
62
  schema:
63
63
  type: string
64
- description: The http access control request headers.
64
+ description: "The http access control request headers."
65
65
  Access-Control-Allow-Methods:
66
66
  schema:
67
67
  type: string
68
68
  enum: ['*']
69
- description: The allowed methods.
69
+ description: "The allowed methods."
70
70
  Access-Control-Allow-Credentials:
71
71
  schema:
72
72
  type: string
73
73
  enum: ['true']
74
- description: If credentials are allowed.
74
+ description: "If credentials are allowed."
75
75
  Access-Control-Expose-Headers:
76
76
  schema:
77
77
  type: string
78
78
  enum: ['X-Rucio-Auth-Token']
79
- description: The exposed access control header.
79
+ description: "The exposed access control header."
80
80
  404:
81
- description: Not found
81
+ description: "Not found"
82
82
  """
83
83
  return '', 200, self.get_headers()
84
84
 
@@ -87,37 +87,37 @@ class SignURL(ErrorHandlingMethodView):
87
87
  """
88
88
  ---
89
89
  summary: Sign URL
90
- description: Sign a url for a limited lifetime for a particular srevice.
90
+ description: "Sign a url for a limited lifetime for a particular srevice."
91
91
  tags:
92
92
  - Credentials
93
93
  parameters:
94
94
  - name: rse
95
95
  in: query
96
- description: The RSE to authenticate against.
96
+ description: "The RSE to authenticate against."
97
97
  schema:
98
98
  type: string
99
99
  required: true
100
100
  - name: lifetime
101
101
  in: query
102
- description: The lifetime, default 600s.
102
+ description: "The lifetime, default 600s."
103
103
  schema:
104
104
  type: string
105
105
  required: false
106
106
  - name: svc
107
107
  in: query
108
- description: The service, default gcs.
108
+ description: "The service, default gcs."
109
109
  schema:
110
110
  type: string
111
111
  required: false
112
112
  - name: op
113
113
  in: query
114
- description: The operation.
114
+ description: "The operation."
115
115
  schema:
116
116
  type: string
117
117
  required: false
118
118
  - name: url
119
119
  in: query
120
- description: The Url of the authentication.
120
+ description: "The Url of the authentication."
121
121
  schema:
122
122
  type: string
123
123
  required: true
@@ -128,37 +128,37 @@ class SignURL(ErrorHandlingMethodView):
128
128
  type: object
129
129
  properties:
130
130
  X-Rucio-Account:
131
- description: Account identifier.
131
+ description: "Account identifier."
132
132
  type: string
133
133
  X-Rucio-VO:
134
- description: VO name (Multi-VO only).
134
+ description: "VO name (Multi-VO only)."
135
135
  type: string
136
136
  X-Rucio-AppID:
137
- description: Application identifier.
137
+ description: "Application identifier."
138
138
  type: string
139
139
  responses:
140
140
  200:
141
- description: OK
141
+ description: "OK"
142
142
  content:
143
143
  application/json:
144
144
  schema:
145
145
  type: array
146
146
  items:
147
147
  type: object
148
- description: An account attribute.
148
+ description: "An account attribute."
149
149
  properties:
150
150
  key:
151
- description: The key of the account attribute.
151
+ description: "The key of the account attribute."
152
152
  type: string
153
153
  value:
154
- description: The value of the account attribute.
154
+ description: "The value of the account attribute."
155
155
  type: string
156
156
  401:
157
- description: Invalid Auth Token
157
+ description: "Invalid Auth Token"
158
158
  400:
159
- description: bad request, no rse or url found.
159
+ description: "Bad request, no rse or url found."
160
160
  406:
161
- description: Not acceptable.
161
+ description: "Not acceptable."
162
162
  """
163
163
  headers = self.get_headers()
164
164
  vo = extract_vo(request.headers)
@@ -189,7 +189,7 @@ class SignURL(ErrorHandlingMethodView):
189
189
  if operation not in RSE_BASE_SUPPORTED_PROTOCOL_OPERATIONS:
190
190
  return generate_http_error_flask(400, ValueError.__name__, 'Parameter "op" must be either empty (which defaults to "read"), "read", "write", or "delete".', headers=headers)
191
191
 
192
- operation = cast("RSE_BASE_SUPPORTED_PROTOCOL_OPERATIONS_LITERAL", service)
192
+ operation = cast("RSE_BASE_SUPPORTED_PROTOCOL_OPERATIONS_LITERAL", operation)
193
193
 
194
194
  result = get_signed_url(account, rse=rse, service=service, operation=operation, url=url, lifetime=lifetime, vo=vo)
195
195