rucio 34.6.0__tar.gz → 35.0.0__tar.gz

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 (596) hide show
  1. {rucio-34.6.0 → rucio-35.0.0}/AUTHORS.rst +2 -0
  2. {rucio-34.6.0 → rucio-35.0.0}/MANIFEST.in +1 -1
  3. rucio-35.0.0/PKG-INFO +62 -0
  4. rucio-35.0.0/README.md +27 -0
  5. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio +34 -0
  6. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-admin +8 -8
  7. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-replica-recoverer +2 -2
  8. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/alembicrevision.py +1 -1
  9. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/baseclient.py +60 -49
  10. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/didclient.py +2 -2
  11. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/downloadclient.py +81 -23
  12. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/subscriptionclient.py +2 -2
  13. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/uploadclient.py +127 -65
  14. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/constants.py +3 -0
  15. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/exception.py +10 -0
  16. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/plugins.py +5 -1
  17. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/atlas.py +6 -3
  18. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/belleii.py +6 -3
  19. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/domatpc.py +6 -3
  20. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/escape.py +6 -3
  21. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/generic.py +6 -3
  22. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/generic_multi_vo.py +6 -3
  23. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/icecube.py +6 -3
  24. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/types.py +90 -1
  25. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/utils.py +66 -66
  26. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/account_counter.py +31 -5
  27. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/account_limit.py +88 -21
  28. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/config.py +92 -21
  29. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/credential.py +8 -1
  30. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did.py +402 -307
  31. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did_meta_plugins/json_meta.py +29 -4
  32. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +20 -2
  33. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/dirac.py +30 -6
  34. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/distance.py +53 -30
  35. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/heartbeat.py +92 -45
  36. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/importer.py +8 -1
  37. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/lifetime_exception.py +18 -19
  38. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/lock.py +208 -117
  39. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/message.py +77 -36
  40. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/meta_conventions.py +19 -16
  41. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/naming_convention.py +20 -11
  42. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/oidc.py +8 -3
  43. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/quarantined_replica.py +82 -49
  44. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/replica.py +1174 -695
  45. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/replica_sorter.py +7 -8
  46. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/request.py +196 -166
  47. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/rse.py +42 -49
  48. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/rse_counter.py +47 -15
  49. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/rule_grouping.py +99 -30
  50. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/scope.py +48 -20
  51. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/subscription.py +67 -24
  52. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/transfer.py +2 -2
  53. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/vo.py +25 -5
  54. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/volatile_replica.py +52 -22
  55. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/bb8/common.py +80 -106
  56. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +11 -5
  57. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +11 -4
  58. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/collectors/free_space.py +15 -4
  59. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/common.py +40 -15
  60. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +34 -34
  61. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/storage/consistency/actions.py +11 -2
  62. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/tracer/kronos.py +2 -2
  63. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +20 -11
  64. rucio-35.0.0/lib/rucio/db/sqla/migrate_repo/versions/b0070f3695c8_add_deletedidmeta_table.py +57 -0
  65. rucio-35.0.0/lib/rucio/db/sqla/migrate_repo/versions/b5493606bbf5_fix_primary_key_for_subscription_history.py +41 -0
  66. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/models.py +30 -131
  67. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/session.py +57 -31
  68. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/account.py +115 -41
  69. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/account_limit.py +11 -11
  70. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/authentication.py +106 -32
  71. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/config.py +1 -1
  72. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/credential.py +15 -3
  73. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/did.py +347 -141
  74. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/dirac.py +14 -4
  75. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/exporter.py +1 -1
  76. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/heartbeat.py +1 -1
  77. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/identity.py +62 -18
  78. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/importer.py +1 -1
  79. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/lifetime_exception.py +35 -9
  80. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/lock.py +34 -11
  81. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/meta_conventions.py +1 -1
  82. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/quarantined_replica.py +13 -3
  83. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/replica.py +8 -8
  84. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/request.py +11 -10
  85. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/rse.py +5 -5
  86. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/rule.py +8 -8
  87. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/scope.py +21 -9
  88. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/subscription.py +64 -41
  89. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/vo.py +1 -1
  90. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/fts3.py +60 -10
  91. rucio-35.0.0/lib/rucio/vcsversion.py +11 -0
  92. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +1 -1
  93. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +5 -5
  94. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +1 -1
  95. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +6 -6
  96. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/common.py +2 -2
  97. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/config.py +1 -1
  98. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +1 -1
  99. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +24 -24
  100. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +1 -1
  101. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/export.py +1 -1
  102. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +1 -1
  103. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +1 -1
  104. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/import.py +1 -1
  105. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +1 -1
  106. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +1 -1
  107. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +1 -1
  108. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +4 -4
  109. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +25 -13
  110. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +8 -1
  111. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +19 -19
  112. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +13 -13
  113. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +1 -1
  114. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +14 -6
  115. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +1 -1
  116. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio.egg-info/SOURCES.txt +29 -27
  117. rucio-35.0.0/requirements/requirements.server.txt +268 -0
  118. {rucio-34.6.0 → rucio-35.0.0}/setup.py +2 -2
  119. {rucio-34.6.0 → rucio-35.0.0}/setuputil.py +19 -12
  120. {rucio-34.6.0 → rucio-35.0.0}/tests/test_account.py +2 -2
  121. {rucio-34.6.0 → rucio-35.0.0}/tests/test_authentication.py +4 -4
  122. {rucio-34.6.0 → rucio-35.0.0}/tests/test_bad_replica.py +3 -3
  123. {rucio-34.6.0 → rucio-35.0.0}/tests/test_bin_rucio.py +18 -3
  124. {rucio-34.6.0 → rucio-35.0.0}/tests/test_clients.py +10 -2
  125. {rucio-34.6.0 → rucio-35.0.0}/tests/test_did.py +4 -4
  126. {rucio-34.6.0 → rucio-35.0.0}/tests/test_did_meta_plugins.py +18 -8
  127. rucio-34.6.0/tests/test_api_external_representation.py → rucio-35.0.0/tests/test_gateway_external_representation.py +57 -57
  128. {rucio-34.6.0 → rucio-35.0.0}/tests/test_lifetime.py +3 -0
  129. {rucio-34.6.0 → rucio-35.0.0}/tests/test_multi_vo.py +26 -26
  130. {rucio-34.6.0 → rucio-35.0.0}/tests/test_permission.py +3 -3
  131. {rucio-34.6.0 → rucio-35.0.0}/tests/test_reaper.py +18 -18
  132. {rucio-34.6.0 → rucio-35.0.0}/tests/test_replica.py +3 -3
  133. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rule.py +5 -5
  134. {rucio-34.6.0 → rucio-35.0.0}/tests/test_subscription.py +57 -9
  135. rucio-34.6.0/PKG-INFO +0 -73
  136. rucio-34.6.0/README.rst +0 -29
  137. rucio-34.6.0/lib/rucio/vcsversion.py +0 -11
  138. rucio-34.6.0/requirements.txt +0 -58
  139. {rucio-34.6.0 → rucio-35.0.0}/ChangeLog +0 -0
  140. {rucio-34.6.0 → rucio-35.0.0}/LICENSE +0 -0
  141. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-abacus-account +0 -0
  142. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-abacus-collection-replica +0 -0
  143. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-abacus-rse +0 -0
  144. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-atropos +0 -0
  145. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-auditor +0 -0
  146. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-automatix +0 -0
  147. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-bb8 +0 -0
  148. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-c3po +0 -0
  149. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-cache-client +0 -0
  150. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-cache-consumer +0 -0
  151. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-conveyor-finisher +0 -0
  152. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-conveyor-poller +0 -0
  153. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-conveyor-preparer +0 -0
  154. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-conveyor-receiver +0 -0
  155. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-conveyor-stager +0 -0
  156. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-conveyor-submitter +0 -0
  157. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-conveyor-throttler +0 -0
  158. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-dark-reaper +0 -0
  159. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-dumper +0 -0
  160. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-follower +0 -0
  161. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-hermes +0 -0
  162. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-judge-cleaner +0 -0
  163. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-judge-evaluator +0 -0
  164. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-judge-injector +0 -0
  165. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-judge-repairer +0 -0
  166. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-kronos +0 -0
  167. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-minos +0 -0
  168. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-minos-temporary-expiration +0 -0
  169. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-necromancer +0 -0
  170. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-oauth-manager +0 -0
  171. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-reaper +0 -0
  172. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-rse-decommissioner +0 -0
  173. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-storage-consistency-actions +0 -0
  174. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-transmogrifier +0 -0
  175. {rucio-34.6.0 → rucio-35.0.0}/bin/rucio-undertaker +0 -0
  176. {rucio-34.6.0 → rucio-35.0.0}/etc/alembic.ini.template +0 -0
  177. {rucio-34.6.0 → rucio-35.0.0}/etc/alembic_offline.ini.template +0 -0
  178. {rucio-34.6.0 → rucio-35.0.0}/etc/globus-config.yml.template +0 -0
  179. {rucio-34.6.0 → rucio-35.0.0}/etc/ldap.cfg.template +0 -0
  180. {rucio-34.6.0 → rucio-35.0.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
  181. {rucio-34.6.0 → rucio-35.0.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
  182. {rucio-34.6.0 → rucio-35.0.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
  183. {rucio-34.6.0 → rucio-35.0.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
  184. {rucio-34.6.0 → rucio-35.0.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
  185. {rucio-34.6.0 → rucio-35.0.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
  186. {rucio-34.6.0 → rucio-35.0.0}/etc/rse-accounts.cfg.template +0 -0
  187. {rucio-34.6.0 → rucio-35.0.0}/etc/rucio.cfg.atlas.client.template +0 -0
  188. {rucio-34.6.0 → rucio-35.0.0}/etc/rucio.cfg.template +0 -0
  189. {rucio-34.6.0 → rucio-35.0.0}/etc/rucio_multi_vo.cfg.template +0 -0
  190. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/__init__.py +0 -0
  191. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/__init__.py +0 -0
  192. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/accountclient.py +0 -0
  193. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/accountlimitclient.py +0 -0
  194. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/client.py +0 -0
  195. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/configclient.py +0 -0
  196. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/credentialclient.py +0 -0
  197. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/diracclient.py +0 -0
  198. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/exportclient.py +0 -0
  199. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/fileclient.py +0 -0
  200. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/importclient.py +0 -0
  201. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/lifetimeclient.py +0 -0
  202. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/lockclient.py +0 -0
  203. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/metaconventionsclient.py +0 -0
  204. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/pingclient.py +0 -0
  205. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/replicaclient.py +0 -0
  206. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/requestclient.py +0 -0
  207. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/rseclient.py +0 -0
  208. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/ruleclient.py +0 -0
  209. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/scopeclient.py +0 -0
  210. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/client/touchclient.py +0 -0
  211. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/common}/__init__.py +0 -0
  212. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/cache.py +0 -0
  213. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/config.py +0 -0
  214. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/constraints.py +0 -0
  215. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/didtype.py +0 -0
  216. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/dumper/__init__.py +0 -0
  217. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/dumper/consistency.py +0 -0
  218. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/dumper/data_models.py +0 -0
  219. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
  220. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/extra.py +0 -0
  221. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/logging.py +0 -0
  222. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/pcache.py +0 -0
  223. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/policy.py +0 -0
  224. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/schema/__init__.py +0 -0
  225. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/stomp_utils.py +0 -0
  226. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/stopwatch.py +0 -0
  227. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/common/test_rucio_server.py +0 -0
  228. {rucio-34.6.0/lib/rucio/common → rucio-35.0.0/lib/rucio/core}/__init__.py +0 -0
  229. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/account.py +0 -0
  230. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/authentication.py +0 -0
  231. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did_meta_plugins/__init__.py +0 -0
  232. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +0 -0
  233. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +0 -0
  234. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +0 -0
  235. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +0 -0
  236. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/exporter.py +0 -0
  237. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/identity.py +0 -0
  238. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/monitor.py +0 -0
  239. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/nongrid_trace.py +0 -0
  240. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/permission/__init__.py +0 -0
  241. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/permission/atlas.py +0 -0
  242. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/permission/belleii.py +0 -0
  243. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/permission/escape.py +0 -0
  244. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/permission/generic.py +0 -0
  245. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/permission/generic_multi_vo.py +0 -0
  246. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/rse_expression_parser.py +0 -0
  247. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/rse_selector.py +0 -0
  248. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/rule.py +0 -0
  249. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/topology.py +0 -0
  250. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/core/trace.py +0 -0
  251. {rucio-34.6.0/lib/rucio/core → rucio-35.0.0/lib/rucio/daemons}/__init__.py +0 -0
  252. {rucio-34.6.0/lib/rucio/daemons → rucio-35.0.0/lib/rucio/daemons/abacus}/__init__.py +0 -0
  253. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/abacus/account.py +0 -0
  254. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
  255. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/abacus/rse.py +0 -0
  256. {rucio-34.6.0/lib/rucio/daemons/abacus → rucio-35.0.0/lib/rucio/daemons/atropos}/__init__.py +0 -0
  257. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/atropos/atropos.py +0 -0
  258. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/auditor/__init__.py +0 -0
  259. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
  260. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/auditor/srmdumps.py +0 -0
  261. {rucio-34.6.0/lib/rucio/daemons/atropos → rucio-35.0.0/lib/rucio/daemons/automatix}/__init__.py +0 -0
  262. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/automatix/automatix.py +0 -0
  263. {rucio-34.6.0/lib/rucio/daemons/automatix → rucio-35.0.0/lib/rucio/daemons/badreplicas}/__init__.py +0 -0
  264. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/badreplicas/minos.py +0 -0
  265. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
  266. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
  267. {rucio-34.6.0/lib/rucio/daemons/badreplicas → rucio-35.0.0/lib/rucio/daemons/bb8}/__init__.py +0 -0
  268. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/bb8/bb8.py +0 -0
  269. {rucio-34.6.0/lib/rucio/daemons/bb8 → rucio-35.0.0/lib/rucio/daemons/c3po}/__init__.py +0 -0
  270. {rucio-34.6.0/lib/rucio/daemons/c3po → rucio-35.0.0/lib/rucio/daemons/c3po/algorithms}/__init__.py +0 -0
  271. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
  272. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
  273. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
  274. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -0
  275. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/c3po.py +0 -0
  276. {rucio-34.6.0/lib/rucio/daemons/c3po/algorithms → rucio-35.0.0/lib/rucio/daemons/c3po/collectors}/__init__.py +0 -0
  277. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
  278. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
  279. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/collectors/mock_did.py +0 -0
  280. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
  281. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
  282. {rucio-34.6.0/lib/rucio/daemons/c3po/collectors → rucio-35.0.0/lib/rucio/daemons/c3po/utils}/__init__.py +0 -0
  283. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
  284. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
  285. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
  286. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
  287. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
  288. {rucio-34.6.0/lib/rucio/daemons/c3po/utils → rucio-35.0.0/lib/rucio/daemons/cache}/__init__.py +0 -0
  289. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/cache/consumer.py +0 -0
  290. {rucio-34.6.0/lib/rucio/daemons/cache → rucio-35.0.0/lib/rucio/daemons/conveyor}/__init__.py +0 -0
  291. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/common.py +0 -0
  292. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/finisher.py +0 -0
  293. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/poller.py +0 -0
  294. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/preparer.py +0 -0
  295. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/receiver.py +0 -0
  296. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/stager.py +0 -0
  297. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/submitter.py +0 -0
  298. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/conveyor/throttler.py +0 -0
  299. {rucio-34.6.0/lib/rucio/daemons/conveyor → rucio-35.0.0/lib/rucio/daemons/follower}/__init__.py +0 -0
  300. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/follower/follower.py +0 -0
  301. {rucio-34.6.0/lib/rucio/daemons/follower → rucio-35.0.0/lib/rucio/daemons/hermes}/__init__.py +0 -0
  302. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/hermes/hermes.py +0 -0
  303. {rucio-34.6.0/lib/rucio/daemons/hermes → rucio-35.0.0/lib/rucio/daemons/judge}/__init__.py +0 -0
  304. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/judge/cleaner.py +0 -0
  305. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/judge/evaluator.py +0 -0
  306. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/judge/injector.py +0 -0
  307. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/judge/repairer.py +0 -0
  308. {rucio-34.6.0/lib/rucio/daemons/judge → rucio-35.0.0/lib/rucio/daemons/oauthmanager}/__init__.py +0 -0
  309. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
  310. {rucio-34.6.0/lib/rucio/daemons/oauthmanager → rucio-35.0.0/lib/rucio/daemons/reaper}/__init__.py +0 -0
  311. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/reaper/dark_reaper.py +0 -0
  312. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/reaper/reaper.py +0 -0
  313. {rucio-34.6.0/lib/rucio/daemons/reaper → rucio-35.0.0/lib/rucio/daemons/replicarecoverer}/__init__.py +0 -0
  314. {rucio-34.6.0/lib/rucio/daemons/replicarecoverer → rucio-35.0.0/lib/rucio/daemons/rsedecommissioner}/__init__.py +0 -0
  315. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
  316. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
  317. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
  318. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
  319. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
  320. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
  321. {rucio-34.6.0/lib/rucio/daemons/rsedecommissioner → rucio-35.0.0/lib/rucio/daemons/storage}/__init__.py +0 -0
  322. {rucio-34.6.0/lib/rucio/daemons/storage → rucio-35.0.0/lib/rucio/daemons/storage/consistency}/__init__.py +0 -0
  323. {rucio-34.6.0/lib/rucio/daemons/storage/consistency → rucio-35.0.0/lib/rucio/daemons/tracer}/__init__.py +0 -0
  324. {rucio-34.6.0/lib/rucio/daemons/tracer → rucio-35.0.0/lib/rucio/daemons/transmogrifier}/__init__.py +0 -0
  325. {rucio-34.6.0/lib/rucio/daemons/transmogrifier → rucio-35.0.0/lib/rucio/daemons/undertaker}/__init__.py +0 -0
  326. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
  327. {rucio-34.6.0/lib/rucio/daemons/undertaker → rucio-35.0.0/lib/rucio/db}/__init__.py +0 -0
  328. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/__init__.py +0 -0
  329. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/constants.py +0 -0
  330. {rucio-34.6.0/lib/rucio/db → rucio-35.0.0/lib/rucio/db/sqla/migrate_repo}/__init__.py +0 -0
  331. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
  332. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
  333. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
  334. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
  335. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
  336. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
  337. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
  338. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
  339. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
  340. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
  341. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
  342. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
  343. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
  344. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
  345. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
  346. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
  347. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
  348. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
  349. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
  350. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
  351. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
  352. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
  353. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
  354. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
  355. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
  356. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
  357. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
  358. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
  359. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
  360. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
  361. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
  362. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
  363. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
  364. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
  365. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
  366. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
  367. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
  368. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
  369. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
  370. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
  371. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
  372. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
  373. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
  374. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
  375. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
  376. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
  377. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
  378. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
  379. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
  380. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
  381. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
  382. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
  383. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
  384. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
  385. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
  386. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
  387. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
  388. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
  389. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
  390. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
  391. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
  392. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
  393. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
  394. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
  395. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
  396. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
  397. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
  398. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
  399. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
  400. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
  401. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
  402. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
  403. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
  404. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
  405. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
  406. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
  407. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
  408. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
  409. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
  410. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
  411. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
  412. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
  413. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
  414. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
  415. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
  416. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
  417. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
  418. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
  419. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
  420. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
  421. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
  422. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
  423. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
  424. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
  425. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
  426. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
  427. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
  428. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
  429. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
  430. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
  431. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
  432. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
  433. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
  434. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
  435. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
  436. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
  437. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
  438. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
  439. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
  440. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
  441. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
  442. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
  443. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
  444. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
  445. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
  446. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
  447. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
  448. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
  449. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
  450. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
  451. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
  452. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
  453. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
  454. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
  455. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
  456. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
  457. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
  458. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/sautils.py +0 -0
  459. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/types.py +0 -0
  460. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/db/sqla/util.py +0 -0
  461. {rucio-34.6.0/lib/rucio/db/sqla/migrate_repo → rucio-35.0.0/lib/rucio/gateway}/__init__.py +0 -0
  462. {rucio-34.6.0/lib/rucio/api → rucio-35.0.0/lib/rucio/gateway}/permission.py +0 -0
  463. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/__init__.py +0 -0
  464. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/__init__.py +0 -0
  465. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
  466. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/cache.py +0 -0
  467. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/dummy.py +0 -0
  468. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/gfal.py +0 -0
  469. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/globus.py +0 -0
  470. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/gsiftp.py +0 -0
  471. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
  472. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/mock.py +0 -0
  473. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
  474. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/posix.py +0 -0
  475. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/protocol.py +0 -0
  476. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/rclone.py +0 -0
  477. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/rfio.py +0 -0
  478. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/srm.py +0 -0
  479. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/ssh.py +0 -0
  480. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/storm.py +0 -0
  481. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/webdav.py +0 -0
  482. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
  483. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/rse/rsemanager.py +0 -0
  484. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/tests/__init__.py +0 -0
  485. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/tests/common.py +0 -0
  486. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/tests/common_server.py +0 -0
  487. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/__init__.py +0 -0
  488. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/bittorrent.py +0 -0
  489. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
  490. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
  491. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/fts3_plugins.py +0 -0
  492. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/globus.py +0 -0
  493. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/globus_library.py +0 -0
  494. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/mock.py +0 -0
  495. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/transfertool/transfertool.py +0 -0
  496. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/version.py +0 -0
  497. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/__init__.py +0 -0
  498. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/__init__.py +0 -0
  499. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
  500. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
  501. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
  502. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/main.py +0 -0
  503. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
  504. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
  505. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
  506. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
  507. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
  508. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
  509. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/main.py +0 -0
  510. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/metrics.py +0 -0
  511. {rucio-34.6.0 → rucio-35.0.0}/lib/rucio/web/rest/ping.py +0 -0
  512. {rucio-34.6.0 → rucio-35.0.0}/pylintrc +0 -0
  513. {rucio-34.6.0 → rucio-35.0.0}/pyproject.toml +0 -0
  514. {rucio-34.6.0 → rucio-35.0.0}/setup.cfg +0 -0
  515. {rucio-34.6.0 → rucio-35.0.0}/tests/test_abacus_account.py +0 -0
  516. {rucio-34.6.0 → rucio-35.0.0}/tests/test_abacus_collection_replica.py +0 -0
  517. {rucio-34.6.0 → rucio-35.0.0}/tests/test_abacus_rse.py +0 -0
  518. {rucio-34.6.0 → rucio-35.0.0}/tests/test_account_limits.py +0 -0
  519. {rucio-34.6.0 → rucio-35.0.0}/tests/test_archive.py +0 -0
  520. {rucio-34.6.0 → rucio-35.0.0}/tests/test_auditor.py +0 -0
  521. {rucio-34.6.0 → rucio-35.0.0}/tests/test_auditor_hdfs.py +0 -0
  522. {rucio-34.6.0 → rucio-35.0.0}/tests/test_auditor_srmdumps.py +0 -0
  523. {rucio-34.6.0 → rucio-35.0.0}/tests/test_automatix.py +0 -0
  524. {rucio-34.6.0 → rucio-35.0.0}/tests/test_bb8.py +0 -0
  525. {rucio-34.6.0 → rucio-35.0.0}/tests/test_belleii.py +0 -0
  526. {rucio-34.6.0 → rucio-35.0.0}/tests/test_boolean.py +0 -0
  527. {rucio-34.6.0 → rucio-35.0.0}/tests/test_common_types.py +0 -0
  528. {rucio-34.6.0 → rucio-35.0.0}/tests/test_config.py +0 -0
  529. {rucio-34.6.0 → rucio-35.0.0}/tests/test_conveyor.py +0 -0
  530. {rucio-34.6.0 → rucio-35.0.0}/tests/test_conveyor_submitter.py +0 -0
  531. {rucio-34.6.0 → rucio-35.0.0}/tests/test_counter.py +0 -0
  532. {rucio-34.6.0 → rucio-35.0.0}/tests/test_credential.py +0 -0
  533. {rucio-34.6.0 → rucio-35.0.0}/tests/test_curl.py +0 -0
  534. {rucio-34.6.0 → rucio-35.0.0}/tests/test_daemons.py +0 -0
  535. {rucio-34.6.0 → rucio-35.0.0}/tests/test_dataset_replicas.py +0 -0
  536. {rucio-34.6.0 → rucio-35.0.0}/tests/test_db.py +0 -0
  537. {rucio-34.6.0 → rucio-35.0.0}/tests/test_didtype.py +0 -0
  538. {rucio-34.6.0 → rucio-35.0.0}/tests/test_download.py +0 -0
  539. {rucio-34.6.0 → rucio-35.0.0}/tests/test_dumper.py +0 -0
  540. {rucio-34.6.0 → rucio-35.0.0}/tests/test_dumper_consistency.py +0 -0
  541. {rucio-34.6.0 → rucio-35.0.0}/tests/test_dumper_data_model.py +0 -0
  542. {rucio-34.6.0 → rucio-35.0.0}/tests/test_dumper_path_parsing.py +0 -0
  543. {rucio-34.6.0 → rucio-35.0.0}/tests/test_filter_engine.py +0 -0
  544. {rucio-34.6.0 → rucio-35.0.0}/tests/test_heartbeat.py +0 -0
  545. {rucio-34.6.0 → rucio-35.0.0}/tests/test_hermes.py +0 -0
  546. {rucio-34.6.0 → rucio-35.0.0}/tests/test_identity.py +0 -0
  547. {rucio-34.6.0 → rucio-35.0.0}/tests/test_impl_upload_download.py +0 -0
  548. {rucio-34.6.0 → rucio-35.0.0}/tests/test_import_export.py +0 -0
  549. {rucio-34.6.0 → rucio-35.0.0}/tests/test_judge_cleaner.py +0 -0
  550. {rucio-34.6.0 → rucio-35.0.0}/tests/test_judge_evaluator.py +0 -0
  551. {rucio-34.6.0 → rucio-35.0.0}/tests/test_judge_injector.py +0 -0
  552. {rucio-34.6.0 → rucio-35.0.0}/tests/test_judge_repairer.py +0 -0
  553. {rucio-34.6.0 → rucio-35.0.0}/tests/test_message.py +0 -0
  554. {rucio-34.6.0 → rucio-35.0.0}/tests/test_meta_conventions.py +0 -0
  555. {rucio-34.6.0 → rucio-35.0.0}/tests/test_meta_did.py +0 -0
  556. {rucio-34.6.0 → rucio-35.0.0}/tests/test_module_import.py +0 -0
  557. {rucio-34.6.0 → rucio-35.0.0}/tests/test_monitor.py +0 -0
  558. {rucio-34.6.0 → rucio-35.0.0}/tests/test_naming_convention.py +0 -0
  559. {rucio-34.6.0 → rucio-35.0.0}/tests/test_oauthmanager.py +0 -0
  560. {rucio-34.6.0 → rucio-35.0.0}/tests/test_oidc.py +0 -0
  561. {rucio-34.6.0 → rucio-35.0.0}/tests/test_pfns.py +0 -0
  562. {rucio-34.6.0 → rucio-35.0.0}/tests/test_ping.py +0 -0
  563. {rucio-34.6.0 → rucio-35.0.0}/tests/test_preparer.py +0 -0
  564. {rucio-34.6.0 → rucio-35.0.0}/tests/test_qos.py +0 -0
  565. {rucio-34.6.0 → rucio-35.0.0}/tests/test_quarantined_replica.py +0 -0
  566. {rucio-34.6.0 → rucio-35.0.0}/tests/test_redirect.py +0 -0
  567. {rucio-34.6.0 → rucio-35.0.0}/tests/test_replica_recoverer.py +0 -0
  568. {rucio-34.6.0 → rucio-35.0.0}/tests/test_replica_sorting.py +0 -0
  569. {rucio-34.6.0 → rucio-35.0.0}/tests/test_request.py +0 -0
  570. {rucio-34.6.0 → rucio-35.0.0}/tests/test_root_proxy.py +0 -0
  571. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse.py +0 -0
  572. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_expression_parser.py +0 -0
  573. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_lfn2path.py +0 -0
  574. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_gfal2.py +0 -0
  575. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  576. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_posix.py +0 -0
  577. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_rclone.py +0 -0
  578. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_rsync.py +0 -0
  579. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_srm.py +0 -0
  580. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_ssh.py +0 -0
  581. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_webdav.py +0 -0
  582. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_protocol_xrootd.py +0 -0
  583. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rse_selector.py +0 -0
  584. {rucio-34.6.0 → rucio-35.0.0}/tests/test_rucio_server.py +0 -0
  585. {rucio-34.6.0 → rucio-35.0.0}/tests/test_scope.py +0 -0
  586. {rucio-34.6.0 → rucio-35.0.0}/tests/test_throttler.py +0 -0
  587. {rucio-34.6.0 → rucio-35.0.0}/tests/test_tpc.py +0 -0
  588. {rucio-34.6.0 → rucio-35.0.0}/tests/test_trace.py +0 -0
  589. {rucio-34.6.0 → rucio-35.0.0}/tests/test_transfer.py +0 -0
  590. {rucio-34.6.0 → rucio-35.0.0}/tests/test_transfer_plugins.py +0 -0
  591. {rucio-34.6.0 → rucio-35.0.0}/tests/test_undertaker.py +0 -0
  592. {rucio-34.6.0 → rucio-35.0.0}/tests/test_upload.py +0 -0
  593. {rucio-34.6.0 → rucio-35.0.0}/tests/test_utils.py +0 -0
  594. {rucio-34.6.0 → rucio-35.0.0}/tools/bootstrap.py +0 -0
  595. {rucio-34.6.0 → rucio-35.0.0}/tools/merge_rucio_configs.py +0 -0
  596. {rucio-34.6.0 → rucio-35.0.0}/tools/reset_database.py +0 -0
@@ -66,6 +66,7 @@ Individual contributors to the source code
66
66
  - Jensen Zhang <hack@jensen-zhang.site>, 2022
67
67
  - Aksel Lunde Aase <aksel.lunde.aase@gmail.com>, 2022
68
68
  - Elena Gazzarrini <gazzarrini.elena@gmail.com>, 2022-2023
69
+ - Maximilian Linhoff, <maximilian.linhoff@tu-dortmund.de>, 2024
69
70
 
70
71
  Organisations employing contributors
71
72
  ------------------------------------
@@ -93,3 +94,4 @@ Organisations employing contributors
93
94
  - Imperial College London (UK)
94
95
  - University of Chicago (USA)
95
96
  - Purdue University (USA)
97
+ - TU Dortmund University (Germany)
@@ -7,7 +7,7 @@ include setuputil.py
7
7
  include setup.py
8
8
  include setup.cfg
9
9
  include pyproject.toml
10
- include requirements.txt
10
+ include requirements/requirements.server.txt
11
11
  include lib/rucio/db/migrate_repo/script.py.mako
12
12
  include etc/rse-accounts.cfg.template
13
13
  include etc/rucio.cfg.atlas.client.template
rucio-35.0.0/PKG-INFO ADDED
@@ -0,0 +1,62 @@
1
+ Metadata-Version: 2.1
2
+ Name: rucio
3
+ Version: 35.0.0
4
+ Summary: Rucio Package
5
+ Home-page: https://rucio.cern.ch/
6
+ Author: Rucio
7
+ Author-email: rucio-dev@cern.ch
8
+ License: Apache License, Version 2.0
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Intended Audience :: Information Technology
12
+ Classifier: Intended Audience :: System Administrators
13
+ Classifier: Operating System :: POSIX :: Linux
14
+ Classifier: Natural Language :: English
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Environment :: No Input/Output (Daemon)
20
+ Requires-Python: >=3.9, <4
21
+ License-File: LICENSE
22
+ License-File: AUTHORS.rst
23
+ Requires-Dist: alembic==1.13.2
24
+ Requires-Dist: argcomplete==3.4.0
25
+ Requires-Dist: boto3==1.34.142
26
+ Requires-Dist: dogpile-cache==1.2.2
27
+ Requires-Dist: flask==3.0.3
28
+ Requires-Dist: geoip2==4.8.0
29
+ Requires-Dist: google-auth==2.32.0
30
+ Requires-Dist: jsonschema==4.23.0
31
+ Requires-Dist: oic==1.7.0
32
+ Requires-Dist: paramiko==3.4.0
33
+ Requires-Dist: prometheus-client==0.20.0
34
+ Requires-Dist: pymemcache==4.0.0
35
+ Requires-Dist: python-dateutil==2.9.0.post0
36
+ Requires-Dist: python-magic==0.4.27
37
+ Requires-Dist: redis==5.0.7
38
+ Requires-Dist: requests==2.32.3
39
+ Requires-Dist: sqlalchemy==2.0.31
40
+ Requires-Dist: statsd==4.0.1
41
+ Requires-Dist: stomp-py==8.1.2
42
+ Requires-Dist: tabulate==0.9.0
43
+ Requires-Dist: urllib3==1.26.19
44
+ Provides-Extra: oracle
45
+ Requires-Dist: cx-oracle==8.3.0; extra == "oracle"
46
+ Provides-Extra: mongo
47
+ Requires-Dist: pymongo==4.8.0; extra == "mongo"
48
+ Provides-Extra: postgresql
49
+ Requires-Dist: psycopg2-binary==2.9.9; extra == "postgresql"
50
+ Provides-Extra: mysql
51
+ Requires-Dist: pymysql==1.1.1; extra == "mysql"
52
+ Provides-Extra: kerberos
53
+ Requires-Dist: kerberos==1.3.1; extra == "kerberos"
54
+ Requires-Dist: pykerberos==1.2.4; extra == "kerberos"
55
+ Requires-Dist: requests-kerberos==0.15.0; extra == "kerberos"
56
+ Provides-Extra: globus
57
+ Requires-Dist: globus-sdk==3.41.0; extra == "globus"
58
+ Requires-Dist: pyyaml==6.0.1; extra == "globus"
59
+ Provides-Extra: saml
60
+ Requires-Dist: python3-saml==1.16.0; extra == "saml"
61
+ Provides-Extra: dev
62
+ Requires-Dist: pyyaml==6.0.1; extra == "dev"
rucio-35.0.0/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # Rucio - Scientific Data Management
2
+
3
+ Rucio is a software framework that provides functionality to organize, manage, and access large volumes of scientific data using customisable policies.
4
+ The data can be spread across globally distributed locations and across heterogeneous data centers, uniting different storage and network technologies as a single federated entity.
5
+ Rucio offers advanced features such as distributed data recovery or adaptive replication, and is highly scalable, modular, and extensible.
6
+ Rucio has been originally developed to meet the requirements of the high-energy physics experiment ATLAS, and is continuously extended to support LHC experiments and other diverse scientific communities.
7
+
8
+ ## Documentation
9
+
10
+ General information, API/REST description and guides can be found in our [documentation](https://rucio.cern.ch/documentation) or on our [webpage](https://rucio.cern.ch).
11
+
12
+ ## Try it out
13
+
14
+ We provide a [dockerized environment](https://github.com/rucio/rucio/tree/master/etc/docker/dev) which serves both as a demo environment and a development environment.
15
+ It includes all the necessary preconfigured components for multiple storage and transfers developments.
16
+
17
+ ## Developers
18
+
19
+ For information on how to contribute to Rucio, please refer and follow our [CONTRIBUTING](https://rucio.cern.ch/documentation/contributing) guidelines. We strongly recommend to use the [dockerized environment](https://github.com/rucio/rucio/tree/master/etc/docker/dev) for development.
20
+
21
+ ## Operators
22
+
23
+ To learn how to deploy and configure Rucio, consult the [documentation](https://rucio.cern.ch/documentation) available online.
24
+
25
+ ## Getting Support
26
+
27
+ If you are looking for support, please contact us via one of our [official channels](https://rucio.cern.ch/documentation/contact_us/).
@@ -30,6 +30,7 @@ from configparser import NoOptionError, NoSectionError
30
30
  from copy import deepcopy
31
31
  from datetime import datetime
32
32
  from functools import wraps
33
+ from typing import Optional
33
34
 
34
35
  from tabulate import tabulate
35
36
 
@@ -1079,6 +1080,24 @@ def download(args):
1079
1080
  logger.debug(args.dids)
1080
1081
  item_defaults['pfn'] = args.pfn
1081
1082
  item_defaults['did'] = did_str
1083
+ if args.rses is None:
1084
+ logger.warning("No RSE was given, selecting one.")
1085
+ client = get_client(args)
1086
+ replicas = client.list_replicas(
1087
+ [{"scope": did_str.split(':')[0], "name": did_str.split(':')[-1]}],
1088
+ schemes=args.protocol,
1089
+ ignore_availability=False,
1090
+ client_location=detect_client_location(),
1091
+ resolve_archives=not args.no_resolve_archives
1092
+ )
1093
+
1094
+ download_rse = _get_rse_for_pfn(replicas, args.pfn)
1095
+ if download_rse is None:
1096
+ logger.error("Could not find RSE for pfn %s", args.pfn)
1097
+ return FAILURE
1098
+ else:
1099
+ item_defaults['rse'] = download_rse
1100
+
1082
1101
  result = download_client.download_pfns([item_defaults], 1, trace_pattern, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
1083
1102
 
1084
1103
  if not result:
@@ -1120,6 +1139,21 @@ def download(args):
1120
1139
  return SUCCESS
1121
1140
 
1122
1141
 
1142
+ def _get_rse_for_pfn(replicas, pfn) -> Optional[str]:
1143
+ # Check each rse in the replica list for the pfn. If no pfn is found, returns None.
1144
+ # If it is found, stop the generator and return the item.
1145
+ for replica in replicas:
1146
+ try:
1147
+ download_rse = next(
1148
+ rse for rse in replica['rses']
1149
+ if pfn in replica['rses'][rse]
1150
+ )
1151
+ except StopIteration:
1152
+ continue
1153
+ else:
1154
+ return download_rse
1155
+
1156
+
1123
1157
  @exception_handler
1124
1158
  def get_metadata(args):
1125
1159
  """
@@ -54,7 +54,7 @@ from rucio.common.exception import (
54
54
  ScopeNotFound,
55
55
  )
56
56
  from rucio.common.extra import import_extras
57
- from rucio.common.utils import StoreAndDeprecateWarningAction, chunks, clean_surls, construct_surl, extract_scope, get_bytes_value_from_string, parse_response, render_json, sizefmt
57
+ from rucio.common.utils import StoreAndDeprecateWarningAction, chunks, clean_pfns, construct_non_deterministic_pfn, extract_scope, get_bytes_value_from_string, parse_response, render_json, sizefmt
58
58
  from rucio.rse import rsemanager as rsemgr
59
59
 
60
60
  EXTRA_MODULES = import_extras(['argcomplete'])
@@ -1148,21 +1148,21 @@ def declare_bad_file_replicas(args):
1148
1148
  list_bad_pfns = []
1149
1149
  cnt += 1
1150
1150
  previous_pattern = None
1151
- for surl in clean_surls(chunk):
1151
+ for pfn in clean_pfns(chunk):
1152
1152
  unknown = True
1153
1153
  if previous_pattern:
1154
- if previous_pattern in surl:
1155
- list_bad_pfns.append(surl)
1154
+ if previous_pattern in pfn:
1155
+ list_bad_pfns.append(pfn)
1156
1156
  unknown = False
1157
1157
  continue
1158
1158
  for pattern in prot_dict:
1159
- if pattern in surl:
1159
+ if pattern in pfn:
1160
1160
  previous_pattern = prot_dict[pattern]
1161
- list_bad_pfns.append(surl)
1161
+ list_bad_pfns.append(pfn)
1162
1162
  unknown = False
1163
1163
  break
1164
1164
  if unknown:
1165
- print('Cannot find any RSE associated to %s' % surl)
1165
+ print('Cannot find any RSE associated to %s' % pfn)
1166
1166
  client.add_bad_pfns(pfns=list_bad_pfns, reason=args.reason, state='BAD', expires_at=None)
1167
1167
  ndeclared = len(list_bad_pfns)
1168
1168
  tot_file_declared += ndeclared
@@ -1251,7 +1251,7 @@ def list_pfns(args):
1251
1251
  logger.warning('The file has multiple parents')
1252
1252
  for did in parents:
1253
1253
  if did['type'] == 'DATASET':
1254
- path = construct_surl(did['name'], scope, name, naming_convention=naming_convention)
1254
+ path = construct_non_deterministic_pfn(did['name'], scope, name, naming_convention=naming_convention)
1255
1255
  pfn = ''.join([proto.attributes['scheme'],
1256
1256
  '://',
1257
1257
  proto.attributes['hostname'],
@@ -183,8 +183,8 @@ Terminal output:
183
183
 
184
184
  2019-02-19 14:39:24,114 709 INFO replica_recoverer[0/0]: ready to query replicas at RSEs like *MOCK*, declared as suspicious in the last 3 days at least 10 times and which are available on other RSEs.
185
185
  2019-02-19 14:39:24,124 709 INFO replica_recoverer[0/0]: suspicious replica query took 0.0101511478424 seconds, total of 1 replicas were found. [{'scope': 'mock', 'cnt': 11L, 'name': 'file_available_suspicious_5180be3e-4ebc-4c34-b528-efbfd09f067e', 'rse': 'MOCK_SUSPICIOUS'}]
186
- 2019-02-19 14:39:24,125 709 INFO replica_recoverer[0/0]: looking for replica surls.
187
- 2019-02-19 14:39:24,160 709 INFO replica_recoverer[0/0]: found 1/1 surls (took 0.035572052002 seconds) - declaring them as bad replicas now.
186
+ 2019-02-19 14:39:24,125 709 INFO replica_recoverer[0/0]: looking for replica pfns.
187
+ 2019-02-19 14:39:24,160 709 INFO replica_recoverer[0/0]: found 1/1 pfns (took 0.035572052002 seconds) - declaring them as bad replicas now.
188
188
  2019-02-19 14:39:24,160 709 INFO replica_recoverer[0/0]: ready to declare 1 bad replica(s) on MOCK_SUSPICIOUS: ['file://localhost:0/tmp/rucio_rse1/mock/1f/6b/file_available_suspicious_5180be3e-4ebc-4c34-b528-efbfd09f067e'].
189
189
  2019-02-19 14:39:24,188 709 INFO replica_recoverer[0/0]: finished declaring bad replicas on MOCK_SUSPICIOUS.
190
190
  2019-02-19 14:39:24,192 709 INFO replica_recoverer[0/0]: graceful stop done
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- ALEMBIC_REVISION = 'a08fa8de1545' # the current alembic head revision
15
+ ALEMBIC_REVISION = 'b0070f3695c8' # the current alembic head revision
@@ -137,8 +137,6 @@ class BaseClient:
137
137
  self.logger.debug('No trace_host passed. Using rucio_host instead')
138
138
 
139
139
  self.list_hosts = [self.host]
140
- self.account = account
141
- self.vo = vo
142
140
  self.ca_cert = ca_cert
143
141
  self.auth_token = ""
144
142
  self.headers = {}
@@ -173,7 +171,9 @@ class BaseClient:
173
171
  self.logger.debug('No ca_cert found in configuration. Falling back to Mozilla default CA bundle (certifi).')
174
172
  self.ca_cert = True
175
173
 
176
- if account is None:
174
+ if account is not None:
175
+ self.account = account
176
+ else:
177
177
  self.logger.debug('No account passed. Trying to get it from the RUCIO_ACCOUNT environment variable or the config file.')
178
178
  try:
179
179
  self.account = environ['RUCIO_ACCOUNT']
@@ -183,7 +183,9 @@ class BaseClient:
183
183
  except (NoOptionError, NoSectionError):
184
184
  pass
185
185
 
186
- if vo is None:
186
+ if vo is not None:
187
+ self.vo = vo
188
+ else:
187
189
  self.logger.debug('No VO passed. Trying to get it from environment variable RUCIO_VO.')
188
190
  try:
189
191
  self.vo = environ['RUCIO_VO']
@@ -239,57 +241,62 @@ class BaseClient:
239
241
  return auth_type
240
242
 
241
243
  def _get_creds(self, creds: Optional[dict[str, Any]]) -> dict[str, Any]:
242
- if self.auth_type == 'oidc':
243
- if not creds:
244
- creds = {}
245
- # if there are default values, check if rucio.cfg does not specify them, otherwise put default
246
- if 'oidc_refresh_lifetime' not in creds or creds['oidc_refresh_lifetime'] is None:
247
- creds['oidc_refresh_lifetime'] = config_get('client', 'oidc_refresh_lifetime', False, None)
248
- if 'oidc_issuer' not in creds or creds['oidc_issuer'] is None:
249
- creds['oidc_issuer'] = config_get('client', 'oidc_issuer', False, None)
250
- if 'oidc_audience' not in creds or creds['oidc_audience'] is None:
251
- creds['oidc_audience'] = config_get('client', 'oidc_audience', False, None)
252
- if 'oidc_auto' not in creds or creds['oidc_auto'] is False:
253
- creds['oidc_auto'] = config_get_bool('client', 'oidc_auto', False, False)
254
- if creds['oidc_auto']:
255
- if 'oidc_username' not in creds or creds['oidc_username'] is None:
256
- creds['oidc_username'] = config_get('client', 'oidc_username', False, None)
257
- if 'oidc_password' not in creds or creds['oidc_password'] is None:
258
- creds['oidc_password'] = config_get('client', 'oidc_password', False, None)
259
- if 'oidc_scope' not in creds or creds['oidc_scope'] == 'openid profile':
260
- creds['oidc_scope'] = config_get('client', 'oidc_scope', False, 'openid profile')
261
- if 'oidc_polling' not in creds or creds['oidc_polling'] is False:
262
- creds['oidc_polling'] = config_get_bool('client', 'oidc_polling', False, False)
263
-
264
- if creds is None:
244
+ if not creds:
265
245
  self.logger.debug('No creds passed. Trying to get it from the config file.')
266
246
  creds = {}
267
- try:
268
- if self.auth_type in ['userpass', 'saml']:
247
+
248
+ try:
249
+ if self.auth_type == 'oidc':
250
+ # if there are default values, check if rucio.cfg does not specify them, otherwise put default
251
+ if 'oidc_refresh_lifetime' not in creds or creds['oidc_refresh_lifetime'] is None:
252
+ creds['oidc_refresh_lifetime'] = config_get('client', 'oidc_refresh_lifetime', False, None)
253
+ if 'oidc_issuer' not in creds or creds['oidc_issuer'] is None:
254
+ creds['oidc_issuer'] = config_get('client', 'oidc_issuer', False, None)
255
+ if 'oidc_audience' not in creds or creds['oidc_audience'] is None:
256
+ creds['oidc_audience'] = config_get('client', 'oidc_audience', False, None)
257
+ if 'oidc_auto' not in creds or creds['oidc_auto'] is False:
258
+ creds['oidc_auto'] = config_get_bool('client', 'oidc_auto', False, False)
259
+ if creds['oidc_auto']:
260
+ if 'oidc_username' not in creds or creds['oidc_username'] is None:
261
+ creds['oidc_username'] = config_get('client', 'oidc_username', False, None)
262
+ if 'oidc_password' not in creds or creds['oidc_password'] is None:
263
+ creds['oidc_password'] = config_get('client', 'oidc_password', False, None)
264
+ if 'oidc_scope' not in creds or creds['oidc_scope'] == 'openid profile':
265
+ creds['oidc_scope'] = config_get('client', 'oidc_scope', False, 'openid profile')
266
+ if 'oidc_polling' not in creds or creds['oidc_polling'] is False:
267
+ creds['oidc_polling'] = config_get_bool('client', 'oidc_polling', False, False)
268
+
269
+ elif self.auth_type in ['userpass', 'saml']:
270
+ if 'username' not in creds or creds['username'] is None:
269
271
  creds['username'] = config_get('client', 'username')
272
+ if 'password' not in creds or creds['password'] is None:
270
273
  creds['password'] = config_get('client', 'password')
271
- elif self.auth_type == 'x509':
274
+
275
+ elif self.auth_type == 'x509':
276
+ if 'client_cert' not in creds or creds['client_cert'] is None:
272
277
  if "RUCIO_CLIENT_CERT" in environ:
273
- client_cert = environ["RUCIO_CLIENT_CERT"]
278
+ creds['client_cert'] = environ["RUCIO_CLIENT_CERT"]
274
279
  else:
275
- client_cert = config_get('client', 'client_cert')
276
- creds['client_cert'] = path.abspath(path.expanduser(path.expandvars(client_cert)))
277
- if not path.exists(creds['client_cert']):
278
- raise MissingClientParameter('X.509 client certificate not found: %s' % creds['client_cert'])
280
+ creds['client_cert'] = config_get('client', 'client_cert')
281
+ creds['client_cert'] = path.abspath(path.expanduser(path.expandvars(creds['client_cert'])))
282
+ if not path.exists(creds['client_cert']):
283
+ raise MissingClientParameter('X.509 client certificate not found: %s' % creds['client_cert'])
279
284
 
285
+ if 'client_key' not in creds or creds['client_key'] is None:
280
286
  if "RUCIO_CLIENT_KEY" in environ:
281
- client_key = environ["RUCIO_CLIENT_KEY"]
282
- else:
283
- client_key = config_get('client', 'client_key')
284
- creds['client_key'] = path.abspath(path.expanduser(path.expandvars(client_key)))
285
- if not path.exists(creds['client_key']):
286
- raise MissingClientParameter('X.509 client key not found: %s' % creds['client_key'])
287
+ creds['client_key'] = environ["RUCIO_CLIENT_KEY"]
287
288
  else:
288
- perms = oct(os.stat(creds['client_key']).st_mode)[-3:]
289
- if perms not in ['400', '600']:
290
- raise CannotAuthenticate('X.509 authentication selected, but private key (%s) permissions are liberal (required: 400 or 600, found: %s)' % (creds['client_key'], perms))
289
+ creds['client_key'] = config_get('client', 'client_key')
290
+ creds['client_key'] = path.abspath(path.expanduser(path.expandvars(creds['client_key'])))
291
+ if not path.exists(creds['client_key']):
292
+ raise MissingClientParameter('X.509 client key not found: %s' % creds['client_key'])
293
+ else:
294
+ perms = oct(os.stat(creds['client_key']).st_mode)[-3:]
295
+ if perms not in ['400', '600']:
296
+ raise CannotAuthenticate('X.509 authentication selected, but private key (%s) permissions are liberal (required: 400 or 600, found: %s)' % (creds['client_key'], perms))
291
297
 
292
- elif self.auth_type == 'x509_proxy':
298
+ elif self.auth_type == 'x509_proxy':
299
+ if 'client_proxy' not in creds or creds['client_proxy'] is None:
293
300
  try:
294
301
  creds['client_proxy'] = path.abspath(path.expanduser(path.expandvars(config_get('client', 'client_x509_proxy'))))
295
302
  except NoOptionError:
@@ -307,11 +314,15 @@ class BaseClient:
307
314
  raise MissingClientParameter(
308
315
  'Cannot find a valid X509 proxy; not in %s, $X509_USER_PROXY not set, and '
309
316
  '\'x509_proxy\' not set in the configuration file.' % fname)
310
- elif self.auth_type == 'ssh':
317
+
318
+ elif self.auth_type == 'ssh':
319
+ if 'ssh_private_key' not in creds or creds['ssh_private_key'] is None:
311
320
  creds['ssh_private_key'] = path.abspath(path.expanduser(path.expandvars(config_get('client', 'ssh_private_key'))))
312
- except (NoOptionError, NoSectionError) as error:
313
- if error.args[0] != 'client_key':
314
- raise MissingClientParameter('Option \'%s\' cannot be found in config file' % error.args[0])
321
+
322
+ except (NoOptionError, NoSectionError) as error:
323
+ if error.args[0] != 'client_key':
324
+ raise MissingClientParameter('Option \'%s\' cannot be found in config file' % error.args[0])
325
+
315
326
  return creds
316
327
 
317
328
  def _get_exception(self, headers: dict[str, str], status_code: Optional[int] = None, data=None) -> tuple[type[exception.RucioException], str]:
@@ -21,7 +21,7 @@ from requests.status_codes import codes
21
21
 
22
22
  from rucio.client.baseclient import BaseClient, choice
23
23
  from rucio.common.exception import DeprecationError
24
- from rucio.common.utils import build_url, date_to_str, render_json, render_json_list
24
+ from rucio.common.utils import build_url, date_to_str, render_json
25
25
 
26
26
  if TYPE_CHECKING:
27
27
  from collections.abc import Iterable, Iterator, Mapping, Sequence
@@ -142,7 +142,7 @@ class DIDClient(BaseClient):
142
142
  """
143
143
  path = '/'.join([self.DIDS_BASEURL])
144
144
  url = build_url(choice(self.list_hosts), path=path)
145
- r = self._send_request(url, type_='POST', data=render_json_list(dids))
145
+ r = self._send_request(url, type_='POST', data=render_json(dids))
146
146
  if r.status_code == codes.created:
147
147
  return True
148
148
  else: