rucio 32.8.6__py3-none-any.whl → 35.8.0__py3-none-any.whl
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/__init__.py +0 -1
- rucio/alembicrevision.py +1 -2
- rucio/client/__init__.py +0 -1
- rucio/client/accountclient.py +45 -25
- rucio/client/accountlimitclient.py +37 -9
- rucio/client/baseclient.py +199 -154
- rucio/client/client.py +2 -3
- rucio/client/configclient.py +19 -6
- rucio/client/credentialclient.py +9 -4
- rucio/client/didclient.py +238 -63
- rucio/client/diracclient.py +13 -5
- rucio/client/downloadclient.py +162 -51
- rucio/client/exportclient.py +4 -4
- rucio/client/fileclient.py +3 -4
- rucio/client/importclient.py +4 -4
- rucio/client/lifetimeclient.py +21 -5
- rucio/client/lockclient.py +18 -8
- rucio/client/{metaclient.py → metaconventionsclient.py} +18 -15
- rucio/client/pingclient.py +0 -1
- rucio/client/replicaclient.py +15 -5
- rucio/client/requestclient.py +35 -19
- rucio/client/rseclient.py +133 -51
- rucio/client/ruleclient.py +29 -22
- rucio/client/scopeclient.py +8 -6
- rucio/client/subscriptionclient.py +47 -35
- rucio/client/touchclient.py +8 -4
- rucio/client/uploadclient.py +166 -82
- rucio/common/__init__.py +0 -1
- rucio/common/cache.py +4 -4
- rucio/common/config.py +52 -47
- rucio/common/constants.py +69 -2
- rucio/common/constraints.py +0 -1
- rucio/common/didtype.py +24 -22
- rucio/common/dumper/__init__.py +70 -41
- rucio/common/dumper/consistency.py +26 -22
- rucio/common/dumper/data_models.py +16 -23
- rucio/common/dumper/path_parsing.py +0 -1
- rucio/common/exception.py +281 -222
- rucio/common/extra.py +0 -1
- rucio/common/logging.py +54 -38
- rucio/common/pcache.py +122 -101
- rucio/common/plugins.py +153 -0
- rucio/common/policy.py +4 -4
- rucio/common/schema/__init__.py +17 -10
- rucio/common/schema/atlas.py +7 -5
- rucio/common/schema/belleii.py +7 -5
- rucio/common/schema/domatpc.py +7 -5
- rucio/common/schema/escape.py +7 -5
- rucio/common/schema/generic.py +8 -6
- rucio/common/schema/generic_multi_vo.py +7 -5
- rucio/common/schema/icecube.py +7 -5
- rucio/common/stomp_utils.py +0 -1
- rucio/common/stopwatch.py +0 -1
- rucio/common/test_rucio_server.py +2 -2
- rucio/common/types.py +262 -17
- rucio/common/utils.py +743 -451
- rucio/core/__init__.py +0 -1
- rucio/core/account.py +99 -29
- rucio/core/account_counter.py +89 -24
- rucio/core/account_limit.py +90 -24
- rucio/core/authentication.py +86 -29
- rucio/core/config.py +108 -38
- rucio/core/credential.py +14 -7
- rucio/core/did.py +680 -782
- rucio/core/did_meta_plugins/__init__.py +8 -6
- rucio/core/did_meta_plugins/did_column_meta.py +17 -12
- rucio/core/did_meta_plugins/did_meta_plugin_interface.py +60 -11
- rucio/core/did_meta_plugins/filter_engine.py +90 -50
- rucio/core/did_meta_plugins/json_meta.py +41 -16
- rucio/core/did_meta_plugins/mongo_meta.py +25 -8
- rucio/core/did_meta_plugins/postgres_meta.py +3 -4
- rucio/core/dirac.py +46 -17
- rucio/core/distance.py +66 -43
- rucio/core/exporter.py +5 -5
- rucio/core/heartbeat.py +181 -81
- rucio/core/identity.py +22 -12
- rucio/core/importer.py +23 -12
- rucio/core/lifetime_exception.py +32 -32
- rucio/core/lock.py +244 -142
- rucio/core/message.py +79 -38
- rucio/core/{meta.py → meta_conventions.py} +57 -44
- rucio/core/monitor.py +19 -13
- rucio/core/naming_convention.py +68 -27
- rucio/core/nongrid_trace.py +17 -5
- rucio/core/oidc.py +151 -29
- rucio/core/permission/__init__.py +18 -6
- rucio/core/permission/atlas.py +50 -35
- rucio/core/permission/belleii.py +6 -5
- rucio/core/permission/escape.py +8 -6
- rucio/core/permission/generic.py +82 -80
- rucio/core/permission/generic_multi_vo.py +9 -7
- rucio/core/quarantined_replica.py +91 -58
- rucio/core/replica.py +1303 -772
- rucio/core/replica_sorter.py +10 -12
- rucio/core/request.py +1133 -285
- rucio/core/rse.py +142 -102
- rucio/core/rse_counter.py +49 -18
- rucio/core/rse_expression_parser.py +6 -7
- rucio/core/rse_selector.py +41 -16
- rucio/core/rule.py +1538 -474
- rucio/core/rule_grouping.py +213 -68
- rucio/core/scope.py +50 -22
- rucio/core/subscription.py +92 -44
- rucio/core/topology.py +66 -24
- rucio/core/trace.py +42 -28
- rucio/core/transfer.py +543 -259
- rucio/core/vo.py +36 -18
- rucio/core/volatile_replica.py +59 -32
- rucio/daemons/__init__.py +0 -1
- rucio/daemons/abacus/__init__.py +0 -1
- rucio/daemons/abacus/account.py +29 -19
- rucio/daemons/abacus/collection_replica.py +21 -10
- rucio/daemons/abacus/rse.py +22 -12
- rucio/daemons/atropos/__init__.py +0 -1
- rucio/daemons/atropos/atropos.py +1 -2
- rucio/daemons/auditor/__init__.py +56 -28
- rucio/daemons/auditor/hdfs.py +17 -6
- rucio/daemons/auditor/srmdumps.py +116 -45
- rucio/daemons/automatix/__init__.py +0 -1
- rucio/daemons/automatix/automatix.py +30 -18
- rucio/daemons/badreplicas/__init__.py +0 -1
- rucio/daemons/badreplicas/minos.py +29 -18
- rucio/daemons/badreplicas/minos_temporary_expiration.py +5 -7
- rucio/daemons/badreplicas/necromancer.py +9 -13
- rucio/daemons/bb8/__init__.py +0 -1
- rucio/daemons/bb8/bb8.py +10 -13
- rucio/daemons/bb8/common.py +151 -154
- rucio/daemons/bb8/nuclei_background_rebalance.py +15 -9
- rucio/daemons/bb8/t2_background_rebalance.py +15 -8
- rucio/daemons/c3po/__init__.py +0 -1
- rucio/daemons/c3po/algorithms/__init__.py +0 -1
- rucio/daemons/c3po/algorithms/simple.py +8 -5
- rucio/daemons/c3po/algorithms/t2_free_space.py +10 -7
- rucio/daemons/c3po/algorithms/t2_free_space_only_pop.py +10 -7
- rucio/daemons/c3po/algorithms/t2_free_space_only_pop_with_network.py +30 -15
- rucio/daemons/c3po/c3po.py +81 -52
- rucio/daemons/c3po/collectors/__init__.py +0 -1
- rucio/daemons/c3po/collectors/agis.py +17 -17
- rucio/daemons/c3po/collectors/free_space.py +32 -13
- rucio/daemons/c3po/collectors/jedi_did.py +14 -5
- rucio/daemons/c3po/collectors/mock_did.py +11 -6
- rucio/daemons/c3po/collectors/network_metrics.py +12 -4
- rucio/daemons/c3po/collectors/workload.py +21 -19
- rucio/daemons/c3po/utils/__init__.py +0 -1
- rucio/daemons/c3po/utils/dataset_cache.py +15 -5
- rucio/daemons/c3po/utils/expiring_dataset_cache.py +16 -5
- rucio/daemons/c3po/utils/expiring_list.py +6 -7
- rucio/daemons/c3po/utils/popularity.py +5 -2
- rucio/daemons/c3po/utils/timeseries.py +25 -12
- rucio/daemons/cache/__init__.py +0 -1
- rucio/daemons/cache/consumer.py +21 -15
- rucio/daemons/common.py +42 -18
- rucio/daemons/conveyor/__init__.py +0 -1
- rucio/daemons/conveyor/common.py +69 -37
- rucio/daemons/conveyor/finisher.py +83 -46
- rucio/daemons/conveyor/poller.py +101 -69
- rucio/daemons/conveyor/preparer.py +35 -28
- rucio/daemons/conveyor/receiver.py +64 -21
- rucio/daemons/conveyor/stager.py +33 -28
- rucio/daemons/conveyor/submitter.py +71 -47
- rucio/daemons/conveyor/throttler.py +99 -35
- rucio/daemons/follower/__init__.py +0 -1
- rucio/daemons/follower/follower.py +12 -8
- rucio/daemons/hermes/__init__.py +0 -1
- rucio/daemons/hermes/hermes.py +57 -21
- rucio/daemons/judge/__init__.py +0 -1
- rucio/daemons/judge/cleaner.py +27 -17
- rucio/daemons/judge/evaluator.py +31 -18
- rucio/daemons/judge/injector.py +31 -23
- rucio/daemons/judge/repairer.py +28 -18
- rucio/daemons/oauthmanager/__init__.py +0 -1
- rucio/daemons/oauthmanager/oauthmanager.py +7 -8
- rucio/daemons/reaper/__init__.py +0 -1
- rucio/daemons/reaper/dark_reaper.py +15 -9
- rucio/daemons/reaper/reaper.py +109 -67
- rucio/daemons/replicarecoverer/__init__.py +0 -1
- rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +255 -116
- rucio/{api → daemons/rsedecommissioner}/__init__.py +0 -1
- rucio/daemons/rsedecommissioner/config.py +81 -0
- rucio/daemons/rsedecommissioner/profiles/__init__.py +24 -0
- rucio/daemons/rsedecommissioner/profiles/atlas.py +60 -0
- rucio/daemons/rsedecommissioner/profiles/generic.py +451 -0
- rucio/daemons/rsedecommissioner/profiles/types.py +92 -0
- rucio/daemons/rsedecommissioner/rse_decommissioner.py +280 -0
- rucio/daemons/storage/__init__.py +0 -1
- rucio/daemons/storage/consistency/__init__.py +0 -1
- rucio/daemons/storage/consistency/actions.py +152 -59
- rucio/daemons/tracer/__init__.py +0 -1
- rucio/daemons/tracer/kronos.py +47 -24
- rucio/daemons/transmogrifier/__init__.py +0 -1
- rucio/daemons/transmogrifier/transmogrifier.py +35 -26
- rucio/daemons/undertaker/__init__.py +0 -1
- rucio/daemons/undertaker/undertaker.py +10 -10
- rucio/db/__init__.py +0 -1
- rucio/db/sqla/__init__.py +16 -2
- rucio/db/sqla/constants.py +10 -1
- rucio/db/sqla/migrate_repo/__init__.py +0 -1
- rucio/db/sqla/migrate_repo/env.py +0 -1
- rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +0 -1
- rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +0 -3
- rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +0 -3
- rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +1 -3
- rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +0 -3
- rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +1 -4
- rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +0 -1
- rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +0 -2
- rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +0 -1
- rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +0 -1
- rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +0 -2
- rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +0 -1
- rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +0 -1
- rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +0 -3
- rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +0 -1
- rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +1 -2
- rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +0 -1
- rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +0 -3
- rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +1 -4
- rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +0 -2
- rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +0 -3
- rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +0 -3
- rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +1 -2
- rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +0 -1
- rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +0 -1
- rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +0 -2
- rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +0 -3
- rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +0 -2
- rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +1 -4
- rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +0 -3
- rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +1 -4
- rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +0 -1
- rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +1 -3
- rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +0 -2
- rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +1 -3
- rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +1 -2
- rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +1 -3
- rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +0 -2
- rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +2 -3
- rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +0 -3
- rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +1 -4
- rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +0 -1
- rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +0 -1
- rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +0 -3
- rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +0 -1
- rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +0 -2
- rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +0 -3
- rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +0 -2
- rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +2 -4
- rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +0 -2
- rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +1 -4
- rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +0 -3
- rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +0 -3
- rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +0 -2
- rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +0 -3
- rucio/db/sqla/migrate_repo/versions/4df2c5ddabc0_remove_temporary_dids.py +55 -0
- rucio/db/sqla/migrate_repo/versions/50280c53117c_add_qos_class_to_rse.py +0 -2
- rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +0 -2
- rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +0 -3
- rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +0 -3
- rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +0 -3
- rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +1 -2
- rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +0 -3
- rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +1 -3
- rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +1 -3
- rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +1 -2
- rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +0 -3
- rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +0 -3
- rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +1 -2
- rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +2 -4
- rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +0 -1
- rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +1 -4
- rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +0 -2
- rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +0 -3
- rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +1 -2
- rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +0 -3
- rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +1 -3
- rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +0 -3
- rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +0 -1
- rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +1 -2
- rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +0 -2
- rucio/db/sqla/migrate_repo/versions/a08fa8de1545_transfer_stats_table.py +55 -0
- rucio/db/sqla/migrate_repo/versions/a118956323f8_added_vo_table_and_vo_col_to_rse.py +1 -3
- rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +0 -2
- rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +1 -4
- rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +0 -1
- rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +0 -1
- rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +1 -4
- rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +0 -1
- rucio/db/sqla/migrate_repo/versions/b0070f3695c8_add_deletedidmeta_table.py +57 -0
- rucio/db/sqla/migrate_repo/versions/b4293a99f344_added_column_identity_to_table_tokens.py +0 -3
- rucio/db/sqla/migrate_repo/versions/b5493606bbf5_fix_primary_key_for_subscription_history.py +41 -0
- rucio/db/sqla/migrate_repo/versions/b7d287de34fd_removal_of_replicastate_source.py +1 -2
- rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +1 -3
- rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +0 -3
- rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +1 -5
- rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +1 -3
- rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +0 -3
- rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +1 -3
- rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +1 -2
- rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +0 -3
- rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +1 -4
- rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +1 -2
- rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +1 -4
- rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +1 -3
- rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +1 -4
- rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +0 -2
- rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +1 -3
- rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +0 -3
- rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +1 -3
- rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +0 -1
- rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +1 -2
- rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +1 -3
- rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +0 -2
- rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +0 -1
- rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +1 -2
- rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +0 -3
- rucio/db/sqla/models.py +122 -216
- rucio/db/sqla/sautils.py +12 -5
- rucio/db/sqla/session.py +71 -43
- rucio/db/sqla/types.py +3 -4
- rucio/db/sqla/util.py +91 -69
- rucio/gateway/__init__.py +13 -0
- rucio/{api → gateway}/account.py +119 -46
- rucio/{api → gateway}/account_limit.py +12 -13
- rucio/{api → gateway}/authentication.py +106 -33
- rucio/{api → gateway}/config.py +12 -13
- rucio/{api → gateway}/credential.py +15 -4
- rucio/{api → gateway}/did.py +384 -140
- rucio/{api → gateway}/dirac.py +16 -6
- rucio/{api → gateway}/exporter.py +3 -4
- rucio/{api → gateway}/heartbeat.py +17 -5
- rucio/{api → gateway}/identity.py +63 -19
- rucio/{api → gateway}/importer.py +3 -4
- rucio/{api → gateway}/lifetime_exception.py +35 -10
- rucio/{api → gateway}/lock.py +34 -12
- rucio/{api/meta.py → gateway/meta_conventions.py} +18 -16
- rucio/{api → gateway}/permission.py +4 -5
- rucio/{api → gateway}/quarantined_replica.py +13 -4
- rucio/{api → gateway}/replica.py +12 -11
- rucio/{api → gateway}/request.py +129 -28
- rucio/{api → gateway}/rse.py +11 -12
- rucio/{api → gateway}/rule.py +117 -35
- rucio/{api → gateway}/scope.py +24 -14
- rucio/{api → gateway}/subscription.py +65 -43
- rucio/{api → gateway}/vo.py +17 -7
- rucio/rse/__init__.py +3 -4
- rucio/rse/protocols/__init__.py +0 -1
- rucio/rse/protocols/bittorrent.py +184 -0
- rucio/rse/protocols/cache.py +1 -2
- rucio/rse/protocols/dummy.py +1 -2
- rucio/rse/protocols/gfal.py +12 -10
- rucio/rse/protocols/globus.py +7 -7
- rucio/rse/protocols/gsiftp.py +2 -3
- rucio/rse/protocols/http_cache.py +1 -2
- rucio/rse/protocols/mock.py +1 -2
- rucio/rse/protocols/ngarc.py +1 -2
- rucio/rse/protocols/posix.py +12 -13
- rucio/rse/protocols/protocol.py +116 -52
- rucio/rse/protocols/rclone.py +6 -7
- rucio/rse/protocols/rfio.py +4 -5
- rucio/rse/protocols/srm.py +9 -10
- rucio/rse/protocols/ssh.py +8 -9
- rucio/rse/protocols/storm.py +2 -3
- rucio/rse/protocols/webdav.py +17 -14
- rucio/rse/protocols/xrootd.py +23 -17
- rucio/rse/rsemanager.py +19 -7
- rucio/tests/__init__.py +0 -1
- rucio/tests/common.py +43 -17
- rucio/tests/common_server.py +3 -3
- rucio/transfertool/__init__.py +0 -1
- rucio/transfertool/bittorrent.py +199 -0
- rucio/transfertool/bittorrent_driver.py +52 -0
- rucio/transfertool/bittorrent_driver_qbittorrent.py +133 -0
- rucio/transfertool/fts3.py +250 -138
- rucio/transfertool/fts3_plugins.py +152 -0
- rucio/transfertool/globus.py +9 -8
- rucio/transfertool/globus_library.py +1 -2
- rucio/transfertool/mock.py +21 -12
- rucio/transfertool/transfertool.py +33 -24
- rucio/vcsversion.py +4 -4
- rucio/version.py +5 -13
- rucio/web/__init__.py +0 -1
- rucio/web/rest/__init__.py +0 -1
- rucio/web/rest/flaskapi/__init__.py +0 -1
- rucio/web/rest/flaskapi/authenticated_bp.py +0 -1
- rucio/web/rest/flaskapi/v1/__init__.py +0 -1
- rucio/web/rest/flaskapi/v1/accountlimits.py +15 -13
- rucio/web/rest/flaskapi/v1/accounts.py +49 -48
- rucio/web/rest/flaskapi/v1/archives.py +12 -10
- rucio/web/rest/flaskapi/v1/auth.py +146 -144
- rucio/web/rest/flaskapi/v1/common.py +82 -41
- rucio/web/rest/flaskapi/v1/config.py +5 -6
- rucio/web/rest/flaskapi/v1/credentials.py +7 -8
- rucio/web/rest/flaskapi/v1/dids.py +158 -28
- rucio/web/rest/flaskapi/v1/dirac.py +8 -8
- rucio/web/rest/flaskapi/v1/export.py +3 -5
- rucio/web/rest/flaskapi/v1/heartbeats.py +3 -5
- rucio/web/rest/flaskapi/v1/identities.py +3 -5
- rucio/web/rest/flaskapi/v1/import.py +3 -4
- rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +6 -9
- rucio/web/rest/flaskapi/v1/locks.py +2 -4
- rucio/web/rest/flaskapi/v1/main.py +10 -2
- rucio/web/rest/flaskapi/v1/{meta.py → meta_conventions.py} +26 -11
- rucio/web/rest/flaskapi/v1/metrics.py +1 -2
- rucio/web/rest/flaskapi/v1/nongrid_traces.py +4 -4
- rucio/web/rest/flaskapi/v1/ping.py +6 -7
- rucio/web/rest/flaskapi/v1/redirect.py +8 -9
- rucio/web/rest/flaskapi/v1/replicas.py +43 -19
- rucio/web/rest/flaskapi/v1/requests.py +178 -21
- rucio/web/rest/flaskapi/v1/rses.py +61 -26
- rucio/web/rest/flaskapi/v1/rules.py +48 -18
- rucio/web/rest/flaskapi/v1/scopes.py +3 -5
- rucio/web/rest/flaskapi/v1/subscriptions.py +22 -18
- rucio/web/rest/flaskapi/v1/traces.py +4 -4
- rucio/web/rest/flaskapi/v1/types.py +20 -0
- rucio/web/rest/flaskapi/v1/vos.py +3 -5
- rucio/web/rest/main.py +0 -1
- rucio/web/rest/metrics.py +0 -1
- rucio/web/rest/ping.py +27 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/ldap.cfg.template +1 -1
- rucio-35.8.0.data/data/rucio/requirements.server.txt +268 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/tools/bootstrap.py +3 -3
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/tools/merge_rucio_configs.py +2 -5
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/tools/reset_database.py +3 -3
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio +87 -85
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-abacus-account +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-abacus-collection-replica +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-abacus-rse +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-admin +45 -32
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-atropos +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-auditor +13 -7
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-automatix +1 -2
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-bb8 +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-c3po +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-cache-client +2 -3
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-cache-consumer +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-conveyor-finisher +1 -2
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-conveyor-poller +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-conveyor-preparer +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-conveyor-receiver +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-conveyor-stager +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-conveyor-submitter +2 -3
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-conveyor-throttler +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-dark-reaper +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-dumper +11 -10
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-follower +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-hermes +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-judge-cleaner +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-judge-evaluator +2 -3
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-judge-injector +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-judge-repairer +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-kronos +1 -3
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-minos +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-minos-temporary-expiration +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-necromancer +1 -2
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-oauth-manager +2 -3
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-reaper +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-replica-recoverer +6 -7
- rucio-35.8.0.data/scripts/rucio-rse-decommissioner +66 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-storage-consistency-actions +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-transmogrifier +0 -1
- {rucio-32.8.6.data → rucio-35.8.0.data}/scripts/rucio-undertaker +1 -2
- rucio-35.8.0.dist-info/METADATA +72 -0
- rucio-35.8.0.dist-info/RECORD +493 -0
- {rucio-32.8.6.dist-info → rucio-35.8.0.dist-info}/WHEEL +1 -1
- {rucio-32.8.6.dist-info → rucio-35.8.0.dist-info}/licenses/AUTHORS.rst +3 -0
- rucio/api/temporary_did.py +0 -49
- rucio/common/schema/cms.py +0 -478
- rucio/common/schema/lsst.py +0 -423
- rucio/core/permission/cms.py +0 -1166
- rucio/core/temporary_did.py +0 -188
- rucio/daemons/reaper/light_reaper.py +0 -255
- rucio/web/rest/flaskapi/v1/tmp_dids.py +0 -115
- rucio-32.8.6.data/data/rucio/requirements.txt +0 -55
- rucio-32.8.6.data/scripts/rucio-light-reaper +0 -53
- rucio-32.8.6.dist-info/METADATA +0 -83
- rucio-32.8.6.dist-info/RECORD +0 -481
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/alembic.ini.template +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/alembic_offline.ini.template +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/globus-config.yml.template +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/mail_templates/rule_approval_request.tmpl +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/mail_templates/rule_approved_user.tmpl +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/mail_templates/rule_denied_user.tmpl +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/rse-accounts.cfg.template +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/rucio.cfg.atlas.client.template +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/rucio.cfg.template +0 -0
- {rucio-32.8.6.data → rucio-35.8.0.data}/data/rucio/etc/rucio_multi_vo.cfg.template +0 -0
- {rucio-32.8.6.dist-info → rucio-35.8.0.dist-info}/licenses/LICENSE +0 -0
- {rucio-32.8.6.dist-info → rucio-35.8.0.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -17,15 +16,12 @@ from json import dumps
|
|
|
17
16
|
|
|
18
17
|
from flask import Flask, Response, request
|
|
19
18
|
|
|
20
|
-
from rucio.
|
|
21
|
-
from rucio.
|
|
22
|
-
|
|
23
|
-
from rucio.
|
|
24
|
-
AccessDenied
|
|
25
|
-
from rucio.common.utils import render_json, APIEncoder
|
|
19
|
+
from rucio.common.exception import AccessDenied, InvalidObject, RuleNotFound, SubscriptionDuplicate, SubscriptionNotFound
|
|
20
|
+
from rucio.common.utils import APIEncoder, render_json
|
|
21
|
+
from rucio.gateway.rule import list_replication_rules
|
|
22
|
+
from rucio.gateway.subscription import add_subscription, get_subscription_by_id, list_subscription_rule_states, list_subscriptions, update_subscription
|
|
26
23
|
from rucio.web.rest.flaskapi.authenticated_bp import AuthenticatedBlueprint
|
|
27
|
-
from rucio.web.rest.flaskapi.v1.common import check_accept_header_wrapper_flask,
|
|
28
|
-
response_headers, generate_http_error_flask, ErrorHandlingMethodView, json_parameters, param_get
|
|
24
|
+
from rucio.web.rest.flaskapi.v1.common import ErrorHandlingMethodView, check_accept_header_wrapper_flask, generate_http_error_flask, json_parameters, param_get, response_headers, try_stream
|
|
29
25
|
|
|
30
26
|
|
|
31
27
|
class Subscription(ErrorHandlingMethodView):
|
|
@@ -151,7 +147,7 @@ class Subscription(ErrorHandlingMethodView):
|
|
|
151
147
|
- options
|
|
152
148
|
properties:
|
|
153
149
|
options:
|
|
154
|
-
description: The values for the new
|
|
150
|
+
description: The values for the new subscription.
|
|
155
151
|
type: object
|
|
156
152
|
properties:
|
|
157
153
|
filter:
|
|
@@ -168,7 +164,7 @@ class Subscription(ErrorHandlingMethodView):
|
|
|
168
164
|
type: string
|
|
169
165
|
format: date-time
|
|
170
166
|
retroactive:
|
|
171
|
-
description: If the retroactive is
|
|
167
|
+
description: If the retroactive is activated for a subscription.
|
|
172
168
|
type: boolean
|
|
173
169
|
priority:
|
|
174
170
|
description: The priority/policyid for the subscription. Stored as policyid.
|
|
@@ -238,7 +234,7 @@ class Subscription(ErrorHandlingMethodView):
|
|
|
238
234
|
- options
|
|
239
235
|
properties:
|
|
240
236
|
options:
|
|
241
|
-
description: The values for the new
|
|
237
|
+
description: The values for the new subscription.
|
|
242
238
|
type: object
|
|
243
239
|
required:
|
|
244
240
|
- filter
|
|
@@ -261,7 +257,7 @@ class Subscription(ErrorHandlingMethodView):
|
|
|
261
257
|
type: string
|
|
262
258
|
format: date-time
|
|
263
259
|
retroactive:
|
|
264
|
-
description: If the retroactive is
|
|
260
|
+
description: If the retroactive is activated for a subscription.
|
|
265
261
|
type: boolean
|
|
266
262
|
priority:
|
|
267
263
|
description: The priority/policyid for the subscription. Stored as policyid.
|
|
@@ -530,7 +526,7 @@ class States(ErrorHandlingMethodView):
|
|
|
530
526
|
description: Not acceptable
|
|
531
527
|
"""
|
|
532
528
|
def generate(vo):
|
|
533
|
-
for row in list_subscription_rule_states(account=account, vo=vo):
|
|
529
|
+
for row in list_subscription_rule_states(name=name, account=account, vo=vo):
|
|
534
530
|
yield dumps(row, cls=APIEncoder) + '\n'
|
|
535
531
|
|
|
536
532
|
return try_stream(generate(vo=request.environ.get('vo')))
|
|
@@ -622,17 +618,25 @@ def blueprint():
|
|
|
622
618
|
bp = AuthenticatedBlueprint('subscriptions', __name__, url_prefix='/subscriptions')
|
|
623
619
|
|
|
624
620
|
subscription_id_view = SubscriptionId.as_view('subscription_id')
|
|
625
|
-
bp.add_url_rule('/
|
|
621
|
+
bp.add_url_rule('/id/<subscription_id>', view_func=subscription_id_view, methods=['get', ])
|
|
626
622
|
states_view = States.as_view('states')
|
|
627
|
-
bp.add_url_rule('/<account>/<name>/
|
|
628
|
-
bp.add_url_rule('/<account>/
|
|
623
|
+
bp.add_url_rule('/<account>/<name>/rules/states', view_func=states_view, methods=['get', ])
|
|
624
|
+
bp.add_url_rule('/<account>/rules/states', view_func=states_view, methods=['get', ])
|
|
629
625
|
rules_view = Rules.as_view('rules')
|
|
630
|
-
bp.add_url_rule('/<account>/<name>/
|
|
626
|
+
bp.add_url_rule('/<account>/<name>/rules', view_func=rules_view, methods=['get', ])
|
|
631
627
|
subscription_view = Subscription.as_view('subscription')
|
|
632
628
|
bp.add_url_rule('/<account>/<name>', view_func=subscription_view, methods=['get', 'post', 'put'])
|
|
633
629
|
bp.add_url_rule('/<account>', view_func=subscription_view, methods=['get', ])
|
|
634
630
|
bp.add_url_rule('/', view_func=subscription_view, methods=['get', ])
|
|
635
631
|
subscription_name_view = SubscriptionName.as_view('subscription_name')
|
|
632
|
+
bp.add_url_rule('/name/<name>', view_func=subscription_name_view, methods=['get', ])
|
|
633
|
+
|
|
634
|
+
# Legacy url support
|
|
635
|
+
# TODO: Take out with Rucio 38
|
|
636
|
+
bp.add_url_rule('/Id/<subscription_id>', view_func=subscription_id_view, methods=['get', ])
|
|
637
|
+
bp.add_url_rule('/<account>/<name>/Rules/States', view_func=states_view, methods=['get', ])
|
|
638
|
+
bp.add_url_rule('/<account>/Rules/States', view_func=states_view, methods=['get', ])
|
|
639
|
+
bp.add_url_rule('/<account>/<name>/Rules', view_func=rules_view, methods=['get', ])
|
|
636
640
|
bp.add_url_rule('/Name/<name>', view_func=subscription_name_view, methods=['get', ])
|
|
637
641
|
|
|
638
642
|
bp.after_request(response_headers)
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -19,15 +18,16 @@ import datetime
|
|
|
19
18
|
import uuid
|
|
20
19
|
from typing import TYPE_CHECKING
|
|
21
20
|
|
|
22
|
-
from flask import
|
|
21
|
+
from flask import Blueprint, Flask, request
|
|
23
22
|
from werkzeug.datastructures import Headers
|
|
24
23
|
|
|
25
24
|
from rucio.core.trace import trace
|
|
26
|
-
from rucio.web.rest.flaskapi.v1.common import
|
|
25
|
+
from rucio.web.rest.flaskapi.v1.common import ErrorHandlingMethodView, json_parameters, response_headers
|
|
27
26
|
|
|
28
27
|
if TYPE_CHECKING:
|
|
29
28
|
from typing import Optional
|
|
30
|
-
|
|
29
|
+
|
|
30
|
+
from rucio.web.rest.flaskapi.v1.types import HeadersType
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class Trace(ErrorHandlingMethodView):
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from collections.abc import Sequence
|
|
16
|
+
from typing import Union
|
|
17
|
+
|
|
18
|
+
from werkzeug.datastructures import Headers
|
|
19
|
+
|
|
20
|
+
HeadersType = Union[Headers, dict[str, str], Sequence[tuple[str, str]]]
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -15,12 +14,11 @@
|
|
|
15
14
|
|
|
16
15
|
from flask import Flask, request
|
|
17
16
|
|
|
18
|
-
from rucio.
|
|
19
|
-
from rucio.common.exception import AccessDenied, AccountNotFound, Duplicate, VONotFound, UnsupportedOperation
|
|
17
|
+
from rucio.common.exception import AccessDenied, AccountNotFound, Duplicate, UnsupportedOperation, VONotFound
|
|
20
18
|
from rucio.common.utils import render_json
|
|
19
|
+
from rucio.gateway.vo import add_vo, list_vos, recover_vo_root_identity, update_vo
|
|
21
20
|
from rucio.web.rest.flaskapi.authenticated_bp import AuthenticatedBlueprint
|
|
22
|
-
from rucio.web.rest.flaskapi.v1.common import
|
|
23
|
-
try_stream, generate_http_error_flask, ErrorHandlingMethodView, json_parameters, param_get
|
|
21
|
+
from rucio.web.rest.flaskapi.v1.common import ErrorHandlingMethodView, check_accept_header_wrapper_flask, generate_http_error_flask, json_parameters, param_get, response_headers, try_stream
|
|
24
22
|
|
|
25
23
|
|
|
26
24
|
class VOs(ErrorHandlingMethodView):
|
rucio/web/rest/main.py
CHANGED
rucio/web/rest/metrics.py
CHANGED
rucio/web/rest/ping.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from flask import Flask
|
|
16
|
+
|
|
17
|
+
from rucio.common.logging import setup_logging
|
|
18
|
+
from rucio.web.rest.flaskapi.v1.ping import blueprint as metrics_blueprint
|
|
19
|
+
|
|
20
|
+
# Allow to run the /ping endpoint as a separate application on a separate PORT
|
|
21
|
+
|
|
22
|
+
setup_logging()
|
|
23
|
+
application = Flask(__name__)
|
|
24
|
+
application.register_blueprint(metrics_blueprint(standalone=True))
|
|
25
|
+
|
|
26
|
+
if __name__ == '__main__':
|
|
27
|
+
application.run()
|
|
@@ -12,7 +12,7 @@ ldap_host = ldap-host.domain.name
|
|
|
12
12
|
baseDN = dc=foo,dc=bar,dc=domain,dc=
|
|
13
13
|
searchFilter = (objectClass=OpenLDAPperson)
|
|
14
14
|
|
|
15
|
-
# set as DEFAULT to use
|
|
15
|
+
# set as DEFAULT to use anonymous bind
|
|
16
16
|
username = DEFAULT
|
|
17
17
|
# Leave blank for prompt
|
|
18
18
|
password =
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.9
|
|
3
|
+
# by the following command:
|
|
4
|
+
#
|
|
5
|
+
# pip-compile requirements.server.in
|
|
6
|
+
#
|
|
7
|
+
aiohttp==3.9.5
|
|
8
|
+
# via geoip2
|
|
9
|
+
aiosignal==1.3.1
|
|
10
|
+
# via aiohttp
|
|
11
|
+
alembic==1.13.2
|
|
12
|
+
# via -r requirements.server.in
|
|
13
|
+
annotated-types==0.7.0
|
|
14
|
+
# via pydantic
|
|
15
|
+
argcomplete==3.4.0
|
|
16
|
+
# via -r requirements.server.in
|
|
17
|
+
async-timeout==4.0.3
|
|
18
|
+
# via
|
|
19
|
+
# aiohttp
|
|
20
|
+
# redis
|
|
21
|
+
attrs==23.2.0
|
|
22
|
+
# via
|
|
23
|
+
# aiohttp
|
|
24
|
+
# jsonschema
|
|
25
|
+
# referencing
|
|
26
|
+
bcrypt==4.1.3
|
|
27
|
+
# via paramiko
|
|
28
|
+
blinker==1.8.2
|
|
29
|
+
# via flask
|
|
30
|
+
boto3==1.34.142
|
|
31
|
+
# via -r requirements.server.in
|
|
32
|
+
botocore==1.34.143
|
|
33
|
+
# via
|
|
34
|
+
# boto3
|
|
35
|
+
# s3transfer
|
|
36
|
+
cachetools==5.3.3
|
|
37
|
+
# via google-auth
|
|
38
|
+
certifi==2024.7.4
|
|
39
|
+
# via requests
|
|
40
|
+
cffi==1.16.0
|
|
41
|
+
# via
|
|
42
|
+
# cryptography
|
|
43
|
+
# pynacl
|
|
44
|
+
charset-normalizer==3.3.2
|
|
45
|
+
# via requests
|
|
46
|
+
click==8.1.7
|
|
47
|
+
# via flask
|
|
48
|
+
cryptography==43.0.1
|
|
49
|
+
# via
|
|
50
|
+
# globus-sdk
|
|
51
|
+
# oic
|
|
52
|
+
# paramiko
|
|
53
|
+
# pyjwt
|
|
54
|
+
# pyspnego
|
|
55
|
+
# requests-kerberos
|
|
56
|
+
cx-oracle==8.3.0
|
|
57
|
+
# via -r requirements.server.in
|
|
58
|
+
decorator==5.1.1
|
|
59
|
+
# via
|
|
60
|
+
# dogpile-cache
|
|
61
|
+
# gssapi
|
|
62
|
+
defusedxml==0.7.1
|
|
63
|
+
# via oic
|
|
64
|
+
dnspython==2.6.1
|
|
65
|
+
# via pymongo
|
|
66
|
+
docopt==0.6.2
|
|
67
|
+
# via stomp-py
|
|
68
|
+
dogpile-cache==1.2.2
|
|
69
|
+
# via -r requirements.server.in
|
|
70
|
+
flask==3.0.3
|
|
71
|
+
# via -r requirements.server.in
|
|
72
|
+
frozenlist==1.4.1
|
|
73
|
+
# via
|
|
74
|
+
# aiohttp
|
|
75
|
+
# aiosignal
|
|
76
|
+
future==1.0.0
|
|
77
|
+
# via pyjwkest
|
|
78
|
+
geoip2==4.8.0
|
|
79
|
+
# via -r requirements.server.in
|
|
80
|
+
globus-sdk==3.41.0
|
|
81
|
+
# via -r requirements.server.in
|
|
82
|
+
google-auth==2.32.0
|
|
83
|
+
# via -r requirements.server.in
|
|
84
|
+
greenlet==3.0.3
|
|
85
|
+
# via sqlalchemy
|
|
86
|
+
gssapi==1.8.3
|
|
87
|
+
# via pyspnego
|
|
88
|
+
idna==3.7
|
|
89
|
+
# via
|
|
90
|
+
# requests
|
|
91
|
+
# yarl
|
|
92
|
+
importlib-metadata==8.0.0
|
|
93
|
+
# via flask
|
|
94
|
+
isodate==0.6.1
|
|
95
|
+
# via python3-saml
|
|
96
|
+
itsdangerous==2.2.0
|
|
97
|
+
# via flask
|
|
98
|
+
jinja2==3.1.4
|
|
99
|
+
# via flask
|
|
100
|
+
jmespath==1.0.1
|
|
101
|
+
# via
|
|
102
|
+
# boto3
|
|
103
|
+
# botocore
|
|
104
|
+
jsonschema==4.23.0
|
|
105
|
+
# via -r requirements.server.in
|
|
106
|
+
jsonschema-specifications==2023.12.1
|
|
107
|
+
# via jsonschema
|
|
108
|
+
kerberos==1.3.1
|
|
109
|
+
# via -r requirements.server.in
|
|
110
|
+
krb5==0.5.1
|
|
111
|
+
# via pyspnego
|
|
112
|
+
libtorrent==2.0.9
|
|
113
|
+
# via -r requirements.server.in
|
|
114
|
+
lxml==5.2.2
|
|
115
|
+
# via
|
|
116
|
+
# python3-saml
|
|
117
|
+
# xmlsec
|
|
118
|
+
mako==1.3.5
|
|
119
|
+
# via
|
|
120
|
+
# alembic
|
|
121
|
+
# oic
|
|
122
|
+
markupsafe==2.1.5
|
|
123
|
+
# via
|
|
124
|
+
# jinja2
|
|
125
|
+
# mako
|
|
126
|
+
# werkzeug
|
|
127
|
+
maxminddb==2.6.2
|
|
128
|
+
# via geoip2
|
|
129
|
+
multidict==6.0.5
|
|
130
|
+
# via
|
|
131
|
+
# aiohttp
|
|
132
|
+
# yarl
|
|
133
|
+
oic==1.7.0
|
|
134
|
+
# via -r requirements.server.in
|
|
135
|
+
packaging==24.1
|
|
136
|
+
# via qbittorrent-api
|
|
137
|
+
paramiko==3.4.1
|
|
138
|
+
# via -r requirements.server.in
|
|
139
|
+
pbr==6.0.0
|
|
140
|
+
# via stevedore
|
|
141
|
+
prometheus-client==0.20.0
|
|
142
|
+
# via -r requirements.server.in
|
|
143
|
+
psycopg2-binary==2.9.9
|
|
144
|
+
# via -r requirements.server.in
|
|
145
|
+
pyasn1==0.6.0
|
|
146
|
+
# via
|
|
147
|
+
# pyasn1-modules
|
|
148
|
+
# rsa
|
|
149
|
+
pyasn1-modules==0.4.0
|
|
150
|
+
# via google-auth
|
|
151
|
+
pycparser==2.22
|
|
152
|
+
# via cffi
|
|
153
|
+
pycryptodomex==3.20.0
|
|
154
|
+
# via
|
|
155
|
+
# oic
|
|
156
|
+
# pyjwkest
|
|
157
|
+
pydantic==2.8.2
|
|
158
|
+
# via pydantic-settings
|
|
159
|
+
pydantic-core==2.20.1
|
|
160
|
+
# via pydantic
|
|
161
|
+
pydantic-settings==2.3.4
|
|
162
|
+
# via oic
|
|
163
|
+
pyjwkest==1.4.2
|
|
164
|
+
# via oic
|
|
165
|
+
pyjwt[crypto]==2.8.0
|
|
166
|
+
# via globus-sdk
|
|
167
|
+
pykerberos==1.2.4
|
|
168
|
+
# via -r requirements.server.in
|
|
169
|
+
pymemcache==4.0.0
|
|
170
|
+
# via -r requirements.server.in
|
|
171
|
+
pymongo==4.8.0
|
|
172
|
+
# via -r requirements.server.in
|
|
173
|
+
pymysql==1.1.1
|
|
174
|
+
# via -r requirements.server.in
|
|
175
|
+
pynacl==1.5.0
|
|
176
|
+
# via paramiko
|
|
177
|
+
pyspnego[kerberos]==0.11.0
|
|
178
|
+
# via requests-kerberos
|
|
179
|
+
python-dateutil==2.9.0.post0
|
|
180
|
+
# via
|
|
181
|
+
# -r requirements.server.in
|
|
182
|
+
# botocore
|
|
183
|
+
python-dotenv==1.0.1
|
|
184
|
+
# via pydantic-settings
|
|
185
|
+
python-magic==0.4.27
|
|
186
|
+
# via -r requirements.server.in
|
|
187
|
+
python-swiftclient==4.6.0
|
|
188
|
+
# via -r requirements.server.in
|
|
189
|
+
python3-saml==1.16.0
|
|
190
|
+
# via -r requirements.server.in
|
|
191
|
+
pyyaml==6.0.1
|
|
192
|
+
# via -r requirements.server.in
|
|
193
|
+
qbittorrent-api==2023.11.57
|
|
194
|
+
# via -r requirements.server.in
|
|
195
|
+
redis==5.0.7
|
|
196
|
+
# via -r requirements.server.in
|
|
197
|
+
referencing==0.35.1
|
|
198
|
+
# via
|
|
199
|
+
# jsonschema
|
|
200
|
+
# jsonschema-specifications
|
|
201
|
+
requests==2.32.3
|
|
202
|
+
# via
|
|
203
|
+
# -r requirements.server.in
|
|
204
|
+
# geoip2
|
|
205
|
+
# globus-sdk
|
|
206
|
+
# oic
|
|
207
|
+
# pyjwkest
|
|
208
|
+
# python-swiftclient
|
|
209
|
+
# qbittorrent-api
|
|
210
|
+
# requests-kerberos
|
|
211
|
+
requests-kerberos==0.15.0
|
|
212
|
+
# via -r requirements.server.in
|
|
213
|
+
rpds-py==0.19.0
|
|
214
|
+
# via
|
|
215
|
+
# jsonschema
|
|
216
|
+
# referencing
|
|
217
|
+
rsa==4.9
|
|
218
|
+
# via google-auth
|
|
219
|
+
s3transfer==0.10.2
|
|
220
|
+
# via boto3
|
|
221
|
+
six==1.16.0
|
|
222
|
+
# via
|
|
223
|
+
# isodate
|
|
224
|
+
# pyjwkest
|
|
225
|
+
# python-dateutil
|
|
226
|
+
sqlalchemy==2.0.31
|
|
227
|
+
# via
|
|
228
|
+
# -r requirements.server.in
|
|
229
|
+
# alembic
|
|
230
|
+
statsd==4.0.1
|
|
231
|
+
# via -r requirements.server.in
|
|
232
|
+
stevedore==5.2.0
|
|
233
|
+
# via dogpile-cache
|
|
234
|
+
stomp-py==8.1.2
|
|
235
|
+
# via -r requirements.server.in
|
|
236
|
+
tabulate==0.9.0
|
|
237
|
+
# via -r requirements.server.in
|
|
238
|
+
typing-extensions==4.12.2
|
|
239
|
+
# via
|
|
240
|
+
# alembic
|
|
241
|
+
# dogpile-cache
|
|
242
|
+
# globus-sdk
|
|
243
|
+
# pydantic
|
|
244
|
+
# pydantic-core
|
|
245
|
+
# sqlalchemy
|
|
246
|
+
urllib3==1.26.19
|
|
247
|
+
# via
|
|
248
|
+
# -r requirements.server.in
|
|
249
|
+
# botocore
|
|
250
|
+
# qbittorrent-api
|
|
251
|
+
# requests
|
|
252
|
+
websocket-client==1.8.0
|
|
253
|
+
# via stomp-py
|
|
254
|
+
werkzeug==3.0.3
|
|
255
|
+
# via
|
|
256
|
+
# -r requirements.server.in
|
|
257
|
+
# flask
|
|
258
|
+
xmlsec==1.3.13
|
|
259
|
+
# via
|
|
260
|
+
# -r requirements.server.in
|
|
261
|
+
# python3-saml
|
|
262
|
+
yarl==1.9.4
|
|
263
|
+
# via aiohttp
|
|
264
|
+
zipp==3.19.2
|
|
265
|
+
# via importlib-metadata
|
|
266
|
+
|
|
267
|
+
# The following packages are considered to be unsafe in a requirements file:
|
|
268
|
+
# setuptools
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
2
|
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
4
3
|
#
|
|
5
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -20,13 +19,14 @@
|
|
|
20
19
|
# Verify for default SQLite:
|
|
21
20
|
# for i in `sqlite3 /tmp/rucio.db ".tables"`; do echo $i:; sqlite3 /tmp/rucio.db "select * from $i"; echo; done
|
|
22
21
|
|
|
23
|
-
import sys
|
|
24
22
|
import os.path
|
|
23
|
+
import sys
|
|
24
|
+
|
|
25
25
|
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
26
26
|
sys.path.append(base_path)
|
|
27
27
|
os.chdir(base_path)
|
|
28
28
|
|
|
29
|
-
from rucio.db.sqla.util import
|
|
29
|
+
from rucio.db.sqla.util import build_database, create_base_vo, create_root_account # noqa: E402
|
|
30
30
|
|
|
31
31
|
if __name__ == '__main__':
|
|
32
32
|
build_database()
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
3
2
|
#
|
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -14,12 +13,11 @@
|
|
|
14
13
|
# limitations under the License.
|
|
15
14
|
|
|
16
15
|
import argparse
|
|
16
|
+
import json
|
|
17
17
|
import logging
|
|
18
|
-
from pathlib import Path
|
|
19
|
-
|
|
20
18
|
import os
|
|
21
|
-
import json
|
|
22
19
|
import sys
|
|
20
|
+
from pathlib import Path
|
|
23
21
|
|
|
24
22
|
try:
|
|
25
23
|
import yaml
|
|
@@ -27,7 +25,6 @@ except ImportError:
|
|
|
27
25
|
yaml = None
|
|
28
26
|
import configparser
|
|
29
27
|
|
|
30
|
-
|
|
31
28
|
# Multi-word sections used in kubernetes are slightly different from what rucio expects.
|
|
32
29
|
# Usually, it's just a .replace('-', '_'), but not for hermes2, which doesn't follow any convention.
|
|
33
30
|
multi_word_sections = {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
2
|
# Copyright European Organization for Nuclear Research (CERN) since 2012
|
|
4
3
|
#
|
|
5
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -14,15 +13,16 @@
|
|
|
14
13
|
# See the License for the specific language governing permissions and
|
|
15
14
|
# limitations under the License.
|
|
16
15
|
|
|
17
|
-
import sys
|
|
18
16
|
import os.path
|
|
17
|
+
import sys
|
|
18
|
+
|
|
19
19
|
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
20
20
|
sys.path.append(base_path)
|
|
21
21
|
os.chdir(base_path)
|
|
22
22
|
|
|
23
23
|
from argparse import ArgumentParser # noqa: E402
|
|
24
24
|
|
|
25
|
-
from rucio.db.sqla.util import build_database,
|
|
25
|
+
from rucio.db.sqla.util import build_database, create_base_vo, create_root_account, destroy_database, drop_everything # noqa: E402
|
|
26
26
|
|
|
27
27
|
if __name__ == '__main__':
|
|
28
28
|
|