rucio 37.5.0__tar.gz → 37.7.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.7.0}/PKG-INFO +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-abacus-account +8 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-abacus-rse +8 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-auditor +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-conveyor-throttler +7 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-follower +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-judge-cleaner +9 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-necromancer +7 -1
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-replica-recoverer +31 -9
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-undertaker +8 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/bin_legacy/rucio.py +41 -22
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/bin_legacy/rucio_admin.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/did.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/rse.py +2 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/rule.py +9 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/subscription.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/baseclient.py +9 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/didclient.py +16 -16
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/downloadclient.py +16 -15
- rucio-37.7.0/lib/rucio/client/exportclient.py +91 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/lockclient.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/pingclient.py +35 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/replicaclient.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/touchclient.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/uploadclient.py +728 -183
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/cache.py +1 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/client.py +4 -30
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/config.py +27 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/constants.py +5 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/didtype.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/dumper/__init__.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/pcache.py +20 -25
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/plugins.py +12 -19
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/policy.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/schema/__init__.py +11 -8
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/types.py +7 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/utils.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/account.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/account_limit.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/authentication.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/credential.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did.py +62 -61
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/__init__.py +10 -10
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +9 -9
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/elasticsearch_meta.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/json_meta.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +9 -9
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/dirac.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/distance.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/exporter.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/importer.py +5 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/lifetime_exception.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/lock.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/meta_conventions.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/monitor.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/naming_convention.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/nongrid_trace.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/oidc.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/permission/__init__.py +9 -6
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/permission/generic.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/permission/generic_multi_vo.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/replica.py +22 -22
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/request.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/rse.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/rule.py +38 -38
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/rule_grouping.py +2 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/scope.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/trace.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/transfer.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/vo.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/atropos/atropos.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/auditor/__init__.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/automatix/automatix.py +5 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/badreplicas/minos.py +12 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +5 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/badreplicas/necromancer.py +9 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/bb8/bb8.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/bb8/common.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/cache/consumer.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/common.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/finisher.py +13 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/poller.py +5 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/receiver.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/submitter.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/follower/follower.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/hermes/hermes.py +29 -8
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/judge/cleaner.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/judge/evaluator.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/judge/injector.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/judge/repairer.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/reaper/dark_reaper.py +5 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/reaper/reaper.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +4 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/storage/consistency/actions.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/tracer/kronos.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +71 -69
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/undertaker/undertaker.py +8 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/constants.py +4 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/models.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/session.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/util.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/account.py +77 -101
- rucio-37.7.0/lib/rucio/gateway/account_limit.py +301 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/authentication.py +9 -8
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/config.py +11 -10
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/credential.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/did.py +58 -58
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/dirac.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/exporter.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/heartbeat.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/identity.py +4 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/importer.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/lifetime_exception.py +5 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/lock.py +6 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/meta_conventions.py +3 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/permission.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/quarantined_replica.py +2 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/replica.py +20 -20
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/request.py +10 -10
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/rse.py +27 -26
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/rule.py +12 -11
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/scope.py +4 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/subscription.py +7 -6
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/vo.py +5 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/__init__.py +7 -6
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/ngarc.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/srm.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/webdav.py +8 -1
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/rsemanager.py +5 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/translation.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/tests/common.py +6 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/vcsversion.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +5 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +20 -20
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +4 -3
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/common.py +5 -4
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +382 -331
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +5 -5
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +13 -13
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/main.py +1 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +16 -16
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +16 -16
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_account_limits.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_archive.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_bb8.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_belleii.py +4 -2
- rucio-37.7.0/tests/test_bin_rucio.py +1243 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_cli_client_structure.py +25 -2
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_clients.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_conveyor.py +72 -73
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_conveyor_submitter.py +13 -12
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_curl.py +9 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_did.py +18 -18
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_did_meta_plugins.py +25 -26
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_download.py +90 -14
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_gateway_external_representation.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_heartbeat.py +14 -12
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_hermes.py +9 -2
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_import_export.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_judge_evaluator.py +5 -5
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_judge_injector.py +6 -5
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_multi_vo.py +23 -23
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_oidc.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_permission.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_reaper.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_replica.py +7 -7
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_replica_recoverer.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_replica_sorting.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rule.py +13 -11
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_subscription.py +52 -7
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_throttler.py +22 -21
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_trace.py +1 -1
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_transfer_plugins.py +3 -3
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_undertaker.py +2 -2
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_upload.py +279 -65
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_utils.py +1 -1
- rucio-37.5.0/lib/rucio/client/exportclient.py +0 -50
- rucio-37.5.0/lib/rucio/gateway/account_limit.py +0 -327
- rucio-37.5.0/tests/test_bin_rucio.py +0 -2433
- {rucio-37.5.0 → rucio-37.7.0}/AUTHORS.rst +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/ChangeLog +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/LICENSE +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/MANIFEST.in +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/README.md +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-abacus-collection-replica +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-admin +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-atropos +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-automatix +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-bb8 +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-cache-client +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-cache-consumer +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-conveyor-finisher +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-conveyor-poller +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-conveyor-preparer +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-conveyor-receiver +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-conveyor-stager +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-conveyor-submitter +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-dark-reaper +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-dumper +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-hermes +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-judge-evaluator +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-judge-injector +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-judge-repairer +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-kronos +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-minos +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-minos-temporary-expiration +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-oauth-manager +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-reaper +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-rse-decommissioner +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-storage-consistency-actions +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/bin/rucio-transmogrifier +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/alembic.ini.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/alembic_offline.ini.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/globus-config.yml.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/ldap.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/rse-accounts.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/rucio.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/etc/rucio_multi_vo.cfg.template +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/alembicrevision.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/account.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/bin_legacy/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/command.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/config.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/download.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/lifetime_exception.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/replica.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/scope.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/upload.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/cli/utils.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/accountclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/client.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/configclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/credentialclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/diracclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/fileclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/importclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/requestclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/richclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/rseclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/ruleclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/scopeclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/client/subscriptionclient.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/bittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/checksum.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/constraints.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/dumper/consistency.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/dumper/data_models.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/exception.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/extra.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/logging.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/schema/generic.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/stopwatch.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/account_counter.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/config.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/heartbeat.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/identity.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/message.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/quarantined_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/replica_sorter.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/rse_counter.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/rse_expression_parser.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/rse_selector.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/subscription.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/topology.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/core/volatile_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/abacus/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/abacus/account.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/abacus/rse.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/atropos/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/auditor/srmdumps.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/automatix/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/bb8/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/cache/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/common.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/preparer.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/stager.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/conveyor/throttler.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/follower/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/hermes/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/judge/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/reaper/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/storage/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/tracer/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/daemons/undertaker/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/30d5206e9cad_increase_oauthrequest_redirect_msg_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/b0070f3695c8_add_deletedidmeta_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/b5493606bbf5_fix_primary_key_for_subscription_history.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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.7.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.7.0}/lib/rucio/db/sqla/sautils.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/db/sqla/types.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/gateway/trace.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/posix.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/protocol.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/storm.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/tests/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/tests/common_server.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/bittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/fts3.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/fts3_plugins.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/globus.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/globus_library.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/mock.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/transfertool/transfertool.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/version.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/import.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/types.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/main.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/metrics.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio/web/rest/ping.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/lib/rucio.egg-info/SOURCES.txt +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/pyproject.toml +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/requirements/requirements.server.txt +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/setup.cfg +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/setup.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/setuputil.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_abacus_account.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_abacus_collection_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_abacus_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_account.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_auditor.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_auditor_hdfs.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_auditor_srmdumps.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_authentication.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_automatix.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_bad_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_boolean.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_config.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_counter.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_credential.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_daemons.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_dataset_replicas.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_db.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_dumper.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_filter_engine.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_identity.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_impl_upload_download.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_judge_cleaner.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_judge_repairer.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_lifetime.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_message.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_meta_conventions.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_meta_did.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_module_import.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_monitor.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_naming_convention.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_oauthmanager.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_pfns.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_ping.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_policy_package.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_preparer.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_qos.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_quarantined_replica.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_redirect.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_request.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_root_proxy.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_expression_parser.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_lfn2path.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_posix.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_srm.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rse_selector.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_rucio_server.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_scope.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_tpc.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tests/test_transfer.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tools/bootstrap.py +0 -0
- {rucio-37.5.0 → rucio-37.7.0}/tools/merge_rucio_configs.py +0 -0
- {rucio-37.5.0 → rucio-37.7.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
|
|
@@ -26,7 +26,7 @@ import uuid
|
|
|
26
26
|
from copy import deepcopy
|
|
27
27
|
from datetime import datetime
|
|
28
28
|
from logging import DEBUG
|
|
29
|
-
from typing import Optional
|
|
29
|
+
from typing import TYPE_CHECKING, Optional
|
|
30
30
|
|
|
31
31
|
from rich.console import Console
|
|
32
32
|
from rich.padding import Padding
|
|
@@ -58,6 +58,9 @@ from rucio.common.extra import import_extras
|
|
|
58
58
|
from rucio.common.test_rucio_server import TestRucioServer
|
|
59
59
|
from rucio.common.utils import Color, StoreAndDeprecateWarningAction, chunks, extract_scope, parse_did_filter_from_string, parse_did_filter_from_string_fe, setup_logger, sizefmt
|
|
60
60
|
|
|
61
|
+
if TYPE_CHECKING:
|
|
62
|
+
from rucio.common.types import FileToUploadDict
|
|
63
|
+
|
|
61
64
|
EXTRA_MODULES = import_extras(['argcomplete'])
|
|
62
65
|
|
|
63
66
|
if EXTRA_MODULES['argcomplete']:
|
|
@@ -947,29 +950,44 @@ def upload(args, client, logger, console, spinner):
|
|
|
947
950
|
elif len(did) == 2:
|
|
948
951
|
logger.warning('Ignoring input {} because dataset DID is already set {}:{}'.format(arg, dsscope, dsname))
|
|
949
952
|
|
|
950
|
-
items = []
|
|
953
|
+
items: list[FileToUploadDict] = []
|
|
951
954
|
for arg in args.args:
|
|
952
955
|
if arg.count(':') > 0:
|
|
953
956
|
continue
|
|
957
|
+
if args.pfn and args.impl:
|
|
958
|
+
logger.warning('Ignoring --impl option because --pfn option given')
|
|
959
|
+
args.impl = None
|
|
960
|
+
|
|
961
|
+
item: FileToUploadDict = {'path': arg, 'rse': args.rse}
|
|
962
|
+
|
|
963
|
+
if args.scope:
|
|
964
|
+
item['did_scope'] = args.scope
|
|
965
|
+
if args.name:
|
|
966
|
+
item['did_name'] = args.name
|
|
967
|
+
if dsscope:
|
|
968
|
+
item['dataset_scope'] = dsscope
|
|
969
|
+
if dsname:
|
|
970
|
+
item['dataset_name'] = dsname
|
|
971
|
+
if args.impl:
|
|
972
|
+
item['impl'] = args.impl
|
|
973
|
+
if args.protocol:
|
|
974
|
+
item['force_scheme'] = args.protocol
|
|
954
975
|
if args.pfn:
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
'transfer_timeout': args.transfer_timeout,
|
|
971
|
-
'guid': args.guid,
|
|
972
|
-
'recursive': args.recursive})
|
|
976
|
+
item['pfn'] = args.pfn
|
|
977
|
+
if args.no_register:
|
|
978
|
+
item['no_register'] = True
|
|
979
|
+
if args.register_after_upload:
|
|
980
|
+
item['register_after_upload'] = True
|
|
981
|
+
if args.lifetime is not None:
|
|
982
|
+
item['lifetime'] = int(args.lifetime)
|
|
983
|
+
if args.transfer_timeout is not None:
|
|
984
|
+
item['transfer_timeout'] = int(args.transfer_timeout)
|
|
985
|
+
if args.guid:
|
|
986
|
+
item['guid'] = args.guid
|
|
987
|
+
if args.recursive:
|
|
988
|
+
item['recursive'] = True
|
|
989
|
+
|
|
990
|
+
items.append(item)
|
|
973
991
|
|
|
974
992
|
if len(items) < 1:
|
|
975
993
|
raise InputValidationError('No files could be extracted from the given arguments')
|
|
@@ -978,6 +996,7 @@ def upload(args, client, logger, console, spinner):
|
|
|
978
996
|
logger.error("A single GUID was specified on the command line, but there are multiple files to upload.")
|
|
979
997
|
logger.error("If GUID auto-detection is not used, only one file may be uploaded at a time")
|
|
980
998
|
raise InputValidationError('Invalid input argument composition')
|
|
999
|
+
|
|
981
1000
|
if len(items) > 1 and args.name:
|
|
982
1001
|
logger.error("A single LFN was specified on the command line, but there are multiple files to upload.")
|
|
983
1002
|
logger.error("If LFN auto-detection is not used, only one file may be uploaded at a time")
|
|
@@ -991,7 +1010,7 @@ def upload(args, client, logger, console, spinner):
|
|
|
991
1010
|
from rucio.client.uploadclient import UploadClient
|
|
992
1011
|
upload_client = UploadClient(client, logger=logger)
|
|
993
1012
|
summary_file_path = 'rucio_upload.json' if args.summary else None
|
|
994
|
-
upload_client.upload(items, summary_file_path)
|
|
1013
|
+
upload_client.upload(items=items, summary_file_path=summary_file_path)
|
|
995
1014
|
return SUCCESS
|
|
996
1015
|
|
|
997
1016
|
|
|
@@ -1266,7 +1285,7 @@ def add_rule(args, client, logger, console, spinner):
|
|
|
1266
1285
|
"""
|
|
1267
1286
|
%(prog)s add-rule <did> <copies> <rse-expression> [options]
|
|
1268
1287
|
|
|
1269
|
-
Add a rule to a
|
|
1288
|
+
Add a rule to a DID.
|
|
1270
1289
|
"""
|
|
1271
1290
|
|
|
1272
1291
|
dids = []
|
|
@@ -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")
|
|
@@ -116,13 +116,17 @@ def move(ctx, rule_id, rses, activity, source_rses):
|
|
|
116
116
|
@click.option("--comment", help="Comment about the replication rule")
|
|
117
117
|
@click.option("--account", help="The account owning the rule")
|
|
118
118
|
@click.option("--stuck", is_flag=True, default=False, help="Set state to STUCK.")
|
|
119
|
+
@click.option('--suspend', is_flag=True, default=None, help='Set state to SUSPENDED.')
|
|
119
120
|
@click.option("--activity", help="Activity of the rule.")
|
|
120
121
|
@click.option("--cancel-requests", is_flag=True, default=False, help="Cancel requests when setting rules to stuck.")
|
|
121
122
|
@click.option("--priority", help="Priority of the requests of the rule.")
|
|
122
123
|
@click.option("--child-rule-id", help='Child rule id of the rule. Use "None" to remove an existing parent/child relationship.')
|
|
123
124
|
@click.option("--boost-rule", is_flag=True, default=False, help="Quickens the transition of a rule from STUCK to REPLICATING.")
|
|
124
125
|
@click.pass_context
|
|
125
|
-
def update(
|
|
126
|
+
def update(
|
|
127
|
+
ctx, rule_id: str, lifetime: str, locked: bool, source_rses: str, activity: str, comment: str,
|
|
128
|
+
account: str, stuck: bool, suspend: bool, cancel_requests: bool, priority: str, child_rule_id: str, boost_rule: bool
|
|
129
|
+
):
|
|
126
130
|
"""Update an existing rule"""
|
|
127
131
|
args = Arguments(
|
|
128
132
|
{
|
|
@@ -134,6 +138,7 @@ def update(ctx, rule_id, lifetime, locked, source_rses, activity, comment, accou
|
|
|
134
138
|
"rule_account": account,
|
|
135
139
|
"source_replica_expression": source_rses,
|
|
136
140
|
"state_stuck": stuck,
|
|
141
|
+
"state_suspended": suspend,
|
|
137
142
|
"cancel_requests": cancel_requests,
|
|
138
143
|
"priority": priority,
|
|
139
144
|
"child_rule_id": child_rule_id,
|
|
@@ -144,15 +149,14 @@ def update(ctx, rule_id, lifetime, locked, source_rses, activity, comment, accou
|
|
|
144
149
|
|
|
145
150
|
|
|
146
151
|
@rule.command("list")
|
|
147
|
-
@click.
|
|
148
|
-
@click.option("--id", "rule_id", help="List by rule id", hidden=True) # TODO: Remove. This doesn't work and does the same thing as show
|
|
152
|
+
@click.argument("did")
|
|
149
153
|
@click.option("--traverse", is_flag=True, default=False, help="Traverse the did tree and search for rules affecting this did")
|
|
150
154
|
@click.option("--csv", is_flag=True, default=False, help="Comma Separated Value output")
|
|
151
155
|
@click.option("--file", help="Filter by file")
|
|
152
156
|
@click.option("--account", help="Filter by account")
|
|
153
157
|
@click.option("--subscription", help="Filter by subscription name")
|
|
154
158
|
@click.pass_context
|
|
155
|
-
def list_(ctx, did,
|
|
159
|
+
def list_(ctx, did, traverse, csv, file, account, subscription):
|
|
156
160
|
"""List all rules impacting a given DID"""
|
|
157
|
-
args = Arguments({"no_pager": ctx.obj.no_pager, "did": did, "rule_id":
|
|
161
|
+
args = Arguments({"no_pager": ctx.obj.no_pager, "did": did, "rule_id": None, "traverse": traverse, "csv": csv, "file": file, "subscription": (account if account is not None else ctx.obj.client.account, subscription)})
|
|
158
162
|
list_rules(args, ctx.obj.client, ctx.obj.logger, ctx.obj.console, ctx.obj.spinner)
|
|
@@ -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)
|
|
@@ -38,6 +38,7 @@ from requests.status_codes import codes
|
|
|
38
38
|
from rucio import version
|
|
39
39
|
from rucio.common import exception
|
|
40
40
|
from rucio.common.config import config_get, config_get_bool, config_get_int, config_has_section
|
|
41
|
+
from rucio.common.constants import DEFAULT_VO
|
|
41
42
|
from rucio.common.exception import CannotAuthenticate, ClientProtocolNotFound, ClientProtocolNotSupported, ConfigNotFound, MissingClientParameter, MissingModuleException, NoAuthInformation, ServerConnectionException
|
|
42
43
|
from rucio.common.extra import import_extras
|
|
43
44
|
from rucio.common.utils import build_url, get_tmp_dir, my_key_generator, parse_response, setup_logger, ssh_sign
|
|
@@ -225,10 +226,10 @@ class BaseClient:
|
|
|
225
226
|
self.vo = config_get('client', 'vo')
|
|
226
227
|
except (NoOptionError, NoSectionError):
|
|
227
228
|
self.logger.debug('No VO found. Using default VO.')
|
|
228
|
-
self.vo =
|
|
229
|
+
self.vo = DEFAULT_VO
|
|
229
230
|
except ConfigNotFound:
|
|
230
231
|
self.logger.debug('No configuration found. Using default VO.')
|
|
231
|
-
self.vo =
|
|
232
|
+
self.vo = DEFAULT_VO
|
|
232
233
|
|
|
233
234
|
self.auth_token_file_path, self.token_exp_epoch_file, self.token_file, self.token_path = self._get_auth_tokens()
|
|
234
235
|
self.__authenticate()
|
|
@@ -251,7 +252,7 @@ class BaseClient:
|
|
|
251
252
|
|
|
252
253
|
else:
|
|
253
254
|
token_path = self.TOKEN_PATH_PREFIX + getpass.getuser()
|
|
254
|
-
if self.vo !=
|
|
255
|
+
if self.vo != DEFAULT_VO:
|
|
255
256
|
token_path += '@%s' % self.vo
|
|
256
257
|
|
|
257
258
|
token_file = token_path + '/' + self.TOKEN_PREFIX + token_filename_suffix
|
|
@@ -967,7 +968,11 @@ class BaseClient:
|
|
|
967
968
|
if not os.path.isdir(self.token_path):
|
|
968
969
|
try:
|
|
969
970
|
self.logger.debug('rucio token folder \'%s\' not found. Create it.' % self.token_path)
|
|
970
|
-
|
|
971
|
+
try:
|
|
972
|
+
makedirs(self.token_path, 0o700)
|
|
973
|
+
except FileExistsError:
|
|
974
|
+
msg = f'Token directory already exists at {self.token_path} - skipping'
|
|
975
|
+
self.logger.debug(msg)
|
|
971
976
|
except Exception:
|
|
972
977
|
raise
|
|
973
978
|
|
|
@@ -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)
|