rucio 34.1.0__tar.gz → 34.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rucio might be problematic. Click here for more details.
- {rucio-34.1.0 → rucio-34.3.0}/PKG-INFO +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-admin +11 -10
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-auditor +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-automatix +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-cache-client +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-conveyor-finisher +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-conveyor-submitter +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-judge-evaluator +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-necromancer +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-oauth-manager +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-replica-recoverer +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/etc/ldap.cfg.template +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/account_limit.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/config.py +11 -11
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/did.py +2 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/rse.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/vo.py +16 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/accountclient.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/baseclient.py +154 -131
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/didclient.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/downloadclient.py +14 -13
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/rseclient.py +5 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/ruleclient.py +2 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/uploadclient.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/cache.py +3 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/config.py +48 -46
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/constants.py +61 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/didtype.py +23 -20
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/dumper/__init__.py +67 -38
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/dumper/consistency.py +7 -9
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/dumper/data_models.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/pcache.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/plugins.py +10 -9
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/policy.py +4 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/__init__.py +11 -7
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/types.py +14 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/utils.py +28 -29
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/account_counter.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/account_limit.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/authentication.py +9 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/credential.py +3 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did.py +7 -8
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did_meta_plugins/__init__.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +2 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +58 -9
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did_meta_plugins/json_meta.py +2 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/dirac.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/heartbeat.py +80 -26
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/identity.py +21 -9
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/importer.py +10 -8
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/lifetime_exception.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/lock.py +3 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/monitor.py +17 -9
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/naming_convention.py +47 -14
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/oidc.py +8 -8
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/permission/__init__.py +11 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/permission/atlas.py +33 -32
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/permission/belleii.py +4 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/permission/cms.py +9 -8
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/permission/escape.py +5 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/permission/generic.py +79 -78
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/permission/generic_multi_vo.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/quarantined_replica.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/replica.py +15 -14
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/request.py +8 -7
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/rse.py +11 -10
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/rse_counter.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/rse_expression_parser.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/rse_selector.py +7 -7
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/rule.py +34 -33
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/rule_grouping.py +19 -18
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/subscription.py +2 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/topology.py +18 -16
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/transfer.py +12 -12
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/vo.py +9 -10
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/volatile_replica.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/atropos/atropos.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/auditor/__init__.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/auditor/srmdumps.py +64 -25
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/automatix/automatix.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/badreplicas/minos.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/bb8/common.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +2 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +2 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +4 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/collectors/mock_did.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/common.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/common.py +4 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/finisher.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/poller.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/stager.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/submitter.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/throttler.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/hermes/hermes.py +3 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/judge/cleaner.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/judge/evaluator.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/judge/injector.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/judge/repairer.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/reaper/reaper.py +9 -8
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/rsedecommissioner/config.py +3 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +2 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +3 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/storage/consistency/actions.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/undertaker/undertaker.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/__init__.py +16 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/models.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/session.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/util.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/bittorrent.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/cache.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/dummy.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/gfal.py +7 -7
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/globus.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/gsiftp.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/http_cache.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/mock.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/ngarc.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/posix.py +7 -7
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/protocol.py +13 -12
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/rclone.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/rfio.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/srm.py +6 -6
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/ssh.py +6 -6
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/storm.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/webdav.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/xrootd.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/tests/common.py +40 -14
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/tests/common_server.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/bittorrent.py +7 -6
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/bittorrent_driver.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +4 -5
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/fts3.py +18 -18
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/fts3_plugins.py +5 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/globus.py +5 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/transfertool.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/vcsversion.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/version.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +0 -13
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/common.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +13 -13
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/import.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/main.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +17 -17
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +12 -12
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +11 -4
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +4 -4
- rucio-34.3.0/pyproject.toml +101 -0
- {rucio-34.1.0 → rucio-34.3.0}/requirements.txt +1 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_account.py +3 -3
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_authentication.py +3 -5
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_bad_replica.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_bin_rucio.py +41 -41
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_clients.py +68 -16
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_config.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_conveyor.py +26 -25
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_conveyor_submitter.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_credential.py +2 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_dataset_replicas.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_dumper_data_model.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_identity.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_import_export.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_judge_repairer.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_multi_vo.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_oidc.py +9 -9
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_preparer.py +7 -6
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_reaper.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_replica.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_replica_recoverer.py +4 -4
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_replica_sorting.py +3 -2
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_request.py +6 -5
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_root_proxy.py +3 -2
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse.py +4 -3
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_expression_parser.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_lfn2path.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rule.py +8 -7
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_schema_cms.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_scope.py +2 -2
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_subscription.py +4 -3
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_transfer_plugins.py +1 -1
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_upload.py +2 -1
- rucio-34.1.0/pyproject.toml +0 -61
- {rucio-34.1.0 → rucio-34.3.0}/AUTHORS.rst +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/ChangeLog +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/LICENSE +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/MANIFEST.in +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/README.rst +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-abacus-account +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-abacus-collection-replica +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-abacus-rse +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-atropos +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-bb8 +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-c3po +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-cache-consumer +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-conveyor-poller +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-conveyor-preparer +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-conveyor-receiver +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-conveyor-stager +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-conveyor-throttler +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-dark-reaper +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-dumper +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-follower +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-hermes +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-judge-cleaner +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-judge-injector +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-judge-repairer +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-kronos +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-minos +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-minos-temporary-expiration +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-reaper +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-rse-decommissioner +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-storage-consistency-actions +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-transmogrifier +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/bin/rucio-undertaker +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/alembic.ini.template +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/alembic_offline.ini.template +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/globus-config.yml.template +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/rse-accounts.cfg.template +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/rucio.cfg.template +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/etc/rucio_multi_vo.cfg.template +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/alembicrevision.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/account.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/authentication.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/credential.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/dirac.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/exporter.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/heartbeat.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/identity.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/importer.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/lifetime_exception.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/lock.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/meta_conventions.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/permission.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/quarantined_replica.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/replica.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/request.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/rule.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/scope.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/api/subscription.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/client.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/configclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/credentialclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/diracclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/exportclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/fileclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/importclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/lockclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/pingclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/replicaclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/requestclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/scopeclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/subscriptionclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/client/touchclient.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/constraints.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/exception.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/extra.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/logging.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/atlas.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/belleii.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/cms.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/domatpc.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/escape.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/generic.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/icecube.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/schema/lsst.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/stopwatch.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/account.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/config.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/distance.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/exporter.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/message.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/meta_conventions.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/nongrid_trace.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/replica_sorter.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/scope.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/core/trace.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/abacus/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/abacus/account.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/abacus/rse.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/atropos/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/automatix/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/bb8/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/bb8/bb8.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/algorithms/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/algorithms/simple.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/c3po.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/collectors/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/collectors/agis.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/collectors/free_space.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/collectors/jedi_did.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/collectors/network_metrics.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/collectors/workload.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/utils/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/utils/dataset_cache.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/utils/expiring_dataset_cache.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/utils/expiring_list.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/utils/popularity.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/c3po/utils/timeseries.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/cache/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/cache/consumer.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/preparer.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/conveyor/receiver.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/follower/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/follower/follower.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/hermes/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/judge/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/reaper/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/reaper/dark_reaper.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/storage/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/tracer/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/tracer/kronos.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/daemons/undertaker/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/constants.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/sautils.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/db/sqla/types.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/rse/rsemanager.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/tests/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/globus_library.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/transfertool/mock.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/config.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/main.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/metrics.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio/web/rest/ping.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/lib/rucio.egg-info/SOURCES.txt +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/pylintrc +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/setup.cfg +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/setup.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/setuputil.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_abacus_account.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_abacus_collection_replica.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_abacus_rse.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_account_limits.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_api_external_representation.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_archive.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_auditor.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_auditor_hdfs.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_auditor_srmdumps.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_automatix.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_bb8.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_belleii.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_boolean.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_common_types.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_counter.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_curl.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_daemons.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_db.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_did.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_did_meta_plugins.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_didtype.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_download.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_dumper.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_dumper_consistency.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_dumper_path_parsing.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_filter_engine.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_heartbeat.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_hermes.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_impl_upload_download.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_judge_cleaner.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_judge_evaluator.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_judge_injector.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_lifetime.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_message.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_meta_conventions.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_meta_did.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_module_import.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_monitor.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_naming_convention.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_oauthmanager.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_permission.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_pfns.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_ping.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_qos.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_quarantined_replica.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_redirect.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_posix.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_srm.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rse_selector.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_rucio_server.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_throttler.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_tpc.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_trace.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_transfer.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_undertaker.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tests/test_utils.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tools/bootstrap.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tools/merge_rucio_configs.py +0 -0
- {rucio-34.1.0 → rucio-34.3.0}/tools/reset_database.py +0 -0
|
@@ -166,7 +166,7 @@ def exception_handler(function):
|
|
|
166
166
|
used_account = '%s (from rucio.cfg)' % config_get('client', 'account')
|
|
167
167
|
except:
|
|
168
168
|
pass
|
|
169
|
-
try: # are we
|
|
169
|
+
try: # are we overridden by the environment?
|
|
170
170
|
used_account = '%s (from RUCIO_ACCOUNT)' % os.environ['RUCIO_ACCOUNT']
|
|
171
171
|
except:
|
|
172
172
|
pass
|
|
@@ -1151,7 +1151,7 @@ def set_metadata(args):
|
|
|
1151
1151
|
client = get_client(args)
|
|
1152
1152
|
value = args.value
|
|
1153
1153
|
if args.key == 'lifetime':
|
|
1154
|
-
value = float(args.value)
|
|
1154
|
+
value = None if args.value.lower() == 'none' else float(args.value)
|
|
1155
1155
|
scope, name = get_scope(args.did, client)
|
|
1156
1156
|
client.set_metadata(scope=scope, name=name, key=args.key, value=value)
|
|
1157
1157
|
return SUCCESS
|
|
@@ -1550,7 +1550,7 @@ def list_rse_attributes(args):
|
|
|
1550
1550
|
"""
|
|
1551
1551
|
client = get_client(args)
|
|
1552
1552
|
attributes = client.list_rse_attributes(rse=args.rse)
|
|
1553
|
-
table = [(k + ':', str(v)) for (k, v) in sorted(attributes.items())] # columns
|
|
1553
|
+
table = [(k + ':', str(v)) for (k, v) in sorted(attributes.items())] # columns have mixed datatypes
|
|
1554
1554
|
print(tabulate(table, tablefmt='plain', disable_numparse=True)) # disabling number parsing
|
|
1555
1555
|
return SUCCESS
|
|
1556
1556
|
|
|
@@ -33,6 +33,7 @@ from tabulate import tabulate
|
|
|
33
33
|
from rucio import version
|
|
34
34
|
from rucio.client import Client
|
|
35
35
|
from rucio.common.config import config_get
|
|
36
|
+
from rucio.common.constants import RseAttr
|
|
36
37
|
from rucio.common.exception import (
|
|
37
38
|
AccessDenied,
|
|
38
39
|
AccountNotFound,
|
|
@@ -385,7 +386,7 @@ def set_limits(args):
|
|
|
385
386
|
try:
|
|
386
387
|
byte_limit = int(limit_input)
|
|
387
388
|
except ValueError:
|
|
388
|
-
logger.error('The limit could not be set. Either you misspelled infinity or your input could not be converted to integer or you used a wrong pattern. Please use a format like 10GB with B,KB,MB,GB,TB,PB as units (not case
|
|
389
|
+
logger.error('The limit could not be set. Either you misspelled infinity or your input could not be converted to integer or you used a wrong pattern. Please use a format like 10GB with B,KB,MB,GB,TB,PB as units (not case sensitive)')
|
|
389
390
|
return FAILURE
|
|
390
391
|
|
|
391
392
|
client.set_account_limit(account=args.account, rse=args.rse, bytes_=byte_limit, locality=locality)
|
|
@@ -1244,7 +1245,7 @@ def list_pfns(args):
|
|
|
1244
1245
|
if not rse_info['deterministic']:
|
|
1245
1246
|
logger.warning('This is a non-deterministic site, so the real PFN might be different from the on suggested')
|
|
1246
1247
|
rse_attr = client.list_rse_attributes(rse)
|
|
1247
|
-
naming_convention = rse_attr.get(
|
|
1248
|
+
naming_convention = rse_attr.get(RseAttr.NAMING_CONVENTION, None)
|
|
1248
1249
|
parents = [did for did in client.list_parent_dids(scope, name)]
|
|
1249
1250
|
if len(parents) > 1:
|
|
1250
1251
|
logger.warning('The file has multiple parents')
|
|
@@ -1383,7 +1384,7 @@ def get_parser():
|
|
|
1383
1384
|
oparser.add_argument('--oidc-refresh-lifetime', dest='oidc_refresh_lifetime', default=None, help='Max lifetime in hours for this an access token will be refreshed by asynchronous Rucio daemon. '
|
|
1384
1385
|
+ 'If not specified, refresh will be stopped after 4 days. This option is effective only if --oidc-scope includes offline_access scope for a refresh token to be granted to Rucio.') # NOQA: W503
|
|
1385
1386
|
oparser.add_argument('--oidc-issuer', dest='oidc_issuer', default=None,
|
|
1386
|
-
help='Defines which Identity Provider is
|
|
1387
|
+
help='Defines which Identity Provider is going to be used. The issuer string must correspond '
|
|
1387
1388
|
+ 'to the keys configured in the /etc/idpsecrets.json auth server configuration file.') # NOQA: W503
|
|
1388
1389
|
|
|
1389
1390
|
# Options for the x509 auth_strategy
|
|
@@ -1432,7 +1433,7 @@ def get_parser():
|
|
|
1432
1433
|
'"""""""""""""\n'
|
|
1433
1434
|
'::\n'
|
|
1434
1435
|
'\n'
|
|
1435
|
-
' $ rucio-admin account list --type \
|
|
1436
|
+
' $ rucio-admin account list --type USER\n'
|
|
1436
1437
|
'\n')
|
|
1437
1438
|
list_account_parser.add_argument('--type', dest='account_type', action='store', help='Account Type (USER, GROUP, SERVICE)')
|
|
1438
1439
|
list_account_parser.add_argument('--id', dest='identity', action='store', help='Identity (e.g. DN)')
|
|
@@ -1708,7 +1709,7 @@ def get_parser():
|
|
|
1708
1709
|
' $ rucio-admin identity delete --account jdoe --type X509 --id \'CN=Joe Doe,CN=707658,CN=jdoe,OU=Users,OU=Organic Units,DC=cern,DC=ch\'\n'
|
|
1709
1710
|
' Deleted identity: CN=Joe Doe,CN=707658,CN=jdoe,OU=Users,OU=Organic Units,DC=cern,DC=ch\n'
|
|
1710
1711
|
'\n'
|
|
1711
|
-
'Note: if the identity was
|
|
1712
|
+
'Note: if the identity was accidentally deleted, use add option.\n'
|
|
1712
1713
|
'\n')
|
|
1713
1714
|
identity_delete_parser.set_defaults(which='identity_delete')
|
|
1714
1715
|
identity_delete_parser.add_argument('--account', dest='account', action='store', help='Account name', required=True)
|
|
@@ -1956,7 +1957,7 @@ def get_parser():
|
|
|
1956
1957
|
' $ rucio-admin rse add-protocol --hostname jdoes.test.org --scheme gsiftp --prefix \'/atlasdatadisk/rucio/\' --port 8443 JDOE_DATADISK\n'
|
|
1957
1958
|
'\n'
|
|
1958
1959
|
'Note: no printed stdout.\n'
|
|
1959
|
-
'Note: examples of optional
|
|
1960
|
+
'Note: examples of optional parameters::\n'
|
|
1960
1961
|
'\n'
|
|
1961
1962
|
' --space-token DATADISK\n'
|
|
1962
1963
|
' --web-service-path \'/srm/managerv2?SFN=\'\n'
|
|
@@ -2110,7 +2111,7 @@ def get_parser():
|
|
|
2110
2111
|
|
|
2111
2112
|
# The config subparser
|
|
2112
2113
|
config_parser = subparsers.add_parser('config',
|
|
2113
|
-
help='Configuration methods. The global configuration of data
|
|
2114
|
+
help='Configuration methods. The global configuration of data management system can by modified.',
|
|
2114
2115
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
2115
2116
|
epilog='''e.g. quotas, daemons, rses''')
|
|
2116
2117
|
config_subparser = config_parser.add_subparsers(dest='config_subcommand', **required_arg)
|
|
@@ -2311,9 +2312,9 @@ def get_parser():
|
|
|
2311
2312
|
declare_bad_file_replicas_parser.add_argument('--inputfile', dest='inputfile', nargs='?', action='store', help='File containing list of bad items')
|
|
2312
2313
|
declare_bad_file_replicas_parser.add_argument('--allow-collection', dest='allow_collection', action='store_true', help='Allow passing a collection DID as bad item')
|
|
2313
2314
|
|
|
2314
|
-
declare_bad_file_replicas_parser.add_argument('--lfns', dest='lfns', nargs='?', action='store', help='File
|
|
2315
|
-
declare_bad_file_replicas_parser.add_argument('--scope', dest='scope', nargs='?', action='store', help='Common scope for bad replicas
|
|
2316
|
-
declare_bad_file_replicas_parser.add_argument('--rse', dest='rse', nargs='?', action='store', help='Common RSE for bad replicas
|
|
2315
|
+
declare_bad_file_replicas_parser.add_argument('--lfns', dest='lfns', nargs='?', action='store', help='File containing list of LFNs for bad replicas. Requires --rse and --scope')
|
|
2316
|
+
declare_bad_file_replicas_parser.add_argument('--scope', dest='scope', nargs='?', action='store', help='Common scope for bad replicas specified with LFN list, ignored without --lfns')
|
|
2317
|
+
declare_bad_file_replicas_parser.add_argument('--rse', dest='rse', nargs='?', action='store', help='Common RSE for bad replicas specified with LFN list, ignored without --lfns')
|
|
2317
2318
|
|
|
2318
2319
|
# The declare-temporary-unavailable command
|
|
2319
2320
|
declare_temporary_unavailable_replicas_parser = rep_subparser.add_parser('declare-temporary-unavailable',
|
|
@@ -129,7 +129,7 @@ def main(args):
|
|
|
129
129
|
time.sleep(RETRY_AFTER)
|
|
130
130
|
|
|
131
131
|
# Avoid infinite loop if an alternative check() implementation doesn't
|
|
132
|
-
# decrement the number of
|
|
132
|
+
# decrement the number of attempts and keeps pushing failed checks.
|
|
133
133
|
tmp_list = []
|
|
134
134
|
while not retry.empty():
|
|
135
135
|
tmp_list.append(retry.get())
|
|
@@ -149,7 +149,7 @@ def get_parser():
|
|
|
149
149
|
"""
|
|
150
150
|
Returns the argparse parser.
|
|
151
151
|
"""
|
|
152
|
-
parser = argparse.ArgumentParser(description="The auditor daemon is the one
|
|
152
|
+
parser = argparse.ArgumentParser(description="The auditor daemon is the one responsible for the detection of inconsistencies on storage, i.e.: dark data discovery.",
|
|
153
153
|
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
154
154
|
parser.add_argument(
|
|
155
155
|
'--nprocs',
|
|
@@ -27,7 +27,7 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
parser = argparse.ArgumentParser(description="Automatix is a daemon used to inject random generated files to an RSE. It is used to
|
|
30
|
+
parser = argparse.ArgumentParser(description="Automatix is a daemon used to inject random generated files to an RSE. It is used to continuously check that an RSE is reachable and operating as expected.")
|
|
31
31
|
parser.add_argument("--run-once", action="store_true", default=False, help='Runs one loop iteration')
|
|
32
32
|
parser.add_argument("--input-file", action="store", default="/opt/rucio/etc/automatix.json", type=str, help='Automatix configuration')
|
|
33
33
|
parser.add_argument("--threads-per-process", action="store", default=1, type=int, help='Total number of workers per process')
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
import argparse
|
|
21
21
|
import json
|
|
22
22
|
import os
|
|
23
|
-
import
|
|
23
|
+
import secrets
|
|
24
24
|
import ssl
|
|
25
25
|
import sys
|
|
26
26
|
|
|
@@ -79,7 +79,7 @@ def cache_operation(args):
|
|
|
79
79
|
conn.set_ssl(key_file=args.ssl_key_file, cert_file=args.ssl_cert_file, ssl_version=ssl.PROTOCOL_TLSv1)
|
|
80
80
|
|
|
81
81
|
conn.connect()
|
|
82
|
-
message = {'id':
|
|
82
|
+
message = {'id': secrets.randbelow(1001), 'payload': payload}
|
|
83
83
|
conn.send(destination=args.destination, body=json.dumps(message), id='rucio-cache-messaging', ack='auto', headers={'vo': 'atlas'})
|
|
84
84
|
conn.disconnect()
|
|
85
85
|
|
|
@@ -27,7 +27,7 @@ def get_parser():
|
|
|
27
27
|
"""
|
|
28
28
|
Returns the argparse parser.
|
|
29
29
|
"""
|
|
30
|
-
parser = argparse.ArgumentParser(description="Conveyor is a group of daemons to manage file transfers. The conveyor-finisher is the
|
|
30
|
+
parser = argparse.ArgumentParser(description="Conveyor is a group of daemons to manage file transfers. The conveyor-finisher is the responsible to update Rucio internal state after the transfer has finished.")
|
|
31
31
|
parser.add_argument("--run-once", action="store_true", default=False,
|
|
32
32
|
help='One iteration only')
|
|
33
33
|
parser.add_argument("--total-threads", action="store", default=1, type=int,
|
|
@@ -34,7 +34,7 @@ Upload a file and create a replication rule::
|
|
|
34
34
|
$ rucio add-rule mock:file 1 MOCK2
|
|
35
35
|
$ rucio-admin rse add-distance MOCK2 MOCK --distance 1
|
|
36
36
|
|
|
37
|
-
The rule should replicate the file from RSE MOCK to RSE MOCK2.
|
|
37
|
+
The rule should replicate the file from RSE MOCK to RSE MOCK2. Therefore a distance between these RSEs is needed.
|
|
38
38
|
|
|
39
39
|
Check transfer requests for the DID::
|
|
40
40
|
|
|
@@ -56,7 +56,7 @@ Check again the transfer requests for the DID::
|
|
|
56
56
|
session.get_session().query(models.Request).filter_by(scope='mock', name='file').first()
|
|
57
57
|
# {'request_type': TRANSFER, 'state': SUBMITTED', ...}
|
|
58
58
|
|
|
59
|
-
A
|
|
59
|
+
A transfer request got created by executing the transfer. Depending on the transfer submission, the request state can be different. In this example the transfer got submitted successfully.
|
|
60
60
|
|
|
61
61
|
When run in multi-VO mode, by default the daemon will run on RSEs from all VOs::
|
|
62
62
|
|
|
@@ -113,11 +113,11 @@ Check the replicas for the DID mock:file::
|
|
|
113
113
|
from rucio.db.sqla import session, models
|
|
114
114
|
session.get_session().query(models.RSEFileAssociation).filter_by(name='file', scope='mock').first()
|
|
115
115
|
// [{'name': 'file','lock_cnt': 1, 'state': COPYING, 'scope': 'mock', 'rse_id': 'f81f366593754c01b0c340fa5ea0ab90'},
|
|
116
|
-
// {'scope': 'mock', 'rse_id': '1330d5daee37474c88ba888101d7b859', 'name': 'file', 'state':
|
|
116
|
+
// {'scope': 'mock', 'rse_id': '1330d5daee37474c88ba888101d7b859', 'name': 'file', 'state': AVAILABLE, 'lock_cnt': 1}]
|
|
117
117
|
|
|
118
118
|
The DID mock:file has now two replicas with one lock each.
|
|
119
119
|
As the file replica is attached to the dataset and the rule for the dataset specifies another RSE MOCK instead of the upload RSE, it has to be replicated to this RSE.
|
|
120
|
-
|
|
120
|
+
Therefore a second replica in state COPYING got created on RSE MOCK.
|
|
121
121
|
''', formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
122
122
|
parser.add_argument("--run-once", action="store_true", default=False, help='One iteration only')
|
|
123
123
|
parser.add_argument("--threads", action="store", default=1, type=int, help='Concurrency control: total number of threads for this process')
|
|
@@ -30,7 +30,7 @@ def get_parser():
|
|
|
30
30
|
parser = argparse.ArgumentParser(description="The Necromancer daemon is responsible for managing bad replicas. If a replica that got declared bad has other replicas, it will try to recover it by requesting a new transfer. If there are no replicas anymore, then the file gets marked as lost.", epilog='''
|
|
31
31
|
Lost replica:
|
|
32
32
|
In this example the file gets uploaded and will only have this replica as there are no replication rules. If it gets declared bad, there will be no replica to recover from.
|
|
33
|
-
|
|
33
|
+
Therefore the replica gets marked as lost.
|
|
34
34
|
|
|
35
35
|
Upload a file::
|
|
36
36
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
16
|
"""
|
|
17
|
-
OAuth Manager is a daemon which is
|
|
17
|
+
OAuth Manager is a daemon which is responsible for:
|
|
18
18
|
- deletion of expired access tokens (in case there is a valid refresh token, expired access tokens will be kept until refresh_token expires as well.)
|
|
19
19
|
- deletion of expired OAuth session parameters
|
|
20
20
|
- refreshing access tokens via their refresh tokens.
|
|
@@ -32,7 +32,7 @@ def get_parser():
|
|
|
32
32
|
"""
|
|
33
33
|
parser = argparse.ArgumentParser(description='''
|
|
34
34
|
|
|
35
|
-
OAuth Manager is a daemon which is
|
|
35
|
+
OAuth Manager is a daemon which is responsible for:
|
|
36
36
|
- deletion of expired access tokens (in case there is a valid refresh token,
|
|
37
37
|
expired access tokens will be kept until refresh_token expires as well.)
|
|
38
38
|
- deletion of expired OAuth session parameters
|
|
@@ -67,7 +67,7 @@ $ id0=`uuidgen`
|
|
|
67
67
|
$ id1=`uuidgen`
|
|
68
68
|
$ id2=`uuidgen`
|
|
69
69
|
$ id3=`uuidgen`
|
|
70
|
-
$ echo "file available on MOCK_RECOVERY and
|
|
70
|
+
$ echo "file available on MOCK_RECOVERY and declared suspicious on MOCK_SUSPICIOUS (11 times)" > /tmp/file_available_suspicious'_'$id1
|
|
71
71
|
$ echo "file available on MOCK_RECOVERY and declared suspicious on MOCK_SUSPICIOUS (11 times) and 1 time bad/deleted/lost on MOCK_SUSPICIOUS" > /tmp/file_available_suspicious_and_bad'_'$id2
|
|
72
72
|
$ echo "file declared as unavailable on MOCK_RECOVERY and declared as suspicious 11 times on MOCK_SUSPICIOUS" > /tmp/file_notavailable_suspicious'_'$id3
|
|
73
73
|
|
|
@@ -228,7 +228,7 @@ Note that attempting the use the ``--vos`` argument when in single-VO mode will
|
|
|
228
228
|
2020-07-28 15:21:33,349 5488 WARNING Ignoring argument vos, this is only applicable in a multi-VO setup.
|
|
229
229
|
''', formatter_class=argparse.RawDescriptionHelpFormatter) # NOQA: E501
|
|
230
230
|
parser.add_argument("--nattempts", action="store", default=5, help='Minimum count of suspicious file replica appearance in bad_replicas table. Default value is 5.')
|
|
231
|
-
parser.add_argument("--younger-than", action="store", default=5, help='Consider all file replicas logged in bad_replicas table since
|
|
231
|
+
parser.add_argument("--younger-than", action="store", default=5, help='Consider all file replicas logged in bad_replicas table since specified number of younger-than days. Default value is 5.')
|
|
232
232
|
parser.add_argument('--vos', nargs='+', type=str, help='Optional list of VOs to consider. Only used in multi-VO mode.')
|
|
233
233
|
parser.add_argument("--run-once", action="store_true", default=False, help='One iteration only.')
|
|
234
234
|
parser.add_argument("--limit-suspicious-files-on-rse", action="store", default=5, help='Maximum number of suspicious replicas on an RSE before that RSE is considered problematic and the suspicious replicas on that RSE are declared "TEMPORARY_UNAVAILABLE". Default value is 5.')
|
|
@@ -12,7 +12,7 @@ ldap_host = ldap-host.domain.name
|
|
|
12
12
|
baseDN = dc=foo,dc=bar,dc=domain,dc=
|
|
13
13
|
searchFilter = (objectClass=OpenLDAPperson)
|
|
14
14
|
|
|
15
|
-
# set as DEFAULT to use
|
|
15
|
+
# set as DEFAULT to use anonymous bind
|
|
16
16
|
username = DEFAULT
|
|
17
17
|
# Leave blank for prompt
|
|
18
18
|
password =
|
|
@@ -35,7 +35,7 @@ def get_rse_account_usage(rse, vo='def', *, session: "Session"):
|
|
|
35
35
|
:param rse: The RSE name.
|
|
36
36
|
:param vo: The VO to act on.
|
|
37
37
|
:param session: The database session in use.
|
|
38
|
-
:return: List of
|
|
38
|
+
:return: List of dictionaries.
|
|
39
39
|
"""
|
|
40
40
|
rse_id = get_rse_id(rse=rse, vo=vo, session=session)
|
|
41
41
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import TYPE_CHECKING
|
|
15
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
16
16
|
|
|
17
17
|
from rucio.api import permission
|
|
18
18
|
from rucio.common import exception
|
|
@@ -32,7 +32,7 @@ ConfigParser compatible interface.
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
@read_session
|
|
35
|
-
def sections(issuer=None, vo='def', *, session: "Session"):
|
|
35
|
+
def sections(issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list[str]:
|
|
36
36
|
"""
|
|
37
37
|
Return a list of the sections available.
|
|
38
38
|
|
|
@@ -49,7 +49,7 @@ def sections(issuer=None, vo='def', *, session: "Session"):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
@transactional_session
|
|
52
|
-
def add_section(section, issuer=None, vo='def', *, session: "Session"):
|
|
52
|
+
def add_section(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> None:
|
|
53
53
|
"""
|
|
54
54
|
Add a section to the configuration.
|
|
55
55
|
|
|
@@ -66,7 +66,7 @@ def add_section(section, issuer=None, vo='def', *, session: "Session"):
|
|
|
66
66
|
|
|
67
67
|
|
|
68
68
|
@read_session
|
|
69
|
-
def has_section(section, issuer=None, vo='def', *, session: "Session"):
|
|
69
|
+
def has_section(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
|
|
70
70
|
"""
|
|
71
71
|
Indicates whether the named section is present in the configuration.
|
|
72
72
|
|
|
@@ -84,7 +84,7 @@ def has_section(section, issuer=None, vo='def', *, session: "Session"):
|
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
@read_session
|
|
87
|
-
def options(section, issuer=None, vo='def', *, session: "Session"):
|
|
87
|
+
def options(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list[str]:
|
|
88
88
|
"""
|
|
89
89
|
Returns a list of options available in the specified section.
|
|
90
90
|
|
|
@@ -102,7 +102,7 @@ def options(section, issuer=None, vo='def', *, session: "Session"):
|
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
@read_session
|
|
105
|
-
def has_option(section, option, issuer=None, vo='def', *, session: "Session"):
|
|
105
|
+
def has_option(section: str, option: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
|
|
106
106
|
"""
|
|
107
107
|
Check if the given section exists and contains the given option.
|
|
108
108
|
|
|
@@ -121,7 +121,7 @@ def has_option(section, option, issuer=None, vo='def', *, session: "Session"):
|
|
|
121
121
|
|
|
122
122
|
|
|
123
123
|
@read_session
|
|
124
|
-
def get(section, option, issuer=None, vo='def', *, session: "Session"):
|
|
124
|
+
def get(section: str, option: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> Any:
|
|
125
125
|
"""
|
|
126
126
|
Get an option value for the named section. Value can be auto-coerced to int, float, and bool; string otherwise.
|
|
127
127
|
|
|
@@ -143,7 +143,7 @@ def get(section, option, issuer=None, vo='def', *, session: "Session"):
|
|
|
143
143
|
|
|
144
144
|
|
|
145
145
|
@read_session
|
|
146
|
-
def items(section, issuer=None, vo='def', *, session: "Session"):
|
|
146
|
+
def items(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> list[tuple[str, Any]]:
|
|
147
147
|
"""
|
|
148
148
|
Return a list of (option, value) pairs for each option in the given section. Values are auto-coerced as in get().
|
|
149
149
|
|
|
@@ -162,7 +162,7 @@ def items(section, issuer=None, vo='def', *, session: "Session"):
|
|
|
162
162
|
|
|
163
163
|
|
|
164
164
|
@transactional_session
|
|
165
|
-
def set(section, option, value, issuer=None, vo='def', *, session: "Session"):
|
|
165
|
+
def set(section: str, option: str, value: Any, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> None:
|
|
166
166
|
"""
|
|
167
167
|
Set the given option to the specified value.
|
|
168
168
|
|
|
@@ -181,7 +181,7 @@ def set(section, option, value, issuer=None, vo='def', *, session: "Session"):
|
|
|
181
181
|
|
|
182
182
|
|
|
183
183
|
@transactional_session
|
|
184
|
-
def remove_section(section, issuer=None, vo='def', *, session: "Session"):
|
|
184
|
+
def remove_section(section: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
|
|
185
185
|
"""
|
|
186
186
|
Remove the specified option from the specified section.
|
|
187
187
|
|
|
@@ -199,7 +199,7 @@ def remove_section(section, issuer=None, vo='def', *, session: "Session"):
|
|
|
199
199
|
|
|
200
200
|
|
|
201
201
|
@transactional_session
|
|
202
|
-
def remove_option(section, option, issuer=None, vo='def', *, session: "Session"):
|
|
202
|
+
def remove_option(section: str, option: str, issuer: Optional[str] = None, vo: str = 'def', *, session: "Session") -> bool:
|
|
203
203
|
"""
|
|
204
204
|
Remove the specified section from the configuration.
|
|
205
205
|
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
from collections.abc import Iterator
|
|
15
16
|
from copy import deepcopy
|
|
16
17
|
from typing import TYPE_CHECKING
|
|
17
18
|
|
|
@@ -28,7 +29,7 @@ from rucio.db.sqla.constants import DIDType
|
|
|
28
29
|
from rucio.db.sqla.session import read_session, stream_session, transactional_session
|
|
29
30
|
|
|
30
31
|
if TYPE_CHECKING:
|
|
31
|
-
from typing import Any,
|
|
32
|
+
from typing import Any, Optional
|
|
32
33
|
|
|
33
34
|
from sqlalchemy.orm import Session
|
|
34
35
|
|
|
@@ -243,7 +243,7 @@ def get_rse_protocols(rse, issuer, vo='def', *, session: "Session"):
|
|
|
243
243
|
:param vo: The VO to act on.
|
|
244
244
|
:param session: The database session in use.
|
|
245
245
|
|
|
246
|
-
:returns: A dict with all supported protocols and their
|
|
246
|
+
:returns: A dict with all supported protocols and their attributes.
|
|
247
247
|
"""
|
|
248
248
|
rse_id = rse_module.get_rse_id(rse=rse, vo=vo, session=session)
|
|
249
249
|
return rse_module.get_rse_protocols(rse_id, session=session)
|
|
@@ -440,7 +440,7 @@ def update_rse(rse, parameters, issuer, vo='def', *, session: "Session"):
|
|
|
440
440
|
Update RSE properties like availability or name.
|
|
441
441
|
|
|
442
442
|
:param rse: the name of the new rse.
|
|
443
|
-
:param parameters: A
|
|
443
|
+
:param parameters: A dictionary with property (name, read, write, delete as keys).
|
|
444
444
|
:param issuer: The issuer account.
|
|
445
445
|
:param vo: The VO to act on.
|
|
446
446
|
:param session: The database session in use.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import TYPE_CHECKING
|
|
15
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
16
16
|
|
|
17
17
|
from rucio.api.permission import has_permission
|
|
18
18
|
from rucio.common import exception
|
|
@@ -28,7 +28,7 @@ if TYPE_CHECKING:
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
@transactional_session
|
|
31
|
-
def add_vo(new_vo, issuer, description=None, email=None, vo='def', *, session: "Session"):
|
|
31
|
+
def add_vo(new_vo: str, issuer: str, description: Optional[str] = None, email: Optional[str] = None, vo: str = 'def', *, session: "Session") -> None:
|
|
32
32
|
'''
|
|
33
33
|
Add a new VO.
|
|
34
34
|
|
|
@@ -51,7 +51,7 @@ def add_vo(new_vo, issuer, description=None, email=None, vo='def', *, session: "
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
@read_session
|
|
54
|
-
def list_vos(issuer, vo='def', *, session: "Session"):
|
|
54
|
+
def list_vos(issuer: str, vo: str = 'def', *, session: "Session") -> list[dict[str, Any]]:
|
|
55
55
|
'''
|
|
56
56
|
List the VOs.
|
|
57
57
|
|
|
@@ -67,7 +67,18 @@ def list_vos(issuer, vo='def', *, session: "Session"):
|
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
@transactional_session
|
|
70
|
-
def recover_vo_root_identity(
|
|
70
|
+
def recover_vo_root_identity(
|
|
71
|
+
root_vo: str,
|
|
72
|
+
identity_key: str,
|
|
73
|
+
id_type: str,
|
|
74
|
+
email: str,
|
|
75
|
+
issuer: str,
|
|
76
|
+
default: bool = False,
|
|
77
|
+
password: Optional[str] = None,
|
|
78
|
+
vo: str = 'def',
|
|
79
|
+
*,
|
|
80
|
+
session: "Session"
|
|
81
|
+
) -> None:
|
|
71
82
|
"""
|
|
72
83
|
Adds a membership association between identity and the root account for given VO.
|
|
73
84
|
|
|
@@ -93,7 +104,7 @@ def recover_vo_root_identity(root_vo, identity_key, id_type, email, issuer, defa
|
|
|
93
104
|
|
|
94
105
|
|
|
95
106
|
@transactional_session
|
|
96
|
-
def update_vo(updated_vo, parameters, issuer, vo='def', *, session: "Session"):
|
|
107
|
+
def update_vo(updated_vo: str, parameters: dict[str, Any], issuer: str, vo: str = 'def', *, session: "Session") -> None:
|
|
97
108
|
"""
|
|
98
109
|
Update VO properties (email, description).
|
|
99
110
|
|
|
@@ -112,7 +112,7 @@ class AccountClient(BaseClient):
|
|
|
112
112
|
|
|
113
113
|
:param type: The account type
|
|
114
114
|
:param identity: The identity key name. For example x509 DN, or a username.
|
|
115
|
-
:param filters: A
|
|
115
|
+
:param filters: A dictionary key:account attribute to use for the filtering
|
|
116
116
|
|
|
117
117
|
:return: a list containing account info dictionary for all rucio accounts.
|
|
118
118
|
:raises AccountNotFound: if account doesn't exist.
|