rucio 37.4.0__py3-none-any.whl → 37.6.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 (179) hide show
  1. rucio/cli/bin_legacy/rucio.py +1 -1
  2. rucio/cli/bin_legacy/rucio_admin.py +1 -1
  3. rucio/cli/did.py +2 -2
  4. rucio/cli/rse.py +2 -3
  5. rucio/cli/subscription.py +1 -1
  6. rucio/client/baseclient.py +5 -1
  7. rucio/client/didclient.py +16 -16
  8. rucio/client/downloadclient.py +15 -15
  9. rucio/client/lockclient.py +3 -3
  10. rucio/client/replicaclient.py +2 -2
  11. rucio/client/requestclient.py +6 -5
  12. rucio/client/touchclient.py +1 -1
  13. rucio/client/uploadclient.py +725 -181
  14. rucio/common/config.py +1 -2
  15. rucio/common/constants.py +16 -17
  16. rucio/common/didtype.py +2 -2
  17. rucio/common/dumper/__init__.py +1 -1
  18. rucio/common/pcache.py +20 -25
  19. rucio/common/plugins.py +10 -17
  20. rucio/common/schema/__init__.py +7 -5
  21. rucio/common/utils.py +19 -3
  22. rucio/core/authentication.py +1 -1
  23. rucio/core/credential.py +1 -1
  24. rucio/core/did.py +54 -54
  25. rucio/core/did_meta_plugins/__init__.py +10 -10
  26. rucio/core/did_meta_plugins/did_column_meta.py +9 -9
  27. rucio/core/did_meta_plugins/did_meta_plugin_interface.py +3 -3
  28. rucio/core/did_meta_plugins/elasticsearch_meta.py +7 -7
  29. rucio/core/did_meta_plugins/json_meta.py +2 -2
  30. rucio/core/did_meta_plugins/mongo_meta.py +9 -9
  31. rucio/core/did_meta_plugins/postgres_meta.py +7 -7
  32. rucio/core/dirac.py +1 -1
  33. rucio/core/lifetime_exception.py +2 -2
  34. rucio/core/lock.py +7 -7
  35. rucio/core/meta_conventions.py +2 -2
  36. rucio/core/monitor.py +1 -1
  37. rucio/core/naming_convention.py +1 -1
  38. rucio/core/nongrid_trace.py +2 -2
  39. rucio/core/oidc.py +2 -2
  40. rucio/core/permission/__init__.py +7 -5
  41. rucio/core/permission/generic.py +5 -2
  42. rucio/core/permission/generic_multi_vo.py +2 -2
  43. rucio/core/replica.py +18 -18
  44. rucio/core/request.py +2 -2
  45. rucio/core/rule.py +30 -30
  46. rucio/core/rule_grouping.py +2 -3
  47. rucio/core/scope.py +1 -1
  48. rucio/core/trace.py +2 -2
  49. rucio/core/transfer.py +4 -5
  50. rucio/daemons/auditor/__init__.py +1 -1
  51. rucio/daemons/badreplicas/minos.py +9 -3
  52. rucio/daemons/badreplicas/minos_temporary_expiration.py +5 -2
  53. rucio/daemons/badreplicas/necromancer.py +9 -3
  54. rucio/daemons/bb8/common.py +1 -1
  55. rucio/daemons/bb8/nuclei_background_rebalance.py +1 -1
  56. rucio/daemons/bb8/t2_background_rebalance.py +1 -1
  57. rucio/daemons/cache/consumer.py +1 -1
  58. rucio/daemons/conveyor/finisher.py +13 -4
  59. rucio/daemons/conveyor/poller.py +5 -2
  60. rucio/daemons/conveyor/receiver.py +1 -1
  61. rucio/daemons/conveyor/throttler.py +2 -1
  62. rucio/daemons/follower/follower.py +1 -1
  63. rucio/daemons/hermes/hermes.py +2 -2
  64. rucio/daemons/judge/cleaner.py +2 -2
  65. rucio/daemons/judge/evaluator.py +7 -7
  66. rucio/daemons/judge/injector.py +2 -2
  67. rucio/daemons/judge/repairer.py +2 -2
  68. rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +1 -1
  69. rucio/daemons/storage/consistency/actions.py +3 -3
  70. rucio/daemons/transmogrifier/transmogrifier.py +1 -1
  71. rucio/daemons/undertaker/undertaker.py +6 -6
  72. rucio/db/sqla/constants.py +4 -3
  73. rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +1 -1
  74. rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +1 -1
  75. rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +1 -1
  76. rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +1 -1
  77. rucio/db/sqla/models.py +2 -2
  78. rucio/db/sqla/session.py +7 -7
  79. rucio/gateway/account.py +65 -90
  80. rucio/gateway/did.py +26 -26
  81. rucio/gateway/dirac.py +1 -1
  82. rucio/gateway/lifetime_exception.py +1 -1
  83. rucio/gateway/replica.py +2 -2
  84. rucio/gateway/request.py +13 -12
  85. rucio/rse/protocols/ngarc.py +2 -2
  86. rucio/rse/protocols/srm.py +1 -1
  87. rucio/rse/protocols/webdav.py +8 -1
  88. rucio/rse/rsemanager.py +2 -2
  89. rucio/tests/common.py +4 -4
  90. rucio/vcsversion.py +3 -3
  91. rucio/web/rest/flaskapi/v1/accountlimits.py +22 -22
  92. rucio/web/rest/flaskapi/v1/accounts.py +177 -177
  93. rucio/web/rest/flaskapi/v1/archives.py +10 -10
  94. rucio/web/rest/flaskapi/v1/auth.py +106 -106
  95. rucio/web/rest/flaskapi/v1/common.py +1 -1
  96. rucio/web/rest/flaskapi/v1/config.py +37 -37
  97. rucio/web/rest/flaskapi/v1/credentials.py +25 -25
  98. rucio/web/rest/flaskapi/v1/dids.py +391 -391
  99. rucio/web/rest/flaskapi/v1/dirac.py +8 -8
  100. rucio/web/rest/flaskapi/v1/export.py +6 -6
  101. rucio/web/rest/flaskapi/v1/heartbeats.py +14 -14
  102. rucio/web/rest/flaskapi/v1/identities.py +25 -25
  103. rucio/web/rest/flaskapi/v1/import.py +19 -19
  104. rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +54 -54
  105. rucio/web/rest/flaskapi/v1/locks.py +62 -62
  106. rucio/web/rest/flaskapi/v1/main.py +1 -0
  107. rucio/web/rest/flaskapi/v1/meta_conventions.py +29 -29
  108. rucio/web/rest/flaskapi/v1/nongrid_traces.py +4 -4
  109. rucio/web/rest/flaskapi/v1/ping.py +4 -4
  110. rucio/web/rest/flaskapi/v1/redirect.py +16 -16
  111. rucio/web/rest/flaskapi/v1/replicas.py +282 -282
  112. rucio/web/rest/flaskapi/v1/requests.py +274 -270
  113. rucio/web/rest/flaskapi/v1/rses.py +427 -427
  114. rucio/web/rest/flaskapi/v1/rules.py +129 -129
  115. rucio/web/rest/flaskapi/v1/scopes.py +21 -21
  116. rucio/web/rest/flaskapi/v1/subscriptions.py +120 -120
  117. rucio/web/rest/flaskapi/v1/traces.py +18 -18
  118. rucio/web/rest/flaskapi/v1/vos.py +32 -32
  119. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/requirements.server.txt +1 -1
  120. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-abacus-account +8 -1
  121. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-abacus-rse +8 -1
  122. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-auditor +1 -1
  123. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-conveyor-throttler +7 -1
  124. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-follower +1 -1
  125. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-judge-cleaner +9 -1
  126. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-necromancer +7 -1
  127. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-replica-recoverer +31 -9
  128. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-undertaker +8 -2
  129. {rucio-37.4.0.dist-info → rucio-37.6.0.dist-info}/METADATA +1 -1
  130. {rucio-37.4.0.dist-info → rucio-37.6.0.dist-info}/RECORD +179 -179
  131. {rucio-37.4.0.dist-info → rucio-37.6.0.dist-info}/WHEEL +1 -1
  132. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/alembic.ini.template +0 -0
  133. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/alembic_offline.ini.template +0 -0
  134. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/globus-config.yml.template +0 -0
  135. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/ldap.cfg.template +0 -0
  136. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/mail_templates/rule_approval_request.tmpl +0 -0
  137. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  138. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/mail_templates/rule_approved_user.tmpl +0 -0
  139. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  140. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/mail_templates/rule_denied_user.tmpl +0 -0
  141. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  142. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/rse-accounts.cfg.template +0 -0
  143. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/rucio.cfg.atlas.client.template +0 -0
  144. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/rucio.cfg.template +0 -0
  145. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/etc/rucio_multi_vo.cfg.template +0 -0
  146. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/tools/bootstrap.py +0 -0
  147. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/tools/merge_rucio_configs.py +0 -0
  148. {rucio-37.4.0.data → rucio-37.6.0.data}/data/rucio/tools/reset_database.py +0 -0
  149. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio +0 -0
  150. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-abacus-collection-replica +0 -0
  151. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-admin +0 -0
  152. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-atropos +0 -0
  153. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-automatix +0 -0
  154. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-bb8 +0 -0
  155. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-cache-client +0 -0
  156. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-cache-consumer +0 -0
  157. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-conveyor-finisher +0 -0
  158. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-conveyor-poller +0 -0
  159. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-conveyor-preparer +0 -0
  160. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-conveyor-receiver +0 -0
  161. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-conveyor-stager +0 -0
  162. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-conveyor-submitter +0 -0
  163. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-dark-reaper +0 -0
  164. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-dumper +0 -0
  165. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-hermes +0 -0
  166. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-judge-evaluator +0 -0
  167. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-judge-injector +0 -0
  168. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-judge-repairer +0 -0
  169. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-kronos +0 -0
  170. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-minos +0 -0
  171. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-minos-temporary-expiration +0 -0
  172. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-oauth-manager +0 -0
  173. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-reaper +0 -0
  174. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-rse-decommissioner +0 -0
  175. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-storage-consistency-actions +0 -0
  176. {rucio-37.4.0.data → rucio-37.6.0.data}/scripts/rucio-transmogrifier +0 -0
  177. {rucio-37.4.0.dist-info → rucio-37.6.0.dist-info}/licenses/AUTHORS.rst +0 -0
  178. {rucio-37.4.0.dist-info → rucio-37.6.0.dist-info}/licenses/LICENSE +0 -0
  179. {rucio-37.4.0.dist-info → rucio-37.6.0.dist-info}/top_level.txt +0 -0
@@ -32,80 +32,80 @@ class Subscription(ErrorHandlingMethodView):
32
32
  """
33
33
  ---
34
34
  summary: Get Subscription
35
- description: Retrieve a subscription.
35
+ description: "Retrieve a subscription."
36
36
  tags:
37
- - Replicas
37
+ - Subscription
38
38
  parameters:
39
39
  - name: account
40
40
  in: path
41
- description: The account name.
41
+ description: "The account name."
42
42
  schema:
43
43
  type: string
44
44
  style: simple
45
45
  - name: name
46
46
  in: path
47
- description: The subscription name.
47
+ description: "The subscription name."
48
48
  schema:
49
49
  type: string
50
50
  style: simple
51
51
  responses:
52
52
  200:
53
- description: OK
53
+ description: "OK"
54
54
  content:
55
55
  application/x-json-stream:
56
56
  schema:
57
- description: A list of subscriptions.
57
+ description: "A list of subscriptions."
58
58
  type: array
59
59
  items:
60
- description: A subscription.
60
+ description: "A subscription."
61
61
  type: object
62
62
  properties:
63
63
  id:
64
- description: The id of the subscription.
64
+ description: "The id of the subscription."
65
65
  type: string
66
66
  name:
67
- description: The name of the subscription.
67
+ description: "The name of the subscription."
68
68
  type: string
69
69
  filter:
70
- description: The filter for the subscription.
70
+ description: "The filter for the subscription."
71
71
  type: string
72
72
  replication_rules:
73
- description: The replication rules for the subscription.
73
+ description: "The replication rules for the subscription."
74
74
  type: string
75
75
  policyid:
76
- description: The policyid for the subscription.
76
+ description: "The policyid for the subscription."
77
77
  type: integer
78
78
  state:
79
- description: The state of the subscription.
79
+ description: "The state of the subscription."
80
80
  type: string
81
81
  enum: ["A", "I", "N", "U", "B"]
82
82
  last_processed:
83
- description: The time the subscription was processed last.
83
+ description: "The time the subscription was processed last."
84
84
  type: string
85
85
  format: date-time
86
86
  account:
87
- description: The account for the subscription.
87
+ description: "The account for the subscription."
88
88
  type: string
89
89
  lifetime:
90
- description: The lifetime for the subscription.
90
+ description: "The lifetime for the subscription."
91
91
  type: string
92
92
  format: date-time
93
93
  comments:
94
- description: The comments for the subscription.
94
+ description: "The comments for the subscription."
95
95
  type: string
96
96
  retroactive:
97
- description: If the subscription is retroactive.
97
+ description: "If the subscription is retroactive."
98
98
  type: boolean
99
99
  expired_at:
100
- description: The date-time of the expiration for the subscription.
100
+ description: "The date-time of the expiration for the subscription."
101
101
  type: string
102
102
  format: date-time
103
103
  401:
104
- description: Invalid Auth Token
104
+ description: "Invalid Auth Token"
105
105
  404:
106
- description: Subscription Not found
106
+ description: "Subscription Not found"
107
107
  406:
108
- description: Not acceptable
108
+ description: "Not acceptable"
109
109
  """
110
110
  try:
111
111
  def generate(vo):
@@ -120,20 +120,20 @@ class Subscription(ErrorHandlingMethodView):
120
120
  """
121
121
  ---
122
122
  summary: Update subscription
123
- description: Update an existing subscription.
123
+ description: "Update an existing subscription."
124
124
  tags:
125
- - Replicas
125
+ - Subscription
126
126
  parameters:
127
127
  - name: account
128
128
  in: path
129
- description: The account name.
129
+ description: "The account name."
130
130
  schema:
131
131
  type: string
132
132
  style: simple
133
133
  required: true
134
134
  - name: name
135
135
  in: path
136
- description: The subscription name.
136
+ description: "The subscription name."
137
137
  schema:
138
138
  type: string
139
139
  style: simple
@@ -147,37 +147,37 @@ class Subscription(ErrorHandlingMethodView):
147
147
  - options
148
148
  properties:
149
149
  options:
150
- description: The values for the new subscription.
150
+ description: "The values for the new subscription."
151
151
  type: object
152
152
  properties:
153
153
  filter:
154
- description: The filter for the subscription.
154
+ description: "The filter for the subscription."
155
155
  type: string
156
156
  replication_rules:
157
- description: The replication rules for the subscription.
157
+ description: "The replication rules for the subscription."
158
158
  type: string
159
159
  comments:
160
- description: The comments for the subscription.
160
+ description: "The comments for the subscription."
161
161
  type: string
162
162
  lifetime:
163
- description: The lifetime for the subscription.
163
+ description: "The lifetime for the subscription."
164
164
  type: string
165
165
  format: date-time
166
166
  retroactive:
167
- description: If the retroactive is activated for a subscription.
167
+ description: "If the retroactive is activated for a subscription."
168
168
  type: boolean
169
169
  priority:
170
- description: The priority/policyid for the subscription. Stored as policyid.
170
+ description: "The priority/policyid for the subscription. Stored as policyid."
171
171
  type: integer
172
172
  responses:
173
173
  201:
174
- description: OK
174
+ description: "OK"
175
175
  400:
176
- description: Cannot decode json parameter list.
176
+ description: "Cannot decode json parameter list."
177
177
  401:
178
- description: Invalid Auth Token
178
+ description: "Invalid Auth Token"
179
179
  404:
180
- description: Not found
180
+ description: "Not found"
181
181
  """
182
182
  parameters = json_parameters()
183
183
  options = param_get(parameters, 'options')
@@ -207,20 +207,20 @@ class Subscription(ErrorHandlingMethodView):
207
207
  """
208
208
  ---
209
209
  summary: Create subscription
210
- description: Create a new subscription
210
+ description: "Create a new subscription"
211
211
  tags:
212
- - Replicas
212
+ - Subscription
213
213
  parameters:
214
214
  - name: account
215
215
  in: path
216
- description: The account name.
216
+ description: "The account name."
217
217
  schema:
218
218
  type: string
219
219
  style: simple
220
220
  required: true
221
221
  - name: name
222
222
  in: path
223
- description: The subscription name.
223
+ description: "The subscription name."
224
224
  schema:
225
225
  type: string
226
226
  style: simple
@@ -234,7 +234,7 @@ class Subscription(ErrorHandlingMethodView):
234
234
  - options
235
235
  properties:
236
236
  options:
237
- description: The values for the new subscription.
237
+ description: "The values for the new subscription."
238
238
  type: object
239
239
  required:
240
240
  - filter
@@ -244,44 +244,44 @@ class Subscription(ErrorHandlingMethodView):
244
244
  - retroactive
245
245
  properties:
246
246
  filter:
247
- description: The filter for the subscription.
247
+ description: "The filter for the subscription."
248
248
  type: string
249
249
  replication_rules:
250
- description: The replication rules for the subscription.
250
+ description: "The replication rules for the subscription."
251
251
  type: string
252
252
  comments:
253
- description: The comments for the subscription.
253
+ description: "The comments for the subscription."
254
254
  type: string
255
255
  lifetime:
256
- description: The lifetime for the subscription.
256
+ description: "The lifetime for the subscription."
257
257
  type: string
258
258
  format: date-time
259
259
  retroactive:
260
- description: If the retroactive is activated for a subscription.
260
+ description: "If the retroactive is activated for a subscription."
261
261
  type: boolean
262
262
  priority:
263
- description: The priority/policyid for the subscription. Stored as policyid.
263
+ description: "The priority/policyid for the subscription. Stored as policyid."
264
264
  type: integer
265
265
  dry_run:
266
- description: The priority/policyid for the subscription. Stored as policyid.
266
+ description: "The priority/policyid for the subscription. Stored as policyid."
267
267
  type: boolean
268
268
  default: false
269
269
  responses:
270
270
  200:
271
- description: OK
271
+ description: "OK"
272
272
  content:
273
273
  application/json:
274
274
  schema:
275
- description: The subscription Id for the new subscription.
275
+ description: "The subscription Id for the new subscription."
276
276
  type: string
277
277
  400:
278
- description: Cannot decode json parameter list.
278
+ description: "Cannot decode json parameter list."
279
279
  401:
280
- description: Invalid Auth Token
280
+ description: "Invalid Auth Token"
281
281
  404:
282
- description: Not found
282
+ description: "Not found"
283
283
  406:
284
- description: Not acceptable
284
+ description: "Not acceptable"
285
285
  """
286
286
  parameters = json_parameters()
287
287
  options = param_get(parameters, 'options')
@@ -326,74 +326,74 @@ class SubscriptionName(ErrorHandlingMethodView):
326
326
  """
327
327
  ---
328
328
  summary: Get Subscription by Name
329
- description: Retrieve a subscription by name.
329
+ description: "Retrieve a subscription by name."
330
330
  tags:
331
- - Replicas
331
+ - Subscription
332
332
  parameters:
333
333
  - name: name
334
334
  in: path
335
- description: The subscription name.
335
+ description: "The subscription name."
336
336
  schema:
337
337
  type: string
338
338
  style: simple
339
339
  responses:
340
340
  200:
341
- description: OK
341
+ description: "OK"
342
342
  content:
343
343
  application/x-json-stream:
344
344
  schema:
345
- description: A list of subscriptions.
345
+ description: "A list of subscriptions."
346
346
  type: array
347
347
  items:
348
- description: A subscription.
348
+ description: "A subscription."
349
349
  type: object
350
350
  properties:
351
351
  id:
352
- description: The id of the subscription.
352
+ description: "The id of the subscription."
353
353
  type: string
354
354
  name:
355
- description: The name of the subscription.
355
+ description: "The name of the subscription."
356
356
  type: string
357
357
  filter:
358
- description: The filter for the subscription.
358
+ description: "The filter for the subscription."
359
359
  type: string
360
360
  replication_rules:
361
- description: The replication rules for the subscription.
361
+ description: "The replication rules for the subscription."
362
362
  type: string
363
363
  policyid:
364
- description: The policyid for the subscription.
364
+ description: "The policyid for the subscription."
365
365
  type: integer
366
366
  state:
367
- description: The state of the subscription.
367
+ description: "The state of the subscription."
368
368
  type: string
369
369
  enum: ["A", "I", "N", "U", "B"]
370
370
  last_processed:
371
- description: The time the subscription was processed last.
371
+ description: "The time the subscription was processed last."
372
372
  type: string
373
373
  format: date-time
374
374
  account:
375
- description: The account for the subscription.
375
+ description: "The account for the subscription."
376
376
  type: string
377
377
  lifetime:
378
- description: The lifetime for the subscription.
378
+ description: "The lifetime for the subscription."
379
379
  type: string
380
380
  format: date-time
381
381
  comments:
382
- description: The comments for the subscription.
382
+ description: "The comments for the subscription."
383
383
  type: string
384
384
  retroactive:
385
- description: If the subscription is retroactive.
385
+ description: "If the subscription is retroactive."
386
386
  type: boolean
387
387
  expired_at:
388
- description: The date-time of the expiration for the subscription.
388
+ description: "The date-time of the expiration for the subscription."
389
389
  type: string
390
390
  format: date-time
391
391
  401:
392
- description: Invalid Auth Token
392
+ description: "Invalid Auth Token"
393
393
  404:
394
- description: Not found
394
+ description: "Not found"
395
395
  406:
396
- description: Not acceptable
396
+ description: "Not acceptable"
397
397
  """
398
398
  try:
399
399
  def generate(vo):
@@ -412,45 +412,45 @@ class Rules(ErrorHandlingMethodView):
412
412
  """
413
413
  ---
414
414
  summary: Get Replication Rules
415
- description: Return all rules of a given subscription id.
415
+ description: "Return all rules of a given subscription id."
416
416
  tags:
417
- - Replicas
417
+ - Subscription
418
418
  parameters:
419
419
  - name: account
420
420
  in: path
421
- description: The account name.
421
+ description: "The account name."
422
422
  schema:
423
423
  type: string
424
424
  style: simple
425
425
  required: true
426
426
  - name: name
427
427
  in: path
428
- description: The subscription name.
428
+ description: "The subscription name."
429
429
  schema:
430
430
  type: string
431
431
  style: simple
432
432
  required: true
433
433
  - name: state
434
434
  in: query
435
- description: The subscription state to filter for.
435
+ description: "The subscription state to filter for."
436
436
  schema:
437
437
  type: string
438
438
  responses:
439
439
  200:
440
- description: OK
440
+ description: "OK"
441
441
  content:
442
442
  application/x-json-stream:
443
443
  schema:
444
- description: A list with the associated replication rules.
444
+ description: "A list with the associated replication rules."
445
445
  type: array
446
446
  items:
447
- description: A subscription rule.
447
+ description: "A subscription rule."
448
448
  401:
449
- description: Invalid Auth Token
449
+ description: "Invalid Auth Token"
450
450
  404:
451
- description: Rule or Subscription not found
451
+ description: "Rule or Subscription not found"
452
452
  406:
453
- description: Not acceptable
453
+ description: "Not acceptable"
454
454
  """
455
455
  state = request.args.get('state', default=None)
456
456
  try:
@@ -477,53 +477,53 @@ class States(ErrorHandlingMethodView):
477
477
  """
478
478
  ---
479
479
  summary: Get states
480
- description: Return a summary of the states of all rules of a given subscription id.
480
+ description: "Return a summary of the states of all rules of a given subscription id."
481
481
  tags:
482
- - Replicas
482
+ - Subscription
483
483
  parameters:
484
484
  - name: account
485
485
  in: path
486
- description: The account name.
486
+ description: "The account name."
487
487
  schema:
488
488
  type: string
489
489
  style: simple
490
490
  required: true
491
491
  - name: name
492
492
  in: path
493
- description: The subscription name.
493
+ description: "The subscription name."
494
494
  schema:
495
495
  type: string
496
496
  style: simple
497
497
  responses:
498
498
  200:
499
- description: OK
499
+ description: "OK"
500
500
  content:
501
501
  application/x-json-stream:
502
502
  schema:
503
- description: A list of rule states with counts for each subscription.
503
+ description: "A list of rule states with counts for each subscription."
504
504
  type: array
505
505
  items:
506
506
  type: object
507
507
  properties:
508
508
  account:
509
- description: The account for the subscription.
509
+ description: "The account for the subscription."
510
510
  type: string
511
511
  name:
512
- description: The name of the subscription.
512
+ description: "The name of the subscription."
513
513
  type: string
514
514
  state:
515
- description: The state of the rules.
515
+ description: "The state of the rules."
516
516
  type: string
517
517
  enum: ["R", "O", "S", "U", "W", "I"]
518
518
  count:
519
- description: The number of rules with that state.
519
+ description: "The number of rules with that state."
520
520
  type: integer
521
521
  401:
522
- description: Invalid Auth Token
522
+ description: "Invalid Auth Token"
523
523
  404:
524
- description: Not found
524
+ description: "Not found"
525
525
  406:
526
- description: Not acceptable
526
+ description: "Not acceptable"
527
527
  """
528
528
  def generate(vo):
529
529
  for row in list_subscription_rule_states(name=name, account=account, vo=vo):
@@ -539,72 +539,72 @@ class SubscriptionId(ErrorHandlingMethodView):
539
539
  """
540
540
  ---
541
541
  summary: Get Subscription from ID
542
- description: Retrieve a subscription matching the given subscription id.
542
+ description: "Retrieve a subscription matching the given subscription id."
543
543
  tags:
544
- - Replicas
544
+ - Subscription
545
545
  parameters:
546
546
  - name: subscription_id
547
547
  in: path
548
- description: The subscription id.
548
+ description: "The subscription id."
549
549
  schema:
550
550
  type: string
551
551
  style: simple
552
552
  required: true
553
553
  responses:
554
554
  200:
555
- description: OK
555
+ description: "OK"
556
556
  content:
557
557
  application/json:
558
558
  schema:
559
- description: The subscription.
559
+ description: "The subscription."
560
560
  type: object
561
561
  properties:
562
562
  id:
563
- description: The id of the subscription.
563
+ description: "The id of the subscription."
564
564
  type: string
565
565
  name:
566
- description: The name of the subscription.
566
+ description: "The name of the subscription."
567
567
  type: string
568
568
  filter:
569
- description: The filter for the subscription.
569
+ description: "The filter for the subscription."
570
570
  type: string
571
571
  replication_rules:
572
- description: The replication rules for the subscription.
572
+ description: "The replication rules for the subscription."
573
573
  type: string
574
574
  policyid:
575
- description: The policyid for the subscription.
575
+ description: "The policyid for the subscription."
576
576
  type: integer
577
577
  state:
578
- description: The state of the subscription.
578
+ description: "The state of the subscription."
579
579
  type: string
580
580
  enum: ["A", "I", "N", "U", "B"]
581
581
  last_processed:
582
- description: The time the subscription was processed last.
582
+ description: "The time the subscription was processed last."
583
583
  type: string
584
584
  format: date-time
585
585
  account:
586
- description: The account for the subscription.
586
+ description: "The account for the subscription."
587
587
  type: string
588
588
  lifetime:
589
- description: The lifetime for the subscription.
589
+ description: "The lifetime for the subscription."
590
590
  type: string
591
591
  format: date-time
592
592
  comments:
593
- description: The comments for the subscription.
593
+ description: "The comments for the subscription."
594
594
  type: string
595
595
  retroactive:
596
- description: If the subscription is retroactive.
596
+ description: "If the subscription is retroactive."
597
597
  type: boolean
598
598
  expired_at:
599
- description: The date-time of the expiration for the subscription.
599
+ description: "The date-time of the expiration for the subscription."
600
600
  type: string
601
601
  format: date-time
602
602
  401:
603
- description: Invalid Auth Token
603
+ description: "Invalid Auth Token"
604
604
  404:
605
- description: Subscription not found
605
+ description: "Subscription not found"
606
606
  406:
607
- description: Not acceptable
607
+ description: "Not acceptable"
608
608
  """
609
609
  try:
610
610
  subscription = get_subscription_by_id(subscription_id, vo=request.environ['vo'])
@@ -42,7 +42,7 @@ class Trace(ErrorHandlingMethodView):
42
42
  """
43
43
  ---
44
44
  summary: Trace
45
- description: Trace endpoint used by the pilot and CLI clients to post data access information.
45
+ description: "Trace endpoint used by the pilot and CLI clients to post data access information."
46
46
  tags:
47
47
  - Trace
48
48
  parameters:
@@ -59,49 +59,49 @@ class Trace(ErrorHandlingMethodView):
59
59
  oneOf:
60
60
  ObjectSchema:
61
61
  - requires: [eventType, clientState, account]
62
- - description: touch one or more DIDs
62
+ - description: "Touch one or more DIDs"
63
63
  UploadSchema:
64
64
  - requires: [eventType, hostname, account, eventVersion, uuid, scope, dataset, remoteSite, filesize, protocol, transferStart]
65
- - description: upload method
65
+ - description: "Upload method"
66
66
  DownloadSchema:
67
67
  - requires: [eventType, hostname, localSite, account, eventVersion, uuid, scope, filename, dataset, filesize, clientState, stateReason]
68
- - description: download method
68
+ - description: "Download method"
69
69
  GetSchema:
70
70
  - requires: [eventType, localSite, eventVersion, uuid, scope, filename, dataset]
71
- - description: get method, mainly sent by pilots
71
+ - description: "Get method, mainly sent by pilots"
72
72
  PutSchema:
73
73
  - requires: [eventType, localSite, eventVersion, uuid, scope, filename, dataset]
74
- - description: put method, mainly sent by pilots
74
+ - description: "Put method, mainly sent by pilots"
75
75
  SpecialSchema:
76
76
  - requires: [eventType, clientState, account]
77
- - description: A special schema to capture most unsupported eventTypes
77
+ - description: "A special schema to capture most unsupported eventTypes"
78
78
  - type: array
79
79
  items:
80
80
  type: object
81
81
  oneOf:
82
82
  ObjectSchema:
83
83
  - requires: [eventType, clientState, account]
84
- - description: touch one or more DIDs
84
+ - description: "Touch one or more DIDs"
85
85
  UploadSchema:
86
86
  - requires: [eventType, hostname, account, eventVersion, uuid, scope, dataset, remoteSite, filesize, protocol, transferStart]
87
- - description: upload method
87
+ - description: "Upload method"
88
88
  DownloadSchema:
89
89
  - requires: [eventType, hostname, localSite, account, eventVersion, uuid, scope, filename, dataset, filesize, clientState, stateReason]
90
- - description: download method
90
+ - description: "Download method"
91
91
  GetSchema:
92
92
  - requires: [eventType, localSite, eventVersion, uuid, scope, filename, dataset]
93
- - description: get method, mainly sent by pilots
93
+ - description: "Get method, mainly sent by pilots"
94
94
  PutSchema:
95
95
  - requires: [eventType, localSite, eventVersion, uuid, scope, filename, dataset]
96
- - description: put method, mainly sent by pilots
96
+ - description: "Put method, mainly sent by pilots"
97
97
  SpecialSchema:
98
98
  - requires: [eventType, clientState, account]
99
- - description: A special schema to capture most unsupported eventTypes
99
+ - description: "A special schema to capture most unsupported eventTypes"
100
100
  responses:
101
101
  201:
102
- description: OK
102
+ description: "OK"
103
103
  400:
104
- description: Cannot decode json data.
104
+ description: "Cannot decode json data."
105
105
  """
106
106
  headers = self.get_headers()
107
107
  parameters = request.data
@@ -112,10 +112,10 @@ class Trace(ErrorHandlingMethodView):
112
112
  # Trace gateway handles all errors and sends them to a log - no need for any error checking
113
113
  trace_ip = request.headers.get("X-Forwarded-For", default=request.remote_addr)
114
114
  try:
115
- trace(request=parameters, trace_ip=trace_ip)
116
- return Response("Created", 201, headers)
115
+ trace(request=parameters, trace_ip=trace_ip)
116
+ return Response("Created", 201, headers)
117
117
  except JSONDecodeError as err:
118
- return generate_http_error_flask(400, err)
118
+ return generate_http_error_flask(400, err)
119
119
 
120
120
 
121
121
  def blueprint():