rucio 34.3.0__tar.gz → 34.4.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-34.3.0 → rucio-34.4.0}/PKG-INFO +1 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/account.py +4 -4
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/did.py +29 -11
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/exporter.py +2 -2
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/heartbeat.py +16 -3
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/importer.py +2 -2
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/meta_conventions.py +4 -4
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/permission.py +4 -4
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/replica.py +4 -2
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/rse.py +3 -4
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/rule.py +4 -4
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/scope.py +3 -4
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/baseclient.py +2 -2
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/downloadclient.py +56 -7
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/replicaclient.py +13 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/pcache.py +3 -3
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/types.py +14 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/utils.py +3 -3
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/authentication.py +76 -23
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did.py +310 -73
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +25 -5
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/distance.py +2 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/oidc.py +5 -5
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/replica.py +37 -8
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/replica_sorter.py +1 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/rse.py +2 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/rse_selector.py +29 -3
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/rule.py +14 -7
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/rule_grouping.py +59 -11
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/scope.py +3 -2
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/vo.py +1 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/auditor/srmdumps.py +3 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/common.py +11 -9
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/stager.py +14 -13
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/reaper/dark_reaper.py +13 -2
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +73 -12
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/util.py +40 -24
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/posix.py +1 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/protocol.py +0 -22
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/srm.py +2 -2
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/storm.py +1 -1
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/webdav.py +10 -6
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/vcsversion.py +3 -3
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio.egg-info/SOURCES.txt +0 -4
- {rucio-34.3.0 → rucio-34.4.0}/pyproject.toml +31 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_replica.py +1 -1
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_replica_recoverer.py +73 -0
- rucio-34.3.0/lib/rucio/common/schema/cms.py +0 -477
- rucio-34.3.0/lib/rucio/common/schema/lsst.py +0 -422
- rucio-34.3.0/lib/rucio/core/permission/cms.py +0 -1168
- rucio-34.3.0/tests/test_schema_cms.py +0 -229
- {rucio-34.3.0 → rucio-34.4.0}/AUTHORS.rst +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/ChangeLog +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/LICENSE +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/MANIFEST.in +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/README.rst +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-abacus-account +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-abacus-collection-replica +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-abacus-rse +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-admin +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-atropos +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-auditor +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-automatix +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-bb8 +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-c3po +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-cache-client +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-cache-consumer +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-conveyor-finisher +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-conveyor-poller +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-conveyor-preparer +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-conveyor-receiver +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-conveyor-stager +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-conveyor-submitter +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-conveyor-throttler +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-dark-reaper +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-dumper +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-follower +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-hermes +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-judge-cleaner +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-judge-evaluator +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-judge-injector +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-judge-repairer +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-kronos +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-minos +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-minos-temporary-expiration +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-necromancer +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-oauth-manager +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-reaper +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-replica-recoverer +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-rse-decommissioner +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-storage-consistency-actions +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-transmogrifier +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/bin/rucio-undertaker +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/alembic.ini.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/alembic_offline.ini.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/globus-config.yml.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/ldap.cfg.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/rse-accounts.cfg.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/rucio.cfg.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/etc/rucio_multi_vo.cfg.template +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/alembicrevision.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/account_limit.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/authentication.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/config.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/credential.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/dirac.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/identity.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/lifetime_exception.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/lock.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/quarantined_replica.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/request.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/subscription.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/api/vo.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/accountclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/client.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/configclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/credentialclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/didclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/diracclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/exportclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/fileclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/importclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/lockclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/pingclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/requestclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/rseclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/ruleclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/scopeclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/subscriptionclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/touchclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/client/uploadclient.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/cache.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/config.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/constants.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/constraints.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/didtype.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/dumper/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/dumper/consistency.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/dumper/data_models.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/exception.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/extra.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/logging.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/plugins.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/policy.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/atlas.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/belleii.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/domatpc.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/escape.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/generic.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/schema/icecube.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/stopwatch.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/account.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/account_counter.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/account_limit.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/config.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/credential.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/json_meta.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/dirac.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/exporter.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/heartbeat.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/identity.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/importer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/lifetime_exception.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/lock.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/message.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/meta_conventions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/monitor.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/naming_convention.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/nongrid_trace.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/permission/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/permission/atlas.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/permission/belleii.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/permission/escape.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/permission/generic.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/permission/generic_multi_vo.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/quarantined_replica.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/request.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/rse_counter.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/rse_expression_parser.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/subscription.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/topology.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/trace.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/transfer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/core/volatile_replica.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/account.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/abacus/rse.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/atropos/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/atropos/atropos.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/auditor/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/automatix/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/automatix/automatix.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/minos.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/bb8.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/c3po.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/free_space.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/mock_did.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/cache/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/cache/consumer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/common.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/common.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/finisher.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/poller.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/preparer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/receiver.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/submitter.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/conveyor/throttler.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/follower/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/follower/follower.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/hermes/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/hermes/hermes.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/judge/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/judge/cleaner.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/judge/evaluator.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/judge/injector.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/judge/repairer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/reaper/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/reaper/reaper.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/storage/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/storage/consistency/actions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/tracer/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/tracer/kronos.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/undertaker/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/constants.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/models.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/sautils.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/session.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/db/sqla/types.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/gsiftp.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/rse/rsemanager.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/tests/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/tests/common.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/tests/common_server.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/bittorrent.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/fts3.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/fts3_plugins.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/globus.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/globus_library.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/mock.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/transfertool/transfertool.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/version.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/common.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/import.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/main.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/main.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/metrics.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/lib/rucio/web/rest/ping.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/pylintrc +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/requirements.txt +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/setup.cfg +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/setup.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/setuputil.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_abacus_account.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_abacus_collection_replica.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_abacus_rse.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_account.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_account_limits.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_api_external_representation.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_archive.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_auditor.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_auditor_hdfs.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_auditor_srmdumps.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_authentication.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_automatix.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_bad_replica.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_bb8.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_belleii.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_bin_rucio.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_boolean.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_clients.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_common_types.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_config.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_conveyor.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_conveyor_submitter.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_counter.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_credential.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_curl.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_daemons.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_dataset_replicas.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_db.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_did.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_did_meta_plugins.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_didtype.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_download.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_dumper.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_dumper_consistency.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_dumper_data_model.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_dumper_path_parsing.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_filter_engine.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_heartbeat.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_hermes.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_identity.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_impl_upload_download.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_import_export.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_judge_cleaner.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_judge_evaluator.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_judge_injector.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_judge_repairer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_lifetime.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_message.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_meta_conventions.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_meta_did.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_module_import.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_monitor.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_multi_vo.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_naming_convention.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_oauthmanager.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_oidc.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_permission.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_pfns.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_ping.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_preparer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_qos.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_quarantined_replica.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_reaper.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_redirect.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_replica_sorting.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_request.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_root_proxy.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_expression_parser.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_lfn2path.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_posix.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_srm.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rse_selector.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rucio_server.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_rule.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_scope.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_subscription.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_throttler.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_tpc.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_trace.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_transfer.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_transfer_plugins.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_undertaker.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_upload.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tests/test_utils.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tools/bootstrap.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tools/merge_rucio_configs.py +0 -0
- {rucio-34.3.0 → rucio-34.4.0}/tools/reset_database.py +0 -0
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from
|
|
15
|
+
from collections.abc import Iterator
|
|
16
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
16
17
|
|
|
17
18
|
import rucio.api.permission
|
|
18
19
|
import rucio.common.exception
|
|
@@ -115,7 +116,7 @@ def update_account(account, key, value, issuer='root', vo='def', *, session: "Se
|
|
|
115
116
|
|
|
116
117
|
|
|
117
118
|
@stream_session
|
|
118
|
-
def list_accounts(filter_=
|
|
119
|
+
def list_accounts(filter_: Optional[dict[str, Any]] = None, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
|
|
119
120
|
"""
|
|
120
121
|
Lists all the Rucio account names.
|
|
121
122
|
|
|
@@ -128,8 +129,7 @@ def list_accounts(filter_={}, vo='def', *, session: "Session"):
|
|
|
128
129
|
:returns: List of all accounts.
|
|
129
130
|
"""
|
|
130
131
|
# If filter is empty, create a new dict to avoid overwriting the function's default
|
|
131
|
-
|
|
132
|
-
filter_ = {}
|
|
132
|
+
filter_ = filter_ or {}
|
|
133
133
|
|
|
134
134
|
if 'account' in filter_:
|
|
135
135
|
filter_['account'] = InternalAccount(filter_['account'], vo=vo)
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from collections.abc import Iterator
|
|
15
|
+
from collections.abc import Iterator, Sequence
|
|
16
16
|
from copy import deepcopy
|
|
17
|
-
from typing import TYPE_CHECKING
|
|
17
|
+
from typing import TYPE_CHECKING, Any
|
|
18
18
|
|
|
19
19
|
import rucio.api.permission
|
|
20
20
|
from rucio.common.constants import RESERVED_KEYS
|
|
@@ -29,7 +29,7 @@ from rucio.db.sqla.constants import DIDType
|
|
|
29
29
|
from rucio.db.sqla.session import read_session, stream_session, transactional_session
|
|
30
30
|
|
|
31
31
|
if TYPE_CHECKING:
|
|
32
|
-
from typing import
|
|
32
|
+
from typing import Optional
|
|
33
33
|
|
|
34
34
|
from sqlalchemy.orm import Session
|
|
35
35
|
|
|
@@ -67,7 +67,22 @@ def list_dids(scope, filters, did_type='collection', ignore_case=False, limit=No
|
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
@transactional_session
|
|
70
|
-
def add_did(
|
|
70
|
+
def add_did(
|
|
71
|
+
scope: str,
|
|
72
|
+
name: str,
|
|
73
|
+
did_type: str,
|
|
74
|
+
issuer: str,
|
|
75
|
+
account: "Optional[str]" = None,
|
|
76
|
+
statuses: "Optional[dict[str, str]]" = None,
|
|
77
|
+
meta: "Optional[dict[str, str]]" = None,
|
|
78
|
+
rules: "Optional[Sequence[dict[str, Any]]]" = None,
|
|
79
|
+
lifetime: "Optional[str]" = None,
|
|
80
|
+
dids: "Optional[Sequence[dict[str, Any]]]" = None,
|
|
81
|
+
rse: "Optional[str]" = None,
|
|
82
|
+
vo: str = 'def',
|
|
83
|
+
*,
|
|
84
|
+
session: "Session"
|
|
85
|
+
) -> None:
|
|
71
86
|
"""
|
|
72
87
|
Add data did.
|
|
73
88
|
|
|
@@ -85,6 +100,10 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
|
|
|
85
100
|
:param vo: The VO to act on.
|
|
86
101
|
:param session: The database session in use.
|
|
87
102
|
"""
|
|
103
|
+
statuses = statuses or {}
|
|
104
|
+
meta = meta or {}
|
|
105
|
+
rules = rules or []
|
|
106
|
+
dids = dids or []
|
|
88
107
|
v_did = {'name': name, 'type': did_type.upper(), 'scope': scope}
|
|
89
108
|
validate_schema(name='did', obj=v_did, vo=vo)
|
|
90
109
|
validate_schema(name='dids', obj=dids, vo=vo)
|
|
@@ -93,10 +112,9 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
|
|
|
93
112
|
if not rucio.api.permission.has_permission(issuer=issuer, vo=vo, action='add_did', kwargs=kwargs, session=session):
|
|
94
113
|
raise rucio.common.exception.AccessDenied('Account %s can not add data identifier to scope %s' % (issuer, scope))
|
|
95
114
|
|
|
96
|
-
if account is
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
scope = InternalScope(scope, vo=vo)
|
|
115
|
+
owner_account = None if account is None else InternalAccount(account, vo=vo)
|
|
116
|
+
issuer_account = InternalAccount(issuer, vo=vo)
|
|
117
|
+
internal_scope = InternalScope(scope, vo=vo)
|
|
100
118
|
for d in dids:
|
|
101
119
|
d['scope'] = InternalScope(d['scope'], vo=vo)
|
|
102
120
|
for r in rules:
|
|
@@ -108,7 +126,7 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
|
|
|
108
126
|
|
|
109
127
|
if did_type == 'DATASET':
|
|
110
128
|
# naming_convention validation
|
|
111
|
-
extra_meta = naming_convention.validate_name(scope=
|
|
129
|
+
extra_meta = naming_convention.validate_name(scope=internal_scope, name=name, did_type='D', session=session)
|
|
112
130
|
|
|
113
131
|
# merge extra_meta with meta
|
|
114
132
|
for k in extra_meta or {}:
|
|
@@ -121,7 +139,7 @@ def add_did(scope, name, did_type, issuer, account=None, statuses={}, meta={}, r
|
|
|
121
139
|
# Validate metadata
|
|
122
140
|
meta_convention_core.validate_meta(meta=meta, did_type=DIDType[did_type.upper()], session=session)
|
|
123
141
|
|
|
124
|
-
return did.add_did(scope=
|
|
142
|
+
return did.add_did(scope=internal_scope, name=name, did_type=DIDType[did_type.upper()], account=owner_account or issuer_account,
|
|
125
143
|
statuses=statuses, meta=meta, rules=rules, lifetime=lifetime,
|
|
126
144
|
dids=dids, rse_id=rse_id, session=session)
|
|
127
145
|
|
|
@@ -330,7 +348,7 @@ def list_content_history(scope, name, vo='def', *, session: "Session"):
|
|
|
330
348
|
|
|
331
349
|
|
|
332
350
|
@stream_session
|
|
333
|
-
def bulk_list_files(dids:
|
|
351
|
+
def bulk_list_files(dids: list[dict[str, Any]], long: bool = False, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
|
|
334
352
|
"""
|
|
335
353
|
List file contents of a list of data identifiers.
|
|
336
354
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import TYPE_CHECKING
|
|
15
|
+
from typing import TYPE_CHECKING, Any
|
|
16
16
|
|
|
17
17
|
from rucio.api import permission
|
|
18
18
|
from rucio.common import exception
|
|
@@ -25,7 +25,7 @@ if TYPE_CHECKING:
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
@read_session
|
|
28
|
-
def export_data(issuer, distance=True, vo='def', *, session: "Session"):
|
|
28
|
+
def export_data(issuer: str, distance: bool = True, vo: str = 'def', *, session: "Session") -> dict[str, Any]:
|
|
29
29
|
"""
|
|
30
30
|
Export data from Rucio.
|
|
31
31
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import TYPE_CHECKING
|
|
15
|
+
from typing import TYPE_CHECKING, Optional
|
|
16
16
|
|
|
17
17
|
from rucio.api import permission
|
|
18
18
|
from rucio.common import exception
|
|
@@ -20,11 +20,13 @@ from rucio.core import heartbeat
|
|
|
20
20
|
from rucio.db.sqla.session import read_session, transactional_session
|
|
21
21
|
|
|
22
22
|
if TYPE_CHECKING:
|
|
23
|
+
from threading import Thread
|
|
24
|
+
|
|
23
25
|
from sqlalchemy.orm import Session
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
@read_session
|
|
27
|
-
def list_heartbeats(issuer=None, vo='def', *, session: "Session"):
|
|
29
|
+
def list_heartbeats(issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list["heartbeat.HeartbeatDict"]:
|
|
28
30
|
"""
|
|
29
31
|
Return a list of tuples of all heartbeats.
|
|
30
32
|
|
|
@@ -41,7 +43,18 @@ def list_heartbeats(issuer=None, vo='def', *, session: "Session"):
|
|
|
41
43
|
|
|
42
44
|
|
|
43
45
|
@transactional_session
|
|
44
|
-
def create_heartbeat(
|
|
46
|
+
def create_heartbeat(
|
|
47
|
+
executable: str,
|
|
48
|
+
hostname: str,
|
|
49
|
+
pid: int,
|
|
50
|
+
older_than: int,
|
|
51
|
+
payload: Optional[str],
|
|
52
|
+
thread: Optional["Thread"] = None,
|
|
53
|
+
issuer: Optional[str] = None,
|
|
54
|
+
vo: str = 'def',
|
|
55
|
+
*,
|
|
56
|
+
session: "Session"
|
|
57
|
+
) -> None:
|
|
45
58
|
"""
|
|
46
59
|
Creates a heartbeat.
|
|
47
60
|
:param issuer: The issuer account.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import TYPE_CHECKING
|
|
15
|
+
from typing import TYPE_CHECKING, Any
|
|
16
16
|
|
|
17
17
|
from rucio.api import permission
|
|
18
18
|
from rucio.common import exception
|
|
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
@transactional_session
|
|
29
|
-
def import_data(data, issuer, vo='def', *, session: "Session"):
|
|
29
|
+
def import_data(data: dict[str, Any], issuer: str, vo: str = 'def', *, session: "Session") -> None:
|
|
30
30
|
"""
|
|
31
31
|
Import data to add/update/delete records in Rucio.
|
|
32
32
|
|
|
@@ -27,7 +27,7 @@ if TYPE_CHECKING:
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
@read_session
|
|
30
|
-
def list_keys(*, session: "Session"):
|
|
30
|
+
def list_keys(*, session: "Session") -> list[str]:
|
|
31
31
|
"""
|
|
32
32
|
Lists all keys for DID Metadata Conventions.
|
|
33
33
|
|
|
@@ -39,7 +39,7 @@ def list_keys(*, session: "Session"):
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
@read_session
|
|
42
|
-
def list_values(key: str, *, session: "Session"):
|
|
42
|
+
def list_values(key: str, *, session: "Session") -> list[str]:
|
|
43
43
|
"""
|
|
44
44
|
Lists all allowed values for a DID key (all values for a key in DID Metadata Conventions).
|
|
45
45
|
|
|
@@ -53,7 +53,7 @@ def list_values(key: str, *, session: "Session"):
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
@transactional_session
|
|
56
|
-
def add_key(key: str, key_type: Union[KeyType, str], issuer: "InternalAccount", value_type: Optional[str] = None, value_regexp: Optional[str] = None, vo: str = 'def', *, session: "Session"):
|
|
56
|
+
def add_key(key: str, key_type: Union[KeyType, str], issuer: "InternalAccount", value_type: Optional[str] = None, value_regexp: Optional[str] = None, vo: str = 'def', *, session: "Session") -> None:
|
|
57
57
|
"""
|
|
58
58
|
Add an allowed key for DID metadata (update the DID Metadata Conventions table with a new key).
|
|
59
59
|
|
|
@@ -72,7 +72,7 @@ def add_key(key: str, key_type: Union[KeyType, str], issuer: "InternalAccount",
|
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
@transactional_session
|
|
75
|
-
def add_value(key: str, value: str, issuer: "InternalAccount", vo: str = 'def', *, session: "Session"):
|
|
75
|
+
def add_value(key: str, value: str, issuer: "InternalAccount", vo: str = 'def', *, session: "Session") -> None:
|
|
76
76
|
"""
|
|
77
77
|
Add an allowed value for DID metadata (update a key in DID Metadata Conventions table).
|
|
78
78
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from copy import deepcopy
|
|
16
|
-
from typing import TYPE_CHECKING
|
|
16
|
+
from typing import TYPE_CHECKING, Any
|
|
17
17
|
|
|
18
18
|
from rucio.common.exception import RSENotFound
|
|
19
19
|
from rucio.common.types import InternalAccount, InternalScope
|
|
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
@read_session
|
|
29
|
-
def has_permission(issuer, action, kwargs, vo='def', *, session: "Session"):
|
|
29
|
+
def has_permission(issuer: str, action: str, kwargs: dict[str, Any], vo: str = 'def', *, session: "Session") -> bool:
|
|
30
30
|
"""
|
|
31
31
|
Checks if an account has the specified permission to
|
|
32
32
|
execute an action with parameters.
|
|
@@ -66,6 +66,6 @@ def has_permission(issuer, action, kwargs, vo='def', *, session: "Session"):
|
|
|
66
66
|
for r in d['rules']:
|
|
67
67
|
r['account'] = InternalAccount(r['account'], vo=vo)
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
issuer_account = InternalAccount(issuer, vo=vo)
|
|
70
70
|
|
|
71
|
-
return permission.has_permission(issuer=
|
|
71
|
+
return permission.has_permission(issuer=issuer_account, action=action, kwargs=kwargs, session=session)
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import datetime
|
|
16
|
-
from
|
|
16
|
+
from collections.abc import Iterator
|
|
17
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
17
18
|
|
|
18
19
|
from rucio.api import permission
|
|
19
20
|
from rucio.common import exception
|
|
@@ -418,7 +419,7 @@ def list_dataset_replicas_vp(scope, name, deep=False, vo='def', *, session: "Ses
|
|
|
418
419
|
|
|
419
420
|
|
|
420
421
|
@stream_session
|
|
421
|
-
def list_datasets_per_rse(rse, filters=
|
|
422
|
+
def list_datasets_per_rse(rse: str, filters: Optional[dict[str, Any]] = None, limit: Optional[int] = None, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
|
|
422
423
|
"""
|
|
423
424
|
:param scope: The scope of the dataset.
|
|
424
425
|
:param name: The name of the dataset.
|
|
@@ -430,6 +431,7 @@ def list_datasets_per_rse(rse, filters={}, limit=None, vo='def', *, session: "Se
|
|
|
430
431
|
:returns: A list of dict dataset replicas
|
|
431
432
|
"""
|
|
432
433
|
|
|
434
|
+
filters = filters or {}
|
|
433
435
|
rse_id = get_rse_id(rse=rse, vo=vo, session=session)
|
|
434
436
|
if 'scope' in filters:
|
|
435
437
|
filters['scope'] = InternalScope(filters['scope'], vo=vo)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import TYPE_CHECKING
|
|
15
|
+
from typing import TYPE_CHECKING, Any
|
|
16
16
|
|
|
17
17
|
from rucio.api import permission
|
|
18
18
|
from rucio.common import exception
|
|
@@ -109,7 +109,7 @@ def del_rse(rse, issuer, vo='def', *, session: "Session"):
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
@read_session
|
|
112
|
-
def list_rses(filters=
|
|
112
|
+
def list_rses(filters: "Optional[dict[str, Any]]" = None, vo: str = 'def', *, session: "Session") -> list[dict[str, Any]]:
|
|
113
113
|
"""
|
|
114
114
|
Lists all RSEs.
|
|
115
115
|
|
|
@@ -119,8 +119,7 @@ def list_rses(filters={}, vo='def', *, session: "Session"):
|
|
|
119
119
|
|
|
120
120
|
:returns: List of all RSEs.
|
|
121
121
|
"""
|
|
122
|
-
|
|
123
|
-
filters = {}
|
|
122
|
+
filters = filters or {}
|
|
124
123
|
|
|
125
124
|
filters['vo'] = vo
|
|
126
125
|
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from
|
|
15
|
+
from collections.abc import Iterator
|
|
16
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
16
17
|
|
|
17
18
|
from rucio.api.permission import has_permission
|
|
18
19
|
from rucio.common.config import config_get_bool
|
|
@@ -134,7 +135,7 @@ def get_replication_rule(rule_id, issuer, vo='def', *, session: "Session"):
|
|
|
134
135
|
|
|
135
136
|
|
|
136
137
|
@stream_session
|
|
137
|
-
def list_replication_rules(filters=
|
|
138
|
+
def list_replication_rules(filters: Optional[dict[str, Any]] = None, vo: str = 'def', *, session: "Session") -> Iterator[dict[str, Any]]:
|
|
138
139
|
"""
|
|
139
140
|
Lists replication rules based on a filter.
|
|
140
141
|
|
|
@@ -143,8 +144,7 @@ def list_replication_rules(filters={}, vo='def', *, session: "Session"):
|
|
|
143
144
|
:param session: The database session in use.
|
|
144
145
|
"""
|
|
145
146
|
# If filters is empty, create a new dict to avoid overwriting the function's default
|
|
146
|
-
|
|
147
|
-
filters = {}
|
|
147
|
+
filters = filters or {}
|
|
148
148
|
|
|
149
149
|
if 'scope' in filters:
|
|
150
150
|
scope = filters['scope']
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import TYPE_CHECKING
|
|
15
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
16
16
|
|
|
17
17
|
import rucio.api.permission
|
|
18
18
|
import rucio.common.exception
|
|
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
@read_session
|
|
29
|
-
def list_scopes(filter_=
|
|
29
|
+
def list_scopes(filter_: Optional[dict[str, Any]] = None, vo: str = 'def', *, session: "Session") -> list[str]:
|
|
30
30
|
"""
|
|
31
31
|
Lists all scopes.
|
|
32
32
|
|
|
@@ -37,8 +37,7 @@ def list_scopes(filter_={}, vo='def', *, session: "Session"):
|
|
|
37
37
|
:returns: A list containing all scopes.
|
|
38
38
|
"""
|
|
39
39
|
# If filter is empty, create a new dict to avoid overwriting the function's default
|
|
40
|
-
|
|
41
|
-
filter_ = {}
|
|
40
|
+
filter_ = filter_ or {}
|
|
42
41
|
|
|
43
42
|
if 'scope' in filter_:
|
|
44
43
|
filter_['scope'] = InternalScope(scope=filter_['scope'], vo=vo)
|
|
@@ -77,8 +77,8 @@ class BaseClient:
|
|
|
77
77
|
|
|
78
78
|
AUTH_RETRIES, REQUEST_RETRIES = 2, 3
|
|
79
79
|
TOKEN_PATH_PREFIX = get_tmp_dir() + '/.rucio_'
|
|
80
|
-
TOKEN_PREFIX = 'auth_token_'
|
|
81
|
-
TOKEN_EXP_PREFIX = 'auth_token_exp_'
|
|
80
|
+
TOKEN_PREFIX = 'auth_token_' # noqa: S105
|
|
81
|
+
TOKEN_EXP_PREFIX = 'auth_token_exp_' # noqa: S105
|
|
82
82
|
|
|
83
83
|
def __init__(self,
|
|
84
84
|
rucio_host: Optional[str] = None,
|
|
@@ -25,6 +25,7 @@ import subprocess
|
|
|
25
25
|
import time
|
|
26
26
|
from queue import Empty, Queue, deque
|
|
27
27
|
from threading import Thread
|
|
28
|
+
from typing import Any, Optional
|
|
28
29
|
|
|
29
30
|
from rucio import version
|
|
30
31
|
from rucio.client.client import Client
|
|
@@ -174,7 +175,14 @@ class DownloadClient:
|
|
|
174
175
|
self.extraction_tools.append(BaseExtractionTool('tar', '--version', extract_args, logger=self.logger))
|
|
175
176
|
self.extract_scope_convention = config_get('common', 'extract_scope', False, None)
|
|
176
177
|
|
|
177
|
-
def download_pfns(
|
|
178
|
+
def download_pfns(
|
|
179
|
+
self,
|
|
180
|
+
items: list[dict[str, Any]],
|
|
181
|
+
num_threads: int = 2,
|
|
182
|
+
trace_custom_fields: Optional[dict[str, Any]] = None,
|
|
183
|
+
traces_copy_out: Optional[list[dict[str, Any]]] = None,
|
|
184
|
+
deactivate_file_download_exceptions: bool = False
|
|
185
|
+
) -> list[dict[str, Any]]:
|
|
178
186
|
"""
|
|
179
187
|
Download items with a given PFN. This function can only download files, no datasets.
|
|
180
188
|
|
|
@@ -202,6 +210,7 @@ class DownloadClient:
|
|
|
202
210
|
:raises NotAllFilesDownloaded: if not all files could be downloaded
|
|
203
211
|
:raises RucioException: if something unexpected went wrong during the download
|
|
204
212
|
"""
|
|
213
|
+
trace_custom_fields = trace_custom_fields or {}
|
|
205
214
|
logger = self.logger
|
|
206
215
|
trace_custom_fields['uuid'] = generate_uuid()
|
|
207
216
|
|
|
@@ -250,8 +259,15 @@ class DownloadClient:
|
|
|
250
259
|
|
|
251
260
|
return self._check_output(output_items, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
|
|
252
261
|
|
|
253
|
-
def download_dids(
|
|
254
|
-
|
|
262
|
+
def download_dids(
|
|
263
|
+
self,
|
|
264
|
+
items: list[dict[str, Any]],
|
|
265
|
+
num_threads: int = 2,
|
|
266
|
+
trace_custom_fields: Optional[dict[str, Any]] = None,
|
|
267
|
+
traces_copy_out: Optional[list[dict[str, Any]]] = None,
|
|
268
|
+
deactivate_file_download_exceptions: bool = False,
|
|
269
|
+
sort: Optional[str] = None
|
|
270
|
+
) -> list[dict[str, Any]]:
|
|
255
271
|
"""
|
|
256
272
|
Download items with given DIDs. This function can also download datasets and wildcarded DIDs.
|
|
257
273
|
|
|
@@ -286,6 +302,7 @@ class DownloadClient:
|
|
|
286
302
|
:raises NotAllFilesDownloaded: if not all files could be downloaded
|
|
287
303
|
:raises RucioException: if something unexpected went wrong during the download
|
|
288
304
|
"""
|
|
305
|
+
trace_custom_fields = trace_custom_fields or {}
|
|
289
306
|
logger = self.logger
|
|
290
307
|
trace_custom_fields['uuid'] = generate_uuid()
|
|
291
308
|
|
|
@@ -304,7 +321,15 @@ class DownloadClient:
|
|
|
304
321
|
|
|
305
322
|
return self._check_output(output_items, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
|
|
306
323
|
|
|
307
|
-
def download_from_metalink_file(
|
|
324
|
+
def download_from_metalink_file(
|
|
325
|
+
self,
|
|
326
|
+
item: dict[str, Any],
|
|
327
|
+
metalink_file_path: str,
|
|
328
|
+
num_threads: int = 2,
|
|
329
|
+
trace_custom_fields: Optional[dict[str, Any]] = None,
|
|
330
|
+
traces_copy_out: Optional[list[dict[str, Any]]] = None,
|
|
331
|
+
deactivate_file_download_exceptions: bool = False
|
|
332
|
+
) -> list[dict[str, Any]]:
|
|
308
333
|
"""
|
|
309
334
|
Download items using a given metalink file.
|
|
310
335
|
|
|
@@ -327,6 +352,7 @@ class DownloadClient:
|
|
|
327
352
|
:raises NotAllFilesDownloaded: if not all files could be downloaded
|
|
328
353
|
:raises RucioException: if something unexpected went wrong during the download
|
|
329
354
|
"""
|
|
355
|
+
trace_custom_fields = trace_custom_fields or {}
|
|
330
356
|
logger = self.logger
|
|
331
357
|
|
|
332
358
|
logger(logging.INFO, 'Getting sources from metalink file')
|
|
@@ -351,7 +377,13 @@ class DownloadClient:
|
|
|
351
377
|
|
|
352
378
|
return self._check_output(output_items, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
|
|
353
379
|
|
|
354
|
-
def _download_multithreaded(
|
|
380
|
+
def _download_multithreaded(
|
|
381
|
+
self,
|
|
382
|
+
input_items: list[dict[str, Any]],
|
|
383
|
+
num_threads: int,
|
|
384
|
+
trace_custom_fields: Optional[dict[str, Any]] = None,
|
|
385
|
+
traces_copy_out: Optional[list[dict[str, Any]]] = None
|
|
386
|
+
) -> list[dict[str, Any]]:
|
|
355
387
|
"""
|
|
356
388
|
Starts an appropriate number of threads to download items from the input list.
|
|
357
389
|
(This function is meant to be used as class internal only)
|
|
@@ -363,6 +395,7 @@ class DownloadClient:
|
|
|
363
395
|
|
|
364
396
|
:returns: list with output items as dictionaries
|
|
365
397
|
"""
|
|
398
|
+
trace_custom_fields = trace_custom_fields or {}
|
|
366
399
|
logger = self.logger
|
|
367
400
|
|
|
368
401
|
num_files = len(input_items)
|
|
@@ -730,7 +763,14 @@ class DownloadClient:
|
|
|
730
763
|
|
|
731
764
|
return item
|
|
732
765
|
|
|
733
|
-
def download_aria2c(
|
|
766
|
+
def download_aria2c(
|
|
767
|
+
self,
|
|
768
|
+
items: list[dict[str, Any]],
|
|
769
|
+
trace_custom_fields: Optional[dict[str, Any]] = None,
|
|
770
|
+
filters: Optional[dict[str, Any]] = None,
|
|
771
|
+
deactivate_file_download_exceptions: bool = False,
|
|
772
|
+
sort: Optional[str] = None
|
|
773
|
+
) -> list[dict[str, Any]]:
|
|
734
774
|
"""
|
|
735
775
|
Uses aria2c to download the items with given DIDs. This function can also download datasets and wildcarded DIDs.
|
|
736
776
|
It only can download files that are available via https/davs.
|
|
@@ -760,6 +800,8 @@ class DownloadClient:
|
|
|
760
800
|
:raises NotAllFilesDownloaded: if not all files could be downloaded
|
|
761
801
|
:raises RucioException: if something went wrong during the download (e.g. aria2c could not be started)
|
|
762
802
|
"""
|
|
803
|
+
trace_custom_fields = trace_custom_fields or {}
|
|
804
|
+
filters = filters or {}
|
|
763
805
|
logger = self.logger
|
|
764
806
|
trace_custom_fields['uuid'] = generate_uuid()
|
|
765
807
|
|
|
@@ -860,7 +902,13 @@ class DownloadClient:
|
|
|
860
902
|
raise RucioException('Failed to initialise rpc proxy!', error)
|
|
861
903
|
return (rpcproc, aria_rpc)
|
|
862
904
|
|
|
863
|
-
def _download_items_aria2c(
|
|
905
|
+
def _download_items_aria2c(
|
|
906
|
+
self,
|
|
907
|
+
items: list[dict[str, Any]],
|
|
908
|
+
aria_rpc: Any,
|
|
909
|
+
rpc_auth: str,
|
|
910
|
+
trace_custom_fields: Optional[dict[str, Any]] = None
|
|
911
|
+
) -> list[dict[str, Any]]:
|
|
864
912
|
"""
|
|
865
913
|
Uses aria2c to download the given items. Aria2c needs to be started
|
|
866
914
|
as RPC background process first and a RPC proxy is needed.
|
|
@@ -873,6 +921,7 @@ class DownloadClient:
|
|
|
873
921
|
|
|
874
922
|
:returns: a list of dictionaries with an entry for each file, containing the input options, the did, and the clientState
|
|
875
923
|
"""
|
|
924
|
+
trace_custom_fields = trace_custom_fields or {}
|
|
876
925
|
logger = self.logger
|
|
877
926
|
|
|
878
927
|
gid_to_item = {} # maps an aria2c download id (gid) to the download item
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
from datetime import datetime
|
|
16
16
|
from json import dumps, loads
|
|
17
|
+
from typing import Any, Optional
|
|
17
18
|
from urllib.parse import quote_plus
|
|
18
19
|
|
|
19
20
|
from requests.status_codes import codes
|
|
@@ -233,7 +234,17 @@ class ReplicaClient(BaseClient):
|
|
|
233
234
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
234
235
|
raise exc_cls(exc_msg)
|
|
235
236
|
|
|
236
|
-
def add_replica(
|
|
237
|
+
def add_replica(
|
|
238
|
+
self,
|
|
239
|
+
rse: str,
|
|
240
|
+
scope: str,
|
|
241
|
+
name: str,
|
|
242
|
+
bytes_: int,
|
|
243
|
+
adler32: str,
|
|
244
|
+
pfn: Optional[str] = None,
|
|
245
|
+
md5: Optional[str] = None,
|
|
246
|
+
meta: Optional[dict[str, Any]] = None
|
|
247
|
+
) -> bool:
|
|
237
248
|
"""
|
|
238
249
|
Add file replicas to a RSE.
|
|
239
250
|
|
|
@@ -249,6 +260,7 @@ class ReplicaClient(BaseClient):
|
|
|
249
260
|
:return: True if files were created successfully.
|
|
250
261
|
|
|
251
262
|
"""
|
|
263
|
+
meta = meta or {}
|
|
252
264
|
dict_ = {'scope': scope, 'name': name, 'bytes': bytes_, 'meta': meta, 'adler32': adler32}
|
|
253
265
|
if md5:
|
|
254
266
|
dict_['md5'] = md5
|
|
@@ -529,7 +529,7 @@ class Pcache:
|
|
|
529
529
|
|
|
530
530
|
# Execute original command, no further action
|
|
531
531
|
if (not (self.dst.startswith(self.scratch_dir) and self.accept(self.src) and (not self.reject(self.src)))):
|
|
532
|
-
os.execvp(self.copy_util, self.args)
|
|
532
|
+
os.execvp(self.copy_util, self.args) # noqa: S606
|
|
533
533
|
os._exit(1)
|
|
534
534
|
|
|
535
535
|
# XXXX todo: fast-path - try to acquire lock
|
|
@@ -682,7 +682,7 @@ class Pcache:
|
|
|
682
682
|
self.fail(103)
|
|
683
683
|
|
|
684
684
|
def get_disk_usage(self):
|
|
685
|
-
p = os.popen("df -P %s | tail -1" % self.pcache_dir, 'r')
|
|
685
|
+
p = os.popen("df -P %s | tail -1" % self.pcache_dir, 'r') # noqa: S605
|
|
686
686
|
data = p.read()
|
|
687
687
|
status = p.close()
|
|
688
688
|
if status:
|
|
@@ -772,7 +772,7 @@ class Pcache:
|
|
|
772
772
|
d = self.pcache_dir + d
|
|
773
773
|
try:
|
|
774
774
|
os.rename(d, d + ts)
|
|
775
|
-
os.system("rm -rf %s &" % (d + ts))
|
|
775
|
+
os.system("rm -rf %s &" % (d + ts)) # noqa: S605
|
|
776
776
|
except OSError as e:
|
|
777
777
|
if e.errno != errno.ENOENT:
|
|
778
778
|
self.log(ERROR, "%s: %s", d, e)
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from collections.abc import Callable
|
|
16
|
+
from datetime import datetime
|
|
16
17
|
from typing import TYPE_CHECKING, Any, Literal, Optional, TypedDict, Union
|
|
17
18
|
|
|
18
19
|
if TYPE_CHECKING:
|
|
@@ -191,3 +192,16 @@ class HopDict(TypedDict):
|
|
|
191
192
|
dest_rse_id: str
|
|
192
193
|
dest_scheme: "SUPPORTED_PROTOCOLS_LITERAL"
|
|
193
194
|
dest_scheme_priority: int
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class TokenDict(TypedDict):
|
|
198
|
+
token: str
|
|
199
|
+
expires_at: datetime
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class TokenValidationDict(TypedDict):
|
|
203
|
+
account: Optional[InternalAccount]
|
|
204
|
+
identity: Optional[str]
|
|
205
|
+
lifetime: datetime
|
|
206
|
+
audience: Optional[str]
|
|
207
|
+
authz_scope: Optional[str]
|
|
@@ -1245,7 +1245,7 @@ def detect_client_location():
|
|
|
1245
1245
|
pass
|
|
1246
1246
|
|
|
1247
1247
|
if not ip:
|
|
1248
|
-
ip = '0.0.0.0'
|
|
1248
|
+
ip = '0.0.0.0' # noqa: S104
|
|
1249
1249
|
|
|
1250
1250
|
site = os.environ.get('SITE_NAME',
|
|
1251
1251
|
os.environ.get('ATLAS_SITE_NAME',
|
|
@@ -1559,7 +1559,7 @@ def parse_replicas_from_file(path):
|
|
|
1559
1559
|
"""
|
|
1560
1560
|
with open(path) as fp:
|
|
1561
1561
|
try:
|
|
1562
|
-
root = ElementTree.parse(fp).getroot()
|
|
1562
|
+
root = ElementTree.parse(fp).getroot() # noqa: S314
|
|
1563
1563
|
return parse_replicas_metalink(root)
|
|
1564
1564
|
except ElementTree.ParseError as xml_err:
|
|
1565
1565
|
try:
|
|
@@ -1579,7 +1579,7 @@ def parse_replicas_from_string(string):
|
|
|
1579
1579
|
:returns: a list with a dictionary for each file
|
|
1580
1580
|
"""
|
|
1581
1581
|
try:
|
|
1582
|
-
root = ElementTree.fromstring(string)
|
|
1582
|
+
root = ElementTree.fromstring(string) # noqa: S314
|
|
1583
1583
|
return parse_replicas_metalink(root)
|
|
1584
1584
|
except ElementTree.ParseError as xml_err:
|
|
1585
1585
|
try:
|