rucio-clients 32.8.1__tar.gz → 32.8.3__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 (189) hide show
  1. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/PKG-INFO +1 -1
  2. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/uploadclient.py +8 -2
  3. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/vcsversion.py +3 -3
  4. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_upload.py +33 -1
  5. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/AUTHORS.rst +0 -0
  6. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/ChangeLog +0 -0
  7. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/LICENSE +0 -0
  8. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/MANIFEST.in +0 -0
  9. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/README.rst +0 -0
  10. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/bin/rucio +0 -0
  11. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/bin/rucio-admin +0 -0
  12. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/etc/rse-accounts.cfg.template +0 -0
  13. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/etc/rucio.cfg.atlas.client.template +0 -0
  14. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/etc/rucio.cfg.template +0 -0
  15. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/__init__.py +0 -0
  16. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/alembicrevision.py +0 -0
  17. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/__init__.py +0 -0
  18. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/accountclient.py +0 -0
  19. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/accountlimitclient.py +0 -0
  20. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/baseclient.py +0 -0
  21. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/client.py +0 -0
  22. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/configclient.py +0 -0
  23. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/credentialclient.py +0 -0
  24. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/didclient.py +0 -0
  25. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/diracclient.py +0 -0
  26. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/downloadclient.py +0 -0
  27. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/exportclient.py +0 -0
  28. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/fileclient.py +0 -0
  29. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/importclient.py +0 -0
  30. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/lifetimeclient.py +0 -0
  31. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/lockclient.py +0 -0
  32. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/metaclient.py +0 -0
  33. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/pingclient.py +0 -0
  34. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/replicaclient.py +0 -0
  35. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/requestclient.py +0 -0
  36. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/rseclient.py +0 -0
  37. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/ruleclient.py +0 -0
  38. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/scopeclient.py +0 -0
  39. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/subscriptionclient.py +0 -0
  40. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/client/touchclient.py +0 -0
  41. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/__init__.py +0 -0
  42. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/cache.py +0 -0
  43. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/config.py +0 -0
  44. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/constants.py +0 -0
  45. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/constraints.py +0 -0
  46. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/didtype.py +0 -0
  47. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/exception.py +0 -0
  48. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/extra.py +0 -0
  49. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/logging.py +0 -0
  50. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/pcache.py +0 -0
  51. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/policy.py +0 -0
  52. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/__init__.py +0 -0
  53. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/atlas.py +0 -0
  54. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/belleii.py +0 -0
  55. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/cms.py +0 -0
  56. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/domatpc.py +0 -0
  57. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/escape.py +0 -0
  58. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/generic.py +0 -0
  59. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
  60. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/icecube.py +0 -0
  61. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/schema/lsst.py +0 -0
  62. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/stomp_utils.py +0 -0
  63. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/stopwatch.py +0 -0
  64. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/test_rucio_server.py +0 -0
  65. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/types.py +0 -0
  66. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/common/utils.py +0 -0
  67. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/__init__.py +0 -0
  68. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/__init__.py +0 -0
  69. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/cache.py +0 -0
  70. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/dummy.py +0 -0
  71. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/gfal.py +0 -0
  72. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/globus.py +0 -0
  73. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/gsiftp.py +0 -0
  74. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/http_cache.py +0 -0
  75. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/mock.py +0 -0
  76. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/ngarc.py +0 -0
  77. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/posix.py +0 -0
  78. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/protocol.py +0 -0
  79. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/rclone.py +0 -0
  80. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/rfio.py +0 -0
  81. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/srm.py +0 -0
  82. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/ssh.py +0 -0
  83. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/storm.py +0 -0
  84. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/webdav.py +0 -0
  85. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/protocols/xrootd.py +0 -0
  86. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/rse/rsemanager.py +0 -0
  87. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio/version.py +0 -0
  88. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
  89. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/pylintrc +0 -0
  90. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/pyproject.toml +0 -0
  91. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/requirements.txt +0 -0
  92. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/setup.cfg +0 -0
  93. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/setup.py +0 -0
  94. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/setuputil.py +0 -0
  95. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_abacus_account.py +0 -0
  96. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_abacus_collection_replica.py +0 -0
  97. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_abacus_rse.py +0 -0
  98. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_account.py +0 -0
  99. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_account_limits.py +0 -0
  100. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_api_external_representation.py +0 -0
  101. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_archive.py +0 -0
  102. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_auditor.py +0 -0
  103. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_auditor_hdfs.py +0 -0
  104. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_auditor_srmdumps.py +0 -0
  105. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_authentication.py +0 -0
  106. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_automatix.py +0 -0
  107. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_bad_replica.py +0 -0
  108. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_bb8.py +0 -0
  109. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_belleii.py +0 -0
  110. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_bin_rucio.py +0 -0
  111. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_boolean.py +0 -0
  112. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_clients.py +0 -0
  113. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_common_types.py +0 -0
  114. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_config.py +0 -0
  115. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_conveyor.py +0 -0
  116. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_conveyor_submitter.py +0 -0
  117. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_counter.py +0 -0
  118. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_credential.py +0 -0
  119. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_curl.py +0 -0
  120. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_daemons.py +0 -0
  121. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_dataset_replicas.py +0 -0
  122. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_db.py +0 -0
  123. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_did.py +0 -0
  124. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_did_meta_plugins.py +0 -0
  125. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_didtype.py +0 -0
  126. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_download.py +0 -0
  127. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_dumper.py +0 -0
  128. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_dumper_consistency.py +0 -0
  129. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_dumper_data_model.py +0 -0
  130. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_dumper_path_parsing.py +0 -0
  131. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_filter_engine.py +0 -0
  132. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_heartbeat.py +0 -0
  133. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_hermes.py +0 -0
  134. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_identity.py +0 -0
  135. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_impl_upload_download.py +0 -0
  136. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_import_export.py +0 -0
  137. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_judge_cleaner.py +0 -0
  138. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_judge_evaluator.py +0 -0
  139. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_judge_injector.py +0 -0
  140. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_judge_repairer.py +0 -0
  141. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_lifetime.py +0 -0
  142. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_message.py +0 -0
  143. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_meta.py +0 -0
  144. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_meta_did.py +0 -0
  145. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_module_import.py +0 -0
  146. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_monitor.py +0 -0
  147. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_multi_vo.py +0 -0
  148. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_naming_convention.py +0 -0
  149. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_oauthmanager.py +0 -0
  150. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_oidc.py +0 -0
  151. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_permission.py +0 -0
  152. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_pfns.py +0 -0
  153. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_ping.py +0 -0
  154. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_preparer.py +0 -0
  155. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_qos.py +0 -0
  156. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_quarantined_replica.py +0 -0
  157. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_reaper.py +0 -0
  158. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_redirect.py +0 -0
  159. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_replica.py +0 -0
  160. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_replica_recoverer.py +0 -0
  161. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_replica_sorting.py +0 -0
  162. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_request.py +0 -0
  163. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_root_proxy.py +0 -0
  164. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse.py +0 -0
  165. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_expression_parser.py +0 -0
  166. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_lfn2path.py +0 -0
  167. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_gfal2.py +0 -0
  168. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_gfal2_impl.py +0 -0
  169. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_posix.py +0 -0
  170. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_rclone.py +0 -0
  171. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_rsync.py +0 -0
  172. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_srm.py +0 -0
  173. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_ssh.py +0 -0
  174. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_webdav.py +0 -0
  175. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_protocol_xrootd.py +0 -0
  176. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rse_selector.py +0 -0
  177. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rucio_server.py +0 -0
  178. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_rule.py +0 -0
  179. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_schema_cms.py +0 -0
  180. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_scope.py +0 -0
  181. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_subscription.py +0 -0
  182. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_temporary_did.py +0 -0
  183. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_throttler.py +0 -0
  184. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_tpc.py +0 -0
  185. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_trace.py +0 -0
  186. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_transfer.py +0 -0
  187. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_undertaker.py +0 -0
  188. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tests/test_utils.py +0 -0
  189. {rucio-clients-32.8.1 → rucio_clients-32.8.3}/tools/merge_rucio_configs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rucio-clients
3
- Version: 32.8.1
3
+ Version: 32.8.3
4
4
  Summary: Rucio Client Lite Package
5
5
  Home-page: https://rucio.cern.ch/
6
6
  Author: Rucio
@@ -275,7 +275,6 @@ class UploadClient:
275
275
  state_reason = str(error)
276
276
 
277
277
  if success:
278
- num_succeeded += 1
279
278
  trace['transferEnd'] = time.time()
280
279
  trace['clientState'] = 'DONE'
281
280
  file['state'] = 'A'
@@ -285,6 +284,7 @@ class UploadClient:
285
284
  if summary_file_path:
286
285
  summary.append(copy.deepcopy(file))
287
286
 
287
+ registration_succeeded = True
288
288
  if not no_register:
289
289
  if register_after_upload:
290
290
  self._register_file(file, registered_dataset_dids, ignore_availability=ignore_availability, activity=activity)
@@ -293,6 +293,7 @@ class UploadClient:
293
293
  try:
294
294
  self.client.update_replicas_states(rse, files=[replica_for_api])
295
295
  except Exception as error:
296
+ registration_succeeded = False
296
297
  logger(logging.ERROR, 'Failed to update replica state for file {}'.format(basename))
297
298
  logger(logging.DEBUG, 'Details: {}'.format(str(error)))
298
299
 
@@ -301,8 +302,13 @@ class UploadClient:
301
302
  try:
302
303
  self.client.attach_dids(file['dataset_scope'], file['dataset_name'], [file_did])
303
304
  except Exception as error:
304
- logger(logging.WARNING, 'Failed to attach file to the dataset')
305
+ registration_succeeded = False
306
+ logger(logging.ERROR, 'Failed to attach file to the dataset')
305
307
  logger(logging.DEBUG, 'Attaching to dataset {}'.format(str(error)))
308
+
309
+ # only report success if the registration operations succeeded as well
310
+ if registration_succeeded:
311
+ num_succeeded += 1
306
312
  else:
307
313
  trace['clientState'] = 'FAILED'
308
314
  trace['stateReason'] = state_reason
@@ -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': '32.8.1',
7
+ 'version': '32.8.3',
8
8
  'branch_nick': 'release-32-LTS',
9
- 'revision_id': '20266eed111d4100d121fd81d5a93dc5f38d31ea',
10
- 'revno': 12657
9
+ 'revision_id': '51383ec0cd8981fe666f21149f0939f38cd0aa95',
10
+ 'revno': 12661
11
11
  }
@@ -22,9 +22,11 @@ from tempfile import TemporaryDirectory
22
22
  from unittest.mock import patch
23
23
 
24
24
  from rucio.client.downloadclient import DownloadClient
25
+ from rucio.client.client import Client
25
26
  from rucio.client.uploadclient import UploadClient
26
27
  from rucio.common.config import config_add_section, config_set
27
- from rucio.common.exception import InputValidationError, NoFilesUploaded, NotAllFilesUploaded
28
+ from rucio.common.constants import RseAttr
29
+ from rucio.common.exception import InputValidationError, NoFilesUploaded, NotAllFilesUploaded, ResourceTemporaryUnavailable
28
30
  from rucio.common.utils import adler32, generate_uuid
29
31
  from rucio.core.rse import add_protocol, add_rse_attribute
30
32
 
@@ -403,3 +405,33 @@ def test_upload_file_ignore_availability(rse_factory, scope, upload_client, file
403
405
 
404
406
  status = upload_client.upload(item, ignore_availability=True)
405
407
  assert status == 0
408
+
409
+
410
+ @pytest.fixture
411
+ def upload_client_registration_fail():
412
+ logger = logging.getLogger('upload_client')
413
+ logger.addHandler(logging.StreamHandler())
414
+ logger.setLevel(logging.DEBUG)
415
+ # modify the client object used by upload_client so that replica registration fails
416
+ class RegistrationFailureClient(Client):
417
+ def __init__(self, **args):
418
+ super(RegistrationFailureClient, self).__init__(**args)
419
+ def update_replicas_states(self, rse, files):
420
+ # simulate server timing out
421
+ raise ResourceTemporaryUnavailable
422
+ return UploadClient(logger=logger, _client=RegistrationFailureClient())
423
+
424
+
425
+ def test_upload_registration_fail(rse, scope, upload_client_registration_fail, file_factory):
426
+ local_file = file_factory.file_generator()
427
+ fn = os.path.basename(local_file)
428
+
429
+ # upload a file and check that exception is raised
430
+ with pytest.raises(NoFilesUploaded):
431
+ upload_client_registration_fail.upload([{
432
+ 'path': local_file,
433
+ 'rse': rse,
434
+ 'did_scope': scope,
435
+ 'did_name': fn,
436
+ 'guid': generate_uuid()
437
+ }])
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes