rucio-clients 35.2.1__tar.gz → 35.3.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-clients might be problematic. Click here for more details.

Files changed (188) hide show
  1. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/PKG-INFO +1 -1
  2. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/baseclient.py +6 -0
  3. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/exception.py +22 -2
  4. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/__init__.py +6 -2
  5. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/types.py +4 -0
  6. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/protocol.py +27 -13
  7. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/vcsversion.py +3 -3
  8. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_heartbeat.py +9 -9
  9. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_trace.py +4 -8
  10. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/AUTHORS.rst +0 -0
  11. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/ChangeLog +0 -0
  12. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/LICENSE +0 -0
  13. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/MANIFEST.in +0 -0
  14. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/README.md +0 -0
  15. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/bin/rucio +0 -0
  16. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/bin/rucio-admin +0 -0
  17. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/etc/rse-accounts.cfg.template +0 -0
  18. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/etc/rucio.cfg.atlas.client.template +0 -0
  19. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/etc/rucio.cfg.template +0 -0
  20. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/__init__.py +0 -0
  21. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/alembicrevision.py +0 -0
  22. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/__init__.py +0 -0
  23. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/accountclient.py +0 -0
  24. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/accountlimitclient.py +0 -0
  25. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/client.py +0 -0
  26. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/configclient.py +0 -0
  27. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/credentialclient.py +0 -0
  28. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/didclient.py +0 -0
  29. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/diracclient.py +0 -0
  30. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/downloadclient.py +0 -0
  31. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/exportclient.py +0 -0
  32. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/fileclient.py +0 -0
  33. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/importclient.py +0 -0
  34. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/lifetimeclient.py +0 -0
  35. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/lockclient.py +0 -0
  36. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/metaconventionsclient.py +0 -0
  37. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/pingclient.py +0 -0
  38. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/replicaclient.py +0 -0
  39. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/requestclient.py +0 -0
  40. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/rseclient.py +0 -0
  41. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/ruleclient.py +0 -0
  42. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/scopeclient.py +0 -0
  43. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/subscriptionclient.py +0 -0
  44. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/touchclient.py +0 -0
  45. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/client/uploadclient.py +0 -0
  46. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/__init__.py +0 -0
  47. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/cache.py +0 -0
  48. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/config.py +0 -0
  49. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/constants.py +0 -0
  50. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/constraints.py +0 -0
  51. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/didtype.py +0 -0
  52. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/extra.py +0 -0
  53. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/logging.py +0 -0
  54. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/pcache.py +0 -0
  55. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/plugins.py +0 -0
  56. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/policy.py +0 -0
  57. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/atlas.py +0 -0
  58. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/belleii.py +0 -0
  59. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/domatpc.py +0 -0
  60. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/escape.py +0 -0
  61. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/generic.py +0 -0
  62. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  63. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/schema/icecube.py +0 -0
  64. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/stomp_utils.py +0 -0
  65. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/stopwatch.py +0 -0
  66. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/test_rucio_server.py +0 -0
  67. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/common/utils.py +0 -0
  68. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/__init__.py +0 -0
  69. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/__init__.py +0 -0
  70. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
  71. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/cache.py +0 -0
  72. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/dummy.py +0 -0
  73. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/gfal.py +0 -0
  74. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/globus.py +0 -0
  75. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/gsiftp.py +0 -0
  76. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
  77. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/mock.py +0 -0
  78. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
  79. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/posix.py +0 -0
  80. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/rclone.py +0 -0
  81. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/rfio.py +0 -0
  82. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/srm.py +0 -0
  83. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/ssh.py +0 -0
  84. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/storm.py +0 -0
  85. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/webdav.py +0 -0
  86. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
  87. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/rse/rsemanager.py +0 -0
  88. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio/version.py +0 -0
  89. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
  90. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/pylintrc +0 -0
  91. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/pyproject.toml +0 -0
  92. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/requirements/requirements.client.txt +0 -0
  93. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/setup.cfg +0 -0
  94. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/setup.py +0 -0
  95. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/setuputil.py +0 -0
  96. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_abacus_account.py +0 -0
  97. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_abacus_collection_replica.py +0 -0
  98. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_abacus_rse.py +0 -0
  99. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_account.py +0 -0
  100. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_account_limits.py +0 -0
  101. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_archive.py +0 -0
  102. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_auditor.py +0 -0
  103. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_auditor_hdfs.py +0 -0
  104. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_auditor_srmdumps.py +0 -0
  105. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_authentication.py +0 -0
  106. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_automatix.py +0 -0
  107. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_bad_replica.py +0 -0
  108. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_bb8.py +0 -0
  109. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_belleii.py +0 -0
  110. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_bin_rucio.py +0 -0
  111. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_boolean.py +0 -0
  112. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_clients.py +0 -0
  113. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_common_types.py +0 -0
  114. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_config.py +0 -0
  115. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_conveyor.py +0 -0
  116. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_conveyor_submitter.py +0 -0
  117. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_counter.py +0 -0
  118. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_credential.py +0 -0
  119. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_curl.py +0 -0
  120. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_daemons.py +0 -0
  121. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_dataset_replicas.py +0 -0
  122. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_db.py +0 -0
  123. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_did.py +0 -0
  124. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_did_meta_plugins.py +0 -0
  125. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_didtype.py +0 -0
  126. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_download.py +0 -0
  127. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_dumper.py +0 -0
  128. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_dumper_consistency.py +0 -0
  129. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_dumper_data_model.py +0 -0
  130. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_dumper_path_parsing.py +0 -0
  131. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_filter_engine.py +0 -0
  132. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_gateway_external_representation.py +0 -0
  133. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_hermes.py +0 -0
  134. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_identity.py +0 -0
  135. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_impl_upload_download.py +0 -0
  136. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_import_export.py +0 -0
  137. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_judge_cleaner.py +0 -0
  138. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_judge_evaluator.py +0 -0
  139. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_judge_injector.py +0 -0
  140. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_judge_repairer.py +0 -0
  141. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_lifetime.py +0 -0
  142. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_message.py +0 -0
  143. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_meta_conventions.py +0 -0
  144. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_meta_did.py +0 -0
  145. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_module_import.py +0 -0
  146. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_monitor.py +0 -0
  147. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_multi_vo.py +0 -0
  148. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_naming_convention.py +0 -0
  149. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_oauthmanager.py +0 -0
  150. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_oidc.py +0 -0
  151. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_permission.py +0 -0
  152. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_pfns.py +0 -0
  153. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_ping.py +0 -0
  154. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_preparer.py +0 -0
  155. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_qos.py +0 -0
  156. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_quarantined_replica.py +0 -0
  157. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_reaper.py +0 -0
  158. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_redirect.py +0 -0
  159. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_replica.py +0 -0
  160. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_replica_recoverer.py +0 -0
  161. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_replica_sorting.py +0 -0
  162. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_request.py +0 -0
  163. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_root_proxy.py +0 -0
  164. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse.py +0 -0
  165. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_expression_parser.py +0 -0
  166. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_lfn2path.py +0 -0
  167. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_gfal2.py +0 -0
  168. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  169. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_posix.py +0 -0
  170. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_rclone.py +0 -0
  171. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_rsync.py +0 -0
  172. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_srm.py +0 -0
  173. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_ssh.py +0 -0
  174. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_webdav.py +0 -0
  175. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_protocol_xrootd.py +0 -0
  176. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rse_selector.py +0 -0
  177. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rucio_server.py +0 -0
  178. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_rule.py +0 -0
  179. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_scope.py +0 -0
  180. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_subscription.py +0 -0
  181. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_throttler.py +0 -0
  182. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_tpc.py +0 -0
  183. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_transfer.py +0 -0
  184. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_transfer_plugins.py +0 -0
  185. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_undertaker.py +0 -0
  186. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_upload.py +0 -0
  187. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tests/test_utils.py +0 -0
  188. {rucio_clients-35.2.1 → rucio_clients-35.3.0}/tools/merge_rucio_configs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rucio-clients
3
- Version: 35.2.1
3
+ Version: 35.3.0
4
4
  Summary: Rucio Client Lite Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -171,6 +171,9 @@ class BaseClient:
171
171
  except (NoOptionError, NoSectionError):
172
172
  self.logger.debug('No ca_cert found in configuration. Falling back to Mozilla default CA bundle (certifi).')
173
173
  self.ca_cert = True
174
+ except ConfigNotFound:
175
+ self.logger.debug('No configuration found. Falling back to Mozilla default CA bundle (certifi).')
176
+ self.ca_cert = True
174
177
 
175
178
  if account is None:
176
179
  self.logger.debug('No account passed. Trying to get it from the RUCIO_ACCOUNT environment variable or the config file.')
@@ -195,6 +198,9 @@ class BaseClient:
195
198
  except (NoOptionError, NoSectionError):
196
199
  self.logger.debug('No VO found. Using default VO.')
197
200
  self.vo = 'def'
201
+ except ConfigNotFound:
202
+ self.logger.debug('No configuration found. Using default VO.')
203
+ self.vo = 'def'
198
204
 
199
205
  self.auth_token_file_path, self.token_exp_epoch_file, self.token_file, self.token_path = self._get_auth_tokens()
200
206
  self.__authenticate()
@@ -962,11 +962,11 @@ class NoDistance(RucioException):
962
962
 
963
963
  class PolicyPackageNotFound(RucioException):
964
964
  """
965
- The policy package specified in the config file cannot be loaded.
965
+ The policy package specified in the config file was not found
966
966
  """
967
967
  def __init__(self, *args, **kwargs):
968
968
  super(PolicyPackageNotFound, self).__init__(*args, **kwargs)
969
- self._message = 'The specified policy package cannot be loaded'
969
+ self._message = 'The specified policy package was not found'
970
970
  self.error_code = 93
971
971
 
972
972
 
@@ -1099,3 +1099,23 @@ class SortingAlgorithmNotSupported(RucioException):
1099
1099
  super(SortingAlgorithmNotSupported, self).__init__(*args, **kwargs)
1100
1100
  self._message = 'Sorting algorithm is not supported.'
1101
1101
  self.error_code = 106
1102
+
1103
+
1104
+ class ErrorLoadingPolicyPackage(RucioException):
1105
+ """
1106
+ An error occurred while loading the policy package.
1107
+ """
1108
+ def __init__(self, *args, **kwargs):
1109
+ super(ErrorLoadingPolicyPackage, self).__init__(*args, **kwargs)
1110
+ self._message = 'An error occurred while loading the specified policy package'
1111
+ self.error_code = 107
1112
+
1113
+
1114
+ class TraceValidationSchemaNotFound(RucioException):
1115
+ """
1116
+ Trace validation schema not found.
1117
+ """
1118
+ def __init__(self, *args, **kwargs):
1119
+ super(TraceValidationSchemaNotFound, self).__init__(*args, **kwargs)
1120
+ self._message = 'Trace validation schema not found.'
1121
+ self.error_code = 108
@@ -60,8 +60,10 @@ if not multivo:
60
60
 
61
61
  try:
62
62
  module = importlib.import_module(POLICY)
63
- except ImportError:
63
+ except ModuleNotFoundError:
64
64
  raise exception.PolicyPackageNotFound('Module ' + POLICY + ' not found')
65
+ except ImportError:
66
+ raise exception.ErrorLoadingPolicyPackage('An error occurred while loading module ' + POLICY)
65
67
 
66
68
  schema_modules["def"] = module
67
69
  scope_name_regexps.append(module.SCOPE_NAME_REGEXP)
@@ -90,8 +92,10 @@ def load_schema_for_vo(vo: str) -> None:
90
92
 
91
93
  try:
92
94
  module = importlib.import_module(POLICY)
93
- except ImportError:
95
+ except ModuleNotFoundError:
94
96
  raise exception.PolicyPackageNotFound('Module ' + POLICY + ' not found')
97
+ except ImportError:
98
+ raise exception.ErrorLoadingPolicyPackage('An error occurred while loading module ' + POLICY)
95
99
 
96
100
  schema_modules[vo] = module
97
101
 
@@ -308,6 +308,10 @@ class TraceDict(TraceBaseDict):
308
308
  transferEnd: float
309
309
 
310
310
 
311
+ class TraceSchemaDict(TypedDict):
312
+ eventType: str
313
+
314
+
311
315
  class FileToUploadDict(TypedDict):
312
316
  path: PathTypeAlias
313
317
  rse: str
@@ -20,7 +20,7 @@ import hashlib
20
20
  import logging
21
21
  from collections.abc import Callable, Mapping
22
22
  from configparser import NoOptionError, NoSectionError
23
- from typing import Any, TypeVar
23
+ from typing import Any, Optional, TypeVar
24
24
  from urllib.parse import urlparse
25
25
 
26
26
  from rucio.common import config, exception
@@ -46,32 +46,46 @@ class RSEDeterministicScopeTranslation(PolicyPackageAlgorithms):
46
46
 
47
47
  def __init__(self, vo: str = 'def'):
48
48
  super().__init__()
49
- self.register("def", RSEDeterministicScopeTranslation._default)
50
- self.register("atlas", RSEDeterministicScopeTranslation._atlas)
51
- policy_module = vo
49
+
50
+ self.register(RSEDeterministicScopeTranslation._default, "def")
51
+ self.register(RSEDeterministicScopeTranslation._atlas, "atlas")
52
+
52
53
  logger = logging.getLogger(__name__)
54
+
53
55
  try:
54
56
  # Use the function defined in the policy package if it's configured so
55
- algo_type = self._algorithm_type
56
57
  algorithm_name = config.config_get('policy', self._algorithm_type)
57
58
  except (NoOptionError, NoSectionError, RuntimeError):
58
59
  # Don't use a function from the policy package. Use one defined in this class according to vo
59
60
  logger.debug("PFN2LFN function will not be fetched from the policy package")
60
- algo_type = self.__class__.__name__
61
- if super()._supports(algo_type, policy_module):
62
- algorithm_name = policy_module
61
+ if super()._supports(self._algorithm_type, vo):
62
+ algorithm_name = vo
63
63
  else:
64
64
  algorithm_name = "def"
65
65
 
66
- self.parser = self.get_parser(algo_type, algorithm_name)
66
+ self.parser = self.get_parser(algorithm_name)
67
67
 
68
68
  @classmethod
69
- def get_parser(cls, algorithm_type: str, algorithm_name: str) -> Callable[..., Any]:
70
- return super()._get_one_algorithm(algorithm_type, algorithm_name)
69
+ def get_parser(cls, algorithm_name: str) -> Callable[..., Any]:
70
+ return super()._get_one_algorithm(cls._algorithm_type, algorithm_name)
71
71
 
72
72
  @classmethod
73
- def register(cls, name: str, func: Callable) -> None:
74
- super()._register(cls.__name__, {name: func})
73
+ def register(
74
+ cls,
75
+ pfn2lfn_callable: Callable,
76
+ name: Optional[str] = None
77
+ ) -> None:
78
+ """
79
+ Provided a callable function, register it as one of the valid PFN2LFN algorithms.
80
+
81
+
82
+ :param pfn2lfn_callable: Callable function to use.
83
+ :param name: Algorithm name used for registration.
84
+ """
85
+ if name is None:
86
+ name = pfn2lfn_callable.__name__
87
+ algorithm_dict = {name: pfn2lfn_callable}
88
+ super()._register(cls._algorithm_type, algorithm_dict)
75
89
 
76
90
  @staticmethod
77
91
  def _default(parsed_pfn: Mapping[str, str]) -> tuple[str, str]:
@@ -4,8 +4,8 @@ This file is automatically generated; Do not edit it. :)
4
4
  '''
5
5
  VERSION_INFO = {
6
6
  'final': True,
7
- 'version': '35.2.1',
7
+ 'version': '35.3.0',
8
8
  'branch_nick': 'release-35-LTS',
9
- 'revision_id': 'd16287dcea81790562e5c63066feb522bf57ab8d',
10
- 'revno': 13130
9
+ 'revision_id': 'f6b86349677cb344f3a3db2c12f0841accc9a5ca',
10
+ 'revno': 13148
11
11
  }
@@ -20,7 +20,7 @@ import pytest
20
20
  from sqlalchemy import delete, update
21
21
 
22
22
  from rucio.core.heartbeat import cardiac_arrest, die, list_heartbeats, list_payload_counts, live, sanity_check
23
- from rucio.db.sqla.models import Heartbeats
23
+ from rucio.db.sqla.models import Heartbeat
24
24
  from rucio.db.sqla.session import transactional_session
25
25
 
26
26
 
@@ -36,9 +36,9 @@ def executable_factory(function_scope_prefix, db_session):
36
36
  yield _create_executable
37
37
 
38
38
  stmt = delete(
39
- Heartbeats
39
+ Heartbeat
40
40
  ).where(
41
- Heartbeats.executable.in_(executables)
41
+ Heartbeat.executable.in_(executables)
42
42
  )
43
43
  db_session.execute(stmt)
44
44
 
@@ -165,19 +165,19 @@ class TestHeartbeat:
165
165
  two_days_ago = datetime.utcnow() - timedelta(days=2)
166
166
  a_dozen_hours_ago = datetime.utcnow() - timedelta(hours=12)
167
167
  stmt = update(
168
- Heartbeats
168
+ Heartbeat
169
169
  ).where(
170
- Heartbeats.hostname == 'host1'
170
+ Heartbeat.hostname == 'host1'
171
171
  ).values({
172
- Heartbeats.updated_at: two_days_ago
172
+ Heartbeat.updated_at: two_days_ago
173
173
  })
174
174
  session.execute(stmt)
175
175
  stmt = update(
176
- Heartbeats
176
+ Heartbeat
177
177
  ).where(
178
- Heartbeats.hostname == 'host2'
178
+ Heartbeat.hostname == 'host2'
179
179
  ).values({
180
- Heartbeats.updated_at: a_dozen_hours_ago
180
+ Heartbeat.updated_at: a_dozen_hours_ago
181
181
  })
182
182
  session.execute(stmt)
183
183
 
@@ -20,7 +20,7 @@ import uuid
20
20
 
21
21
  import pytest
22
22
 
23
- from rucio.common.exception import InvalidObject
23
+ from rucio.common.exception import InvalidObject, TraceValidationSchemaNotFound
24
24
  from rucio.common.schema.generic import IPv4orIPv6
25
25
  from rucio.core.trace import SCHEMAS, validate_schema
26
26
 
@@ -86,12 +86,8 @@ def test_trace_ip():
86
86
  validate_schema(obj)
87
87
 
88
88
 
89
- def test_non_existant_event_type_validation_rejection(caplog):
90
- """
91
- Test if an incoming trace with a non-supported schema logs a warning
92
- instead of printing entire stack-trace
93
- """
89
+ def test_non_existant_event_type_validation_rejection():
94
90
  event_type = "put_new_type"
95
91
  obj = json.dumps({"eventType": f"{event_type}"})
96
- validate_schema(obj)
97
- assert f"schema for eventType {event_type} is not currently supported" in caplog.text
92
+ with pytest.raises(TraceValidationSchemaNotFound):
93
+ validate_schema(obj)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes