rucio-clients 37.4.0__tar.gz → 37.5.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-clients might be problematic. Click here for more details.
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/PKG-INFO +1 -1
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/downloadclient.py +1 -1
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/requestclient.py +6 -5
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/constants.py +14 -17
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/utils.py +18 -2
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/rsemanager.py +2 -2
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/vcsversion.py +3 -3
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_conveyor.py +9 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_gateway_external_representation.py +1 -1
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_throttler.py +2 -1
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/AUTHORS.rst +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/ChangeLog +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/LICENSE +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/MANIFEST.in +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/README.md +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/bin/rucio +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/bin/rucio-admin +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/etc/rse-accounts.cfg.template +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/etc/rucio.cfg.template +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/alembicrevision.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/account.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/bin_legacy/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/bin_legacy/rucio.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/bin_legacy/rucio_admin.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/command.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/config.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/did.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/download.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/lifetime_exception.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/replica.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/rse.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/rule.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/scope.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/subscription.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/upload.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/cli/utils.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/accountclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/accountlimitclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/baseclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/client.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/configclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/credentialclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/didclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/diracclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/exportclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/fileclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/importclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/lifetimeclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/lockclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/metaconventionsclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/pingclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/replicaclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/richclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/rseclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/ruleclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/scopeclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/subscriptionclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/touchclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/client/uploadclient.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/bittorrent.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/cache.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/checksum.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/client.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/config.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/constraints.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/didtype.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/exception.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/extra.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/logging.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/pcache.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/plugins.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/policy.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/schema/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/schema/generic.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/schema/generic_multi_vo.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/stomp_utils.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/stopwatch.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/test_rucio_server.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/common/types.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/__init__.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/bittorrent.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/cache.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/dummy.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/gfal.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/globus.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/http_cache.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/mock.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/ngarc.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/posix.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/protocol.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/rclone.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/rfio.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/srm.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/ssh.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/storm.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/webdav.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/protocols/xrootd.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/rse/translation.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio/version.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/lib/rucio_clients.egg-info/SOURCES.txt +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/pyproject.toml +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/requirements/requirements.client.txt +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/setup.cfg +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/setup.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/setuputil.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_abacus_account.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_abacus_collection_replica.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_abacus_rse.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_account.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_account_limits.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_archive.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_auditor.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_auditor_hdfs.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_auditor_srmdumps.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_authentication.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_automatix.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_bad_replica.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_bb8.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_belleii.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_bin_rucio.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_boolean.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_cli_client_structure.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_clients.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_config.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_conveyor_submitter.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_counter.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_credential.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_curl.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_daemons.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_dataset_replicas.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_db.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_did.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_did_meta_plugins.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_download.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_dumper.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_filter_engine.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_heartbeat.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_hermes.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_identity.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_impl_upload_download.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_import_export.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_judge_cleaner.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_judge_evaluator.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_judge_injector.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_judge_repairer.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_lifetime.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_message.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_meta_conventions.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_meta_did.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_module_import.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_monitor.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_multi_vo.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_naming_convention.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_oauthmanager.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_oidc.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_permission.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_pfns.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_ping.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_policy_package.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_preparer.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_qos.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_quarantined_replica.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_reaper.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_redirect.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_replica.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_replica_recoverer.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_replica_sorting.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_request.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_root_proxy.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_expression_parser.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_lfn2path.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_gfal2.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_gfal2_impl.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_posix.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_rclone.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_rsync.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_srm.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_ssh.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_webdav.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_protocol_xrootd.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rse_selector.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rucio_server.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_rule.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_scope.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_subscription.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_tpc.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_trace.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_transfer.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_transfer_plugins.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_undertaker.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_upload.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tests/test_utils.py +0 -0
- {rucio_clients-37.4.0 → rucio_clients-37.5.0}/tools/merge_rucio_configs.py +0 -0
|
@@ -19,8 +19,8 @@ from urllib.parse import quote_plus
|
|
|
19
19
|
from requests.status_codes import codes
|
|
20
20
|
|
|
21
21
|
from rucio.client.baseclient import BaseClient, choice
|
|
22
|
+
from rucio.common.constants import TransferLimitDirection
|
|
22
23
|
from rucio.common.utils import build_url
|
|
23
|
-
from rucio.db.sqla.constants import TransferLimitDirection
|
|
24
24
|
|
|
25
25
|
if TYPE_CHECKING:
|
|
26
26
|
from collections.abc import Iterator, Sequence
|
|
@@ -192,14 +192,15 @@ class RequestClient(BaseClient):
|
|
|
192
192
|
:param strategy: defines how to handle datasets: `fifo` (each file released separately) or `grouped_fifo` (wait for the entire dataset to fit)
|
|
193
193
|
:param transfers: Current number of active transfers
|
|
194
194
|
:param waitings: Current number of waiting transfers
|
|
195
|
-
|
|
195
|
+
|
|
196
196
|
:returns: True if the transfer limit was deleted
|
|
197
197
|
"""
|
|
198
198
|
path = '/'.join([self.REQUEST_BASEURL, 'transfer_limits'])
|
|
199
199
|
url = build_url(choice(self.list_hosts), path=path)
|
|
200
|
-
data = dumps({'rse_expression': rse_expression, 'activity': activity,
|
|
201
|
-
|
|
202
|
-
|
|
200
|
+
data = dumps({'rse_expression': rse_expression, 'activity': activity,
|
|
201
|
+
'direction': direction.value, 'max_transfers': max_transfers,
|
|
202
|
+
'volume': volume, 'deadline': deadline, 'strategy': strategy,
|
|
203
|
+
'transfers': transfers, 'waitings': waitings})
|
|
203
204
|
r = self._send_request(url, type_='PUT', data=data)
|
|
204
205
|
|
|
205
206
|
if r.status_code == codes.created:
|
|
@@ -16,8 +16,6 @@ import enum
|
|
|
16
16
|
from collections import namedtuple
|
|
17
17
|
from typing import Literal, get_args
|
|
18
18
|
|
|
19
|
-
from rucio.common.config import config_get_bool
|
|
20
|
-
|
|
21
19
|
"""
|
|
22
20
|
Constants.
|
|
23
21
|
|
|
@@ -32,21 +30,16 @@ RESERVED_KEYS = ['scope', 'name', 'account', 'did_type', 'is_open', 'monotonic',
|
|
|
32
30
|
KEY_TYPES = ['ALL', 'COLLECTION', 'FILE', 'DERIVED']
|
|
33
31
|
# all(container, dataset, file), collection(dataset or container), file, derived(compute from file for collection)
|
|
34
32
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if config_get_bool('transfers', 'srm_https_compatibility', raise_exception=False, default=False):
|
|
46
|
-
SCHEME_MAP['srm'].append('https')
|
|
47
|
-
SCHEME_MAP['https'].append('srm')
|
|
48
|
-
SCHEME_MAP['srm'].append('davs')
|
|
49
|
-
SCHEME_MAP['davs'].append('srm')
|
|
33
|
+
BASE_SCHEME_MAP = {'srm': ['srm', 'gsiftp'],
|
|
34
|
+
'gsiftp': ['srm', 'gsiftp'],
|
|
35
|
+
'https': ['https', 'davs', 'srm+https', 'cs3s'],
|
|
36
|
+
'davs': ['https', 'davs', 'srm+https', 'cs3s'],
|
|
37
|
+
'srm+https': ['https', 'davs', 'srm+https', 'cs3s'],
|
|
38
|
+
'cs3s': ['https', 'davs', 'srm+https', 'cs3s'],
|
|
39
|
+
'root': ['root'],
|
|
40
|
+
'scp': ['scp'],
|
|
41
|
+
'rsync': ['rsync'],
|
|
42
|
+
'rclone': ['rclone']}
|
|
50
43
|
|
|
51
44
|
SORTING_ALGORITHMS_LITERAL = Literal['geoip', 'custom_table', 'random']
|
|
52
45
|
SORTING_ALGORITHMS = list(get_args(SORTING_ALGORITHMS_LITERAL))
|
|
@@ -76,6 +69,10 @@ FTS_JOB_TYPE = namedtuple('FTS_JOB_TYPE', ['MULTIPLE_REPLICA', 'MULTI_HOP', 'SES
|
|
|
76
69
|
|
|
77
70
|
MAX_MESSAGE_LENGTH = 4000
|
|
78
71
|
|
|
72
|
+
@enum.unique
|
|
73
|
+
class TransferLimitDirection(enum.Enum):
|
|
74
|
+
SOURCE = 'S'
|
|
75
|
+
DESTINATION = 'D'
|
|
79
76
|
|
|
80
77
|
@enum.unique
|
|
81
78
|
class SuspiciousAvailability(enum.Enum):
|
|
@@ -32,7 +32,7 @@ import threading
|
|
|
32
32
|
import time
|
|
33
33
|
from collections import OrderedDict
|
|
34
34
|
from enum import Enum
|
|
35
|
-
from functools import wraps
|
|
35
|
+
from functools import cache, wraps
|
|
36
36
|
from io import StringIO
|
|
37
37
|
from itertools import zip_longest
|
|
38
38
|
from typing import TYPE_CHECKING, Any, Optional, TypeVar, Union
|
|
@@ -42,7 +42,8 @@ from xml.etree import ElementTree
|
|
|
42
42
|
|
|
43
43
|
import requests
|
|
44
44
|
|
|
45
|
-
from rucio.common.config import config_get
|
|
45
|
+
from rucio.common.config import config_get, config_get_bool
|
|
46
|
+
from rucio.common.constants import BASE_SCHEME_MAP
|
|
46
47
|
from rucio.common.exception import DIDFilterSyntaxError, DuplicateCriteriaInDIDFilter, InputValidationError, InvalidType, MetalinkJsonParsingError, MissingModuleException, RucioException
|
|
47
48
|
from rucio.common.extra import import_extras
|
|
48
49
|
from rucio.common.plugins import PolicyPackageAlgorithms
|
|
@@ -1690,3 +1691,18 @@ def is_method_overridden(obj, base_cls, method_name):
|
|
|
1690
1691
|
if getattr(type(obj), method_name, None) is getattr(base_cls, method_name, None): # Caring for bound/unbound cases
|
|
1691
1692
|
return False
|
|
1692
1693
|
return True
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
@cache
|
|
1697
|
+
def get_transfer_schemas() -> dict[str, list[str]]:
|
|
1698
|
+
"""
|
|
1699
|
+
Extend base schema map based on SRM HTTPS compatibility.
|
|
1700
|
+
"""
|
|
1701
|
+
scheme_map = BASE_SCHEME_MAP
|
|
1702
|
+
if config_get_bool('transfers', 'srm_https_compatibility', raise_exception=False, default=False):
|
|
1703
|
+
scheme_map['srm'].append('https')
|
|
1704
|
+
scheme_map['https'].append('srm')
|
|
1705
|
+
scheme_map['srm'].append('davs')
|
|
1706
|
+
scheme_map['davs'].append('srm')
|
|
1707
|
+
|
|
1708
|
+
return scheme_map
|
|
@@ -24,7 +24,7 @@ from rucio.common.checksum import GLOBALLY_SUPPORTED_CHECKSUMS
|
|
|
24
24
|
from rucio.common.config import config_get_int
|
|
25
25
|
from rucio.common.constraints import STRING_TYPES
|
|
26
26
|
from rucio.common.logging import formatted_logger
|
|
27
|
-
from rucio.common.utils import make_valid_did
|
|
27
|
+
from rucio.common.utils import get_transfer_schemas, make_valid_did
|
|
28
28
|
|
|
29
29
|
if TYPE_CHECKING:
|
|
30
30
|
from collections.abc import Callable
|
|
@@ -875,7 +875,7 @@ def __check_compatible_scheme(
|
|
|
875
875
|
|
|
876
876
|
if dest_scheme == src_scheme:
|
|
877
877
|
return True
|
|
878
|
-
if src_scheme in
|
|
878
|
+
if src_scheme in get_transfer_schemas().get(dest_scheme, []):
|
|
879
879
|
return True
|
|
880
880
|
|
|
881
881
|
return False
|
|
@@ -4,8 +4,8 @@ This file is automatically generated; Do not edit it. :)
|
|
|
4
4
|
'''
|
|
5
5
|
VERSION_INFO = {
|
|
6
6
|
'final': True,
|
|
7
|
-
'version': '37.
|
|
7
|
+
'version': '37.5.0',
|
|
8
8
|
'branch_nick': 'release-37',
|
|
9
|
-
'revision_id': '
|
|
10
|
-
'revno':
|
|
9
|
+
'revision_id': '092cfe864848019a987a3a167120cf5cf7df2f61',
|
|
10
|
+
'revno': 13761
|
|
11
11
|
}
|
|
@@ -452,6 +452,7 @@ def test_multisource(vo, did_factory, root_account, replica_client, caches_mock,
|
|
|
452
452
|
)
|
|
453
453
|
|
|
454
454
|
|
|
455
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
455
456
|
@skip_rse_tests_with_accounts
|
|
456
457
|
@pytest.mark.dirty(reason="leaves files in XRD containers")
|
|
457
458
|
@pytest.mark.noparallel(groups=[NoParallelGroups.XRD, NoParallelGroups.SUBMITTER, NoParallelGroups.RECEIVER])
|
|
@@ -525,6 +526,7 @@ def test_multisource_receiver(vo, did_factory, replica_client, root_account, met
|
|
|
525
526
|
RECEIVER_GRACEFUL_STOP.clear()
|
|
526
527
|
|
|
527
528
|
|
|
529
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
528
530
|
@skip_rse_tests_with_accounts
|
|
529
531
|
@pytest.mark.noparallel(groups=[NoParallelGroups.XRD, NoParallelGroups.SUBMITTER, NoParallelGroups.RECEIVER])
|
|
530
532
|
@pytest.mark.parametrize("caches_mock", [{"caches_to_mock": [
|
|
@@ -579,6 +581,7 @@ def test_multihop_receiver_on_failure(vo, did_factory, replica_client, root_acco
|
|
|
579
581
|
RECEIVER_GRACEFUL_STOP.clear()
|
|
580
582
|
|
|
581
583
|
|
|
584
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
582
585
|
@skip_rse_tests_with_accounts
|
|
583
586
|
@pytest.mark.noparallel(groups=[NoParallelGroups.XRD, NoParallelGroups.SUBMITTER, NoParallelGroups.RECEIVER])
|
|
584
587
|
@pytest.mark.parametrize("caches_mock", [{"caches_to_mock": [
|
|
@@ -623,6 +626,7 @@ def test_multihop_receiver_on_success(vo, did_factory, root_account, caches_mock
|
|
|
623
626
|
RECEIVER_GRACEFUL_STOP.clear()
|
|
624
627
|
|
|
625
628
|
|
|
629
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
626
630
|
@skip_rse_tests_with_accounts
|
|
627
631
|
@pytest.mark.dirty(reason="leaves files in XRD containers")
|
|
628
632
|
@pytest.mark.noparallel(groups=[NoParallelGroups.XRD, NoParallelGroups.SUBMITTER, NoParallelGroups.RECEIVER, NoParallelGroups.POLLER])
|
|
@@ -692,6 +696,7 @@ def test_receiver_archiving(vo, did_factory, root_account, caches_mock, scitags_
|
|
|
692
696
|
RECEIVER_GRACEFUL_STOP.clear()
|
|
693
697
|
|
|
694
698
|
|
|
699
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
695
700
|
@skip_rse_tests_with_accounts
|
|
696
701
|
@pytest.mark.noparallel(groups=[NoParallelGroups.PREPARER, NoParallelGroups.THROTTLER, NoParallelGroups.SUBMITTER, NoParallelGroups.POLLER])
|
|
697
702
|
@pytest.mark.parametrize("file_config_mock", [{
|
|
@@ -1023,6 +1028,7 @@ def test_failed_transfers_to_mas_existing_replica(rse_factory, did_factory, root
|
|
|
1023
1028
|
assert rule_core.get_rule(rule2_id)['state'] == RuleState.STUCK
|
|
1024
1029
|
|
|
1025
1030
|
|
|
1031
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
1026
1032
|
@skip_rse_tests_with_accounts
|
|
1027
1033
|
@pytest.mark.noparallel(groups=[NoParallelGroups.SUBMITTER, NoParallelGroups.POLLER, NoParallelGroups.FINISHER])
|
|
1028
1034
|
def test_lost_transfers(rse_factory, did_factory, root_account):
|
|
@@ -1425,6 +1431,7 @@ def test_multi_vo_certificates(file_config_mock, rse_factory, did_factory, scope
|
|
|
1425
1431
|
assert sorted(certs_used_by_poller) == ['DEFAULT_DUMMY_CERT', 'NEW_VO_DUMMY_CERT']
|
|
1426
1432
|
|
|
1427
1433
|
|
|
1434
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
1428
1435
|
@skip_rse_tests_with_accounts
|
|
1429
1436
|
@pytest.mark.noparallel(groups=[NoParallelGroups.SUBMITTER, NoParallelGroups.POLLER, NoParallelGroups.FINISHER])
|
|
1430
1437
|
@pytest.mark.parametrize("core_config_mock", [
|
|
@@ -1556,6 +1563,7 @@ def test_two_multihops_same_intermediate_rse(rse_factory, did_factory, root_acco
|
|
|
1556
1563
|
assert dict_stats[rse2_id][rse1_id]['bytes_done'] == 2
|
|
1557
1564
|
|
|
1558
1565
|
|
|
1566
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
1559
1567
|
@skip_rse_tests_with_accounts
|
|
1560
1568
|
@pytest.mark.noparallel(groups=[NoParallelGroups.SUBMITTER, NoParallelGroups.POLLER])
|
|
1561
1569
|
def test_checksum_validation(rse_factory, did_factory, root_account):
|
|
@@ -1608,6 +1616,7 @@ def test_checksum_validation(rse_factory, did_factory, root_account):
|
|
|
1608
1616
|
assert request['state'] == RequestState.FAILED
|
|
1609
1617
|
|
|
1610
1618
|
|
|
1619
|
+
@pytest.mark.skip(reason="Pending https://cern.service-now.com/service-portal?id=ticket&table=incident&n=INC4506150")
|
|
1611
1620
|
@skip_rse_tests_with_accounts
|
|
1612
1621
|
@pytest.mark.noparallel(groups=[NoParallelGroups.XRD, NoParallelGroups.SUBMITTER, NoParallelGroups.RECEIVER])
|
|
1613
1622
|
@pytest.mark.parametrize("file_config_mock", [
|
|
@@ -137,7 +137,7 @@ class TestGatewayExternalRepresentation:
|
|
|
137
137
|
gateway_acc_lim.set_local_account_limit(account_name, rse1, 10000, issuer='root', vo=vo)
|
|
138
138
|
gateway_acc_lim.set_global_account_limit(account_name, rse_expr, 20000, issuer='root', vo=vo)
|
|
139
139
|
|
|
140
|
-
out = gateway_acc_lim.get_local_account_limit(account_name,rse=None, vo=vo)
|
|
140
|
+
out = gateway_acc_lim.get_local_account_limit(account_name, rse=None, vo=vo)
|
|
141
141
|
assert rse1 in out
|
|
142
142
|
assert rse1_id not in out
|
|
143
143
|
|
|
@@ -17,6 +17,7 @@ from datetime import datetime, timedelta
|
|
|
17
17
|
import pytest
|
|
18
18
|
from sqlalchemy import delete
|
|
19
19
|
|
|
20
|
+
from rucio.common.constants import TransferLimitDirection
|
|
20
21
|
from rucio.common.utils import generate_uuid
|
|
21
22
|
from rucio.core.did import add_did, attach_dids
|
|
22
23
|
from rucio.core.distance import add_distance
|
|
@@ -34,7 +35,7 @@ from rucio.core.request import (
|
|
|
34
35
|
from rucio.daemons.conveyor.preparer import preparer
|
|
35
36
|
from rucio.daemons.conveyor.throttler import throttler
|
|
36
37
|
from rucio.db.sqla import models
|
|
37
|
-
from rucio.db.sqla.constants import DIDType, RequestState, RequestType
|
|
38
|
+
from rucio.db.sqla.constants import DIDType, RequestState, RequestType
|
|
38
39
|
from rucio.db.sqla.session import get_session, transactional_session
|
|
39
40
|
from rucio.tests.common import skiplimitedsql
|
|
40
41
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|