rucio 37.5.0__tar.gz → 37.6.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.
- {rucio-37.5.0 → rucio-37.6.0}/PKG-INFO +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-abacus-account +8 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-abacus-rse +8 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-auditor +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-conveyor-throttler +7 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-follower +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-judge-cleaner +9 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-necromancer +7 -1
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-replica-recoverer +31 -9
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-undertaker +8 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/bin_legacy/rucio.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/bin_legacy/rucio_admin.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/did.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/rse.py +2 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/subscription.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/baseclient.py +5 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/didclient.py +16 -16
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/downloadclient.py +14 -14
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/lockclient.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/replicaclient.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/touchclient.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/uploadclient.py +725 -181
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/config.py +1 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/constants.py +2 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/didtype.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/dumper/__init__.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/pcache.py +20 -25
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/plugins.py +10 -17
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/schema/__init__.py +7 -5
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/utils.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/authentication.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/credential.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did.py +54 -54
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/__init__.py +10 -10
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +9 -9
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/elasticsearch_meta.py +7 -7
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/json_meta.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +9 -9
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +7 -7
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/dirac.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/lifetime_exception.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/lock.py +7 -7
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/meta_conventions.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/monitor.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/naming_convention.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/nongrid_trace.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/oidc.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/permission/__init__.py +7 -5
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/permission/generic.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/permission/generic_multi_vo.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/replica.py +17 -17
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/rule.py +30 -30
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/rule_grouping.py +2 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/scope.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/trace.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/auditor/__init__.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/badreplicas/minos.py +9 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +5 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/badreplicas/necromancer.py +9 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/bb8/common.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/cache/consumer.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/finisher.py +13 -4
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/poller.py +5 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/receiver.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/follower/follower.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/hermes/hermes.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/judge/cleaner.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/judge/evaluator.py +7 -7
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/judge/injector.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/judge/repairer.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/storage/consistency/actions.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/undertaker/undertaker.py +6 -6
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/constants.py +4 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/models.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/session.py +7 -7
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/account.py +65 -90
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/did.py +26 -26
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/dirac.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/lifetime_exception.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/replica.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/ngarc.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/srm.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/webdav.py +8 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/tests/common.py +4 -4
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/vcsversion.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +20 -20
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/common.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +188 -188
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +5 -5
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +13 -13
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/main.py +1 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +16 -16
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +16 -16
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +7 -7
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_account_limits.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_archive.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_bb8.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_belleii.py +4 -2
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_bin_rucio.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_clients.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_conveyor.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_curl.py +9 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_did.py +18 -18
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_did_meta_plugins.py +25 -26
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_download.py +6 -6
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_gateway_external_representation.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_multi_vo.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_oidc.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_permission.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_reaper.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_replica.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_replica_recoverer.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_replica_sorting.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_subscription.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_transfer_plugins.py +3 -3
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_undertaker.py +2 -2
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_utils.py +1 -1
- {rucio-37.5.0 → rucio-37.6.0}/AUTHORS.rst +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/ChangeLog +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/LICENSE +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/MANIFEST.in +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/README.md +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-abacus-collection-replica +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-admin +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-atropos +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-automatix +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-bb8 +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-cache-client +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-cache-consumer +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-conveyor-finisher +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-conveyor-poller +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-conveyor-preparer +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-conveyor-receiver +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-conveyor-stager +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-conveyor-submitter +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-dark-reaper +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-dumper +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-hermes +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-judge-evaluator +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-judge-injector +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-judge-repairer +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-kronos +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-minos +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-minos-temporary-expiration +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-oauth-manager +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-reaper +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-rse-decommissioner +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-storage-consistency-actions +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/bin/rucio-transmogrifier +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/alembic.ini.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/alembic_offline.ini.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/globus-config.yml.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/ldap.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/rse-accounts.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/rucio.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/etc/rucio_multi_vo.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/alembicrevision.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/account.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/bin_legacy/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/command.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/config.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/download.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/lifetime_exception.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/rule.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/scope.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/upload.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/cli/utils.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/accountclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/client.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/configclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/credentialclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/diracclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/exportclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/fileclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/importclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/pingclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/requestclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/richclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/rseclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/ruleclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/scopeclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/client/subscriptionclient.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/bittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/cache.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/checksum.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/client.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/constraints.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/dumper/consistency.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/dumper/data_models.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/exception.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/extra.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/logging.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/policy.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/schema/generic.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/stopwatch.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/common/types.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/account.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/account_counter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/account_limit.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/config.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/distance.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/exporter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/heartbeat.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/identity.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/importer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/message.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/quarantined_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/replica_sorter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/request.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/rse_counter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/rse_expression_parser.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/rse_selector.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/subscription.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/topology.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/transfer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/vo.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/core/volatile_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/abacus/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/abacus/account.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/abacus/rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/atropos/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/atropos/atropos.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/auditor/srmdumps.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/automatix/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/automatix/automatix.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/bb8/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/bb8/bb8.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/cache/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/common.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/common.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/preparer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/stager.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/submitter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/conveyor/throttler.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/follower/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/hermes/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/judge/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/reaper/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/reaper/dark_reaper.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/reaper/reaper.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/storage/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/tracer/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/tracer/kronos.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/daemons/undertaker/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/30d5206e9cad_increase_oauthrequest_redirect_msg_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/b0070f3695c8_add_deletedidmeta_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/b5493606bbf5_fix_primary_key_for_subscription_history.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/sautils.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/types.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/db/sqla/util.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/account_limit.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/authentication.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/config.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/credential.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/exporter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/heartbeat.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/identity.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/importer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/lock.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/meta_conventions.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/permission.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/quarantined_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/request.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/rule.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/scope.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/subscription.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/trace.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/gateway/vo.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/posix.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/protocol.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/storm.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/rsemanager.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/rse/translation.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/tests/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/tests/common_server.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/bittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/fts3.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/fts3_plugins.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/globus.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/globus_library.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/mock.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/transfertool/transfertool.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/version.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/import.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/types.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/main.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/metrics.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio/web/rest/ping.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/lib/rucio.egg-info/SOURCES.txt +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/pyproject.toml +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/requirements/requirements.server.txt +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/setup.cfg +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/setup.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/setuputil.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_abacus_account.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_abacus_collection_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_abacus_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_account.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_auditor.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_auditor_hdfs.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_auditor_srmdumps.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_authentication.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_automatix.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_bad_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_boolean.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_cli_client_structure.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_config.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_conveyor_submitter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_counter.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_credential.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_daemons.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_dataset_replicas.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_db.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_dumper.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_filter_engine.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_heartbeat.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_hermes.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_identity.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_impl_upload_download.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_import_export.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_judge_cleaner.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_judge_evaluator.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_judge_injector.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_judge_repairer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_lifetime.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_message.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_meta_conventions.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_meta_did.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_module_import.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_monitor.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_naming_convention.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_oauthmanager.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_pfns.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_ping.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_policy_package.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_preparer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_qos.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_quarantined_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_redirect.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_request.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_root_proxy.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_expression_parser.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_lfn2path.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_posix.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_srm.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rse_selector.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rucio_server.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_rule.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_scope.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_throttler.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_tpc.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_trace.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_transfer.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tests/test_upload.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tools/bootstrap.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tools/merge_rucio_configs.py +0 -0
- {rucio-37.5.0 → rucio-37.6.0}/tools/reset_database.py +0 -0
|
@@ -27,7 +27,14 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
|
|
30
|
+
description = (
|
|
31
|
+
"The Abacus-Account daemon is responsible for updating account usages. "
|
|
32
|
+
"It checks if there are new entries in the UpdatedAccountCounter table "
|
|
33
|
+
"and updates the account counters in the AccountCounter table by adding "
|
|
34
|
+
"or subtracting the amount and size of files and recalculating the quotas."
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
parser = argparse.ArgumentParser(description=description, epilog='''
|
|
31
38
|
Upload a file::
|
|
32
39
|
|
|
33
40
|
$ rucio upload --rse MOCK --scope mock filename.txt
|
|
@@ -27,7 +27,14 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
|
|
30
|
+
description = (
|
|
31
|
+
"The Abacus-RSE daemon is responsible for updating RSE usages. "
|
|
32
|
+
"It checks if there are new entries in the UpdatedRSECounter table "
|
|
33
|
+
"and updates the RSE counter in the RSECounter table "
|
|
34
|
+
"by adding or subtracting the amount of files and the size."
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
parser = argparse.ArgumentParser(description=description, epilog='''
|
|
31
38
|
Upload a file to your RSE::
|
|
32
39
|
|
|
33
40
|
$ rucio upload --rse MOCK --scope mock filename.txt
|
|
@@ -27,7 +27,13 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
|
|
30
|
+
description = (
|
|
31
|
+
"The Conveyor-Throttler daemon is responsible for managing the internal queue of transfer requests. "
|
|
32
|
+
"Depending on transfer limits of current and waiting transfers, "
|
|
33
|
+
"it decides whether a transfer should be put in the queue or not."
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
parser = argparse.ArgumentParser(description=description, epilog='''
|
|
31
37
|
In this example, the transfer limit will be one transfer which means that there should be only one active transfer at the time.
|
|
32
38
|
There will be two waiting transfer requests and no current active transfer.
|
|
33
39
|
After running the daemon, there will be one transfer in the queue which can then be started.
|
|
@@ -27,7 +27,15 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
|
|
30
|
+
description = (
|
|
31
|
+
"The Judge-Cleaner daemon is responsible for cleaning expired replication rules. "
|
|
32
|
+
"It deletes rules by checking if the 'expired_at' date property is older than the current timestamp. "
|
|
33
|
+
"If the rule is expired, it will first remove one lock for the replica and parent datasets if the DID belongs to any. "
|
|
34
|
+
"Then it will set a tombstone to the replica to mark it as deletable if there are no rules protecting the replica. "
|
|
35
|
+
"After these steps, the rule gets deleted."
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
parser = argparse.ArgumentParser(description=description, epilog='''
|
|
31
39
|
Upload a file to your RSE::
|
|
32
40
|
|
|
33
41
|
$ rucio upload --rse MOCK --scope mock --name file filename.txt
|
|
@@ -27,7 +27,13 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
|
|
30
|
+
description = (
|
|
31
|
+
"The Necromancer daemon is responsible for managing bad replicas. "
|
|
32
|
+
"If a replica that got declared bad has other replicas, it will try to recover it by requesting a new transfer. "
|
|
33
|
+
"If there are no replicas anymore, then the file gets marked as lost."
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
parser = argparse.ArgumentParser(description=description, epilog='''
|
|
31
37
|
Lost replica:
|
|
32
38
|
In this example the file gets uploaded and will only have this replica as there are no replication rules. If it gets declared bad, there will be no replica to recover from.
|
|
33
39
|
Therefore the replica gets marked as lost.
|
|
@@ -227,14 +227,29 @@ Note that attempting the use the ``--vos`` argument when in single-VO mode will
|
|
|
227
227
|
$ rucio-replica-recoverer --run-once --vos abc xyz
|
|
228
228
|
2020-07-28 15:21:33,349 5488 WARNING Ignoring argument vos, this is only applicable in a multi-VO setup.
|
|
229
229
|
''', formatter_class=argparse.RawDescriptionHelpFormatter) # NOQA: E501
|
|
230
|
-
parser.add_argument("--nattempts",
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
parser.add_argument("--
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
parser.add_argument('--
|
|
237
|
-
|
|
230
|
+
parser.add_argument("--nattempts",
|
|
231
|
+
action="store", default=5, type=int,
|
|
232
|
+
help='Minimum count of suspicious file replica appearance in bad_replicas table. Default value is 5.')
|
|
233
|
+
parser.add_argument("--younger-than",
|
|
234
|
+
action="store", default=5, type=int,
|
|
235
|
+
help='Consider all file replicas logged in bad_replicas table since specified number of younger-than days. Default value is 5.')
|
|
236
|
+
parser.add_argument('--vos', nargs='+', type=str,
|
|
237
|
+
help='Optional list of VOs to consider. Only used in multi-VO mode.')
|
|
238
|
+
parser.add_argument("--run-once",
|
|
239
|
+
action="store_true", default=False,
|
|
240
|
+
help='One iteration only.')
|
|
241
|
+
parser.add_argument("--limit-suspicious-files-on-rse",
|
|
242
|
+
action="store", default=5, type=int,
|
|
243
|
+
help='Maximum number of suspicious replicas on an RSE before that RSE is considered problematic and the suspicious replicas on that RSE are declared "TEMPORARY_UNAVAILABLE". Default value is 5.')
|
|
244
|
+
parser.add_argument('--json-file-name',
|
|
245
|
+
action="store", default="/opt/rucio/etc/suspicious_replica_recoverer.json", type=str,
|
|
246
|
+
help='Name of the json file that that contains the policies which will be used by the suspicious replica recoverer.')
|
|
247
|
+
parser.add_argument('--sleep-time',
|
|
248
|
+
action="store", default=3600, type=int,
|
|
249
|
+
help='Concurrency control: Thread sleep time after each chunk of work.')
|
|
250
|
+
parser.add_argument('--active-mode',
|
|
251
|
+
action="store_true", default=False,
|
|
252
|
+
help='If NOT specified, the daemon will run without taking any actions on any files. In either case, the log file will be produced normally.')
|
|
238
253
|
return parser
|
|
239
254
|
|
|
240
255
|
|
|
@@ -243,6 +258,13 @@ if __name__ == "__main__":
|
|
|
243
258
|
PARSER = get_parser()
|
|
244
259
|
ARGS = PARSER.parse_args()
|
|
245
260
|
try:
|
|
246
|
-
run(once=ARGS.run_once,
|
|
261
|
+
run(once=ARGS.run_once,
|
|
262
|
+
younger_than=ARGS.younger_than,
|
|
263
|
+
nattempts=ARGS.nattempts,
|
|
264
|
+
vos=ARGS.vos,
|
|
265
|
+
limit_suspicious_files_on_rse=ARGS.limit_suspicious_files_on_rse,
|
|
266
|
+
json_file_name=ARGS.json_file_name,
|
|
267
|
+
sleep_time=ARGS.sleep_time,
|
|
268
|
+
active_mode=ARGS.active_mode)
|
|
247
269
|
except KeyboardInterrupt:
|
|
248
270
|
stop()
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
16
|
"""
|
|
17
|
-
Undertaker is a daemon to manage expired
|
|
17
|
+
Undertaker is a daemon to manage expired DID.
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
20
|
import argparse
|
|
@@ -27,7 +27,13 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
|
|
30
|
+
description = (
|
|
31
|
+
"The Undertaker daemon is responsible for managing expired DIDs. "
|
|
32
|
+
"It deletes DIDs, but not replicas by checking if there are DIDs where the "
|
|
33
|
+
"'expired_at' date property is older than the current timestamp."
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
parser = argparse.ArgumentParser(description=description, epilog='''
|
|
31
37
|
Create a DID that is already expired by setting its lifetime to -1::
|
|
32
38
|
|
|
33
39
|
$ python
|
|
@@ -752,7 +752,7 @@ def add_scope(args, client, logger, console, spinner):
|
|
|
752
752
|
|
|
753
753
|
"""
|
|
754
754
|
client.add_scope(account=args.account, scope=args.scope)
|
|
755
|
-
print('Added new scope to account:
|
|
755
|
+
print(f'Added new scope to {args.account}: {args.scope}')
|
|
756
756
|
return SUCCESS
|
|
757
757
|
|
|
758
758
|
|
|
@@ -130,7 +130,7 @@ def content_history(ctx, dids):
|
|
|
130
130
|
@click.argument("dids", nargs=-1)
|
|
131
131
|
@click.pass_context
|
|
132
132
|
def content_add_(ctx, to_did, from_file, dids):
|
|
133
|
-
"""Attach a list [dids] of
|
|
133
|
+
"""Attach a list [dids] of data identifiers (file or collection-type) to another data identifier (collection-type)"""
|
|
134
134
|
args = Arguments({"no_pager": ctx.obj.no_pager, "dids": dids, "todid": to_did, "fromfile": from_file})
|
|
135
135
|
attach(args, ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
|
|
136
136
|
|
|
@@ -140,7 +140,7 @@ def content_add_(ctx, to_did, from_file, dids):
|
|
|
140
140
|
@click.argument("dids", nargs=-1)
|
|
141
141
|
@click.pass_context
|
|
142
142
|
def content_remove(ctx, dids, from_did):
|
|
143
|
-
"""Detach [dids], a list of DIDs (file or collection-type) from
|
|
143
|
+
"""Detach [dids], a list of DIDs (file or collection-type) from another Data Identifier (collection type)"""
|
|
144
144
|
args = Arguments({"no_pager": ctx.obj.no_pager, "dids": dids, "fromdid": from_did})
|
|
145
145
|
detach(args, ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
|
|
146
146
|
|
|
@@ -55,11 +55,10 @@ def list_(ctx, rses, csv):
|
|
|
55
55
|
|
|
56
56
|
@rse.command("show")
|
|
57
57
|
@click.argument("rse-name")
|
|
58
|
-
@click.option("--csv", is_flag=True, default=False, help="Output list of RSE property key and values as a csv")
|
|
59
58
|
@click.pass_context
|
|
60
|
-
def show(ctx, rse_name
|
|
59
|
+
def show(ctx, rse_name):
|
|
61
60
|
"""Usage, protocols, settings, and attributes for a given RSE"""
|
|
62
|
-
info_rse(Arguments({"no_pager": ctx.obj.no_pager, "rse": rse_name
|
|
61
|
+
info_rse(Arguments({"no_pager": ctx.obj.no_pager, "rse": rse_name}), ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
|
|
63
62
|
|
|
64
63
|
|
|
65
64
|
@rse.command("add")
|
|
@@ -68,6 +68,6 @@ def add_(ctx, subscription_name, did_filter, rule, comment, lifetime, account, p
|
|
|
68
68
|
@click.pass_context
|
|
69
69
|
def touch(ctx, dids):
|
|
70
70
|
"""Reevaluate list of DIDs against all active subscriptions"""
|
|
71
|
-
# TODO make reeval accept
|
|
71
|
+
# TODO make reeval accept DIDs as a list
|
|
72
72
|
dids = ",".join(dids)
|
|
73
73
|
reevaluate_did_for_subscription(Arguments({"no_pager": ctx.obj.no_pager, "dids": dids}), ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
|
|
@@ -967,7 +967,11 @@ class BaseClient:
|
|
|
967
967
|
if not os.path.isdir(self.token_path):
|
|
968
968
|
try:
|
|
969
969
|
self.logger.debug('rucio token folder \'%s\' not found. Create it.' % self.token_path)
|
|
970
|
-
|
|
970
|
+
try:
|
|
971
|
+
makedirs(self.token_path, 0o700)
|
|
972
|
+
except FileExistsError:
|
|
973
|
+
msg = f'Token directory already exists at {self.token_path} - skipping'
|
|
974
|
+
self.logger.debug(msg)
|
|
971
975
|
except Exception:
|
|
972
976
|
raise
|
|
973
977
|
|
|
@@ -55,7 +55,7 @@ class DIDClient(BaseClient):
|
|
|
55
55
|
like <key>.<operation>, e.g. key1 >= value1 is equivalent to {'key1.gte': value}, where <operation> belongs to one
|
|
56
56
|
of the set {'lte', 'gte', 'gt', 'lt', 'ne' or ''}. Equivalence doesn't require an operator.
|
|
57
57
|
did_type :
|
|
58
|
-
The type of the
|
|
58
|
+
The type of the DID: 'all'(container, dataset or file)|'collection'(dataset or container)|'dataset'|'container'|'file'
|
|
59
59
|
long :
|
|
60
60
|
Long format option to display more information for each DID.
|
|
61
61
|
recursive :
|
|
@@ -325,14 +325,14 @@ class DIDClient(BaseClient):
|
|
|
325
325
|
ignore_duplicate: bool = False
|
|
326
326
|
) -> bool:
|
|
327
327
|
"""
|
|
328
|
-
Add
|
|
328
|
+
Add DIDs to DIDs.
|
|
329
329
|
|
|
330
330
|
Parameters
|
|
331
331
|
----------
|
|
332
332
|
attachments :
|
|
333
333
|
The attachments.
|
|
334
|
-
An attachment contains: "scope", "name", "
|
|
335
|
-
|
|
334
|
+
An attachment contains: "scope", "name", "DIDs".
|
|
335
|
+
DIDs is: [{'scope': scope, 'name': name}, ...]
|
|
336
336
|
ignore_duplicate :
|
|
337
337
|
If True, ignore duplicate entries.
|
|
338
338
|
"""
|
|
@@ -358,8 +358,8 @@ class DIDClient(BaseClient):
|
|
|
358
358
|
----------
|
|
359
359
|
attachments :
|
|
360
360
|
The attachments.
|
|
361
|
-
An attachment contains: "scope", "name", "
|
|
362
|
-
|
|
361
|
+
An attachment contains: "scope", "name", "DIDs".
|
|
362
|
+
DIDs is: [{'scope': scope, 'name': name}, ...]
|
|
363
363
|
ignore_duplicate :
|
|
364
364
|
If True, ignore duplicate entries.
|
|
365
365
|
"""
|
|
@@ -377,8 +377,8 @@ class DIDClient(BaseClient):
|
|
|
377
377
|
----------
|
|
378
378
|
attachments :
|
|
379
379
|
The attachments.
|
|
380
|
-
An attachment contains: "scope", "name", "
|
|
381
|
-
|
|
380
|
+
An attachment contains: "scope", "name", "DIDs".
|
|
381
|
+
DIDs is: [{'scope': scope, 'name': name}, ...]
|
|
382
382
|
"""
|
|
383
383
|
return self.attach_dids_to_dids(attachments=attachments)
|
|
384
384
|
|
|
@@ -393,8 +393,8 @@ class DIDClient(BaseClient):
|
|
|
393
393
|
----------
|
|
394
394
|
attachments :
|
|
395
395
|
The attachments.
|
|
396
|
-
An attachment contains: "scope", "name", "
|
|
397
|
-
|
|
396
|
+
An attachment contains: "scope", "name", "DIDs".
|
|
397
|
+
DIDs is: [{'scope': scope, 'name': name}, ...]
|
|
398
398
|
"""
|
|
399
399
|
return self.attach_dids_to_dids(attachments=attachments)
|
|
400
400
|
|
|
@@ -661,7 +661,7 @@ class DIDClient(BaseClient):
|
|
|
661
661
|
Parameters
|
|
662
662
|
----------
|
|
663
663
|
dids :
|
|
664
|
-
A list of
|
|
664
|
+
A list of DIDs.
|
|
665
665
|
inherit :
|
|
666
666
|
A boolean. If set to true, the metadata of the parent are concatenated.
|
|
667
667
|
plugin :
|
|
@@ -752,7 +752,7 @@ class DIDClient(BaseClient):
|
|
|
752
752
|
Parameters
|
|
753
753
|
----------
|
|
754
754
|
dids :
|
|
755
|
-
A list of
|
|
755
|
+
A list of DIDs including metadata, i.e.
|
|
756
756
|
[{'scope': scope1, 'name': name1, 'meta': {key1: value1, key2: value2}}, ...].
|
|
757
757
|
recursive :
|
|
758
758
|
Option to propagate the metadata update to content.
|
|
@@ -902,7 +902,7 @@ class DIDClient(BaseClient):
|
|
|
902
902
|
Returns
|
|
903
903
|
-------
|
|
904
904
|
|
|
905
|
-
A
|
|
905
|
+
A DID
|
|
906
906
|
"""
|
|
907
907
|
|
|
908
908
|
path = '/'.join([self.DIDS_BASEURL, guid, 'guid'])
|
|
@@ -954,7 +954,7 @@ class DIDClient(BaseClient):
|
|
|
954
954
|
name: str
|
|
955
955
|
) -> "Iterator[dict[str, Any]]":
|
|
956
956
|
"""
|
|
957
|
-
List parent dataset/containers of a
|
|
957
|
+
List parent dataset/containers of a DID.
|
|
958
958
|
|
|
959
959
|
Parameters
|
|
960
960
|
----------
|
|
@@ -1016,12 +1016,12 @@ class DIDClient(BaseClient):
|
|
|
1016
1016
|
|
|
1017
1017
|
def resurrect(self, dids: "Sequence[Mapping[str, Any]]") -> bool:
|
|
1018
1018
|
"""
|
|
1019
|
-
Resurrect a list of
|
|
1019
|
+
Resurrect a list of DIDs.
|
|
1020
1020
|
|
|
1021
1021
|
Parameters
|
|
1022
1022
|
----------
|
|
1023
1023
|
dids :
|
|
1024
|
-
A list of
|
|
1024
|
+
A list of DIDs [{'scope': scope, 'name': name}, ...]
|
|
1025
1025
|
"""
|
|
1026
1026
|
path = '/'.join([self.DIDS_BASEURL, 'resurrect'])
|
|
1027
1027
|
url = build_url(choice(self.list_hosts), path=path)
|
|
@@ -285,7 +285,7 @@ class DownloadClient:
|
|
|
285
285
|
-------
|
|
286
286
|
|
|
287
287
|
A list of dictionaries with an entry for each file, containing the input options,
|
|
288
|
-
the
|
|
288
|
+
the DID, and the clientState. clientState can be one of the following:
|
|
289
289
|
ALREADY_DONE, DONE, FILE_NOT_FOUND, FAIL_VALIDATE, FAILED
|
|
290
290
|
|
|
291
291
|
Raises
|
|
@@ -422,7 +422,7 @@ class DownloadClient:
|
|
|
422
422
|
-------
|
|
423
423
|
|
|
424
424
|
A list of dictionaries with an entry for each file, containing the input options,
|
|
425
|
-
the
|
|
425
|
+
the DID, and the clientState.
|
|
426
426
|
|
|
427
427
|
Raises
|
|
428
428
|
------
|
|
@@ -499,7 +499,7 @@ class DownloadClient:
|
|
|
499
499
|
-------
|
|
500
500
|
|
|
501
501
|
A list of dictionaries with an entry for each file, containing the input options,
|
|
502
|
-
the
|
|
502
|
+
the DID, and the clientState.
|
|
503
503
|
|
|
504
504
|
Raises
|
|
505
505
|
------
|
|
@@ -1021,7 +1021,7 @@ class DownloadClient:
|
|
|
1021
1021
|
-------
|
|
1022
1022
|
|
|
1023
1023
|
A list of dictionaries with an entry for each file, containing the input options,
|
|
1024
|
-
the
|
|
1024
|
+
the DID, and the clientState.
|
|
1025
1025
|
|
|
1026
1026
|
|
|
1027
1027
|
Raises
|
|
@@ -1173,7 +1173,7 @@ class DownloadClient:
|
|
|
1173
1173
|
-------
|
|
1174
1174
|
|
|
1175
1175
|
A list of dictionaries with an entry for each file, containing the input options,
|
|
1176
|
-
the
|
|
1176
|
+
the DID, and the clientState.
|
|
1177
1177
|
"""
|
|
1178
1178
|
trace_custom_fields = trace_custom_fields or {}
|
|
1179
1179
|
logger = self.logger
|
|
@@ -1322,7 +1322,7 @@ class DownloadClient:
|
|
|
1322
1322
|
|
|
1323
1323
|
def _resolve_one_item_dids(self, item: dict[str, Any]) -> "Iterator[dict[str, Any]]":
|
|
1324
1324
|
"""
|
|
1325
|
-
Resolve scopes or wildcard DIDs to lists of full
|
|
1325
|
+
Resolve scopes or wildcard DIDs to lists of full DID names:
|
|
1326
1326
|
|
|
1327
1327
|
Parameters
|
|
1328
1328
|
----------
|
|
@@ -1456,10 +1456,10 @@ class DownloadClient:
|
|
|
1456
1456
|
if not found_compatible_group:
|
|
1457
1457
|
item_groups.append([item])
|
|
1458
1458
|
|
|
1459
|
-
# List replicas for
|
|
1459
|
+
# List replicas for DIDs
|
|
1460
1460
|
merged_items_with_sources = []
|
|
1461
1461
|
for item_group in item_groups:
|
|
1462
|
-
# Take configuration from the first item in the group; but
|
|
1462
|
+
# Take configuration from the first item in the group; but DIDs from all items
|
|
1463
1463
|
item = item_group[0]
|
|
1464
1464
|
input_dids = {DID(did): did
|
|
1465
1465
|
for item in item_group
|
|
@@ -1512,15 +1512,15 @@ class DownloadClient:
|
|
|
1512
1512
|
logger(logging.DEBUG, 'num resolved files: %s' % len(file_items))
|
|
1513
1513
|
|
|
1514
1514
|
if not nrandom or nrandom != len(file_items):
|
|
1515
|
-
# If list_replicas didn't resolve any file DIDs for any input
|
|
1515
|
+
# If list_replicas didn't resolve any file DIDs for any input DID, we pass through the input DID.
|
|
1516
1516
|
# This is done to keep compatibility with later code which generates "FILE_NOT_FOUND" traces
|
|
1517
1517
|
# and output items.
|
|
1518
1518
|
# In the special case of nrandom, when serverside filtering is applied, it's "normal" for some input
|
|
1519
|
-
#
|
|
1519
|
+
# DIDs to be ignored as long as we got exactly nrandom file_items from the server.
|
|
1520
1520
|
for input_did in input_dids:
|
|
1521
1521
|
if not any([input_did == f['did'] or str(input_did) in f['parent_dids'] for f in file_items]):
|
|
1522
1522
|
logger(logging.ERROR, 'DID does not exist: %s' % input_did)
|
|
1523
|
-
# TODO: store
|
|
1523
|
+
# TODO: store DID directly as DIDType object
|
|
1524
1524
|
file_items.append({'did': str(input_did), 'adler32': None, 'md5': None, 'sources': [], 'parent_dids': set(), 'impl': impl or None})
|
|
1525
1525
|
|
|
1526
1526
|
# filtering out tape sources
|
|
@@ -1534,7 +1534,7 @@ class DownloadClient:
|
|
|
1534
1534
|
logger(logging.WARNING, 'The requested DID {} only has replicas on tape. Direct download from tape is prohibited. '
|
|
1535
1535
|
'Please request a transfer to a non-tape endpoint.'.format(file_item['did']))
|
|
1536
1536
|
|
|
1537
|
-
# Match the file
|
|
1537
|
+
# Match the file DID back to the DIDs which were provided to list_replicas.
|
|
1538
1538
|
# Later, this will allow to match the file back to input_items via did_to_input_items
|
|
1539
1539
|
for file_item in file_items:
|
|
1540
1540
|
file_did = DID(file_item['did'])
|
|
@@ -1628,7 +1628,7 @@ class DownloadClient:
|
|
|
1628
1628
|
|
|
1629
1629
|
all_dest_file_paths = set()
|
|
1630
1630
|
|
|
1631
|
-
# get replicas for every file of the given
|
|
1631
|
+
# get replicas for every file of the given DIDs
|
|
1632
1632
|
for file_item in file_items:
|
|
1633
1633
|
file_did = DID(file_item['did'])
|
|
1634
1634
|
input_items = list(itertools.chain.from_iterable(did_to_input_items.get(did, []) for did in file_item['input_dids']))
|
|
@@ -1676,7 +1676,7 @@ class DownloadClient:
|
|
|
1676
1676
|
file_item['dest_file_paths'] = list(dest_file_paths)
|
|
1677
1677
|
file_item['temp_file_path'] = '%s.part' % file_item['dest_file_paths'][0]
|
|
1678
1678
|
|
|
1679
|
-
# the file
|
|
1679
|
+
# the file DID str is not a unique key for this dict because multiple calls of list_replicas
|
|
1680
1680
|
# could result in the same DID multiple times. So we're using the id of the dictionary objects
|
|
1681
1681
|
fiid = id(file_item)
|
|
1682
1682
|
fiid_to_file_item[fiid] = file_item
|
|
@@ -41,9 +41,9 @@ class LockClient(BaseClient):
|
|
|
41
41
|
Parameters
|
|
42
42
|
----------
|
|
43
43
|
scope :
|
|
44
|
-
The scope of the
|
|
44
|
+
The scope of the DID of the locks to list.
|
|
45
45
|
name :
|
|
46
|
-
The name of the
|
|
46
|
+
The name of the DID of the locks to list.
|
|
47
47
|
|
|
48
48
|
"""
|
|
49
49
|
|
|
@@ -80,7 +80,7 @@ class LockClient(BaseClient):
|
|
|
80
80
|
list of dictionaries with lock info
|
|
81
81
|
"""
|
|
82
82
|
|
|
83
|
-
# convert
|
|
83
|
+
# convert DID list to list of dictionaries
|
|
84
84
|
if not all(did.get("type", "dataset") in ("dataset", "container") for did in dids):
|
|
85
85
|
raise ValueError("DID type can be either 'container' or 'dataset'")
|
|
86
86
|
|
|
@@ -416,7 +416,7 @@ class ReplicaClient(BaseClient):
|
|
|
416
416
|
|
|
417
417
|
def list_dataset_replicas(self, scope, name, deep=False):
|
|
418
418
|
"""
|
|
419
|
-
List dataset replicas for a
|
|
419
|
+
List dataset replicas for a DID (scope:name).
|
|
420
420
|
|
|
421
421
|
Parameters
|
|
422
422
|
----------
|
|
@@ -446,7 +446,7 @@ class ReplicaClient(BaseClient):
|
|
|
446
446
|
|
|
447
447
|
def list_dataset_replicas_bulk(self, dids):
|
|
448
448
|
"""
|
|
449
|
-
List dataset replicas for a
|
|
449
|
+
List dataset replicas for a DID (scope:name).
|
|
450
450
|
|
|
451
451
|
Parameters
|
|
452
452
|
----------
|