rucio 34.4.1__tar.gz → 34.4.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rucio might be problematic. Click here for more details.
- {rucio-34.4.1 → rucio-34.4.3}/PKG-INFO +1 -1
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/rule.py +108 -25
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/accountclient.py +43 -21
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/accountlimitclient.py +36 -6
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/baseclient.py +18 -9
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/configclient.py +18 -3
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/credentialclient.py +8 -1
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/downloadclient.py +1 -1
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/lifetimeclient.py +20 -2
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/requestclient.py +34 -16
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/scopeclient.py +7 -3
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/touchclient.py +7 -1
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/uploadclient.py +3 -2
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/pcache.py +114 -91
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/types.py +61 -15
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/utils.py +140 -95
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/account.py +97 -26
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/account_counter.py +56 -16
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did_meta_plugins/filter_engine.py +58 -42
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/dirac.py +2 -2
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/lock.py +24 -16
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/oidc.py +1 -1
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/transfer.py +2 -1
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/abacus/account.py +7 -7
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/cache/consumer.py +3 -4
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/models.py +29 -18
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/util.py +15 -27
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/fts3.py +6 -2
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/fts3_plugins.py +2 -6
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/vcsversion.py +3 -3
- {rucio-34.4.1/lib/rucio/web/rest → rucio-34.4.3/lib/rucio/web}/__init__.py +0 -0
- {rucio-34.4.1/lib/rucio/web/rest/flaskapi → rucio-34.4.3/lib/rucio/web/rest}/__init__.py +0 -0
- rucio-34.4.3/lib/rucio/web/rest/flaskapi/v1/__init__.py +13 -0
- {rucio-34.4.1 → rucio-34.4.3}/pyproject.toml +1 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_transfer_plugins.py +22 -4
- rucio-34.4.1/lib/rucio/daemons/cache/__init__.py +0 -14
- {rucio-34.4.1 → rucio-34.4.3}/AUTHORS.rst +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/ChangeLog +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/LICENSE +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/MANIFEST.in +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/README.rst +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-abacus-account +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-abacus-collection-replica +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-abacus-rse +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-admin +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-atropos +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-auditor +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-automatix +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-bb8 +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-c3po +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-cache-client +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-cache-consumer +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-conveyor-finisher +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-conveyor-poller +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-conveyor-preparer +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-conveyor-receiver +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-conveyor-stager +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-conveyor-submitter +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-conveyor-throttler +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-dark-reaper +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-dumper +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-follower +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-hermes +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-judge-cleaner +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-judge-evaluator +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-judge-injector +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-judge-repairer +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-kronos +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-minos +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-minos-temporary-expiration +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-necromancer +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-oauth-manager +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-reaper +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-replica-recoverer +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-rse-decommissioner +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-storage-consistency-actions +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-transmogrifier +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/bin/rucio-undertaker +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/alembic.ini.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/alembic_offline.ini.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/globus-config.yml.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/ldap.cfg.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/rse-accounts.cfg.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/rucio.cfg.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/etc/rucio_multi_vo.cfg.template +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/alembicrevision.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/account.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/account_limit.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/authentication.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/config.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/credential.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/did.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/dirac.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/exporter.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/heartbeat.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/identity.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/importer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/lifetime_exception.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/lock.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/meta_conventions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/permission.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/quarantined_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/request.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/scope.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/subscription.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/api/vo.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/client.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/didclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/diracclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/exportclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/fileclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/importclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/lockclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/pingclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/replicaclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/rseclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/ruleclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/client/subscriptionclient.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/cache.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/config.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/constants.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/constraints.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/didtype.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/dumper/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/dumper/consistency.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/dumper/data_models.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/dumper/path_parsing.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/exception.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/extra.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/logging.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/plugins.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/policy.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/atlas.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/belleii.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/domatpc.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/escape.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/generic.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/schema/icecube.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/stopwatch.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/account_limit.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/authentication.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/config.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/credential.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did_meta_plugins/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did_meta_plugins/did_column_meta.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did_meta_plugins/json_meta.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did_meta_plugins/mongo_meta.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/did_meta_plugins/postgres_meta.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/distance.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/exporter.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/heartbeat.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/identity.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/importer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/lifetime_exception.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/message.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/meta_conventions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/monitor.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/naming_convention.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/nongrid_trace.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/permission/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/permission/atlas.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/permission/belleii.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/permission/escape.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/permission/generic.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/permission/generic_multi_vo.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/quarantined_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/replica_sorter.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/request.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/rse_counter.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/rse_expression_parser.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/rse_selector.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/rule.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/rule_grouping.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/scope.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/subscription.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/topology.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/trace.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/vo.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/core/volatile_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/abacus/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/abacus/rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/atropos/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/atropos/atropos.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/auditor/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/auditor/hdfs.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/auditor/srmdumps.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/automatix/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/automatix/automatix.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/badreplicas/minos.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/bb8/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/bb8/bb8.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/bb8/common.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/bb8/t2_background_rebalance.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/algorithms/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/c3po.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/collectors/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/collectors/free_space.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/collectors/mock_did.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/utils/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/conveyor → rucio-34.4.3/lib/rucio/daemons/cache}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/common.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/follower → rucio-34.4.3/lib/rucio/daemons/conveyor}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/common.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/finisher.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/poller.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/preparer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/receiver.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/stager.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/submitter.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/conveyor/throttler.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/hermes → rucio-34.4.3/lib/rucio/daemons/follower}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/follower/follower.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/judge → rucio-34.4.3/lib/rucio/daemons/hermes}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/hermes/hermes.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/oauthmanager → rucio-34.4.3/lib/rucio/daemons/judge}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/judge/cleaner.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/judge/evaluator.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/judge/injector.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/judge/repairer.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/reaper → rucio-34.4.3/lib/rucio/daemons/oauthmanager}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/replicarecoverer → rucio-34.4.3/lib/rucio/daemons/reaper}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/reaper/dark_reaper.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/reaper/reaper.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/rsedecommissioner → rucio-34.4.3/lib/rucio/daemons/replicarecoverer}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/storage → rucio-34.4.3/lib/rucio/daemons/rsedecommissioner}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/storage/consistency → rucio-34.4.3/lib/rucio/daemons/storage}/__init__.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/tracer → rucio-34.4.3/lib/rucio/daemons/storage/consistency}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/storage/consistency/actions.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/transmogrifier → rucio-34.4.3/lib/rucio/daemons/tracer}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/tracer/kronos.py +0 -0
- {rucio-34.4.1/lib/rucio/daemons/undertaker → rucio-34.4.3/lib/rucio/daemons/transmogrifier}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/transmogrifier/transmogrifier.py +0 -0
- {rucio-34.4.1/lib/rucio/db → rucio-34.4.3/lib/rucio/daemons/undertaker}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
- {rucio-34.4.1/lib/rucio/db/sqla/migrate_repo → rucio-34.4.3/lib/rucio/db}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/constants.py +0 -0
- {rucio-34.4.1/lib/rucio/rse/protocols → rucio-34.4.3/lib/rucio/db/sqla/migrate_repo}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/sautils.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/session.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/db/sqla/types.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/__init__.py +0 -0
- {rucio-34.4.1/lib/rucio/tests → rucio-34.4.3/lib/rucio/rse/protocols}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/gsiftp.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/ngarc.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/posix.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/protocol.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/srm.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/storm.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/webdav.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/rse/rsemanager.py +0 -0
- {rucio-34.4.1/lib/rucio/transfertool → rucio-34.4.3/lib/rucio/tests}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/tests/common.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/tests/common_server.py +0 -0
- {rucio-34.4.1/lib/rucio/web → rucio-34.4.3/lib/rucio/transfertool}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/bittorrent.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/globus.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/globus_library.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/mock.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/transfertool/transfertool.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/version.py +0 -0
- {rucio-34.4.1/lib/rucio/web/rest/flaskapi/v1 → rucio-34.4.3/lib/rucio/web/rest/flaskapi}/__init__.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/accounts.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/archives.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/common.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/credentials.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/dids.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/import.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/locks.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/main.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/redirect.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/replicas.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/requests.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/rses.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/rules.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/main.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/metrics.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio/web/rest/ping.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/lib/rucio.egg-info/SOURCES.txt +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/pylintrc +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/requirements.txt +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/setup.cfg +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/setup.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/setuputil.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_abacus_account.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_abacus_collection_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_abacus_rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_account.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_account_limits.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_api_external_representation.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_archive.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_auditor.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_auditor_hdfs.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_auditor_srmdumps.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_authentication.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_automatix.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_bad_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_bb8.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_belleii.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_bin_rucio.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_boolean.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_clients.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_common_types.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_config.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_conveyor.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_conveyor_submitter.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_counter.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_credential.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_curl.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_daemons.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_dataset_replicas.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_db.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_did.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_did_meta_plugins.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_didtype.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_download.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_dumper.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_dumper_consistency.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_dumper_data_model.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_dumper_path_parsing.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_filter_engine.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_heartbeat.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_hermes.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_identity.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_impl_upload_download.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_import_export.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_judge_cleaner.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_judge_evaluator.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_judge_injector.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_judge_repairer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_lifetime.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_message.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_meta_conventions.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_meta_did.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_module_import.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_monitor.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_multi_vo.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_naming_convention.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_oauthmanager.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_oidc.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_permission.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_pfns.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_ping.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_preparer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_qos.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_quarantined_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_reaper.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_redirect.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_replica.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_replica_recoverer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_replica_sorting.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_request.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_root_proxy.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_expression_parser.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_lfn2path.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_posix.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_srm.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rse_selector.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rucio_server.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_rule.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_scope.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_subscription.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_throttler.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_tpc.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_trace.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_transfer.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_undertaker.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_upload.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tests/test_utils.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tools/bootstrap.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tools/merge_rucio_configs.py +0 -0
- {rucio-34.4.1 → rucio-34.4.3}/tools/reset_database.py +0 -0
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from
|
|
16
|
-
from typing import TYPE_CHECKING, Any, Optional
|
|
15
|
+
from typing import TYPE_CHECKING, Any, Literal, Optional
|
|
17
16
|
|
|
18
17
|
from rucio.api.permission import has_permission
|
|
19
18
|
from rucio.common.config import config_get_bool
|
|
@@ -25,11 +24,13 @@ from rucio.core import rule
|
|
|
25
24
|
from rucio.db.sqla.session import read_session, stream_session, transactional_session
|
|
26
25
|
|
|
27
26
|
if TYPE_CHECKING:
|
|
27
|
+
from collections.abc import Iterator, Sequence
|
|
28
|
+
|
|
28
29
|
from sqlalchemy.orm import Session
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
@read_session
|
|
32
|
-
def is_multi_vo(*, session: "Session"):
|
|
33
|
+
def is_multi_vo(*, session: "Session") -> bool:
|
|
33
34
|
"""
|
|
34
35
|
Check whether this instance is configured for multi-VO
|
|
35
36
|
returns: Boolean True if running in multi-VO
|
|
@@ -38,9 +39,33 @@ def is_multi_vo(*, session: "Session"):
|
|
|
38
39
|
|
|
39
40
|
|
|
40
41
|
@transactional_session
|
|
41
|
-
def add_replication_rule(
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
def add_replication_rule(
|
|
43
|
+
dids: "Sequence[dict[str, str]]",
|
|
44
|
+
copies: int,
|
|
45
|
+
rse_expression: str,
|
|
46
|
+
weight: Optional[str],
|
|
47
|
+
lifetime: Optional[int],
|
|
48
|
+
grouping: Literal['ALL', 'DATASET', 'NONE'],
|
|
49
|
+
account: str,
|
|
50
|
+
locked: bool,
|
|
51
|
+
subscription_id: Optional[str],
|
|
52
|
+
source_replica_expression: Optional[str],
|
|
53
|
+
activity: Optional[str],
|
|
54
|
+
notify: Optional[Literal['Y', 'N', 'C', 'P']],
|
|
55
|
+
purge_replicas: bool,
|
|
56
|
+
ignore_availability: bool,
|
|
57
|
+
comment: Optional[str],
|
|
58
|
+
ask_approval: bool,
|
|
59
|
+
asynchronous: bool,
|
|
60
|
+
delay_injection: Optional[int],
|
|
61
|
+
priority: int,
|
|
62
|
+
split_container: bool,
|
|
63
|
+
meta: Optional[dict[str, Any]],
|
|
64
|
+
issuer: str,
|
|
65
|
+
vo: str = 'def',
|
|
66
|
+
*,
|
|
67
|
+
session: "Session"
|
|
68
|
+
) -> list[str]:
|
|
44
69
|
"""
|
|
45
70
|
Adds a replication rule.
|
|
46
71
|
|
|
@@ -89,12 +114,11 @@ def add_replication_rule(dids, copies, rse_expression, weight, lifetime, groupin
|
|
|
89
114
|
if not has_permission(issuer=issuer, vo=vo, action='add_rule', kwargs=kwargs, session=session):
|
|
90
115
|
raise AccessDenied('Account %s can not add replication rule' % (issuer))
|
|
91
116
|
|
|
92
|
-
|
|
93
|
-
for d in dids
|
|
94
|
-
d['scope'] = InternalScope(d['scope'], vo=vo)
|
|
117
|
+
account_internal = InternalAccount(account, vo=vo)
|
|
118
|
+
dids_with_internal_scope = [{'name': d['name'], 'scope': InternalScope(d['scope'], vo=vo)} for d in dids]
|
|
95
119
|
|
|
96
|
-
return rule.add_rule(account=
|
|
97
|
-
dids=
|
|
120
|
+
return rule.add_rule(account=account_internal,
|
|
121
|
+
dids=dids_with_internal_scope,
|
|
98
122
|
copies=copies,
|
|
99
123
|
rse_expression=rse_expression,
|
|
100
124
|
grouping=grouping,
|
|
@@ -118,7 +142,7 @@ def add_replication_rule(dids, copies, rse_expression, weight, lifetime, groupin
|
|
|
118
142
|
|
|
119
143
|
|
|
120
144
|
@read_session
|
|
121
|
-
def get_replication_rule(rule_id, issuer, vo='def', *, session: "Session"):
|
|
145
|
+
def get_replication_rule(rule_id: str, issuer: str, vo: str = 'def', *, session: "Session") -> dict[str, Any]:
|
|
122
146
|
"""
|
|
123
147
|
Get replication rule by it's id.
|
|
124
148
|
|
|
@@ -135,7 +159,12 @@ def get_replication_rule(rule_id, issuer, vo='def', *, session: "Session"):
|
|
|
135
159
|
|
|
136
160
|
|
|
137
161
|
@stream_session
|
|
138
|
-
def list_replication_rules(
|
|
162
|
+
def list_replication_rules(
|
|
163
|
+
filters: Optional[dict[str, Any]] = None,
|
|
164
|
+
vo: str = 'def',
|
|
165
|
+
*,
|
|
166
|
+
session: "Session"
|
|
167
|
+
) -> "Iterator[dict[str, Any]]":
|
|
139
168
|
"""
|
|
140
169
|
Lists replication rules based on a filter.
|
|
141
170
|
|
|
@@ -164,7 +193,13 @@ def list_replication_rules(filters: Optional[dict[str, Any]] = None, vo: str = '
|
|
|
164
193
|
|
|
165
194
|
|
|
166
195
|
@read_session
|
|
167
|
-
def list_replication_rule_history(
|
|
196
|
+
def list_replication_rule_history(
|
|
197
|
+
rule_id: str,
|
|
198
|
+
issuer: str,
|
|
199
|
+
vo: str = 'def',
|
|
200
|
+
*,
|
|
201
|
+
session: "Session"
|
|
202
|
+
) -> "Iterator[dict[str, Any]]":
|
|
168
203
|
"""
|
|
169
204
|
Lists replication rule history..
|
|
170
205
|
|
|
@@ -180,7 +215,13 @@ def list_replication_rule_history(rule_id, issuer, vo='def', *, session: "Sessio
|
|
|
180
215
|
|
|
181
216
|
|
|
182
217
|
@stream_session
|
|
183
|
-
def list_replication_rule_full_history(
|
|
218
|
+
def list_replication_rule_full_history(
|
|
219
|
+
scope: str,
|
|
220
|
+
name: str,
|
|
221
|
+
vo: str = 'def',
|
|
222
|
+
*,
|
|
223
|
+
session: "Session"
|
|
224
|
+
) -> "Iterator[dict[str, Any]]":
|
|
184
225
|
"""
|
|
185
226
|
List the rule history of a DID.
|
|
186
227
|
|
|
@@ -189,14 +230,20 @@ def list_replication_rule_full_history(scope, name, vo='def', *, session: "Sessi
|
|
|
189
230
|
:param vo: The VO to act on.
|
|
190
231
|
:param session: The database session in use.
|
|
191
232
|
"""
|
|
192
|
-
|
|
193
|
-
rules = rule.list_rule_full_history(
|
|
233
|
+
scope_internal = InternalScope(scope, vo=vo)
|
|
234
|
+
rules = rule.list_rule_full_history(scope_internal, name, session=session)
|
|
194
235
|
for r in rules:
|
|
195
236
|
yield api_update_return_dict(r, session=session)
|
|
196
237
|
|
|
197
238
|
|
|
198
239
|
@stream_session
|
|
199
|
-
def list_associated_replication_rules_for_file(
|
|
240
|
+
def list_associated_replication_rules_for_file(
|
|
241
|
+
scope: str,
|
|
242
|
+
name: str,
|
|
243
|
+
vo: str = 'def',
|
|
244
|
+
*,
|
|
245
|
+
session: "Session"
|
|
246
|
+
) -> "Iterator[dict[str, Any]]":
|
|
200
247
|
"""
|
|
201
248
|
Lists associated replication rules by file.
|
|
202
249
|
|
|
@@ -205,14 +252,21 @@ def list_associated_replication_rules_for_file(scope, name, vo='def', *, session
|
|
|
205
252
|
:param vo: The VO to act on.
|
|
206
253
|
:param session: The database session in use.
|
|
207
254
|
"""
|
|
208
|
-
|
|
209
|
-
rules = rule.list_associated_rules_for_file(scope=
|
|
255
|
+
scope_internal = InternalScope(scope, vo=vo)
|
|
256
|
+
rules = rule.list_associated_rules_for_file(scope=scope_internal, name=name, session=session)
|
|
210
257
|
for r in rules:
|
|
211
258
|
yield api_update_return_dict(r, session=session)
|
|
212
259
|
|
|
213
260
|
|
|
214
261
|
@transactional_session
|
|
215
|
-
def delete_replication_rule(
|
|
262
|
+
def delete_replication_rule(
|
|
263
|
+
rule_id: str,
|
|
264
|
+
purge_replicas: Optional[bool],
|
|
265
|
+
issuer: str,
|
|
266
|
+
vo: str = 'def',
|
|
267
|
+
*,
|
|
268
|
+
session: "Session"
|
|
269
|
+
) -> None:
|
|
216
270
|
"""
|
|
217
271
|
Deletes a replication rule and all associated locks.
|
|
218
272
|
|
|
@@ -232,7 +286,14 @@ def delete_replication_rule(rule_id, purge_replicas, issuer, vo='def', *, sessio
|
|
|
232
286
|
|
|
233
287
|
|
|
234
288
|
@transactional_session
|
|
235
|
-
def update_replication_rule(
|
|
289
|
+
def update_replication_rule(
|
|
290
|
+
rule_id: str,
|
|
291
|
+
options: dict[str, Any],
|
|
292
|
+
issuer: str,
|
|
293
|
+
vo: str = 'def',
|
|
294
|
+
*,
|
|
295
|
+
session: "Session"
|
|
296
|
+
) -> None:
|
|
236
297
|
"""
|
|
237
298
|
Update lock state of a replication rule.
|
|
238
299
|
|
|
@@ -264,7 +325,15 @@ def update_replication_rule(rule_id: str, options: dict[str, Any], issuer: str,
|
|
|
264
325
|
|
|
265
326
|
|
|
266
327
|
@transactional_session
|
|
267
|
-
def reduce_replication_rule(
|
|
328
|
+
def reduce_replication_rule(
|
|
329
|
+
rule_id: str,
|
|
330
|
+
copies: int,
|
|
331
|
+
exclude_expression: Optional[str],
|
|
332
|
+
issuer: str,
|
|
333
|
+
vo: str = 'def',
|
|
334
|
+
*,
|
|
335
|
+
session: "Session"
|
|
336
|
+
) -> str:
|
|
268
337
|
"""
|
|
269
338
|
Reduce the number of copies for a rule by atomically replacing the rule.
|
|
270
339
|
|
|
@@ -286,7 +355,13 @@ def reduce_replication_rule(rule_id, copies, exclude_expression, issuer, vo='def
|
|
|
286
355
|
|
|
287
356
|
|
|
288
357
|
@read_session
|
|
289
|
-
def examine_replication_rule(
|
|
358
|
+
def examine_replication_rule(
|
|
359
|
+
rule_id: str,
|
|
360
|
+
issuer: str,
|
|
361
|
+
vo: str = 'def',
|
|
362
|
+
*,
|
|
363
|
+
session: "Session"
|
|
364
|
+
) -> dict[str, Any]:
|
|
290
365
|
"""
|
|
291
366
|
Examine a replication rule.
|
|
292
367
|
|
|
@@ -306,7 +381,15 @@ def examine_replication_rule(rule_id, issuer, vo='def', *, session: "Session"):
|
|
|
306
381
|
|
|
307
382
|
|
|
308
383
|
@transactional_session
|
|
309
|
-
def move_replication_rule(
|
|
384
|
+
def move_replication_rule(
|
|
385
|
+
rule_id: str,
|
|
386
|
+
rse_expression: str,
|
|
387
|
+
override: dict[str, Any],
|
|
388
|
+
issuer: str,
|
|
389
|
+
vo: str = 'def',
|
|
390
|
+
*,
|
|
391
|
+
session: "Session"
|
|
392
|
+
) -> str:
|
|
310
393
|
"""
|
|
311
394
|
Move a replication rule to another RSE and, once done, delete the original one.
|
|
312
395
|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from json import dumps
|
|
16
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
16
17
|
from urllib.parse import quote_plus
|
|
17
18
|
|
|
18
19
|
from requests.status_codes import codes
|
|
@@ -20,6 +21,9 @@ from requests.status_codes import codes
|
|
|
20
21
|
from rucio.client.baseclient import BaseClient, choice
|
|
21
22
|
from rucio.common.utils import build_url
|
|
22
23
|
|
|
24
|
+
if TYPE_CHECKING:
|
|
25
|
+
from collections.abc import Iterator
|
|
26
|
+
|
|
23
27
|
|
|
24
28
|
class AccountClient(BaseClient):
|
|
25
29
|
|
|
@@ -27,7 +31,7 @@ class AccountClient(BaseClient):
|
|
|
27
31
|
|
|
28
32
|
ACCOUNTS_BASEURL = 'accounts'
|
|
29
33
|
|
|
30
|
-
def add_account(self, account, type_, email):
|
|
34
|
+
def add_account(self, account: str, type_: str, email: str) -> bool:
|
|
31
35
|
"""
|
|
32
36
|
Sends the request to create a new account.
|
|
33
37
|
|
|
@@ -49,7 +53,7 @@ class AccountClient(BaseClient):
|
|
|
49
53
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
50
54
|
raise exc_cls(exc_msg)
|
|
51
55
|
|
|
52
|
-
def delete_account(self, account):
|
|
56
|
+
def delete_account(self, account: str) -> bool:
|
|
53
57
|
"""
|
|
54
58
|
Sends the request to disable an account.
|
|
55
59
|
|
|
@@ -68,7 +72,7 @@ class AccountClient(BaseClient):
|
|
|
68
72
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
69
73
|
raise exc_cls(exc_msg)
|
|
70
74
|
|
|
71
|
-
def get_account(self, account):
|
|
75
|
+
def get_account(self, account: str) -> Optional[dict[str, Any]]:
|
|
72
76
|
"""
|
|
73
77
|
Sends the request to get information about a given account.
|
|
74
78
|
|
|
@@ -87,7 +91,7 @@ class AccountClient(BaseClient):
|
|
|
87
91
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
88
92
|
raise exc_cls(exc_msg)
|
|
89
93
|
|
|
90
|
-
def update_account(self, account, key, value):
|
|
94
|
+
def update_account(self, account: str, key: str, value: Any) -> bool:
|
|
91
95
|
""" Update a property of an account.
|
|
92
96
|
|
|
93
97
|
:param account: Name of the account.
|
|
@@ -106,7 +110,12 @@ class AccountClient(BaseClient):
|
|
|
106
110
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
107
111
|
raise exc_cls(exc_msg)
|
|
108
112
|
|
|
109
|
-
def list_accounts(
|
|
113
|
+
def list_accounts(
|
|
114
|
+
self,
|
|
115
|
+
account_type: Optional[str] = None,
|
|
116
|
+
identity: Optional[str] = None,
|
|
117
|
+
filters: Optional[dict[str, Any]] = None
|
|
118
|
+
) -> "Iterator[dict[str, Any]]":
|
|
110
119
|
"""
|
|
111
120
|
Sends the request to list all rucio accounts.
|
|
112
121
|
|
|
@@ -137,7 +146,7 @@ class AccountClient(BaseClient):
|
|
|
137
146
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
138
147
|
raise exc_cls(exc_msg)
|
|
139
148
|
|
|
140
|
-
def whoami(self):
|
|
149
|
+
def whoami(self) -> Optional[dict[str, Any]]:
|
|
141
150
|
"""
|
|
142
151
|
Get information about account whose token is used
|
|
143
152
|
|
|
@@ -146,7 +155,15 @@ class AccountClient(BaseClient):
|
|
|
146
155
|
"""
|
|
147
156
|
return self.get_account('whoami')
|
|
148
157
|
|
|
149
|
-
def add_identity(
|
|
158
|
+
def add_identity(
|
|
159
|
+
self,
|
|
160
|
+
account: str,
|
|
161
|
+
identity: str,
|
|
162
|
+
authtype: str,
|
|
163
|
+
email: str,
|
|
164
|
+
default: bool = False,
|
|
165
|
+
password: Optional[str] = None
|
|
166
|
+
) -> bool:
|
|
150
167
|
"""
|
|
151
168
|
Adds a membership association between identity and account.
|
|
152
169
|
|
|
@@ -171,7 +188,12 @@ class AccountClient(BaseClient):
|
|
|
171
188
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
172
189
|
raise exc_cls(exc_msg)
|
|
173
190
|
|
|
174
|
-
def del_identity(
|
|
191
|
+
def del_identity(
|
|
192
|
+
self,
|
|
193
|
+
account: str,
|
|
194
|
+
identity: str,
|
|
195
|
+
authtype: str
|
|
196
|
+
) -> bool:
|
|
175
197
|
"""
|
|
176
198
|
Delete an identity's membership association with an account.
|
|
177
199
|
|
|
@@ -194,7 +216,7 @@ class AccountClient(BaseClient):
|
|
|
194
216
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
195
217
|
raise exc_cls(exc_msg)
|
|
196
218
|
|
|
197
|
-
def list_identities(self, account):
|
|
219
|
+
def list_identities(self, account: str) -> "Iterator[dict[str, Any]]":
|
|
198
220
|
"""
|
|
199
221
|
List all identities on an account.
|
|
200
222
|
|
|
@@ -210,7 +232,7 @@ class AccountClient(BaseClient):
|
|
|
210
232
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
211
233
|
raise exc_cls(exc_msg)
|
|
212
234
|
|
|
213
|
-
def list_account_rules(self, account):
|
|
235
|
+
def list_account_rules(self, account: str) -> "Iterator[dict[str, Any]]":
|
|
214
236
|
"""
|
|
215
237
|
List the associated rules of an account.
|
|
216
238
|
|
|
@@ -226,7 +248,7 @@ class AccountClient(BaseClient):
|
|
|
226
248
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
227
249
|
raise exc_cls(exc_msg)
|
|
228
250
|
|
|
229
|
-
def get_account_limits(self, account, rse_expression, locality):
|
|
251
|
+
def get_account_limits(self, account: str, rse_expression: str, locality: str) -> dict[str, Any]:
|
|
230
252
|
"""
|
|
231
253
|
Return the correct account limits for the given locality.
|
|
232
254
|
|
|
@@ -243,7 +265,7 @@ class AccountClient(BaseClient):
|
|
|
243
265
|
from rucio.common.exception import UnsupportedOperation
|
|
244
266
|
raise UnsupportedOperation('The provided locality (%s) for the account limit was invalid' % locality)
|
|
245
267
|
|
|
246
|
-
def get_global_account_limit(self, account, rse_expression):
|
|
268
|
+
def get_global_account_limit(self, account: str, rse_expression: str) -> dict[str, Any]:
|
|
247
269
|
"""
|
|
248
270
|
List the account limit for the specific RSE expression.
|
|
249
271
|
|
|
@@ -259,7 +281,7 @@ class AccountClient(BaseClient):
|
|
|
259
281
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
260
282
|
raise exc_cls(exc_msg)
|
|
261
283
|
|
|
262
|
-
def get_global_account_limits(self, account):
|
|
284
|
+
def get_global_account_limits(self, account: str) -> dict[str, Any]:
|
|
263
285
|
"""
|
|
264
286
|
List all RSE expression limits of this account.
|
|
265
287
|
|
|
@@ -274,7 +296,7 @@ class AccountClient(BaseClient):
|
|
|
274
296
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
275
297
|
raise exc_cls(exc_msg)
|
|
276
298
|
|
|
277
|
-
def get_local_account_limits(self, account):
|
|
299
|
+
def get_local_account_limits(self, account: str) -> dict[str, Any]:
|
|
278
300
|
"""
|
|
279
301
|
List the account rse limits of this account.
|
|
280
302
|
|
|
@@ -289,7 +311,7 @@ class AccountClient(BaseClient):
|
|
|
289
311
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
290
312
|
raise exc_cls(exc_msg)
|
|
291
313
|
|
|
292
|
-
def get_local_account_limit(self, account, rse):
|
|
314
|
+
def get_local_account_limit(self, account: str, rse: str) -> dict[str, Any]:
|
|
293
315
|
"""
|
|
294
316
|
List the account rse limits of this account for the specific rse.
|
|
295
317
|
|
|
@@ -305,7 +327,7 @@ class AccountClient(BaseClient):
|
|
|
305
327
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
306
328
|
raise exc_cls(exc_msg)
|
|
307
329
|
|
|
308
|
-
def get_local_account_usage(self, account, rse=None):
|
|
330
|
+
def get_local_account_usage(self, account: str, rse: Optional[str] = None) -> "Iterator[dict[str, Any]]":
|
|
309
331
|
"""
|
|
310
332
|
List the account usage for one or all rses of this account.
|
|
311
333
|
|
|
@@ -324,7 +346,7 @@ class AccountClient(BaseClient):
|
|
|
324
346
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
325
347
|
raise exc_cls(exc_msg)
|
|
326
348
|
|
|
327
|
-
def get_global_account_usage(self, account, rse_expression=None):
|
|
349
|
+
def get_global_account_usage(self, account: str, rse_expression: Optional[str] = None) -> "Iterator[dict[str, Any]]":
|
|
328
350
|
"""
|
|
329
351
|
List the account usage for one or all RSE expressions of this account.
|
|
330
352
|
|
|
@@ -343,7 +365,7 @@ class AccountClient(BaseClient):
|
|
|
343
365
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
344
366
|
raise exc_cls(exc_msg)
|
|
345
367
|
|
|
346
|
-
def get_account_usage_history(self, account, rse):
|
|
368
|
+
def get_account_usage_history(self, account: str, rse: str) -> dict[str, Any]:
|
|
347
369
|
"""
|
|
348
370
|
List the account usage history of this account on rse.
|
|
349
371
|
|
|
@@ -359,7 +381,7 @@ class AccountClient(BaseClient):
|
|
|
359
381
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
360
382
|
raise exc_cls(exc_msg)
|
|
361
383
|
|
|
362
|
-
def list_account_attributes(self, account):
|
|
384
|
+
def list_account_attributes(self, account: str) -> "Iterator[dict[dict[str, Any], Any]]":
|
|
363
385
|
"""
|
|
364
386
|
List the attributes for an account.
|
|
365
387
|
|
|
@@ -374,7 +396,7 @@ class AccountClient(BaseClient):
|
|
|
374
396
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
375
397
|
raise exc_cls(exc_msg)
|
|
376
398
|
|
|
377
|
-
def add_account_attribute(self, account, key, value):
|
|
399
|
+
def add_account_attribute(self, account: str, key: str, value: Any) -> bool:
|
|
378
400
|
"""
|
|
379
401
|
Adds an attribute to an account.
|
|
380
402
|
|
|
@@ -393,7 +415,7 @@ class AccountClient(BaseClient):
|
|
|
393
415
|
exc_cls, exc_msg = self._get_exception(headers=res.headers, status_code=res.status_code, data=res.content)
|
|
394
416
|
raise exc_cls(exc_msg)
|
|
395
417
|
|
|
396
|
-
def delete_account_attribute(self, account, key):
|
|
418
|
+
def delete_account_attribute(self, account: str, key: str) -> bool:
|
|
397
419
|
"""
|
|
398
420
|
Delete an attribute for an account.
|
|
399
421
|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from json import dumps
|
|
16
|
+
from typing import Literal
|
|
16
17
|
from urllib.parse import quote_plus
|
|
17
18
|
|
|
18
19
|
from requests.status_codes import codes
|
|
@@ -27,7 +28,13 @@ class AccountLimitClient(BaseClient):
|
|
|
27
28
|
|
|
28
29
|
ACCOUNTLIMIT_BASEURL = 'accountlimits'
|
|
29
30
|
|
|
30
|
-
def set_account_limit(
|
|
31
|
+
def set_account_limit(
|
|
32
|
+
self,
|
|
33
|
+
account: str,
|
|
34
|
+
rse: str,
|
|
35
|
+
bytes_: int,
|
|
36
|
+
locality: Literal['local', 'global']
|
|
37
|
+
) -> bool:
|
|
31
38
|
"""
|
|
32
39
|
Sets an account limit for a given limit scope.
|
|
33
40
|
|
|
@@ -46,7 +53,12 @@ class AccountLimitClient(BaseClient):
|
|
|
46
53
|
from rucio.common.exception import UnsupportedOperation
|
|
47
54
|
raise UnsupportedOperation('The provided scope (%s) for the account limit was invalid' % locality)
|
|
48
55
|
|
|
49
|
-
def delete_account_limit(
|
|
56
|
+
def delete_account_limit(
|
|
57
|
+
self,
|
|
58
|
+
account: str,
|
|
59
|
+
rse: str,
|
|
60
|
+
locality: Literal['local', 'global']
|
|
61
|
+
) -> bool:
|
|
50
62
|
"""
|
|
51
63
|
Deletes an account limit for a given limit scope.
|
|
52
64
|
|
|
@@ -64,7 +76,12 @@ class AccountLimitClient(BaseClient):
|
|
|
64
76
|
from rucio.common.exception import UnsupportedOperation
|
|
65
77
|
raise UnsupportedOperation('The provided scope (%s) for the account limit was invalid' % locality)
|
|
66
78
|
|
|
67
|
-
def set_local_account_limit(
|
|
79
|
+
def set_local_account_limit(
|
|
80
|
+
self,
|
|
81
|
+
account: str,
|
|
82
|
+
rse: str,
|
|
83
|
+
bytes_: int
|
|
84
|
+
) -> bool:
|
|
68
85
|
"""
|
|
69
86
|
Sends the request to set an account limit for an account.
|
|
70
87
|
|
|
@@ -86,7 +103,11 @@ class AccountLimitClient(BaseClient):
|
|
|
86
103
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
87
104
|
raise exc_cls(exc_msg)
|
|
88
105
|
|
|
89
|
-
def delete_local_account_limit(
|
|
106
|
+
def delete_local_account_limit(
|
|
107
|
+
self,
|
|
108
|
+
account: str,
|
|
109
|
+
rse: str
|
|
110
|
+
) -> bool:
|
|
90
111
|
"""
|
|
91
112
|
Sends the request to remove an account limit.
|
|
92
113
|
|
|
@@ -108,7 +129,12 @@ class AccountLimitClient(BaseClient):
|
|
|
108
129
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
109
130
|
raise exc_cls(exc_msg)
|
|
110
131
|
|
|
111
|
-
def set_global_account_limit(
|
|
132
|
+
def set_global_account_limit(
|
|
133
|
+
self,
|
|
134
|
+
account: str,
|
|
135
|
+
rse_expression: str,
|
|
136
|
+
bytes_: int
|
|
137
|
+
) -> bool:
|
|
112
138
|
"""
|
|
113
139
|
Sends the request to set a global account limit for an account.
|
|
114
140
|
|
|
@@ -130,7 +156,11 @@ class AccountLimitClient(BaseClient):
|
|
|
130
156
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
131
157
|
raise exc_cls(exc_msg)
|
|
132
158
|
|
|
133
|
-
def delete_global_account_limit(
|
|
159
|
+
def delete_global_account_limit(
|
|
160
|
+
self,
|
|
161
|
+
account: str,
|
|
162
|
+
rse_expression: str
|
|
163
|
+
) -> bool:
|
|
134
164
|
"""
|
|
135
165
|
Sends the request to remove a global account limit.
|
|
136
166
|
|
|
@@ -107,8 +107,6 @@ class BaseClient:
|
|
|
107
107
|
:param logger: Logger object to use. If None, use the default LOG created by the module
|
|
108
108
|
"""
|
|
109
109
|
|
|
110
|
-
self.host = rucio_host
|
|
111
|
-
self.auth_host = auth_host
|
|
112
110
|
self.logger = logger
|
|
113
111
|
self.session = Session()
|
|
114
112
|
self.user_agent = "%s/%s" % (user_agent, version.version_string()) # e.g. "rucio-clients/0.2.13"
|
|
@@ -117,9 +115,17 @@ class BaseClient:
|
|
|
117
115
|
if self.script_id == '': # Python interpreter used
|
|
118
116
|
self.script_id = 'python'
|
|
119
117
|
try:
|
|
120
|
-
if
|
|
118
|
+
if rucio_host is not None:
|
|
119
|
+
self.host = rucio_host
|
|
120
|
+
else:
|
|
121
121
|
self.host = config_get('client', 'rucio_host')
|
|
122
|
-
|
|
122
|
+
except (NoOptionError, NoSectionError) as error:
|
|
123
|
+
raise MissingClientParameter('Section client and Option \'%s\' cannot be found in config file' % error.args[0])
|
|
124
|
+
|
|
125
|
+
try:
|
|
126
|
+
if auth_host is not None:
|
|
127
|
+
self.auth_host = auth_host
|
|
128
|
+
else:
|
|
123
129
|
self.auth_host = config_get('client', 'auth_host')
|
|
124
130
|
except (NoOptionError, NoSectionError) as error:
|
|
125
131
|
raise MissingClientParameter('Section client and Option \'%s\' cannot be found in config file' % error.args[0])
|
|
@@ -318,9 +324,12 @@ class BaseClient:
|
|
|
318
324
|
|
|
319
325
|
:return: A rucio exception class and an error string.
|
|
320
326
|
"""
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
327
|
+
if data is not None:
|
|
328
|
+
try:
|
|
329
|
+
data = parse_response(data)
|
|
330
|
+
except ValueError:
|
|
331
|
+
data = {}
|
|
332
|
+
else:
|
|
324
333
|
data = {}
|
|
325
334
|
|
|
326
335
|
exc_cls = 'RucioException'
|
|
@@ -879,8 +888,8 @@ class BaseClient:
|
|
|
879
888
|
return False
|
|
880
889
|
|
|
881
890
|
try:
|
|
882
|
-
|
|
883
|
-
|
|
891
|
+
with open(self.token_file, 'r') as token_file_handler:
|
|
892
|
+
self.auth_token = token_file_handler.readline()
|
|
884
893
|
self.headers['X-Rucio-Auth-Token'] = self.auth_token
|
|
885
894
|
except OSError as error:
|
|
886
895
|
print("I/O error({0}): {1}".format(error.errno, error.strerror))
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from json import dumps
|
|
16
|
+
from typing import Any, Optional
|
|
16
17
|
|
|
17
18
|
from requests.status_codes import codes
|
|
18
19
|
|
|
@@ -26,7 +27,11 @@ class ConfigClient(BaseClient):
|
|
|
26
27
|
|
|
27
28
|
CONFIG_BASEURL = 'config'
|
|
28
29
|
|
|
29
|
-
def get_config(
|
|
30
|
+
def get_config(
|
|
31
|
+
self,
|
|
32
|
+
section: Optional[str] = None,
|
|
33
|
+
option: Optional[str] = None
|
|
34
|
+
) -> dict[str, Any]:
|
|
30
35
|
"""
|
|
31
36
|
Sends the request to get the matching configuration.
|
|
32
37
|
|
|
@@ -53,7 +58,13 @@ class ConfigClient(BaseClient):
|
|
|
53
58
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
54
59
|
raise exc_cls(exc_msg)
|
|
55
60
|
|
|
56
|
-
def set_config_option(
|
|
61
|
+
def set_config_option(
|
|
62
|
+
self,
|
|
63
|
+
section: str,
|
|
64
|
+
option: str,
|
|
65
|
+
value: Any,
|
|
66
|
+
use_body_for_params: bool = True
|
|
67
|
+
) -> bool:
|
|
57
68
|
"""
|
|
58
69
|
Sends the request to create or set an option within a section. Missing sections will be created.
|
|
59
70
|
|
|
@@ -90,7 +101,11 @@ class ConfigClient(BaseClient):
|
|
|
90
101
|
exc_cls, exc_msg = self._get_exception(headers=r.headers, status_code=r.status_code, data=r.content)
|
|
91
102
|
raise exc_cls(exc_msg)
|
|
92
103
|
|
|
93
|
-
def delete_config_option(
|
|
104
|
+
def delete_config_option(
|
|
105
|
+
self,
|
|
106
|
+
section: str,
|
|
107
|
+
option: str
|
|
108
|
+
) -> bool:
|
|
94
109
|
"""
|
|
95
110
|
Sends the request to remove an option from a section
|
|
96
111
|
|
|
@@ -23,7 +23,14 @@ class CredentialClient(BaseClient):
|
|
|
23
23
|
|
|
24
24
|
CREDENTIAL_BASEURL = 'credentials'
|
|
25
25
|
|
|
26
|
-
def get_signed_url(
|
|
26
|
+
def get_signed_url(
|
|
27
|
+
self,
|
|
28
|
+
rse: str,
|
|
29
|
+
service: str,
|
|
30
|
+
operation: str,
|
|
31
|
+
url: str,
|
|
32
|
+
lifetime: int = 3600
|
|
33
|
+
) -> str:
|
|
27
34
|
"""
|
|
28
35
|
Return a signed version of the given URL for the given operation.
|
|
29
36
|
|
|
@@ -1231,7 +1231,7 @@ class DownloadClient:
|
|
|
1231
1231
|
resolve_parents=True,
|
|
1232
1232
|
nrandom=nrandom,
|
|
1233
1233
|
metalink=True)
|
|
1234
|
-
file_items = parse_replicas_from_string(metalink_str)
|
|
1234
|
+
file_items = parse_replicas_from_string(metalink_str) # type: ignore
|
|
1235
1235
|
for file in file_items:
|
|
1236
1236
|
if impl:
|
|
1237
1237
|
file['impl'] = impl
|