rucio 35.7.0__py3-none-any.whl → 37.0.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 (266) hide show
  1. rucio/alembicrevision.py +1 -1
  2. rucio/{daemons/c3po/collectors → cli}/__init__.py +1 -0
  3. rucio/cli/account.py +216 -0
  4. rucio-35.7.0.data/scripts/rucio → rucio/cli/bin_legacy/rucio.py +769 -486
  5. rucio-35.7.0.data/scripts/rucio-admin → rucio/cli/bin_legacy/rucio_admin.py +476 -423
  6. rucio/cli/command.py +272 -0
  7. rucio/cli/config.py +72 -0
  8. rucio/cli/did.py +191 -0
  9. rucio/cli/download.py +128 -0
  10. rucio/cli/lifetime_exception.py +33 -0
  11. rucio/cli/replica.py +162 -0
  12. rucio/cli/rse.py +293 -0
  13. rucio/cli/rule.py +158 -0
  14. rucio/cli/scope.py +40 -0
  15. rucio/cli/subscription.py +73 -0
  16. rucio/cli/upload.py +60 -0
  17. rucio/cli/utils.py +226 -0
  18. rucio/client/accountclient.py +0 -1
  19. rucio/client/baseclient.py +33 -24
  20. rucio/client/client.py +45 -1
  21. rucio/client/didclient.py +5 -3
  22. rucio/client/downloadclient.py +6 -8
  23. rucio/client/replicaclient.py +0 -2
  24. rucio/client/richclient.py +317 -0
  25. rucio/client/rseclient.py +4 -4
  26. rucio/client/uploadclient.py +26 -12
  27. rucio/common/bittorrent.py +234 -0
  28. rucio/common/cache.py +66 -29
  29. rucio/common/checksum.py +168 -0
  30. rucio/common/client.py +122 -0
  31. rucio/common/config.py +22 -35
  32. rucio/common/constants.py +61 -3
  33. rucio/common/didtype.py +72 -24
  34. rucio/common/dumper/__init__.py +45 -38
  35. rucio/common/dumper/consistency.py +75 -30
  36. rucio/common/dumper/data_models.py +63 -19
  37. rucio/common/dumper/path_parsing.py +19 -8
  38. rucio/common/exception.py +65 -8
  39. rucio/common/extra.py +5 -10
  40. rucio/common/logging.py +13 -13
  41. rucio/common/pcache.py +8 -7
  42. rucio/common/plugins.py +59 -27
  43. rucio/common/policy.py +12 -3
  44. rucio/common/schema/__init__.py +84 -34
  45. rucio/common/schema/generic.py +0 -17
  46. rucio/common/schema/generic_multi_vo.py +0 -17
  47. rucio/common/test_rucio_server.py +12 -6
  48. rucio/common/types.py +132 -52
  49. rucio/common/utils.py +93 -643
  50. rucio/core/account_limit.py +14 -12
  51. rucio/core/authentication.py +2 -2
  52. rucio/core/config.py +23 -42
  53. rucio/core/credential.py +14 -15
  54. rucio/core/did.py +5 -1
  55. rucio/core/did_meta_plugins/elasticsearch_meta.py +407 -0
  56. rucio/core/did_meta_plugins/filter_engine.py +62 -3
  57. rucio/core/did_meta_plugins/json_meta.py +2 -2
  58. rucio/core/did_meta_plugins/mongo_meta.py +43 -30
  59. rucio/core/did_meta_plugins/postgres_meta.py +75 -39
  60. rucio/core/identity.py +6 -5
  61. rucio/core/importer.py +4 -3
  62. rucio/core/lifetime_exception.py +2 -2
  63. rucio/core/lock.py +8 -7
  64. rucio/core/message.py +6 -0
  65. rucio/core/monitor.py +30 -29
  66. rucio/core/naming_convention.py +2 -2
  67. rucio/core/nongrid_trace.py +2 -2
  68. rucio/core/oidc.py +11 -9
  69. rucio/core/permission/__init__.py +79 -37
  70. rucio/core/permission/generic.py +1 -7
  71. rucio/core/permission/generic_multi_vo.py +1 -7
  72. rucio/core/quarantined_replica.py +4 -3
  73. rucio/core/replica.py +464 -139
  74. rucio/core/replica_sorter.py +55 -59
  75. rucio/core/request.py +34 -32
  76. rucio/core/rse.py +301 -97
  77. rucio/core/rse_counter.py +1 -2
  78. rucio/core/rse_expression_parser.py +7 -7
  79. rucio/core/rse_selector.py +9 -7
  80. rucio/core/rule.py +41 -40
  81. rucio/core/rule_grouping.py +42 -40
  82. rucio/core/scope.py +5 -4
  83. rucio/core/subscription.py +26 -28
  84. rucio/core/topology.py +11 -11
  85. rucio/core/trace.py +2 -2
  86. rucio/core/transfer.py +29 -15
  87. rucio/core/volatile_replica.py +4 -3
  88. rucio/daemons/atropos/atropos.py +1 -1
  89. rucio/daemons/auditor/__init__.py +2 -2
  90. rucio/daemons/auditor/srmdumps.py +6 -6
  91. rucio/daemons/automatix/automatix.py +32 -21
  92. rucio/daemons/badreplicas/necromancer.py +2 -2
  93. rucio/daemons/bb8/nuclei_background_rebalance.py +1 -1
  94. rucio/daemons/bb8/t2_background_rebalance.py +1 -1
  95. rucio/daemons/common.py +15 -25
  96. rucio/daemons/conveyor/finisher.py +2 -2
  97. rucio/daemons/conveyor/poller.py +18 -28
  98. rucio/daemons/conveyor/receiver.py +2 -2
  99. rucio/daemons/conveyor/stager.py +1 -0
  100. rucio/daemons/conveyor/submitter.py +3 -3
  101. rucio/daemons/hermes/hermes.py +91 -30
  102. rucio/daemons/judge/evaluator.py +2 -2
  103. rucio/daemons/oauthmanager/oauthmanager.py +3 -3
  104. rucio/daemons/reaper/dark_reaper.py +7 -3
  105. rucio/daemons/reaper/reaper.py +12 -16
  106. rucio/daemons/rsedecommissioner/config.py +1 -1
  107. rucio/daemons/rsedecommissioner/profiles/generic.py +5 -4
  108. rucio/daemons/rsedecommissioner/profiles/types.py +7 -6
  109. rucio/daemons/rsedecommissioner/rse_decommissioner.py +1 -1
  110. rucio/daemons/storage/consistency/actions.py +8 -6
  111. rucio/daemons/tracer/kronos.py +4 -4
  112. rucio/db/sqla/constants.py +5 -0
  113. rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +4 -4
  114. rucio/db/sqla/migrate_repo/versions/30d5206e9cad_increase_oauthrequest_redirect_msg_.py +37 -0
  115. rucio/db/sqla/models.py +157 -154
  116. rucio/db/sqla/session.py +58 -27
  117. rucio/db/sqla/types.py +2 -2
  118. rucio/db/sqla/util.py +2 -2
  119. rucio/gateway/account.py +18 -12
  120. rucio/gateway/account_limit.py +137 -60
  121. rucio/gateway/authentication.py +18 -12
  122. rucio/gateway/config.py +30 -20
  123. rucio/gateway/credential.py +9 -10
  124. rucio/gateway/did.py +70 -53
  125. rucio/gateway/dirac.py +6 -4
  126. rucio/gateway/exporter.py +3 -2
  127. rucio/gateway/heartbeat.py +6 -4
  128. rucio/gateway/identity.py +36 -51
  129. rucio/gateway/importer.py +3 -2
  130. rucio/gateway/lifetime_exception.py +3 -2
  131. rucio/gateway/meta_conventions.py +17 -6
  132. rucio/gateway/permission.py +4 -1
  133. rucio/gateway/quarantined_replica.py +3 -2
  134. rucio/gateway/replica.py +31 -22
  135. rucio/gateway/request.py +27 -18
  136. rucio/gateway/rse.py +69 -37
  137. rucio/gateway/rule.py +46 -26
  138. rucio/gateway/scope.py +3 -2
  139. rucio/gateway/subscription.py +14 -11
  140. rucio/gateway/vo.py +12 -8
  141. rucio/rse/__init__.py +3 -3
  142. rucio/rse/protocols/bittorrent.py +11 -1
  143. rucio/rse/protocols/cache.py +0 -11
  144. rucio/rse/protocols/dummy.py +0 -11
  145. rucio/rse/protocols/gfal.py +14 -9
  146. rucio/rse/protocols/globus.py +1 -1
  147. rucio/rse/protocols/http_cache.py +1 -1
  148. rucio/rse/protocols/posix.py +2 -2
  149. rucio/rse/protocols/protocol.py +84 -317
  150. rucio/rse/protocols/rclone.py +2 -1
  151. rucio/rse/protocols/rfio.py +10 -1
  152. rucio/rse/protocols/ssh.py +2 -1
  153. rucio/rse/protocols/storm.py +2 -13
  154. rucio/rse/protocols/webdav.py +74 -30
  155. rucio/rse/protocols/xrootd.py +2 -1
  156. rucio/rse/rsemanager.py +170 -53
  157. rucio/rse/translation.py +260 -0
  158. rucio/tests/common.py +23 -13
  159. rucio/tests/common_server.py +26 -9
  160. rucio/transfertool/bittorrent.py +15 -14
  161. rucio/transfertool/bittorrent_driver.py +5 -7
  162. rucio/transfertool/bittorrent_driver_qbittorrent.py +9 -8
  163. rucio/transfertool/fts3.py +20 -16
  164. rucio/transfertool/mock.py +2 -3
  165. rucio/vcsversion.py +4 -4
  166. rucio/version.py +7 -0
  167. rucio/web/rest/flaskapi/v1/accounts.py +17 -3
  168. rucio/web/rest/flaskapi/v1/auth.py +5 -5
  169. rucio/web/rest/flaskapi/v1/credentials.py +3 -2
  170. rucio/web/rest/flaskapi/v1/dids.py +21 -15
  171. rucio/web/rest/flaskapi/v1/identities.py +33 -9
  172. rucio/web/rest/flaskapi/v1/redirect.py +5 -4
  173. rucio/web/rest/flaskapi/v1/replicas.py +12 -8
  174. rucio/web/rest/flaskapi/v1/rses.py +15 -4
  175. rucio/web/rest/flaskapi/v1/traces.py +56 -19
  176. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/alembic.ini.template +1 -1
  177. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/alembic_offline.ini.template +1 -1
  178. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rucio.cfg.atlas.client.template +3 -2
  179. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rucio.cfg.template +3 -19
  180. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rucio_multi_vo.cfg.template +1 -18
  181. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/requirements.server.txt +97 -68
  182. rucio-37.0.0.data/scripts/rucio +133 -0
  183. rucio-37.0.0.data/scripts/rucio-admin +97 -0
  184. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-atropos +2 -2
  185. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-auditor +2 -1
  186. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-automatix +2 -2
  187. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-cache-client +17 -10
  188. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-receiver +1 -0
  189. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-kronos +1 -0
  190. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-minos +2 -2
  191. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-minos-temporary-expiration +2 -2
  192. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-necromancer +2 -2
  193. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-reaper +6 -6
  194. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-transmogrifier +2 -2
  195. rucio-37.0.0.dist-info/METADATA +92 -0
  196. {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/RECORD +237 -243
  197. {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/licenses/AUTHORS.rst +3 -0
  198. rucio/common/schema/atlas.py +0 -413
  199. rucio/common/schema/belleii.py +0 -408
  200. rucio/common/schema/domatpc.py +0 -401
  201. rucio/common/schema/escape.py +0 -426
  202. rucio/common/schema/icecube.py +0 -406
  203. rucio/core/permission/atlas.py +0 -1348
  204. rucio/core/permission/belleii.py +0 -1077
  205. rucio/core/permission/escape.py +0 -1078
  206. rucio/daemons/c3po/algorithms/__init__.py +0 -13
  207. rucio/daemons/c3po/algorithms/simple.py +0 -134
  208. rucio/daemons/c3po/algorithms/t2_free_space.py +0 -128
  209. rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -130
  210. rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -294
  211. rucio/daemons/c3po/c3po.py +0 -371
  212. rucio/daemons/c3po/collectors/agis.py +0 -108
  213. rucio/daemons/c3po/collectors/free_space.py +0 -81
  214. rucio/daemons/c3po/collectors/jedi_did.py +0 -57
  215. rucio/daemons/c3po/collectors/mock_did.py +0 -51
  216. rucio/daemons/c3po/collectors/network_metrics.py +0 -71
  217. rucio/daemons/c3po/collectors/workload.py +0 -112
  218. rucio/daemons/c3po/utils/__init__.py +0 -13
  219. rucio/daemons/c3po/utils/dataset_cache.py +0 -50
  220. rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -56
  221. rucio/daemons/c3po/utils/expiring_list.py +0 -62
  222. rucio/daemons/c3po/utils/popularity.py +0 -85
  223. rucio/daemons/c3po/utils/timeseries.py +0 -89
  224. rucio/rse/protocols/gsiftp.py +0 -92
  225. rucio-35.7.0.data/scripts/rucio-c3po +0 -85
  226. rucio-35.7.0.dist-info/METADATA +0 -72
  227. /rucio/{daemons/c3po → cli/bin_legacy}/__init__.py +0 -0
  228. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/globus-config.yml.template +0 -0
  229. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/ldap.cfg.template +0 -0
  230. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_approval_request.tmpl +0 -0
  231. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  232. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_approved_user.tmpl +0 -0
  233. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  234. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_denied_user.tmpl +0 -0
  235. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  236. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/etc/rse-accounts.cfg.template +0 -0
  237. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/tools/bootstrap.py +0 -0
  238. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/tools/merge_rucio_configs.py +0 -0
  239. {rucio-35.7.0.data → rucio-37.0.0.data}/data/rucio/tools/reset_database.py +0 -0
  240. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-abacus-account +0 -0
  241. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-abacus-collection-replica +0 -0
  242. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-abacus-rse +0 -0
  243. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-bb8 +0 -0
  244. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-cache-consumer +0 -0
  245. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-finisher +0 -0
  246. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-poller +0 -0
  247. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-preparer +0 -0
  248. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-stager +0 -0
  249. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-submitter +0 -0
  250. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-conveyor-throttler +0 -0
  251. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-dark-reaper +0 -0
  252. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-dumper +0 -0
  253. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-follower +0 -0
  254. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-hermes +0 -0
  255. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-cleaner +0 -0
  256. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-evaluator +0 -0
  257. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-injector +0 -0
  258. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-judge-repairer +0 -0
  259. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-oauth-manager +0 -0
  260. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-replica-recoverer +0 -0
  261. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-rse-decommissioner +0 -0
  262. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-storage-consistency-actions +0 -0
  263. {rucio-35.7.0.data → rucio-37.0.0.data}/scripts/rucio-undertaker +0 -0
  264. {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/WHEEL +0 -0
  265. {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/licenses/LICENSE +0 -0
  266. {rucio-35.7.0.dist-info → rucio-37.0.0.dist-info}/top_level.txt +0 -0
@@ -13,16 +13,16 @@
13
13
  # limitations under the License.
14
14
 
15
15
 
16
- import calendar
17
16
  import datetime
17
+ import json
18
18
  import uuid
19
- from typing import TYPE_CHECKING
19
+ from typing import TYPE_CHECKING, Union
20
20
 
21
21
  from flask import Blueprint, Flask, request
22
22
  from werkzeug.datastructures import Headers
23
23
 
24
24
  from rucio.core.trace import trace
25
- from rucio.web.rest.flaskapi.v1.common import ErrorHandlingMethodView, json_parameters, response_headers
25
+ from rucio.web.rest.flaskapi.v1.common import ErrorHandlingMethodView, response_headers
26
26
 
27
27
  if TYPE_CHECKING:
28
28
  from typing import Optional
@@ -32,6 +32,36 @@ if TYPE_CHECKING:
32
32
 
33
33
  class Trace(ErrorHandlingMethodView):
34
34
 
35
+ def __handle_payload_item(self, payload: dict) -> None:
36
+ """
37
+ Handles and processes a single trace payload item by adding various trace information.
38
+
39
+ Args:
40
+ payload (dict): The payload dictionary to be processed.
41
+
42
+ Modifies:
43
+ payload (dict): Adds the following keys to the payload:
44
+ - 'traceTimeentry': The current UTC timestamp.
45
+ - 'traceTimeentryUnix': The Unix timestamp with microsecond precision.
46
+ - 'traceIp': The client's IP address, either from 'X-Forwarded-For' header or remote address.
47
+ - 'traceId': A unique identifier for the trace, generated as a UUID without hyphens.
48
+
49
+ Calls:
50
+ trace(payload): A function to handle the processed payload.
51
+ """
52
+ # generate entry timestamp
53
+ payload["traceTimeentry"] = datetime.datetime.now(datetime.timezone.utc)
54
+ payload["traceTimeentryUnix"] = payload["traceTimeentry"].timestamp()
55
+
56
+ # guess client IP
57
+ payload["traceIp"] = request.headers.get(
58
+ "X-Forwarded-For", default=request.remote_addr
59
+ )
60
+
61
+ # generate unique ID
62
+ payload["traceId"] = str(uuid.uuid4()).replace("-", "").lower()
63
+ trace(payload=payload)
64
+
35
65
  def get_headers(self) -> "Optional[HeadersType]":
36
66
  headers = Headers()
37
67
  headers.set('Content-Type', 'application/octet-stream')
@@ -57,8 +87,13 @@ class Trace(ErrorHandlingMethodView):
57
87
  content:
58
88
  application/json:
59
89
  schema:
60
- description: The trace information.
90
+ oneOf:
91
+ - type: object
92
+ description: A single trace object.
93
+ - type: array
94
+ items:
61
95
  type: object
96
+ description: A list of trace objects.
62
97
  responses:
63
98
  201:
64
99
  description: OK
@@ -66,21 +101,23 @@ class Trace(ErrorHandlingMethodView):
66
101
  description: Cannot decode json data.
67
102
  """
68
103
  headers = self.get_headers()
69
- payload = json_parameters()
70
-
71
- # generate entry timestamp
72
- payload['traceTimeentry'] = datetime.datetime.utcnow()
73
- payload['traceTimeentryUnix'] = calendar.timegm(payload['traceTimeentry'].timetuple()) + payload['traceTimeentry'].microsecond / 1e6
74
-
75
- # guess client IP
76
- payload['traceIp'] = request.headers.get('X-Forwarded-For', default=request.remote_addr)
77
-
78
- # generate unique ID
79
- payload['traceId'] = str(uuid.uuid4()).replace('-', '').lower()
80
-
81
- trace(payload=payload)
82
-
83
- return 'Created', 201, headers
104
+ req_body: str = request.get_data(as_text=True)
105
+ payload: Union[list, dict, None] = json.loads(req_body) if req_body else None
106
+
107
+ if payload is None:
108
+ return (
109
+ "Invalid JSON data. Please provide a single trace as a JSON object or a list of trace objects.",
110
+ 400,
111
+ headers,
112
+ )
113
+
114
+ if isinstance(payload, list):
115
+ for item in payload:
116
+ self.__handle_payload_item(item)
117
+ else:
118
+ self.__handle_payload_item(payload)
119
+
120
+ return "Created", 201, headers
84
121
 
85
122
 
86
123
  def blueprint():
@@ -21,7 +21,7 @@
21
21
  sqlalchemy.url=oracle://user:pass@servicename
22
22
  version_table_schema=rucio
23
23
 
24
- #sqlalchemy.url=postgresql://rucio:rucio@psql-hostname:5432/rucio
24
+ #sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
25
25
  #version_table_schema=rucio
26
26
 
27
27
  #sqlalchemy.url=mysql+pymysql://rucio:rucio@rucio-hostname:3306/rucio
@@ -21,7 +21,7 @@
21
21
  #sqlalchemy.url=oracle://user:pass@servicename
22
22
  #version_table_schema=rucio
23
23
 
24
- #sqlalchemy.url=postgresql://rucio:rucio@psql-hostname:5432/rucio
24
+ #sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
25
25
  #version_table_schema=rucio
26
26
 
27
27
  #sqlalchemy.url=mysql+pymysql://rucio:rucio@rucio-hostname:3306/rucio
@@ -29,8 +29,9 @@ request_retries = 3
29
29
  auth_type = x509_proxy
30
30
 
31
31
  [policy]
32
- permission = atlas
33
- schema = atlas
32
+ package = atlas_rucio_policy_package
33
+ #permission = atlas
34
+ #schema = atlas
34
35
  lfn2pfn_algorithm_default = hash
35
36
  support = hn-atlas-dist-analysis-help@cern.ch
36
37
  support_rucio = https://github.com/rucio/rucio/issues/
@@ -77,7 +77,7 @@ default = sqlite:////tmp/rucio.db
77
77
  #default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
78
78
  #schema=atlas_rucio # only for cern oracle
79
79
  #default = mysql+pymysql://rucio:rucio@localhost/rucio
80
- #default = postgresql://rucio:rucio@localhost/rucio
80
+ #default = postgresql+psycopg://rucio:rucio@localhost/rucio
81
81
  pool_recycle=3600
82
82
  echo=0
83
83
  pool_reset_on_return=rollback
@@ -211,27 +211,11 @@ fts_servers = https://fts3-pilot.cern.ch:8446, https://fts3-devel.cern.ch:8446,
211
211
  cache = /opt/rucio/auditor-cache
212
212
  results = /opt/rucio/auditor-results
213
213
 
214
- [c3po]
215
- placement_algorithm = t2_free_space
216
- elastic_url = http://aianalytics01.cern.ch:9200
217
- redis_host = localhost
218
- redis_port = 6379
219
-
220
- [c3po-popularity]
221
- elastic_url = http://rucio-logger-prod-01.cern.ch:9200
222
-
223
- [c3po-site-mapper]
224
- panda_url = http://atlas-agis-api.cern.ch/request/pandaqueue/query/list/?json
225
- ddm_url = http://atlas-agis-api.cern.ch/request/ddmendpoint/query/list/?json
226
-
227
- [c3po-workload]
228
- panda_url = http://bigpanda.cern.ch/jobs/?category=analysis&jobstatus=running
229
- window = 604800
230
-
231
214
  [policy]
232
- package = ATLASRucioPolicy
215
+ package = atlas_rucio_policy_package
233
216
  permission = atlas
234
217
  schema = atlas
218
+ extract_scope = atlas
235
219
  lfn2pfn_algorithm_default = hash
236
220
  support = hn-atlas-dist-analysis-help@cern.ch
237
221
  support_rucio = https://github.com/rucio/rucio/issues/
@@ -60,7 +60,7 @@ default = sqlite:////tmp/rucio.db
60
60
  #default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
61
61
  #schema=atlas_rucio # only for cern oracle
62
62
  #default = mysql+pymysql://rucio:rucio@localhost/rucio
63
- #default = postgresql://rucio:rucio@localhost/rucio
63
+ #default = postgresql+psycopg://rucio:rucio@localhost/rucio
64
64
  pool_recycle=3600
65
65
  echo=0
66
66
  pool_reset_on_return=rollback
@@ -191,23 +191,6 @@ fts_servers = https://fts3-pilot.cern.ch:8446, https://fts3-devel.cern.ch:8446,
191
191
  cache = /opt/rucio/auditor-cache
192
192
  results = /opt/rucio/auditor-results
193
193
 
194
- [c3po]
195
- placement_algorithm = t2_free_space
196
- elastic_url = http://aianalytics01.cern.ch:9200
197
- redis_host = localhost
198
- redis_port = 6379
199
-
200
- [c3po-popularity]
201
- elastic_url = http://rucio-logger-prod-01.cern.ch:9200
202
-
203
- [c3po-site-mapper]
204
- panda_url = http://atlas-agis-api.cern.ch/request/pandaqueue/query/list/?json
205
- ddm_url = http://atlas-agis-api.cern.ch/request/ddmendpoint/query/list/?json
206
-
207
- [c3po-workload]
208
- panda_url = http://bigpanda.cern.ch/jobs/?category=analysis&jobstatus=running
209
- window = 604800
210
-
211
194
  [policy]
212
195
  #package = GenericMultiVORucioPolicy #doesn't exist
213
196
  permission = generic_multi_vo
@@ -2,50 +2,54 @@
2
2
  # This file is autogenerated by pip-compile with Python 3.9
3
3
  # by the following command:
4
4
  #
5
- # pip-compile requirements.server.in
5
+ # pip-compile --strip-extras requirements.server.in
6
6
  #
7
- aiohttp==3.9.5
7
+ aiohappyeyeballs==2.5.0
8
+ # via aiohttp
9
+ aiohttp==3.11.13
8
10
  # via geoip2
9
- aiosignal==1.3.1
11
+ aiosignal==1.3.2
10
12
  # via aiohttp
11
- alembic==1.13.2
13
+ alembic==1.14.1
12
14
  # via -r requirements.server.in
13
15
  annotated-types==0.7.0
14
16
  # via pydantic
15
- argcomplete==3.4.0
17
+ argcomplete==3.5.3
16
18
  # via -r requirements.server.in
17
- async-timeout==4.0.3
19
+ async-timeout==5.0.1
18
20
  # via
19
21
  # aiohttp
20
22
  # redis
21
- attrs==23.2.0
23
+ attrs==25.1.0
22
24
  # via
23
25
  # aiohttp
24
26
  # jsonschema
25
27
  # referencing
26
- bcrypt==4.1.3
28
+ bcrypt==4.3.0
27
29
  # via paramiko
28
- blinker==1.8.2
30
+ blinker==1.9.0
29
31
  # via flask
30
- boto3==1.34.142
32
+ boto3==1.37.5
31
33
  # via -r requirements.server.in
32
- botocore==1.34.143
34
+ botocore==1.37.7
33
35
  # via
34
36
  # boto3
35
37
  # s3transfer
36
- cachetools==5.3.3
38
+ cachetools==5.5.2
37
39
  # via google-auth
38
- certifi==2024.7.4
39
- # via requests
40
- cffi==1.16.0
40
+ certifi==2025.1.31
41
+ # via
42
+ # elastic-transport
43
+ # requests
44
+ cffi==1.17.1
41
45
  # via
42
46
  # cryptography
43
47
  # pynacl
44
- charset-normalizer==3.3.2
48
+ charset-normalizer==3.4.1
45
49
  # via requests
46
- click==8.1.7
50
+ click==8.1.8
47
51
  # via flask
48
- cryptography==43.0.1
52
+ cryptography==44.0.2
49
53
  # via
50
54
  # globus-sdk
51
55
  # oic
@@ -55,47 +59,49 @@ cryptography==43.0.1
55
59
  # requests-kerberos
56
60
  cx-oracle==8.3.0
57
61
  # via -r requirements.server.in
58
- decorator==5.1.1
62
+ decorator==5.2.1
59
63
  # via
60
64
  # dogpile-cache
61
65
  # gssapi
62
66
  defusedxml==0.7.1
63
67
  # via oic
64
- dnspython==2.6.1
68
+ dnspython==2.7.0
65
69
  # via pymongo
66
70
  docopt==0.6.2
67
71
  # via stomp-py
68
72
  dogpile-cache==1.2.2
69
73
  # via -r requirements.server.in
70
- flask==3.0.3
74
+ elastic-transport==8.17.0
75
+ # via elasticsearch
76
+ elasticsearch==8.15.1
71
77
  # via -r requirements.server.in
72
- frozenlist==1.4.1
78
+ flask==3.1.0
79
+ # via -r requirements.server.in
80
+ frozenlist==1.5.0
73
81
  # via
74
82
  # aiohttp
75
83
  # aiosignal
76
84
  future==1.0.0
77
85
  # via pyjwkest
78
- geoip2==4.8.0
86
+ geoip2==5.0.1
79
87
  # via -r requirements.server.in
80
88
  globus-sdk==3.41.0
81
89
  # via -r requirements.server.in
82
- google-auth==2.32.0
90
+ google-auth==2.38.0
83
91
  # via -r requirements.server.in
84
- greenlet==3.0.3
85
- # via sqlalchemy
86
- gssapi==1.8.3
92
+ gssapi==1.9.0
87
93
  # via pyspnego
88
- idna==3.7
94
+ idna==3.10
89
95
  # via
90
96
  # requests
91
97
  # yarl
92
- importlib-metadata==8.0.0
98
+ importlib-metadata==8.6.1
93
99
  # via flask
94
- isodate==0.6.1
100
+ isodate==0.7.2
95
101
  # via python3-saml
96
102
  itsdangerous==2.2.0
97
103
  # via flask
98
- jinja2==3.1.4
104
+ jinja2==3.1.6
99
105
  # via flask
100
106
  jmespath==1.0.1
101
107
  # via
@@ -103,78 +109,94 @@ jmespath==1.0.1
103
109
  # botocore
104
110
  jsonschema==4.23.0
105
111
  # via -r requirements.server.in
106
- jsonschema-specifications==2023.12.1
112
+ jsonschema-specifications==2024.10.1
107
113
  # via jsonschema
108
114
  kerberos==1.3.1
109
115
  # via -r requirements.server.in
110
- krb5==0.5.1
116
+ krb5==0.7.1
111
117
  # via pyspnego
112
- libtorrent==2.0.9
118
+ libtorrent==2.0.11
113
119
  # via -r requirements.server.in
114
- lxml==5.2.2
120
+ lxml==5.3.1
115
121
  # via
116
122
  # python3-saml
117
123
  # xmlsec
118
- mako==1.3.5
124
+ mako==1.3.9
119
125
  # via
120
126
  # alembic
121
127
  # oic
122
- markupsafe==2.1.5
128
+ markdown-it-py==3.0.0
129
+ # via rich
130
+ markupsafe==3.0.2
123
131
  # via
124
132
  # jinja2
125
133
  # mako
126
134
  # werkzeug
127
- maxminddb==2.6.2
135
+ maxminddb==2.6.3
128
136
  # via geoip2
129
- multidict==6.0.5
137
+ mdurl==0.1.2
138
+ # via markdown-it-py
139
+ multidict==6.1.0
130
140
  # via
131
141
  # aiohttp
132
142
  # yarl
133
143
  oic==1.7.0
134
144
  # via -r requirements.server.in
135
145
  packaging==24.1
136
- # via qbittorrent-api
137
- paramiko==3.4.0
146
+ # via
147
+ # -r requirements.server.in
148
+ # qbittorrent-api
149
+ paramiko==3.5.1
138
150
  # via -r requirements.server.in
139
- pbr==6.0.0
151
+ pbr==6.1.1
140
152
  # via stevedore
141
- prometheus-client==0.20.0
153
+ prometheus-client==0.21.1
142
154
  # via -r requirements.server.in
143
- psycopg2-binary==2.9.9
155
+ propcache==0.3.0
156
+ # via
157
+ # aiohttp
158
+ # yarl
159
+ psycopg==3.2.3 ; implementation_name == "cpython"
144
160
  # via -r requirements.server.in
145
- pyasn1==0.6.0
161
+ psycopg-binary==3.2.3
162
+ # via psycopg
163
+ psycopg-pool==3.2.4
164
+ # via psycopg
165
+ pyasn1==0.6.1
146
166
  # via
147
167
  # pyasn1-modules
148
168
  # rsa
149
- pyasn1-modules==0.4.0
169
+ pyasn1-modules==0.4.1
150
170
  # via google-auth
151
171
  pycparser==2.22
152
172
  # via cffi
153
- pycryptodomex==3.20.0
173
+ pycryptodomex==3.21.0
154
174
  # via
155
175
  # oic
156
176
  # pyjwkest
157
- pydantic==2.8.2
177
+ pydantic==2.10.6
158
178
  # via pydantic-settings
159
- pydantic-core==2.20.1
179
+ pydantic-core==2.27.2
160
180
  # via pydantic
161
- pydantic-settings==2.3.4
181
+ pydantic-settings==2.8.1
162
182
  # via oic
183
+ pygments==2.19.1
184
+ # via rich
163
185
  pyjwkest==1.4.2
164
186
  # via oic
165
- pyjwt[crypto]==2.8.0
187
+ pyjwt==2.10.1
166
188
  # via globus-sdk
167
189
  pykerberos==1.2.4
168
190
  # via -r requirements.server.in
169
191
  pymemcache==4.0.0
170
192
  # via -r requirements.server.in
171
- pymongo==4.8.0
193
+ pymongo==4.11.2
172
194
  # via -r requirements.server.in
173
195
  pymysql==1.1.1
174
196
  # via -r requirements.server.in
175
197
  pynacl==1.5.0
176
198
  # via paramiko
177
- pyspnego[kerberos]==0.11.0
199
+ pyspnego==0.11.2
178
200
  # via requests-kerberos
179
201
  python-dateutil==2.9.0.post0
180
202
  # via
@@ -184,17 +206,17 @@ python-dotenv==1.0.1
184
206
  # via pydantic-settings
185
207
  python-magic==0.4.27
186
208
  # via -r requirements.server.in
187
- python-swiftclient==4.6.0
209
+ python-swiftclient==4.7.0
188
210
  # via -r requirements.server.in
189
211
  python3-saml==1.16.0
190
212
  # via -r requirements.server.in
191
- pyyaml==6.0.1
213
+ pyyaml==6.0.2
192
214
  # via -r requirements.server.in
193
- qbittorrent-api==2023.11.57
215
+ qbittorrent-api==2025.2.0
194
216
  # via -r requirements.server.in
195
- redis==5.0.7
217
+ redis==5.2.1
196
218
  # via -r requirements.server.in
197
- referencing==0.35.1
219
+ referencing==0.36.2
198
220
  # via
199
221
  # jsonschema
200
222
  # jsonschema-specifications
@@ -210,28 +232,29 @@ requests==2.32.3
210
232
  # requests-kerberos
211
233
  requests-kerberos==0.15.0
212
234
  # via -r requirements.server.in
213
- rpds-py==0.19.0
235
+ rich==13.9.4
236
+ # via -r requirements.server.in
237
+ rpds-py==0.23.1
214
238
  # via
215
239
  # jsonschema
216
240
  # referencing
217
241
  rsa==4.9
218
242
  # via google-auth
219
- s3transfer==0.10.2
243
+ s3transfer==0.11.4
220
244
  # via boto3
221
- six==1.16.0
245
+ six==1.17.0
222
246
  # via
223
- # isodate
224
247
  # pyjwkest
225
248
  # python-dateutil
226
- sqlalchemy==2.0.31
249
+ sqlalchemy==2.0.38
227
250
  # via
228
251
  # -r requirements.server.in
229
252
  # alembic
230
253
  statsd==4.0.1
231
254
  # via -r requirements.server.in
232
- stevedore==5.2.0
255
+ stevedore==5.4.1
233
256
  # via dogpile-cache
234
- stomp-py==8.1.2
257
+ stomp-py==8.2.0
235
258
  # via -r requirements.server.in
236
259
  tabulate==0.9.0
237
260
  # via -r requirements.server.in
@@ -240,18 +263,24 @@ typing-extensions==4.12.2
240
263
  # alembic
241
264
  # dogpile-cache
242
265
  # globus-sdk
266
+ # multidict
267
+ # psycopg
268
+ # psycopg-pool
243
269
  # pydantic
244
270
  # pydantic-core
271
+ # referencing
272
+ # rich
245
273
  # sqlalchemy
246
274
  urllib3==1.26.19
247
275
  # via
248
276
  # -r requirements.server.in
249
277
  # botocore
278
+ # elastic-transport
250
279
  # qbittorrent-api
251
280
  # requests
252
281
  websocket-client==1.8.0
253
282
  # via stomp-py
254
- werkzeug==3.0.3
283
+ werkzeug==3.1.3
255
284
  # via
256
285
  # -r requirements.server.in
257
286
  # flask
@@ -259,9 +288,9 @@ xmlsec==1.3.13
259
288
  # via
260
289
  # -r requirements.server.in
261
290
  # python3-saml
262
- yarl==1.9.4
291
+ yarl==1.18.3
263
292
  # via aiohttp
264
- zipp==3.19.2
293
+ zipp==3.21.0
265
294
  # via importlib-metadata
266
295
 
267
296
  # The following packages are considered to be unsafe in a requirements file: