rucio 34.6.0__tar.gz → 35.0.0rc2__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.
- {rucio-34.6.0 → rucio-35.0.0rc2}/AUTHORS.rst +2 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/MANIFEST.in +1 -1
- rucio-35.0.0rc2/PKG-INFO +62 -0
- rucio-35.0.0rc2/README.md +27 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio +34 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-admin +8 -8
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-replica-recoverer +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/alembicrevision.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/baseclient.py +60 -49
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/didclient.py +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/downloadclient.py +81 -23
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/subscriptionclient.py +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/uploadclient.py +127 -65
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/constants.py +3 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/exception.py +10 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/plugins.py +5 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/atlas.py +6 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/belleii.py +6 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/domatpc.py +6 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/escape.py +6 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/generic.py +6 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/generic_multi_vo.py +6 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/icecube.py +6 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/types.py +90 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/utils.py +66 -66
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/account_counter.py +31 -5
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/account_limit.py +88 -21
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/config.py +92 -21
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/credential.py +8 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did.py +402 -307
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did_meta_plugins/json_meta.py +29 -4
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did_meta_plugins/mongo_meta.py +20 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/dirac.py +30 -6
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/distance.py +53 -30
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/heartbeat.py +92 -45
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/importer.py +8 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/lifetime_exception.py +18 -19
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/lock.py +208 -117
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/message.py +77 -36
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/meta_conventions.py +19 -16
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/naming_convention.py +20 -11
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/oidc.py +8 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/quarantined_replica.py +82 -49
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/replica.py +1180 -696
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/replica_sorter.py +7 -8
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/request.py +196 -166
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/rse.py +42 -49
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/rse_counter.py +47 -15
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/rule_grouping.py +99 -30
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/scope.py +48 -20
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/subscription.py +67 -24
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/transfer.py +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/vo.py +25 -5
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/volatile_replica.py +52 -22
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/bb8/common.py +80 -106
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +11 -5
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/bb8/t2_background_rebalance.py +11 -4
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/collectors/free_space.py +15 -4
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/common.py +40 -15
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +34 -34
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/storage/consistency/actions.py +11 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/tracer/kronos.py +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/transmogrifier/transmogrifier.py +20 -11
- rucio-35.0.0rc2/lib/rucio/db/sqla/migrate_repo/versions/b0070f3695c8_add_deletedidmeta_table.py +57 -0
- rucio-35.0.0rc2/lib/rucio/db/sqla/migrate_repo/versions/b5493606bbf5_fix_primary_key_for_subscription_history.py +41 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/models.py +30 -131
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/session.py +57 -31
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/account.py +115 -41
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/account_limit.py +11 -11
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/authentication.py +106 -32
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/config.py +1 -1
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/credential.py +15 -3
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/did.py +347 -141
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/dirac.py +14 -4
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/exporter.py +1 -1
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/heartbeat.py +1 -1
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/identity.py +62 -18
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/importer.py +1 -1
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/lifetime_exception.py +35 -9
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/lock.py +34 -11
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/meta_conventions.py +1 -1
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/quarantined_replica.py +13 -3
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/replica.py +8 -8
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/request.py +11 -10
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/rse.py +5 -5
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/rule.py +8 -8
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/scope.py +21 -9
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/subscription.py +64 -41
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/vo.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/fts3.py +60 -10
- rucio-35.0.0rc2/lib/rucio/vcsversion.py +11 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/accounts.py +5 -5
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/archives.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/auth.py +6 -6
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/common.py +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/config.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/credentials.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/dids.py +24 -24
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/dirac.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/export.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/identities.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/import.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/locks.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/redirect.py +4 -4
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/replicas.py +25 -13
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/requests.py +8 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/rses.py +19 -19
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/rules.py +13 -13
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/scopes.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +14 -6
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/vos.py +1 -1
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio.egg-info/SOURCES.txt +29 -27
- rucio-35.0.0rc2/requirements/requirements.server.txt +268 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/setup.py +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/setuputil.py +19 -12
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_account.py +2 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_authentication.py +4 -4
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_bad_replica.py +3 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_bin_rucio.py +18 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_clients.py +10 -2
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_did.py +4 -4
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_did_meta_plugins.py +18 -8
- rucio-34.6.0/tests/test_api_external_representation.py → rucio-35.0.0rc2/tests/test_gateway_external_representation.py +57 -57
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_lifetime.py +3 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_multi_vo.py +26 -26
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_permission.py +3 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_reaper.py +18 -18
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_replica.py +3 -3
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rule.py +5 -5
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_subscription.py +57 -9
- rucio-34.6.0/PKG-INFO +0 -73
- rucio-34.6.0/README.rst +0 -29
- rucio-34.6.0/lib/rucio/vcsversion.py +0 -11
- rucio-34.6.0/requirements.txt +0 -58
- {rucio-34.6.0 → rucio-35.0.0rc2}/ChangeLog +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/LICENSE +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-abacus-account +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-abacus-collection-replica +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-abacus-rse +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-atropos +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-auditor +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-automatix +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-bb8 +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-c3po +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-cache-client +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-cache-consumer +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-conveyor-finisher +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-conveyor-poller +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-conveyor-preparer +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-conveyor-receiver +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-conveyor-stager +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-conveyor-submitter +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-conveyor-throttler +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-dark-reaper +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-dumper +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-follower +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-hermes +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-judge-cleaner +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-judge-evaluator +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-judge-injector +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-judge-repairer +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-kronos +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-minos +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-minos-temporary-expiration +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-necromancer +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-oauth-manager +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-reaper +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-rse-decommissioner +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-storage-consistency-actions +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-transmogrifier +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/bin/rucio-undertaker +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/alembic.ini.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/alembic_offline.ini.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/globus-config.yml.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/ldap.cfg.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/rse-accounts.cfg.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/rucio.cfg.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/etc/rucio_multi_vo.cfg.template +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/accountclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/client.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/configclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/credentialclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/diracclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/exportclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/fileclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/importclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/lockclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/pingclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/replicaclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/requestclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/rseclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/ruleclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/scopeclient.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/client/touchclient.py +0 -0
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/common}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/cache.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/config.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/constraints.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/didtype.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/dumper/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/dumper/consistency.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/dumper/data_models.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/dumper/path_parsing.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/extra.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/logging.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/pcache.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/policy.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/schema/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/stopwatch.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio-34.6.0/lib/rucio/common → rucio-35.0.0rc2/lib/rucio/core}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/account.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/authentication.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did_meta_plugins/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did_meta_plugins/did_column_meta.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did_meta_plugins/filter_engine.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/did_meta_plugins/postgres_meta.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/exporter.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/identity.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/monitor.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/nongrid_trace.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/permission/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/permission/atlas.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/permission/belleii.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/permission/escape.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/permission/generic.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/permission/generic_multi_vo.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/rse_expression_parser.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/rse_selector.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/rule.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/topology.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/core/trace.py +0 -0
- {rucio-34.6.0/lib/rucio/core → rucio-35.0.0rc2/lib/rucio/daemons}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons → rucio-35.0.0rc2/lib/rucio/daemons/abacus}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/abacus/account.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/abacus/rse.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/abacus → rucio-35.0.0rc2/lib/rucio/daemons/atropos}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/atropos/atropos.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/auditor/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/auditor/hdfs.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/auditor/srmdumps.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/atropos → rucio-35.0.0rc2/lib/rucio/daemons/automatix}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/automatix/automatix.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/automatix → rucio-35.0.0rc2/lib/rucio/daemons/badreplicas}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/badreplicas/minos.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/badreplicas → rucio-35.0.0rc2/lib/rucio/daemons/bb8}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/bb8/bb8.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/bb8 → rucio-35.0.0rc2/lib/rucio/daemons/c3po}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/c3po → rucio-35.0.0rc2/lib/rucio/daemons/c3po/algorithms}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/c3po.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/c3po/algorithms → rucio-35.0.0rc2/lib/rucio/daemons/c3po/collectors}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/collectors/mock_did.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/c3po/collectors → rucio-35.0.0rc2/lib/rucio/daemons/c3po/utils}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/c3po/utils → rucio-35.0.0rc2/lib/rucio/daemons/cache}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/cache/consumer.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/cache → rucio-35.0.0rc2/lib/rucio/daemons/conveyor}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/common.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/finisher.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/poller.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/preparer.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/receiver.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/stager.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/submitter.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/conveyor/throttler.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/conveyor → rucio-35.0.0rc2/lib/rucio/daemons/follower}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/follower/follower.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/follower → rucio-35.0.0rc2/lib/rucio/daemons/hermes}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/hermes/hermes.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/hermes → rucio-35.0.0rc2/lib/rucio/daemons/judge}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/judge/cleaner.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/judge/evaluator.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/judge/injector.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/judge/repairer.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/judge → rucio-35.0.0rc2/lib/rucio/daemons/oauthmanager}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/oauthmanager → rucio-35.0.0rc2/lib/rucio/daemons/reaper}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/reaper/dark_reaper.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/reaper/reaper.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/reaper → rucio-35.0.0rc2/lib/rucio/daemons/replicarecoverer}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/replicarecoverer → rucio-35.0.0rc2/lib/rucio/daemons/rsedecommissioner}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/rsedecommissioner → rucio-35.0.0rc2/lib/rucio/daemons/storage}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/storage → rucio-35.0.0rc2/lib/rucio/daemons/storage/consistency}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/storage/consistency → rucio-35.0.0rc2/lib/rucio/daemons/tracer}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/tracer → rucio-35.0.0rc2/lib/rucio/daemons/transmogrifier}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/transmogrifier → rucio-35.0.0rc2/lib/rucio/daemons/undertaker}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
- {rucio-34.6.0/lib/rucio/daemons/undertaker → rucio-35.0.0rc2/lib/rucio/db}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/constants.py +0 -0
- {rucio-34.6.0/lib/rucio/db → rucio-35.0.0rc2/lib/rucio/db/sqla/migrate_repo}/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/sautils.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/types.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/db/sqla/util.py +0 -0
- {rucio-34.6.0/lib/rucio/db/sqla/migrate_repo → rucio-35.0.0rc2/lib/rucio/gateway}/__init__.py +0 -0
- {rucio-34.6.0/lib/rucio/api → rucio-35.0.0rc2/lib/rucio/gateway}/permission.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/gsiftp.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/ngarc.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/posix.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/protocol.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/srm.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/storm.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/webdav.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/rse/rsemanager.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/tests/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/tests/common.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/tests/common_server.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/bittorrent.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/fts3_plugins.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/globus.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/globus_library.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/mock.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/transfertool/transfertool.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/version.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/main.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/main.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/metrics.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/lib/rucio/web/rest/ping.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/pylintrc +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/pyproject.toml +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/setup.cfg +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_abacus_account.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_abacus_collection_replica.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_abacus_rse.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_account_limits.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_archive.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_auditor.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_auditor_hdfs.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_auditor_srmdumps.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_automatix.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_bb8.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_belleii.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_boolean.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_common_types.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_config.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_conveyor.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_conveyor_submitter.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_counter.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_credential.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_curl.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_daemons.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_dataset_replicas.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_db.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_didtype.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_download.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_dumper.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_dumper_consistency.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_dumper_data_model.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_dumper_path_parsing.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_filter_engine.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_heartbeat.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_hermes.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_identity.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_impl_upload_download.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_import_export.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_judge_cleaner.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_judge_evaluator.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_judge_injector.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_judge_repairer.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_message.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_meta_conventions.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_meta_did.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_module_import.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_monitor.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_naming_convention.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_oauthmanager.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_oidc.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_pfns.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_ping.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_preparer.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_qos.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_quarantined_replica.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_redirect.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_replica_recoverer.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_replica_sorting.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_request.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_root_proxy.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_expression_parser.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_lfn2path.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_posix.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_srm.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rse_selector.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_rucio_server.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_scope.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_throttler.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_tpc.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_trace.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_transfer.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_transfer_plugins.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_undertaker.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_upload.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tests/test_utils.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tools/bootstrap.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tools/merge_rucio_configs.py +0 -0
- {rucio-34.6.0 → rucio-35.0.0rc2}/tools/reset_database.py +0 -0
|
@@ -66,6 +66,7 @@ Individual contributors to the source code
|
|
|
66
66
|
- Jensen Zhang <hack@jensen-zhang.site>, 2022
|
|
67
67
|
- Aksel Lunde Aase <aksel.lunde.aase@gmail.com>, 2022
|
|
68
68
|
- Elena Gazzarrini <gazzarrini.elena@gmail.com>, 2022-2023
|
|
69
|
+
- Maximilian Linhoff, <maximilian.linhoff@tu-dortmund.de>, 2024
|
|
69
70
|
|
|
70
71
|
Organisations employing contributors
|
|
71
72
|
------------------------------------
|
|
@@ -93,3 +94,4 @@ Organisations employing contributors
|
|
|
93
94
|
- Imperial College London (UK)
|
|
94
95
|
- University of Chicago (USA)
|
|
95
96
|
- Purdue University (USA)
|
|
97
|
+
- TU Dortmund University (Germany)
|
|
@@ -7,7 +7,7 @@ include setuputil.py
|
|
|
7
7
|
include setup.py
|
|
8
8
|
include setup.cfg
|
|
9
9
|
include pyproject.toml
|
|
10
|
-
include requirements.txt
|
|
10
|
+
include requirements/requirements.server.txt
|
|
11
11
|
include lib/rucio/db/migrate_repo/script.py.mako
|
|
12
12
|
include etc/rse-accounts.cfg.template
|
|
13
13
|
include etc/rucio.cfg.atlas.client.template
|
rucio-35.0.0rc2/PKG-INFO
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: rucio
|
|
3
|
+
Version: 35.0.0rc2
|
|
4
|
+
Summary: Rucio Package
|
|
5
|
+
Home-page: https://rucio.cern.ch/
|
|
6
|
+
Author: Rucio
|
|
7
|
+
Author-email: rucio-dev@cern.ch
|
|
8
|
+
License: Apache License, Version 2.0
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Classifier: Intended Audience :: Information Technology
|
|
12
|
+
Classifier: Intended Audience :: System Administrators
|
|
13
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
14
|
+
Classifier: Natural Language :: English
|
|
15
|
+
Classifier: Programming Language :: Python
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Environment :: No Input/Output (Daemon)
|
|
20
|
+
Requires-Python: >=3.9, <4
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
License-File: AUTHORS.rst
|
|
23
|
+
Requires-Dist: alembic==1.13.2
|
|
24
|
+
Requires-Dist: argcomplete==3.4.0
|
|
25
|
+
Requires-Dist: boto3==1.34.142
|
|
26
|
+
Requires-Dist: dogpile-cache==1.2.2
|
|
27
|
+
Requires-Dist: flask==3.0.3
|
|
28
|
+
Requires-Dist: geoip2==4.8.0
|
|
29
|
+
Requires-Dist: google-auth==2.32.0
|
|
30
|
+
Requires-Dist: jsonschema==4.23.0
|
|
31
|
+
Requires-Dist: oic==1.7.0
|
|
32
|
+
Requires-Dist: paramiko==3.4.0
|
|
33
|
+
Requires-Dist: prometheus-client==0.20.0
|
|
34
|
+
Requires-Dist: pymemcache==4.0.0
|
|
35
|
+
Requires-Dist: python-dateutil==2.9.0.post0
|
|
36
|
+
Requires-Dist: python-magic==0.4.27
|
|
37
|
+
Requires-Dist: redis==5.0.7
|
|
38
|
+
Requires-Dist: requests==2.32.3
|
|
39
|
+
Requires-Dist: sqlalchemy==2.0.31
|
|
40
|
+
Requires-Dist: statsd==4.0.1
|
|
41
|
+
Requires-Dist: stomp-py==8.1.2
|
|
42
|
+
Requires-Dist: tabulate==0.9.0
|
|
43
|
+
Requires-Dist: urllib3==1.26.19
|
|
44
|
+
Provides-Extra: oracle
|
|
45
|
+
Requires-Dist: cx-oracle==8.3.0; extra == "oracle"
|
|
46
|
+
Provides-Extra: mongo
|
|
47
|
+
Requires-Dist: pymongo==4.8.0; extra == "mongo"
|
|
48
|
+
Provides-Extra: postgresql
|
|
49
|
+
Requires-Dist: psycopg2-binary==2.9.9; extra == "postgresql"
|
|
50
|
+
Provides-Extra: mysql
|
|
51
|
+
Requires-Dist: pymysql==1.1.1; extra == "mysql"
|
|
52
|
+
Provides-Extra: kerberos
|
|
53
|
+
Requires-Dist: kerberos==1.3.1; extra == "kerberos"
|
|
54
|
+
Requires-Dist: pykerberos==1.2.4; extra == "kerberos"
|
|
55
|
+
Requires-Dist: requests-kerberos==0.15.0; extra == "kerberos"
|
|
56
|
+
Provides-Extra: globus
|
|
57
|
+
Requires-Dist: globus-sdk==3.41.0; extra == "globus"
|
|
58
|
+
Requires-Dist: pyyaml==6.0.1; extra == "globus"
|
|
59
|
+
Provides-Extra: saml
|
|
60
|
+
Requires-Dist: python3-saml==1.16.0; extra == "saml"
|
|
61
|
+
Provides-Extra: dev
|
|
62
|
+
Requires-Dist: pyyaml==6.0.1; extra == "dev"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Rucio - Scientific Data Management
|
|
2
|
+
|
|
3
|
+
Rucio is a software framework that provides functionality to organize, manage, and access large volumes of scientific data using customisable policies.
|
|
4
|
+
The data can be spread across globally distributed locations and across heterogeneous data centers, uniting different storage and network technologies as a single federated entity.
|
|
5
|
+
Rucio offers advanced features such as distributed data recovery or adaptive replication, and is highly scalable, modular, and extensible.
|
|
6
|
+
Rucio has been originally developed to meet the requirements of the high-energy physics experiment ATLAS, and is continuously extended to support LHC experiments and other diverse scientific communities.
|
|
7
|
+
|
|
8
|
+
## Documentation
|
|
9
|
+
|
|
10
|
+
General information, API/REST description and guides can be found in our [documentation](https://rucio.cern.ch/documentation) or on our [webpage](https://rucio.cern.ch).
|
|
11
|
+
|
|
12
|
+
## Try it out
|
|
13
|
+
|
|
14
|
+
We provide a [dockerized environment](https://github.com/rucio/rucio/tree/master/etc/docker/dev) which serves both as a demo environment and a development environment.
|
|
15
|
+
It includes all the necessary preconfigured components for multiple storage and transfers developments.
|
|
16
|
+
|
|
17
|
+
## Developers
|
|
18
|
+
|
|
19
|
+
For information on how to contribute to Rucio, please refer and follow our [CONTRIBUTING](https://rucio.cern.ch/documentation/contributing) guidelines. We strongly recommend to use the [dockerized environment](https://github.com/rucio/rucio/tree/master/etc/docker/dev) for development.
|
|
20
|
+
|
|
21
|
+
## Operators
|
|
22
|
+
|
|
23
|
+
To learn how to deploy and configure Rucio, consult the [documentation](https://rucio.cern.ch/documentation) available online.
|
|
24
|
+
|
|
25
|
+
## Getting Support
|
|
26
|
+
|
|
27
|
+
If you are looking for support, please contact us via one of our [official channels](https://rucio.cern.ch/documentation/contact_us/).
|
|
@@ -30,6 +30,7 @@ from configparser import NoOptionError, NoSectionError
|
|
|
30
30
|
from copy import deepcopy
|
|
31
31
|
from datetime import datetime
|
|
32
32
|
from functools import wraps
|
|
33
|
+
from typing import Optional
|
|
33
34
|
|
|
34
35
|
from tabulate import tabulate
|
|
35
36
|
|
|
@@ -1079,6 +1080,24 @@ def download(args):
|
|
|
1079
1080
|
logger.debug(args.dids)
|
|
1080
1081
|
item_defaults['pfn'] = args.pfn
|
|
1081
1082
|
item_defaults['did'] = did_str
|
|
1083
|
+
if args.rses is None:
|
|
1084
|
+
logger.warning("No RSE was given, selecting one.")
|
|
1085
|
+
client = get_client(args)
|
|
1086
|
+
replicas = client.list_replicas(
|
|
1087
|
+
[{"scope": did_str.split(':')[0], "name": did_str.split(':')[-1]}],
|
|
1088
|
+
schemes=args.protocol,
|
|
1089
|
+
ignore_availability=False,
|
|
1090
|
+
client_location=detect_client_location(),
|
|
1091
|
+
resolve_archives=not args.no_resolve_archives
|
|
1092
|
+
)
|
|
1093
|
+
|
|
1094
|
+
download_rse = _get_rse_for_pfn(replicas, args.pfn)
|
|
1095
|
+
if download_rse is None:
|
|
1096
|
+
logger.error("Could not find RSE for pfn %s", args.pfn)
|
|
1097
|
+
return FAILURE
|
|
1098
|
+
else:
|
|
1099
|
+
item_defaults['rse'] = download_rse
|
|
1100
|
+
|
|
1082
1101
|
result = download_client.download_pfns([item_defaults], 1, trace_pattern, deactivate_file_download_exceptions=deactivate_file_download_exceptions)
|
|
1083
1102
|
|
|
1084
1103
|
if not result:
|
|
@@ -1120,6 +1139,21 @@ def download(args):
|
|
|
1120
1139
|
return SUCCESS
|
|
1121
1140
|
|
|
1122
1141
|
|
|
1142
|
+
def _get_rse_for_pfn(replicas, pfn) -> Optional[str]:
|
|
1143
|
+
# Check each rse in the replica list for the pfn. If no pfn is found, returns None.
|
|
1144
|
+
# If it is found, stop the generator and return the item.
|
|
1145
|
+
for replica in replicas:
|
|
1146
|
+
try:
|
|
1147
|
+
download_rse = next(
|
|
1148
|
+
rse for rse in replica['rses']
|
|
1149
|
+
if pfn in replica['rses'][rse]
|
|
1150
|
+
)
|
|
1151
|
+
except StopIteration:
|
|
1152
|
+
continue
|
|
1153
|
+
else:
|
|
1154
|
+
return download_rse
|
|
1155
|
+
|
|
1156
|
+
|
|
1123
1157
|
@exception_handler
|
|
1124
1158
|
def get_metadata(args):
|
|
1125
1159
|
"""
|
|
@@ -54,7 +54,7 @@ from rucio.common.exception import (
|
|
|
54
54
|
ScopeNotFound,
|
|
55
55
|
)
|
|
56
56
|
from rucio.common.extra import import_extras
|
|
57
|
-
from rucio.common.utils import StoreAndDeprecateWarningAction, chunks,
|
|
57
|
+
from rucio.common.utils import StoreAndDeprecateWarningAction, chunks, clean_pfns, construct_non_deterministic_pfn, extract_scope, get_bytes_value_from_string, parse_response, render_json, sizefmt
|
|
58
58
|
from rucio.rse import rsemanager as rsemgr
|
|
59
59
|
|
|
60
60
|
EXTRA_MODULES = import_extras(['argcomplete'])
|
|
@@ -1148,21 +1148,21 @@ def declare_bad_file_replicas(args):
|
|
|
1148
1148
|
list_bad_pfns = []
|
|
1149
1149
|
cnt += 1
|
|
1150
1150
|
previous_pattern = None
|
|
1151
|
-
for
|
|
1151
|
+
for pfn in clean_pfns(chunk):
|
|
1152
1152
|
unknown = True
|
|
1153
1153
|
if previous_pattern:
|
|
1154
|
-
if previous_pattern in
|
|
1155
|
-
list_bad_pfns.append(
|
|
1154
|
+
if previous_pattern in pfn:
|
|
1155
|
+
list_bad_pfns.append(pfn)
|
|
1156
1156
|
unknown = False
|
|
1157
1157
|
continue
|
|
1158
1158
|
for pattern in prot_dict:
|
|
1159
|
-
if pattern in
|
|
1159
|
+
if pattern in pfn:
|
|
1160
1160
|
previous_pattern = prot_dict[pattern]
|
|
1161
|
-
list_bad_pfns.append(
|
|
1161
|
+
list_bad_pfns.append(pfn)
|
|
1162
1162
|
unknown = False
|
|
1163
1163
|
break
|
|
1164
1164
|
if unknown:
|
|
1165
|
-
print('Cannot find any RSE associated to %s' %
|
|
1165
|
+
print('Cannot find any RSE associated to %s' % pfn)
|
|
1166
1166
|
client.add_bad_pfns(pfns=list_bad_pfns, reason=args.reason, state='BAD', expires_at=None)
|
|
1167
1167
|
ndeclared = len(list_bad_pfns)
|
|
1168
1168
|
tot_file_declared += ndeclared
|
|
@@ -1251,7 +1251,7 @@ def list_pfns(args):
|
|
|
1251
1251
|
logger.warning('The file has multiple parents')
|
|
1252
1252
|
for did in parents:
|
|
1253
1253
|
if did['type'] == 'DATASET':
|
|
1254
|
-
path =
|
|
1254
|
+
path = construct_non_deterministic_pfn(did['name'], scope, name, naming_convention=naming_convention)
|
|
1255
1255
|
pfn = ''.join([proto.attributes['scheme'],
|
|
1256
1256
|
'://',
|
|
1257
1257
|
proto.attributes['hostname'],
|
|
@@ -183,8 +183,8 @@ Terminal output:
|
|
|
183
183
|
|
|
184
184
|
2019-02-19 14:39:24,114 709 INFO replica_recoverer[0/0]: ready to query replicas at RSEs like *MOCK*, declared as suspicious in the last 3 days at least 10 times and which are available on other RSEs.
|
|
185
185
|
2019-02-19 14:39:24,124 709 INFO replica_recoverer[0/0]: suspicious replica query took 0.0101511478424 seconds, total of 1 replicas were found. [{'scope': 'mock', 'cnt': 11L, 'name': 'file_available_suspicious_5180be3e-4ebc-4c34-b528-efbfd09f067e', 'rse': 'MOCK_SUSPICIOUS'}]
|
|
186
|
-
2019-02-19 14:39:24,125 709 INFO replica_recoverer[0/0]: looking for replica
|
|
187
|
-
2019-02-19 14:39:24,160 709 INFO replica_recoverer[0/0]: found 1/1
|
|
186
|
+
2019-02-19 14:39:24,125 709 INFO replica_recoverer[0/0]: looking for replica pfns.
|
|
187
|
+
2019-02-19 14:39:24,160 709 INFO replica_recoverer[0/0]: found 1/1 pfns (took 0.035572052002 seconds) - declaring them as bad replicas now.
|
|
188
188
|
2019-02-19 14:39:24,160 709 INFO replica_recoverer[0/0]: ready to declare 1 bad replica(s) on MOCK_SUSPICIOUS: ['file://localhost:0/tmp/rucio_rse1/mock/1f/6b/file_available_suspicious_5180be3e-4ebc-4c34-b528-efbfd09f067e'].
|
|
189
189
|
2019-02-19 14:39:24,188 709 INFO replica_recoverer[0/0]: finished declaring bad replicas on MOCK_SUSPICIOUS.
|
|
190
190
|
2019-02-19 14:39:24,192 709 INFO replica_recoverer[0/0]: graceful stop done
|
|
@@ -137,8 +137,6 @@ class BaseClient:
|
|
|
137
137
|
self.logger.debug('No trace_host passed. Using rucio_host instead')
|
|
138
138
|
|
|
139
139
|
self.list_hosts = [self.host]
|
|
140
|
-
self.account = account
|
|
141
|
-
self.vo = vo
|
|
142
140
|
self.ca_cert = ca_cert
|
|
143
141
|
self.auth_token = ""
|
|
144
142
|
self.headers = {}
|
|
@@ -173,7 +171,9 @@ class BaseClient:
|
|
|
173
171
|
self.logger.debug('No ca_cert found in configuration. Falling back to Mozilla default CA bundle (certifi).')
|
|
174
172
|
self.ca_cert = True
|
|
175
173
|
|
|
176
|
-
if account is None:
|
|
174
|
+
if account is not None:
|
|
175
|
+
self.account = account
|
|
176
|
+
else:
|
|
177
177
|
self.logger.debug('No account passed. Trying to get it from the RUCIO_ACCOUNT environment variable or the config file.')
|
|
178
178
|
try:
|
|
179
179
|
self.account = environ['RUCIO_ACCOUNT']
|
|
@@ -183,7 +183,9 @@ class BaseClient:
|
|
|
183
183
|
except (NoOptionError, NoSectionError):
|
|
184
184
|
pass
|
|
185
185
|
|
|
186
|
-
if vo is None:
|
|
186
|
+
if vo is not None:
|
|
187
|
+
self.vo = vo
|
|
188
|
+
else:
|
|
187
189
|
self.logger.debug('No VO passed. Trying to get it from environment variable RUCIO_VO.')
|
|
188
190
|
try:
|
|
189
191
|
self.vo = environ['RUCIO_VO']
|
|
@@ -239,57 +241,62 @@ class BaseClient:
|
|
|
239
241
|
return auth_type
|
|
240
242
|
|
|
241
243
|
def _get_creds(self, creds: Optional[dict[str, Any]]) -> dict[str, Any]:
|
|
242
|
-
if
|
|
243
|
-
if not creds:
|
|
244
|
-
creds = {}
|
|
245
|
-
# if there are default values, check if rucio.cfg does not specify them, otherwise put default
|
|
246
|
-
if 'oidc_refresh_lifetime' not in creds or creds['oidc_refresh_lifetime'] is None:
|
|
247
|
-
creds['oidc_refresh_lifetime'] = config_get('client', 'oidc_refresh_lifetime', False, None)
|
|
248
|
-
if 'oidc_issuer' not in creds or creds['oidc_issuer'] is None:
|
|
249
|
-
creds['oidc_issuer'] = config_get('client', 'oidc_issuer', False, None)
|
|
250
|
-
if 'oidc_audience' not in creds or creds['oidc_audience'] is None:
|
|
251
|
-
creds['oidc_audience'] = config_get('client', 'oidc_audience', False, None)
|
|
252
|
-
if 'oidc_auto' not in creds or creds['oidc_auto'] is False:
|
|
253
|
-
creds['oidc_auto'] = config_get_bool('client', 'oidc_auto', False, False)
|
|
254
|
-
if creds['oidc_auto']:
|
|
255
|
-
if 'oidc_username' not in creds or creds['oidc_username'] is None:
|
|
256
|
-
creds['oidc_username'] = config_get('client', 'oidc_username', False, None)
|
|
257
|
-
if 'oidc_password' not in creds or creds['oidc_password'] is None:
|
|
258
|
-
creds['oidc_password'] = config_get('client', 'oidc_password', False, None)
|
|
259
|
-
if 'oidc_scope' not in creds or creds['oidc_scope'] == 'openid profile':
|
|
260
|
-
creds['oidc_scope'] = config_get('client', 'oidc_scope', False, 'openid profile')
|
|
261
|
-
if 'oidc_polling' not in creds or creds['oidc_polling'] is False:
|
|
262
|
-
creds['oidc_polling'] = config_get_bool('client', 'oidc_polling', False, False)
|
|
263
|
-
|
|
264
|
-
if creds is None:
|
|
244
|
+
if not creds:
|
|
265
245
|
self.logger.debug('No creds passed. Trying to get it from the config file.')
|
|
266
246
|
creds = {}
|
|
267
|
-
|
|
268
|
-
|
|
247
|
+
|
|
248
|
+
try:
|
|
249
|
+
if self.auth_type == 'oidc':
|
|
250
|
+
# if there are default values, check if rucio.cfg does not specify them, otherwise put default
|
|
251
|
+
if 'oidc_refresh_lifetime' not in creds or creds['oidc_refresh_lifetime'] is None:
|
|
252
|
+
creds['oidc_refresh_lifetime'] = config_get('client', 'oidc_refresh_lifetime', False, None)
|
|
253
|
+
if 'oidc_issuer' not in creds or creds['oidc_issuer'] is None:
|
|
254
|
+
creds['oidc_issuer'] = config_get('client', 'oidc_issuer', False, None)
|
|
255
|
+
if 'oidc_audience' not in creds or creds['oidc_audience'] is None:
|
|
256
|
+
creds['oidc_audience'] = config_get('client', 'oidc_audience', False, None)
|
|
257
|
+
if 'oidc_auto' not in creds or creds['oidc_auto'] is False:
|
|
258
|
+
creds['oidc_auto'] = config_get_bool('client', 'oidc_auto', False, False)
|
|
259
|
+
if creds['oidc_auto']:
|
|
260
|
+
if 'oidc_username' not in creds or creds['oidc_username'] is None:
|
|
261
|
+
creds['oidc_username'] = config_get('client', 'oidc_username', False, None)
|
|
262
|
+
if 'oidc_password' not in creds or creds['oidc_password'] is None:
|
|
263
|
+
creds['oidc_password'] = config_get('client', 'oidc_password', False, None)
|
|
264
|
+
if 'oidc_scope' not in creds or creds['oidc_scope'] == 'openid profile':
|
|
265
|
+
creds['oidc_scope'] = config_get('client', 'oidc_scope', False, 'openid profile')
|
|
266
|
+
if 'oidc_polling' not in creds or creds['oidc_polling'] is False:
|
|
267
|
+
creds['oidc_polling'] = config_get_bool('client', 'oidc_polling', False, False)
|
|
268
|
+
|
|
269
|
+
elif self.auth_type in ['userpass', 'saml']:
|
|
270
|
+
if 'username' not in creds or creds['username'] is None:
|
|
269
271
|
creds['username'] = config_get('client', 'username')
|
|
272
|
+
if 'password' not in creds or creds['password'] is None:
|
|
270
273
|
creds['password'] = config_get('client', 'password')
|
|
271
|
-
|
|
274
|
+
|
|
275
|
+
elif self.auth_type == 'x509':
|
|
276
|
+
if 'client_cert' not in creds or creds['client_cert'] is None:
|
|
272
277
|
if "RUCIO_CLIENT_CERT" in environ:
|
|
273
|
-
client_cert = environ["RUCIO_CLIENT_CERT"]
|
|
278
|
+
creds['client_cert'] = environ["RUCIO_CLIENT_CERT"]
|
|
274
279
|
else:
|
|
275
|
-
client_cert = config_get('client', 'client_cert')
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
280
|
+
creds['client_cert'] = config_get('client', 'client_cert')
|
|
281
|
+
creds['client_cert'] = path.abspath(path.expanduser(path.expandvars(creds['client_cert'])))
|
|
282
|
+
if not path.exists(creds['client_cert']):
|
|
283
|
+
raise MissingClientParameter('X.509 client certificate not found: %s' % creds['client_cert'])
|
|
279
284
|
|
|
285
|
+
if 'client_key' not in creds or creds['client_key'] is None:
|
|
280
286
|
if "RUCIO_CLIENT_KEY" in environ:
|
|
281
|
-
client_key = environ["RUCIO_CLIENT_KEY"]
|
|
282
|
-
else:
|
|
283
|
-
client_key = config_get('client', 'client_key')
|
|
284
|
-
creds['client_key'] = path.abspath(path.expanduser(path.expandvars(client_key)))
|
|
285
|
-
if not path.exists(creds['client_key']):
|
|
286
|
-
raise MissingClientParameter('X.509 client key not found: %s' % creds['client_key'])
|
|
287
|
+
creds['client_key'] = environ["RUCIO_CLIENT_KEY"]
|
|
287
288
|
else:
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
289
|
+
creds['client_key'] = config_get('client', 'client_key')
|
|
290
|
+
creds['client_key'] = path.abspath(path.expanduser(path.expandvars(creds['client_key'])))
|
|
291
|
+
if not path.exists(creds['client_key']):
|
|
292
|
+
raise MissingClientParameter('X.509 client key not found: %s' % creds['client_key'])
|
|
293
|
+
else:
|
|
294
|
+
perms = oct(os.stat(creds['client_key']).st_mode)[-3:]
|
|
295
|
+
if perms not in ['400', '600']:
|
|
296
|
+
raise CannotAuthenticate('X.509 authentication selected, but private key (%s) permissions are liberal (required: 400 or 600, found: %s)' % (creds['client_key'], perms))
|
|
291
297
|
|
|
292
|
-
|
|
298
|
+
elif self.auth_type == 'x509_proxy':
|
|
299
|
+
if 'client_proxy' not in creds or creds['client_proxy'] is None:
|
|
293
300
|
try:
|
|
294
301
|
creds['client_proxy'] = path.abspath(path.expanduser(path.expandvars(config_get('client', 'client_x509_proxy'))))
|
|
295
302
|
except NoOptionError:
|
|
@@ -307,11 +314,15 @@ class BaseClient:
|
|
|
307
314
|
raise MissingClientParameter(
|
|
308
315
|
'Cannot find a valid X509 proxy; not in %s, $X509_USER_PROXY not set, and '
|
|
309
316
|
'\'x509_proxy\' not set in the configuration file.' % fname)
|
|
310
|
-
|
|
317
|
+
|
|
318
|
+
elif self.auth_type == 'ssh':
|
|
319
|
+
if 'ssh_private_key' not in creds or creds['ssh_private_key'] is None:
|
|
311
320
|
creds['ssh_private_key'] = path.abspath(path.expanduser(path.expandvars(config_get('client', 'ssh_private_key'))))
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
321
|
+
|
|
322
|
+
except (NoOptionError, NoSectionError) as error:
|
|
323
|
+
if error.args[0] != 'client_key':
|
|
324
|
+
raise MissingClientParameter('Option \'%s\' cannot be found in config file' % error.args[0])
|
|
325
|
+
|
|
315
326
|
return creds
|
|
316
327
|
|
|
317
328
|
def _get_exception(self, headers: dict[str, str], status_code: Optional[int] = None, data=None) -> tuple[type[exception.RucioException], str]:
|
|
@@ -21,7 +21,7 @@ from requests.status_codes import codes
|
|
|
21
21
|
|
|
22
22
|
from rucio.client.baseclient import BaseClient, choice
|
|
23
23
|
from rucio.common.exception import DeprecationError
|
|
24
|
-
from rucio.common.utils import build_url, date_to_str, render_json
|
|
24
|
+
from rucio.common.utils import build_url, date_to_str, render_json
|
|
25
25
|
|
|
26
26
|
if TYPE_CHECKING:
|
|
27
27
|
from collections.abc import Iterable, Iterator, Mapping, Sequence
|
|
@@ -142,7 +142,7 @@ class DIDClient(BaseClient):
|
|
|
142
142
|
"""
|
|
143
143
|
path = '/'.join([self.DIDS_BASEURL])
|
|
144
144
|
url = build_url(choice(self.list_hosts), path=path)
|
|
145
|
-
r = self._send_request(url, type_='POST', data=
|
|
145
|
+
r = self._send_request(url, type_='POST', data=render_json(dids))
|
|
146
146
|
if r.status_code == codes.created:
|
|
147
147
|
return True
|
|
148
148
|
else:
|