rucio 37.7.0__tar.gz → 38.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rucio might be problematic. Click here for more details.
- {rucio-37.7.0 → rucio-38.0.0}/AUTHORS.rst +1 -0
- {rucio-37.7.0 → rucio-38.0.0}/PKG-INFO +37 -36
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio +2 -1
- {rucio-37.7.0 → rucio-38.0.0}/etc/alembic.ini.template +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/etc/alembic_offline.ini.template +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/etc/rucio.cfg.template +2 -2
- {rucio-37.7.0 → rucio-38.0.0}/etc/rucio_multi_vo.cfg.template +3 -3
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/alembicrevision.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/bin_legacy/rucio.py +51 -107
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/bin_legacy/rucio_admin.py +26 -26
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/command.py +1 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/did.py +2 -2
- rucio-38.0.0/lib/rucio/cli/opendata.py +132 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/replica.py +15 -5
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/rule.py +7 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/scope.py +3 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/utils.py +28 -4
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/baseclient.py +9 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/client.py +2 -0
- rucio-38.0.0/lib/rucio/client/diracclient.py +124 -0
- rucio-38.0.0/lib/rucio/client/opendataclient.py +249 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/subscriptionclient.py +30 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/uploadclient.py +10 -13
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/constants.py +4 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/exception.py +55 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/plugins.py +45 -8
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/schema/generic.py +5 -3
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/schema/generic_multi_vo.py +4 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/types.py +8 -7
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/utils.py +176 -11
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/dirac.py +5 -5
- rucio-38.0.0/lib/rucio/core/opendata.py +744 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/rule.py +63 -8
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/transfer.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/common.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/finisher.py +2 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/poller.py +2 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/preparer.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/submitter.py +2 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/throttler.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/hermes/hermes.py +26 -17
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/constants.py +6 -0
- rucio-38.0.0/lib/rucio/db/sqla/migrate_repo/versions/a62db546a1f1_opendata_initial_model.py +85 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/models.py +69 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/session.py +8 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/util.py +2 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/dirac.py +1 -1
- rucio-38.0.0/lib/rucio/gateway/opendata.py +190 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/subscription.py +5 -3
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/protocol.py +9 -5
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/translation.py +17 -6
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/tests/common.py +64 -12
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/fts3.py +1 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/fts3_plugins.py +6 -1
- rucio-38.0.0/lib/rucio/vcsversion.py +11 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/auth.py +11 -2
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/common.py +34 -14
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/config.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/dids.py +447 -160
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/heartbeats.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/identities.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/locks.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/main.py +3 -7
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/meta_conventions.py +1 -16
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/nongrid_traces.py +1 -1
- rucio-38.0.0/lib/rucio/web/rest/flaskapi/v1/opendata.py +391 -0
- rucio-38.0.0/lib/rucio/web/rest/flaskapi/v1/opendata_public.py +146 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/requests.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/rses.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/rules.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/scopes.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/subscriptions.py +6 -9
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/traces.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/vos.py +1 -1
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio.egg-info/SOURCES.txt +8 -1
- {rucio-37.7.0 → rucio-38.0.0}/pyproject.toml +5 -6
- {rucio-37.7.0 → rucio-38.0.0}/requirements/requirements.server.txt +6 -3
- {rucio-37.7.0 → rucio-38.0.0}/setuputil.py +42 -30
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_abacus_account.py +1 -2
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_abacus_collection_replica.py +5 -6
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_abacus_rse.py +1 -2
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_bin_rucio.py +31 -4
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_cli_client_structure.py +48 -6
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_conveyor.py +2 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_dataset_replicas.py +20 -5
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_hermes.py +33 -16
- rucio-38.0.0/tests/test_opendata.py +573 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_policy_package.py +42 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_reaper.py +1 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_replica.py +3 -4
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse.py +1 -2
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rule.py +3 -4
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_subscription.py +44 -16
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_transfer_plugins.py +2 -2
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_upload.py +93 -2
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_utils.py +82 -6
- rucio-38.0.0/tools/reset_database.py +87 -0
- rucio-37.7.0/lib/rucio/client/diracclient.py +0 -63
- rucio-37.7.0/lib/rucio/client/fileclient.py +0 -57
- rucio-37.7.0/lib/rucio/vcsversion.py +0 -11
- rucio-37.7.0/tools/reset_database.py +0 -40
- {rucio-37.7.0 → rucio-38.0.0}/ChangeLog +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/LICENSE +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/MANIFEST.in +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/README.md +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-abacus-account +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-abacus-collection-replica +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-abacus-rse +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-admin +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-atropos +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-auditor +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-automatix +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-bb8 +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-cache-client +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-cache-consumer +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-conveyor-finisher +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-conveyor-poller +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-conveyor-preparer +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-conveyor-receiver +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-conveyor-stager +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-conveyor-submitter +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-conveyor-throttler +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-dark-reaper +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-dumper +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-follower +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-hermes +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-judge-cleaner +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-judge-evaluator +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-judge-injector +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-judge-repairer +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-kronos +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-minos +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-minos-temporary-expiration +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-necromancer +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-oauth-manager +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-reaper +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-replica-recoverer +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-rse-decommissioner +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-storage-consistency-actions +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-transmogrifier +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/bin/rucio-undertaker +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/globus-config.yml.template +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/ldap.cfg.template +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/rse-accounts.cfg.template +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/account.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/bin_legacy/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/config.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/download.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/lifetime_exception.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/rse.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/subscription.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/cli/upload.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/accountclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/configclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/credentialclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/didclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/downloadclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/exportclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/importclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/lockclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/pingclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/replicaclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/requestclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/richclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/rseclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/ruleclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/scopeclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/client/touchclient.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/bittorrent.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/cache.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/checksum.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/client.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/config.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/constraints.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/didtype.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/dumper/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/dumper/consistency.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/dumper/data_models.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/dumper/path_parsing.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/extra.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/logging.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/pcache.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/policy.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/schema/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/stopwatch.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/account.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/account_counter.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/account_limit.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/authentication.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/config.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/credential.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/did_column_meta.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/did_meta_plugin_interface.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/elasticsearch_meta.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/filter_engine.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/json_meta.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/mongo_meta.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/did_meta_plugins/postgres_meta.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/distance.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/exporter.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/heartbeat.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/identity.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/importer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/lifetime_exception.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/lock.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/message.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/meta_conventions.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/monitor.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/naming_convention.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/nongrid_trace.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/oidc.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/permission/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/permission/generic.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/permission/generic_multi_vo.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/quarantined_replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/replica_sorter.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/request.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/rse.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/rse_counter.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/rse_expression_parser.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/rse_selector.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/rule_grouping.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/scope.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/subscription.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/topology.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/trace.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/vo.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/core/volatile_replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/abacus/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/abacus/account.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/abacus/collection_replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/abacus/rse.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/atropos/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/atropos/atropos.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/auditor/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/auditor/hdfs.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/auditor/srmdumps.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/automatix/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/automatix/automatix.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/badreplicas/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/badreplicas/minos.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/badreplicas/minos_temporary_expiration.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/badreplicas/necromancer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/bb8/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/bb8/bb8.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/bb8/common.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/bb8/nuclei_background_rebalance.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/bb8/t2_background_rebalance.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/cache/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/cache/consumer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/common.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/receiver.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/conveyor/stager.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/follower/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/follower/follower.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/hermes/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/judge/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/judge/cleaner.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/judge/evaluator.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/judge/injector.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/judge/repairer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/oauthmanager/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/oauthmanager/oauthmanager.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/reaper/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/reaper/dark_reaper.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/reaper/reaper.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/replicarecoverer/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/rsedecommissioner/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/rsedecommissioner/config.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/atlas.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/generic.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/rsedecommissioner/profiles/types.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/rsedecommissioner/rse_decommissioner.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/storage/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/storage/consistency/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/storage/consistency/actions.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/tracer/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/tracer/kronos.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/transmogrifier/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/transmogrifier/transmogrifier.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/undertaker/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/daemons/undertaker/undertaker.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/env.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/30d5206e9cad_increase_oauthrequest_redirect_msg_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b0070f3695c8_add_deletedidmeta_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b5493606bbf5_fix_primary_key_for_subscription_history.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/sautils.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/db/sqla/types.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/account.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/account_limit.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/authentication.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/config.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/credential.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/did.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/exporter.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/heartbeat.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/identity.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/importer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/lifetime_exception.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/lock.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/meta_conventions.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/permission.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/quarantined_replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/request.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/rse.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/rule.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/scope.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/trace.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/gateway/vo.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/posix.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/srm.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/storm.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/webdav.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/rse/rsemanager.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/tests/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/tests/common_server.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/bittorrent.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/bittorrent_driver.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/bittorrent_driver_qbittorrent.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/globus.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/globus_library.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/mock.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/transfertool/transfertool.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/version.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/authenticated_bp.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/__init__.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/accountlimits.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/accounts.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/archives.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/credentials.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/dirac.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/export.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/import.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/metrics.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/ping.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/redirect.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/replicas.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_crash.html +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/templates/auth_granted.html +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/flaskapi/v1/types.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/main.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/metrics.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/lib/rucio/web/rest/ping.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/setup.cfg +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/setup.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_account.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_account_limits.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_archive.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_auditor.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_auditor_hdfs.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_auditor_srmdumps.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_authentication.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_automatix.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_bad_replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_bb8.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_belleii.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_boolean.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_clients.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_config.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_conveyor_submitter.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_counter.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_credential.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_curl.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_daemons.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_db.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_did.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_did_meta_plugins.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_download.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_dumper.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_filter_engine.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_gateway_external_representation.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_heartbeat.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_identity.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_impl_upload_download.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_import_export.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_judge_cleaner.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_judge_evaluator.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_judge_injector.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_judge_repairer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_lifetime.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_message.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_meta_conventions.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_meta_did.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_module_import.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_monitor.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_multi_vo.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_naming_convention.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_oauthmanager.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_oidc.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_permission.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_pfns.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_ping.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_preparer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_qos.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_quarantined_replica.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_redirect.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_replica_recoverer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_replica_sorting.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_request.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_root_proxy.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_expression_parser.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_lfn2path.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_posix.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_srm.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rse_selector.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_rucio_server.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_scope.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_throttler.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_tpc.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_trace.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_transfer.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tests/test_undertaker.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tools/bootstrap.py +0 -0
- {rucio-37.7.0 → rucio-38.0.0}/tools/merge_rucio_configs.py +0 -0
|
@@ -69,6 +69,7 @@ Individual contributors to the source code
|
|
|
69
69
|
- Maximilian Linhoff, <maximilian.linhoff@tu-dortmund.de>, 2024
|
|
70
70
|
- Eric Banzuzi, <eric.banzuzi@gmail.com>, 2024
|
|
71
71
|
- Paul Millar, <paul.millar@desy.de>, 2025
|
|
72
|
+
- Vimalan S <vimalan.github@gmail.com>, 2025
|
|
72
73
|
|
|
73
74
|
Organisations employing contributors
|
|
74
75
|
------------------------------------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rucio
|
|
3
|
-
Version:
|
|
3
|
+
Version: 38.0.0
|
|
4
4
|
Summary: Rucio Package
|
|
5
5
|
Home-page: https://rucio.cern.ch/
|
|
6
6
|
Author: Rucio
|
|
@@ -20,51 +20,52 @@ Classifier: Environment :: No Input/Output (Daemon)
|
|
|
20
20
|
Requires-Python: >=3.9, <4
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
License-File: AUTHORS.rst
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist: urllib3
|
|
23
|
+
Requires-Dist: requests<=2.32.3
|
|
24
|
+
Requires-Dist: urllib3<=1.26.19
|
|
26
25
|
Requires-Dist: dogpile-cache<=1.2.2
|
|
27
|
-
Requires-Dist: packaging
|
|
28
|
-
Requires-Dist: tabulate
|
|
29
|
-
Requires-Dist: jsonschema
|
|
30
|
-
Requires-Dist: rich
|
|
31
|
-
Requires-Dist: typing_extensions
|
|
32
|
-
Requires-Dist: argcomplete
|
|
26
|
+
Requires-Dist: packaging<=24.1
|
|
27
|
+
Requires-Dist: tabulate<=0.9.0
|
|
28
|
+
Requires-Dist: jsonschema<=4.23.0
|
|
29
|
+
Requires-Dist: rich<=13.9.4
|
|
30
|
+
Requires-Dist: typing_extensions<=4.12.2
|
|
31
|
+
Requires-Dist: argcomplete<=3.5.3
|
|
33
32
|
Requires-Dist: boto
|
|
34
|
-
Requires-Dist: python-magic
|
|
35
|
-
Requires-Dist: paramiko
|
|
36
|
-
Requires-Dist: boto3
|
|
37
|
-
Requires-Dist: sqlalchemy
|
|
38
|
-
Requires-Dist: alembic
|
|
39
|
-
Requires-Dist: pymemcache
|
|
40
|
-
Requires-Dist: python-dateutil
|
|
41
|
-
Requires-Dist: stomp-py
|
|
42
|
-
Requires-Dist: statsd
|
|
43
|
-
Requires-Dist: geoip2
|
|
44
|
-
Requires-Dist: google-auth
|
|
45
|
-
Requires-Dist: redis
|
|
46
|
-
Requires-Dist: flask
|
|
47
|
-
Requires-Dist: oic
|
|
48
|
-
Requires-Dist: prometheus_client
|
|
33
|
+
Requires-Dist: python-magic<=0.4.27
|
|
34
|
+
Requires-Dist: paramiko<=3.5.1
|
|
35
|
+
Requires-Dist: boto3<=1.37.5
|
|
36
|
+
Requires-Dist: sqlalchemy<=2.0.38
|
|
37
|
+
Requires-Dist: alembic<=1.14.1
|
|
38
|
+
Requires-Dist: pymemcache<=4.0.0
|
|
39
|
+
Requires-Dist: python-dateutil<=2.9.0.post0
|
|
40
|
+
Requires-Dist: stomp-py<=8.2.0
|
|
41
|
+
Requires-Dist: statsd<=4.0.1
|
|
42
|
+
Requires-Dist: geoip2<=5.0.1
|
|
43
|
+
Requires-Dist: google-auth<=2.38.0
|
|
44
|
+
Requires-Dist: redis<=5.2.1
|
|
45
|
+
Requires-Dist: flask<=3.1.0
|
|
46
|
+
Requires-Dist: oic<=1.7.0
|
|
47
|
+
Requires-Dist: prometheus_client<=0.21.1
|
|
49
48
|
Provides-Extra: oracle
|
|
50
|
-
Requires-Dist:
|
|
49
|
+
Requires-Dist: oracledb<=3.1.1; extra == "oracle"
|
|
51
50
|
Provides-Extra: mongo
|
|
52
|
-
Requires-Dist: pymongo; extra == "mongo"
|
|
51
|
+
Requires-Dist: pymongo<=4.11.2; extra == "mongo"
|
|
53
52
|
Provides-Extra: elastic
|
|
54
|
-
Requires-Dist: elasticsearch; extra == "elastic"
|
|
53
|
+
Requires-Dist: elasticsearch<=8.15.1; extra == "elastic"
|
|
55
54
|
Provides-Extra: postgresql
|
|
56
|
-
Requires-Dist: psycopg
|
|
55
|
+
Requires-Dist: psycopg<=3.2.3; extra == "postgresql"
|
|
56
|
+
Requires-Dist: psycopg-binary<=3.2.3; extra == "postgresql"
|
|
57
|
+
Requires-Dist: psycopg-pool<=3.2.3; extra == "postgresql"
|
|
57
58
|
Provides-Extra: mysql
|
|
58
|
-
Requires-Dist: PyMySQL; extra == "mysql"
|
|
59
|
+
Requires-Dist: PyMySQL<=1.1.1; extra == "mysql"
|
|
59
60
|
Provides-Extra: kerberos
|
|
60
|
-
Requires-Dist: kerberos; extra == "kerberos"
|
|
61
|
-
Requires-Dist: pykerberos; extra == "kerberos"
|
|
62
|
-
Requires-Dist: requests-kerberos; extra == "kerberos"
|
|
61
|
+
Requires-Dist: kerberos<=1.3.1; extra == "kerberos"
|
|
62
|
+
Requires-Dist: pykerberos<=1.2.4; extra == "kerberos"
|
|
63
|
+
Requires-Dist: requests-kerberos<=0.15.0; extra == "kerberos"
|
|
63
64
|
Provides-Extra: globus
|
|
64
|
-
Requires-Dist: PyYAML; extra == "globus"
|
|
65
|
-
Requires-Dist: globus-sdk; extra == "globus"
|
|
65
|
+
Requires-Dist: PyYAML<=6.0.2; extra == "globus"
|
|
66
|
+
Requires-Dist: globus-sdk<=3.41.0; extra == "globus"
|
|
66
67
|
Provides-Extra: saml
|
|
67
|
-
Requires-Dist: python3-saml; extra == "saml"
|
|
68
|
+
Requires-Dist: python3-saml<=1.16.0; extra == "saml"
|
|
68
69
|
Provides-Extra: dev
|
|
69
70
|
Requires-Dist: pytest; extra == "dev"
|
|
70
71
|
Requires-Dist: pytest-xdist; extra == "dev"
|
|
@@ -54,6 +54,7 @@ def map_legacy_command() -> Optional[list[str]]:
|
|
|
54
54
|
command_map = {
|
|
55
55
|
"list-file-replicas": ["replica", "list", "file"],
|
|
56
56
|
"list-dataset-replicas": ["replica", "list", "dataset"],
|
|
57
|
+
"list-datasets-rse": ["replica", "list", "dataset", "--rse"],
|
|
57
58
|
"add-dataset": ["did", "add", "--type dataset"],
|
|
58
59
|
"add-container": ["did", "add", "--type container"],
|
|
59
60
|
"attach": ["did", "content", "add"],
|
|
@@ -96,7 +97,7 @@ def map_legacy_command() -> Optional[list[str]]:
|
|
|
96
97
|
|
|
97
98
|
|
|
98
99
|
if __name__ == "__main__":
|
|
99
|
-
commands = ("account", "config", "did", "replica", "rse", "rule", "scope", "subscription", "ping", "whoami", "test-server", "lifetime-exception", "upload", "download")
|
|
100
|
+
commands = ("account", "config", "did", "replica", "rse", "rule", "scope", "subscription", "ping", "whoami", "test-server", "lifetime-exception", "upload", "download", "opendata")
|
|
100
101
|
|
|
101
102
|
parser = argparse.ArgumentParser(add_help=False)
|
|
102
103
|
# Check for legacy flag
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# Choose one of the databases+schema below
|
|
19
19
|
# Oracle, PostgreSQL, MySQL/MariaDB are fully supported
|
|
20
20
|
|
|
21
|
-
sqlalchemy.url=oracle://user:pass@servicename
|
|
21
|
+
sqlalchemy.url=oracle+oracledb://user:pass@servicename
|
|
22
22
|
version_table_schema=rucio
|
|
23
23
|
|
|
24
24
|
#sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# Choose one of the databases+schema below
|
|
19
19
|
# Oracle, PostgreSQL, MySQL/MariaDB are fully supported
|
|
20
20
|
|
|
21
|
-
#sqlalchemy.url=oracle://user:pass@servicename
|
|
21
|
+
#sqlalchemy.url=oracle+oracledb://user:pass@servicename
|
|
22
22
|
#version_table_schema=rucio
|
|
23
23
|
|
|
24
24
|
#sqlalchemy.url=postgresql+psycopg://rucio:rucio@psql-hostname:5432/rucio
|
|
@@ -73,8 +73,8 @@ default_mail_from = spamspamspam@cern.ch
|
|
|
73
73
|
|
|
74
74
|
[database]
|
|
75
75
|
default = sqlite:////tmp/rucio.db
|
|
76
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
77
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
76
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
77
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
78
78
|
#schema=atlas_rucio # only for cern oracle
|
|
79
79
|
#default = mysql+pymysql://rucio:rucio@localhost/rucio
|
|
80
80
|
#default = postgresql+psycopg://rucio:rucio@localhost/rucio
|
|
@@ -56,8 +56,8 @@ default_mail_from = spamspamspam@cern.ch
|
|
|
56
56
|
|
|
57
57
|
[database]
|
|
58
58
|
default = sqlite:////tmp/rucio.db
|
|
59
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
60
|
-
#default = oracle://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
59
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=______))(ADDRESS=(PROTOCOL=TCP)(HOST=_________)(PORT=_____))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=__________)))
|
|
60
|
+
#default = oracle+oracledb://_____________:___________@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=______))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=_____________)))
|
|
61
61
|
#schema=atlas_rucio # only for cern oracle
|
|
62
62
|
#default = mysql+pymysql://rucio:rucio@localhost/rucio
|
|
63
63
|
#default = postgresql+psycopg://rucio:rucio@localhost/rucio
|
|
@@ -213,4 +213,4 @@ idpsecrets = /opt/rucio/etc/idpsecrets.json
|
|
|
213
213
|
admin_issuer = wlcg
|
|
214
214
|
|
|
215
215
|
[api]
|
|
216
|
-
endpoints = accountlimits, accounts, config, credentials, dids, export, heartbeats, identities, import, lifetime_exceptions, locks,
|
|
216
|
+
endpoints = accountlimits, accounts, config, credentials, dids, export, heartbeats, identities, import, lifetime_exceptions, locks, meta_conventions, ping, redirect, replicas, requests, rses, rules, scopes, subscriptions, traces, vos
|
|
@@ -20,12 +20,10 @@ import os
|
|
|
20
20
|
import signal
|
|
21
21
|
import sys
|
|
22
22
|
import time
|
|
23
|
-
import traceback
|
|
24
23
|
import unittest
|
|
25
24
|
import uuid
|
|
26
25
|
from copy import deepcopy
|
|
27
26
|
from datetime import datetime
|
|
28
|
-
from logging import DEBUG
|
|
29
27
|
from typing import TYPE_CHECKING, Optional
|
|
30
28
|
|
|
31
29
|
from rich.console import Console
|
|
@@ -45,13 +43,13 @@ from rucio.common.client import detect_client_location
|
|
|
45
43
|
from rucio.common.config import config_get, config_get_float
|
|
46
44
|
from rucio.common.constants import ReplicaState
|
|
47
45
|
from rucio.common.exception import (
|
|
48
|
-
DIDFilterSyntaxError,
|
|
49
|
-
DuplicateCriteriaInDIDFilter,
|
|
50
46
|
DuplicateRule,
|
|
51
47
|
InputValidationError,
|
|
52
48
|
InvalidObject,
|
|
53
49
|
InvalidType,
|
|
50
|
+
RSENotFound,
|
|
54
51
|
RucioException,
|
|
52
|
+
ScopeNotFound,
|
|
55
53
|
UnsupportedOperation,
|
|
56
54
|
)
|
|
57
55
|
from rucio.common.extra import import_extras
|
|
@@ -109,8 +107,7 @@ def ping(args, client, logger, console, spinner):
|
|
|
109
107
|
if server_info:
|
|
110
108
|
print(server_info['version'])
|
|
111
109
|
return SUCCESS
|
|
112
|
-
|
|
113
|
-
return FAILURE
|
|
110
|
+
raise RucioException('Ping failed')
|
|
114
111
|
|
|
115
112
|
|
|
116
113
|
@exception_handler
|
|
@@ -232,11 +229,9 @@ def list_file_replicas(args, client, logger, console, spinner):
|
|
|
232
229
|
table_data = []
|
|
233
230
|
dids = []
|
|
234
231
|
if args.missing and not args.rses:
|
|
235
|
-
|
|
236
|
-
return FAILURE
|
|
232
|
+
raise InputValidationError('Cannot use --missing without specifying a RSE')
|
|
237
233
|
if args.link and ':' not in args.link:
|
|
238
|
-
|
|
239
|
-
return FAILURE
|
|
234
|
+
raise ValueError('The substitution parameter must equal --link="/pfn/dir:/dst/dir"')
|
|
240
235
|
|
|
241
236
|
if cli_config == 'rich':
|
|
242
237
|
spinner.update(status='Fetching file replicas')
|
|
@@ -398,14 +393,13 @@ def attach(args, client, logger, console, spinner):
|
|
|
398
393
|
|
|
399
394
|
if args.fromfile:
|
|
400
395
|
if len(dids) > 1:
|
|
401
|
-
|
|
402
|
-
return FAILURE
|
|
396
|
+
raise ValueError('If --fromfile option is active, only one file is supported. The file should contain a list of dids, one per line.')
|
|
403
397
|
try:
|
|
404
398
|
f = open(dids[0], 'r')
|
|
405
399
|
dids = [did.rstrip() for did in f.readlines()]
|
|
406
|
-
except OSError:
|
|
400
|
+
except OSError as error:
|
|
407
401
|
logger.error("Can't open file '" + dids[0] + "'.")
|
|
408
|
-
|
|
402
|
+
raise OSError from error
|
|
409
403
|
|
|
410
404
|
dids = [{'scope': get_scope(did, client)[0], 'name': get_scope(did, client)[1]} for did in dids]
|
|
411
405
|
if len(dids) <= limit:
|
|
@@ -468,35 +462,16 @@ def list_dids(args, client, logger, console, spinner):
|
|
|
468
462
|
name = '*'
|
|
469
463
|
|
|
470
464
|
if scope not in client.list_scopes():
|
|
471
|
-
|
|
472
|
-
return FAILURE
|
|
465
|
+
raise ScopeNotFound
|
|
473
466
|
|
|
474
467
|
if args.recursive and '*' in name:
|
|
475
|
-
|
|
476
|
-
return FAILURE
|
|
468
|
+
raise InputValidationError('Option recursive cannot be used with wildcards.')
|
|
477
469
|
else:
|
|
478
470
|
if filters:
|
|
479
471
|
if ('name' in filters) and (name != '*'):
|
|
480
|
-
|
|
481
|
-
return FAILURE
|
|
472
|
+
raise ValueError('Must have a wildcard in did name if filtering by name.')
|
|
482
473
|
|
|
483
|
-
|
|
484
|
-
filters, type_ = parse_did_filter_from_string_fe(args.filter, name)
|
|
485
|
-
except InvalidType as error:
|
|
486
|
-
logger.error(error)
|
|
487
|
-
return FAILURE
|
|
488
|
-
except DuplicateCriteriaInDIDFilter as error:
|
|
489
|
-
logger.error(error)
|
|
490
|
-
return FAILURE
|
|
491
|
-
except DIDFilterSyntaxError as error:
|
|
492
|
-
logger.error(error)
|
|
493
|
-
return FAILURE
|
|
494
|
-
except ValueError as error:
|
|
495
|
-
logger.error(error)
|
|
496
|
-
return FAILURE
|
|
497
|
-
except Exception as e:
|
|
498
|
-
logger.error(e)
|
|
499
|
-
return FAILURE
|
|
474
|
+
filters, type_ = parse_did_filter_from_string_fe(args.filter, name)
|
|
500
475
|
|
|
501
476
|
if cli_config == 'rich':
|
|
502
477
|
spinner.update(status='Fetching DIDs')
|
|
@@ -531,8 +506,7 @@ def list_dids_extended(args, client, logger, console, spinner):
|
|
|
531
506
|
|
|
532
507
|
List the data identifiers for a given scope (DEPRECATED).
|
|
533
508
|
"""
|
|
534
|
-
|
|
535
|
-
return FAILURE
|
|
509
|
+
raise UnsupportedOperation('This command has been deprecated. Please use list_dids instead.')
|
|
536
510
|
|
|
537
511
|
|
|
538
512
|
@exception_handler
|
|
@@ -542,15 +516,17 @@ def list_scopes(args, client, logger, console, spinner):
|
|
|
542
516
|
|
|
543
517
|
List scopes.
|
|
544
518
|
"""
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
if cli_config == 'rich':
|
|
519
|
+
if (cli_config == 'rich') or (not args.csv):
|
|
548
520
|
spinner.update(status='Fetching scopes')
|
|
549
521
|
spinner.start()
|
|
550
522
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
523
|
+
if args.account:
|
|
524
|
+
scopes = client.list_scopes_for_account(args.account)
|
|
525
|
+
else:
|
|
526
|
+
scopes = client.list_scopes()
|
|
527
|
+
if (cli_config == 'rich') and (not args.csv):
|
|
528
|
+
scopes = [[scope] for scope in sorted(scopes)]
|
|
529
|
+
table = generate_table(scopes, headers=['SCOPE'], col_alignments=['left'])
|
|
554
530
|
spinner.stop()
|
|
555
531
|
print_output(table, console=console, no_pager=args.no_pager)
|
|
556
532
|
else:
|
|
@@ -813,8 +789,7 @@ def list_parent_dids(args, client, logger, console, spinner):
|
|
|
813
789
|
else:
|
|
814
790
|
print(tabulate(table_data, tablefmt=tablefmt, headers=['SCOPE:NAME', '[DID TYPE]']))
|
|
815
791
|
else:
|
|
816
|
-
|
|
817
|
-
return FAILURE
|
|
792
|
+
raise InputValidationError('At least one option has to be given. Use -h to list the options.')
|
|
818
793
|
return SUCCESS
|
|
819
794
|
|
|
820
795
|
|
|
@@ -931,13 +906,11 @@ def upload(args, client, logger, console, spinner):
|
|
|
931
906
|
Upload files into Rucio
|
|
932
907
|
"""
|
|
933
908
|
if args.lifetime and args.expiration_date:
|
|
934
|
-
|
|
935
|
-
return FAILURE
|
|
909
|
+
raise InputValidationError("--lifetime and --expiration-date cannot be specified at the same time.")
|
|
936
910
|
elif args.expiration_date:
|
|
937
911
|
expiration_date = datetime.strptime(args.expiration_date, "%Y-%m-%d-%H:%M:%S")
|
|
938
912
|
if expiration_date < datetime.utcnow():
|
|
939
|
-
|
|
940
|
-
return FAILURE
|
|
913
|
+
raise ValueError("The specified expiration date should be in the future!")
|
|
941
914
|
args.lifetime = (expiration_date - datetime.utcnow()).total_seconds()
|
|
942
915
|
|
|
943
916
|
dsscope = None
|
|
@@ -1023,23 +996,18 @@ def download(args, client, logger, console, spinner):
|
|
|
1023
996
|
"""
|
|
1024
997
|
# Input validation
|
|
1025
998
|
if not args.dids and not args.filter and not args.metalink_file:
|
|
1026
|
-
|
|
1027
|
-
return FAILURE
|
|
999
|
+
raise InputValidationError('At least one did is mandatory')
|
|
1028
1000
|
elif not args.dids and args.filter and not args.scope:
|
|
1029
|
-
|
|
1030
|
-
return FAILURE
|
|
1001
|
+
raise InputValidationError('The argument scope is mandatory')
|
|
1031
1002
|
|
|
1032
1003
|
if args.filter and args.metalink_file:
|
|
1033
|
-
|
|
1034
|
-
return FAILURE
|
|
1004
|
+
raise InputValidationError('Arguments filter and metalink cannot be used together.')
|
|
1035
1005
|
|
|
1036
1006
|
if args.dids and args.metalink_file:
|
|
1037
|
-
|
|
1038
|
-
return FAILURE
|
|
1007
|
+
raise InputValidationError('Arguments dids and metalink cannot be used together.')
|
|
1039
1008
|
|
|
1040
1009
|
if args.ignore_checksum and args.check_local_with_filesize_only:
|
|
1041
|
-
|
|
1042
|
-
return FAILURE
|
|
1010
|
+
raise InputValidationError('Arguments ignore-checksum and check-local-with-filesize-only cannot be used together.')
|
|
1043
1011
|
|
|
1044
1012
|
trace_pattern = {}
|
|
1045
1013
|
|
|
@@ -1083,16 +1051,12 @@ def download(args, client, logger, console, spinner):
|
|
|
1083
1051
|
filters, type_ = parse_did_filter_from_string(args.filter)
|
|
1084
1052
|
if args.scope:
|
|
1085
1053
|
filters['scope'] = args.scope
|
|
1086
|
-
except InvalidType as error:
|
|
1054
|
+
except (InvalidType, ValueError) as error:
|
|
1087
1055
|
logger.error(error)
|
|
1088
|
-
|
|
1089
|
-
except ValueError as error:
|
|
1090
|
-
logger.error(error)
|
|
1091
|
-
return FAILURE
|
|
1056
|
+
raise error
|
|
1092
1057
|
except Exception as error:
|
|
1093
|
-
logger.error(error)
|
|
1094
1058
|
logger.error("Invalid Filter. Filter must be 'key=value', 'key>=value', 'key>value', 'key<=value', 'key<value'")
|
|
1095
|
-
|
|
1059
|
+
raise error
|
|
1096
1060
|
item_defaults['filters'] = filters
|
|
1097
1061
|
|
|
1098
1062
|
if not args.pfn:
|
|
@@ -1148,8 +1112,7 @@ def download(args, client, logger, console, spinner):
|
|
|
1148
1112
|
|
|
1149
1113
|
download_rse = _get_rse_for_pfn(replicas, args.pfn)
|
|
1150
1114
|
if download_rse is None:
|
|
1151
|
-
|
|
1152
|
-
return FAILURE
|
|
1115
|
+
raise RSENotFound("Could not find RSE for pfn %s" % args.pfn)
|
|
1153
1116
|
else:
|
|
1154
1117
|
item_defaults['rse'] = download_rse
|
|
1155
1118
|
|
|
@@ -1354,8 +1317,7 @@ def delete_rule(args, client, logger, console, spinner):
|
|
|
1354
1317
|
except ValueError:
|
|
1355
1318
|
# Otherwise, trying to extract the scope, name from args.rule_id
|
|
1356
1319
|
if not args.rses:
|
|
1357
|
-
|
|
1358
|
-
return FAILURE
|
|
1320
|
+
raise InputValidationError('A RSE expression must be specified if you do not provide a rule_id but a DID')
|
|
1359
1321
|
scope, name = get_scope(args.rule_id, client)
|
|
1360
1322
|
rules = client.list_did_rules(scope=scope, name=name)
|
|
1361
1323
|
if args.rule_account is None:
|
|
@@ -1372,8 +1334,7 @@ def delete_rule(args, client, logger, console, spinner):
|
|
|
1372
1334
|
client.delete_replication_rule(rule_id=rule['id'], purge_replicas=args.purge_replicas)
|
|
1373
1335
|
deletion_success = True
|
|
1374
1336
|
if not deletion_success:
|
|
1375
|
-
|
|
1376
|
-
return FAILURE
|
|
1337
|
+
raise RucioException('No replication rule was deleted from the DID')
|
|
1377
1338
|
return SUCCESS
|
|
1378
1339
|
|
|
1379
1340
|
|
|
@@ -1394,8 +1355,8 @@ def update_rule(args, client, logger, console, spinner):
|
|
|
1394
1355
|
elif args.locked.title() == "False":
|
|
1395
1356
|
options['locked'] = False
|
|
1396
1357
|
else:
|
|
1397
|
-
|
|
1398
|
-
|
|
1358
|
+
raise InputValidationError('Locked must be True or False')
|
|
1359
|
+
|
|
1399
1360
|
if args.comment:
|
|
1400
1361
|
options['comment'] = args.comment
|
|
1401
1362
|
if args.rule_account:
|
|
@@ -1410,8 +1371,7 @@ def update_rule(args, client, logger, console, spinner):
|
|
|
1410
1371
|
options['source_replica_expression'] = None if args.source_replica_expression.lower() == 'none' else args.source_replica_expression
|
|
1411
1372
|
if args.cancel_requests:
|
|
1412
1373
|
if 'state' not in options:
|
|
1413
|
-
|
|
1414
|
-
return FAILURE
|
|
1374
|
+
raise InputValidationError('--stuck or --suspend must be specified when running --cancel-requests')
|
|
1415
1375
|
options['cancel_requests'] = True
|
|
1416
1376
|
if args.priority:
|
|
1417
1377
|
options['priority'] = int(args.priority)
|
|
@@ -1578,12 +1538,11 @@ def list_rules(args, client, logger, console, spinner):
|
|
|
1578
1538
|
elif args.rule_account:
|
|
1579
1539
|
rules = client.list_account_rules(account=args.rule_account)
|
|
1580
1540
|
elif args.subscription:
|
|
1581
|
-
account = args.
|
|
1582
|
-
name = args.subscription
|
|
1541
|
+
account = args.rule_account if args.rule_account else client.account
|
|
1542
|
+
name = args.subscription
|
|
1583
1543
|
rules = client.list_subscription_rules(account=account, name=name)
|
|
1584
1544
|
else:
|
|
1585
|
-
|
|
1586
|
-
return FAILURE
|
|
1545
|
+
raise InputValidationError('At least one option has to be given. Use -h to list the options.')
|
|
1587
1546
|
if args.csv:
|
|
1588
1547
|
for rule in rules:
|
|
1589
1548
|
print(rule['id'],
|
|
@@ -1990,21 +1949,18 @@ def add_lifetime_exception(args, client, logger, console, spinner):
|
|
|
1990
1949
|
"""
|
|
1991
1950
|
|
|
1992
1951
|
if not args.reason:
|
|
1993
|
-
|
|
1994
|
-
return FAILURE
|
|
1952
|
+
raise InputValidationError('reason for the extension is mandatory')
|
|
1995
1953
|
reason = args.reason
|
|
1996
1954
|
if not args.expiration:
|
|
1997
|
-
|
|
1998
|
-
return FAILURE
|
|
1955
|
+
raise InputValidationError('expiration is mandatory')
|
|
1999
1956
|
try:
|
|
2000
1957
|
expiration = datetime.strptime(args.expiration, "%Y-%m-%d")
|
|
2001
1958
|
except Exception as err:
|
|
2002
|
-
|
|
2003
|
-
|
|
1959
|
+
msg = f'Cannot parse expiration date: {err}'
|
|
1960
|
+
raise ValueError(msg)
|
|
2004
1961
|
|
|
2005
1962
|
if not args.inputfile:
|
|
2006
|
-
|
|
2007
|
-
return FAILURE
|
|
1963
|
+
raise InputValidationError('inputfile is mandatory')
|
|
2008
1964
|
with open(args.inputfile) as infile:
|
|
2009
1965
|
# Deduplicate the content of the input file and ignore empty lines.
|
|
2010
1966
|
dids = set(did for line in infile if (did := line.strip()))
|
|
@@ -2067,22 +2023,8 @@ def add_lifetime_exception(args, client, logger, console, spinner):
|
|
|
2067
2023
|
if not datasets:
|
|
2068
2024
|
logger.error('Nothing to submit')
|
|
2069
2025
|
return SUCCESS
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
except UnsupportedOperation as err:
|
|
2073
|
-
logger.error(err)
|
|
2074
|
-
return FAILURE
|
|
2075
|
-
except Exception:
|
|
2076
|
-
error_message = 'Failure to submit exception. Please retry.'
|
|
2077
|
-
if cli_config == 'rich':
|
|
2078
|
-
if logger.level == DEBUG:
|
|
2079
|
-
logger.exception(error_message)
|
|
2080
|
-
else:
|
|
2081
|
-
logger.error(error_message)
|
|
2082
|
-
else:
|
|
2083
|
-
logger.error(error_message)
|
|
2084
|
-
logger.debug(traceback.format_exc())
|
|
2085
|
-
return FAILURE
|
|
2026
|
+
|
|
2027
|
+
client.add_exception(dids=datasets, account=client.account, pattern='', comments=reason, expires_at=expiration)
|
|
2086
2028
|
|
|
2087
2029
|
logger.info('Exception successfully submitted. Summary below:')
|
|
2088
2030
|
for key, data in error_summary.items():
|
|
@@ -2499,6 +2441,8 @@ You can filter by key/value, e.g.::
|
|
|
2499
2441
|
''')
|
|
2500
2442
|
|
|
2501
2443
|
scope_list_parser.set_defaults(function=list_scopes)
|
|
2444
|
+
scope_list_parser.add_argument("--csv", action="store_true", default=False, help="Comma Separated Value output.")
|
|
2445
|
+
scope_list_parser.add_argument('--account', help='Filter scopes by account')
|
|
2502
2446
|
|
|
2503
2447
|
# The close command
|
|
2504
2448
|
close_parser = subparsers.add_parser('close', help='Close a dataset or container.')
|
|
@@ -2699,7 +2643,7 @@ You can filter by account::
|
|
|
2699
2643
|
list_rules_parser.add_argument('--csv', dest='csv', action='store_true', default=False, help='Comma Separated Value output')
|
|
2700
2644
|
list_rules_parser.add_argument('--file', dest='file', action='store', help='List associated rules of an affected file')
|
|
2701
2645
|
list_rules_parser.add_argument('--account', dest='rule_account', action='store', help='List by account')
|
|
2702
|
-
list_rules_parser.add_argument('--subscription', dest='subscription', action='store', help='List by
|
|
2646
|
+
list_rules_parser.add_argument('--subscription', dest='subscription', action='store', help='List by subscription name')
|
|
2703
2647
|
|
|
2704
2648
|
# The list_rules_history command
|
|
2705
2649
|
list_rules_history_parser = subparsers.add_parser('list-rules-history', help='List replication rules history for a DID.')
|