rucio 37.0.0rc1__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 +17 -0
- rucio/alembicrevision.py +15 -0
- rucio/cli/__init__.py +14 -0
- rucio/cli/account.py +216 -0
- rucio/cli/bin_legacy/__init__.py +13 -0
- rucio/cli/bin_legacy/rucio.py +2825 -0
- rucio/cli/bin_legacy/rucio_admin.py +2500 -0
- rucio/cli/command.py +272 -0
- rucio/cli/config.py +72 -0
- rucio/cli/did.py +191 -0
- rucio/cli/download.py +128 -0
- rucio/cli/lifetime_exception.py +33 -0
- rucio/cli/replica.py +162 -0
- rucio/cli/rse.py +293 -0
- rucio/cli/rule.py +158 -0
- rucio/cli/scope.py +40 -0
- rucio/cli/subscription.py +73 -0
- rucio/cli/upload.py +60 -0
- rucio/cli/utils.py +226 -0
- rucio/client/__init__.py +15 -0
- rucio/client/accountclient.py +432 -0
- rucio/client/accountlimitclient.py +183 -0
- rucio/client/baseclient.py +983 -0
- rucio/client/client.py +120 -0
- rucio/client/configclient.py +126 -0
- rucio/client/credentialclient.py +59 -0
- rucio/client/didclient.py +868 -0
- rucio/client/diracclient.py +56 -0
- rucio/client/downloadclient.py +1783 -0
- rucio/client/exportclient.py +44 -0
- rucio/client/fileclient.py +50 -0
- rucio/client/importclient.py +42 -0
- rucio/client/lifetimeclient.py +90 -0
- rucio/client/lockclient.py +109 -0
- rucio/client/metaconventionsclient.py +140 -0
- rucio/client/pingclient.py +44 -0
- rucio/client/replicaclient.py +452 -0
- rucio/client/requestclient.py +125 -0
- rucio/client/richclient.py +317 -0
- rucio/client/rseclient.py +746 -0
- rucio/client/ruleclient.py +294 -0
- rucio/client/scopeclient.py +90 -0
- rucio/client/subscriptionclient.py +173 -0
- rucio/client/touchclient.py +82 -0
- rucio/client/uploadclient.py +969 -0
- rucio/common/__init__.py +13 -0
- rucio/common/bittorrent.py +234 -0
- rucio/common/cache.py +111 -0
- rucio/common/checksum.py +168 -0
- rucio/common/client.py +122 -0
- rucio/common/config.py +788 -0
- rucio/common/constants.py +217 -0
- rucio/common/constraints.py +17 -0
- rucio/common/didtype.py +237 -0
- rucio/common/dumper/__init__.py +342 -0
- rucio/common/dumper/consistency.py +497 -0
- rucio/common/dumper/data_models.py +362 -0
- rucio/common/dumper/path_parsing.py +75 -0
- rucio/common/exception.py +1208 -0
- rucio/common/extra.py +31 -0
- rucio/common/logging.py +420 -0
- rucio/common/pcache.py +1409 -0
- rucio/common/plugins.py +185 -0
- rucio/common/policy.py +93 -0
- rucio/common/schema/__init__.py +200 -0
- rucio/common/schema/generic.py +416 -0
- rucio/common/schema/generic_multi_vo.py +395 -0
- rucio/common/stomp_utils.py +423 -0
- rucio/common/stopwatch.py +55 -0
- rucio/common/test_rucio_server.py +154 -0
- rucio/common/types.py +483 -0
- rucio/common/utils.py +1688 -0
- rucio/core/__init__.py +13 -0
- rucio/core/account.py +496 -0
- rucio/core/account_counter.py +236 -0
- rucio/core/account_limit.py +425 -0
- rucio/core/authentication.py +620 -0
- rucio/core/config.py +437 -0
- rucio/core/credential.py +224 -0
- rucio/core/did.py +3004 -0
- rucio/core/did_meta_plugins/__init__.py +252 -0
- rucio/core/did_meta_plugins/did_column_meta.py +331 -0
- rucio/core/did_meta_plugins/did_meta_plugin_interface.py +165 -0
- rucio/core/did_meta_plugins/elasticsearch_meta.py +407 -0
- rucio/core/did_meta_plugins/filter_engine.py +672 -0
- rucio/core/did_meta_plugins/json_meta.py +240 -0
- rucio/core/did_meta_plugins/mongo_meta.py +229 -0
- rucio/core/did_meta_plugins/postgres_meta.py +352 -0
- rucio/core/dirac.py +237 -0
- rucio/core/distance.py +187 -0
- rucio/core/exporter.py +59 -0
- rucio/core/heartbeat.py +363 -0
- rucio/core/identity.py +301 -0
- rucio/core/importer.py +260 -0
- rucio/core/lifetime_exception.py +377 -0
- rucio/core/lock.py +577 -0
- rucio/core/message.py +288 -0
- rucio/core/meta_conventions.py +203 -0
- rucio/core/monitor.py +448 -0
- rucio/core/naming_convention.py +195 -0
- rucio/core/nongrid_trace.py +136 -0
- rucio/core/oidc.py +1463 -0
- rucio/core/permission/__init__.py +161 -0
- rucio/core/permission/generic.py +1124 -0
- rucio/core/permission/generic_multi_vo.py +1144 -0
- rucio/core/quarantined_replica.py +224 -0
- rucio/core/replica.py +4483 -0
- rucio/core/replica_sorter.py +362 -0
- rucio/core/request.py +3091 -0
- rucio/core/rse.py +2079 -0
- rucio/core/rse_counter.py +185 -0
- rucio/core/rse_expression_parser.py +459 -0
- rucio/core/rse_selector.py +304 -0
- rucio/core/rule.py +4484 -0
- rucio/core/rule_grouping.py +1620 -0
- rucio/core/scope.py +181 -0
- rucio/core/subscription.py +362 -0
- rucio/core/topology.py +490 -0
- rucio/core/trace.py +375 -0
- rucio/core/transfer.py +1531 -0
- rucio/core/vo.py +169 -0
- rucio/core/volatile_replica.py +151 -0
- rucio/daemons/__init__.py +13 -0
- rucio/daemons/abacus/__init__.py +13 -0
- rucio/daemons/abacus/account.py +116 -0
- rucio/daemons/abacus/collection_replica.py +124 -0
- rucio/daemons/abacus/rse.py +117 -0
- rucio/daemons/atropos/__init__.py +13 -0
- rucio/daemons/atropos/atropos.py +242 -0
- rucio/daemons/auditor/__init__.py +289 -0
- rucio/daemons/auditor/hdfs.py +97 -0
- rucio/daemons/auditor/srmdumps.py +355 -0
- rucio/daemons/automatix/__init__.py +13 -0
- rucio/daemons/automatix/automatix.py +304 -0
- rucio/daemons/badreplicas/__init__.py +13 -0
- rucio/daemons/badreplicas/minos.py +322 -0
- rucio/daemons/badreplicas/minos_temporary_expiration.py +171 -0
- rucio/daemons/badreplicas/necromancer.py +196 -0
- rucio/daemons/bb8/__init__.py +13 -0
- rucio/daemons/bb8/bb8.py +353 -0
- rucio/daemons/bb8/common.py +759 -0
- rucio/daemons/bb8/nuclei_background_rebalance.py +153 -0
- rucio/daemons/bb8/t2_background_rebalance.py +153 -0
- rucio/daemons/cache/__init__.py +13 -0
- rucio/daemons/cache/consumer.py +133 -0
- rucio/daemons/common.py +405 -0
- rucio/daemons/conveyor/__init__.py +13 -0
- rucio/daemons/conveyor/common.py +562 -0
- rucio/daemons/conveyor/finisher.py +529 -0
- rucio/daemons/conveyor/poller.py +394 -0
- rucio/daemons/conveyor/preparer.py +205 -0
- rucio/daemons/conveyor/receiver.py +179 -0
- rucio/daemons/conveyor/stager.py +133 -0
- rucio/daemons/conveyor/submitter.py +403 -0
- rucio/daemons/conveyor/throttler.py +532 -0
- rucio/daemons/follower/__init__.py +13 -0
- rucio/daemons/follower/follower.py +101 -0
- rucio/daemons/hermes/__init__.py +13 -0
- rucio/daemons/hermes/hermes.py +534 -0
- rucio/daemons/judge/__init__.py +13 -0
- rucio/daemons/judge/cleaner.py +159 -0
- rucio/daemons/judge/evaluator.py +185 -0
- rucio/daemons/judge/injector.py +162 -0
- rucio/daemons/judge/repairer.py +154 -0
- rucio/daemons/oauthmanager/__init__.py +13 -0
- rucio/daemons/oauthmanager/oauthmanager.py +198 -0
- rucio/daemons/reaper/__init__.py +13 -0
- rucio/daemons/reaper/dark_reaper.py +282 -0
- rucio/daemons/reaper/reaper.py +739 -0
- rucio/daemons/replicarecoverer/__init__.py +13 -0
- rucio/daemons/replicarecoverer/suspicious_replica_recoverer.py +626 -0
- rucio/daemons/rsedecommissioner/__init__.py +13 -0
- 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 +452 -0
- rucio/daemons/rsedecommissioner/profiles/types.py +93 -0
- rucio/daemons/rsedecommissioner/rse_decommissioner.py +280 -0
- rucio/daemons/storage/__init__.py +13 -0
- rucio/daemons/storage/consistency/__init__.py +13 -0
- rucio/daemons/storage/consistency/actions.py +848 -0
- rucio/daemons/tracer/__init__.py +13 -0
- rucio/daemons/tracer/kronos.py +511 -0
- rucio/daemons/transmogrifier/__init__.py +13 -0
- rucio/daemons/transmogrifier/transmogrifier.py +762 -0
- rucio/daemons/undertaker/__init__.py +13 -0
- rucio/daemons/undertaker/undertaker.py +137 -0
- rucio/db/__init__.py +13 -0
- rucio/db/sqla/__init__.py +52 -0
- rucio/db/sqla/constants.py +206 -0
- rucio/db/sqla/migrate_repo/__init__.py +13 -0
- rucio/db/sqla/migrate_repo/env.py +110 -0
- rucio/db/sqla/migrate_repo/versions/01eaf73ab656_add_new_rule_notification_state_progress.py +70 -0
- rucio/db/sqla/migrate_repo/versions/0437a40dbfd1_add_eol_at_in_rules.py +47 -0
- rucio/db/sqla/migrate_repo/versions/0f1adb7a599a_create_transfer_hops_table.py +59 -0
- rucio/db/sqla/migrate_repo/versions/102efcf145f4_added_stuck_at_column_to_rules.py +43 -0
- rucio/db/sqla/migrate_repo/versions/13d4f70c66a9_introduce_transfer_limits.py +91 -0
- rucio/db/sqla/migrate_repo/versions/140fef722e91_cleanup_distances_table.py +76 -0
- rucio/db/sqla/migrate_repo/versions/14ec5aeb64cf_add_request_external_host.py +43 -0
- rucio/db/sqla/migrate_repo/versions/156fb5b5a14_add_request_type_to_requests_idx.py +50 -0
- rucio/db/sqla/migrate_repo/versions/1677d4d803c8_split_rse_availability_into_multiple.py +68 -0
- rucio/db/sqla/migrate_repo/versions/16a0aca82e12_create_index_on_table_replicas_path.py +40 -0
- rucio/db/sqla/migrate_repo/versions/1803333ac20f_adding_provenance_and_phys_group.py +45 -0
- rucio/db/sqla/migrate_repo/versions/1a29d6a9504c_add_didtype_chck_to_requests.py +60 -0
- rucio/db/sqla/migrate_repo/versions/1a80adff031a_create_index_on_rules_hist_recent.py +40 -0
- rucio/db/sqla/migrate_repo/versions/1c45d9730ca6_increase_identity_length.py +140 -0
- rucio/db/sqla/migrate_repo/versions/1d1215494e95_add_quarantined_replicas_table.py +73 -0
- rucio/db/sqla/migrate_repo/versions/1d96f484df21_asynchronous_rules_and_rule_approval.py +74 -0
- rucio/db/sqla/migrate_repo/versions/1f46c5f240ac_add_bytes_column_to_bad_replicas.py +43 -0
- rucio/db/sqla/migrate_repo/versions/1fc15ab60d43_add_message_history_table.py +50 -0
- rucio/db/sqla/migrate_repo/versions/2190e703eb6e_move_rse_settings_to_rse_attributes.py +134 -0
- rucio/db/sqla/migrate_repo/versions/21d6b9dc9961_add_mismatch_scheme_state_to_requests.py +64 -0
- rucio/db/sqla/migrate_repo/versions/22cf51430c78_add_availability_column_to_table_rses.py +39 -0
- rucio/db/sqla/migrate_repo/versions/22d887e4ec0a_create_sources_table.py +64 -0
- rucio/db/sqla/migrate_repo/versions/25821a8a45a3_remove_unique_constraint_on_requests.py +51 -0
- rucio/db/sqla/migrate_repo/versions/25fc855625cf_added_unique_constraint_to_rules.py +41 -0
- rucio/db/sqla/migrate_repo/versions/269fee20dee9_add_repair_cnt_to_locks.py +43 -0
- rucio/db/sqla/migrate_repo/versions/271a46ea6244_add_ignore_availability_column_to_rules.py +44 -0
- rucio/db/sqla/migrate_repo/versions/277b5fbb41d3_switch_heartbeats_executable.py +53 -0
- rucio/db/sqla/migrate_repo/versions/27e3a68927fb_remove_replicas_tombstone_and_replicas_.py +38 -0
- rucio/db/sqla/migrate_repo/versions/2854cd9e168_added_rule_id_column.py +47 -0
- rucio/db/sqla/migrate_repo/versions/295289b5a800_processed_by_and__at_in_requests.py +45 -0
- rucio/db/sqla/migrate_repo/versions/2962ece31cf4_add_nbaccesses_column_in_the_did_table.py +45 -0
- rucio/db/sqla/migrate_repo/versions/2af3291ec4c_added_replicas_history_table.py +57 -0
- rucio/db/sqla/migrate_repo/versions/2b69addda658_add_columns_for_third_party_copy_read_.py +45 -0
- rucio/db/sqla/migrate_repo/versions/2b8e7bcb4783_add_config_table.py +69 -0
- rucio/db/sqla/migrate_repo/versions/2ba5229cb54c_add_submitted_at_to_requests_table.py +43 -0
- rucio/db/sqla/migrate_repo/versions/2cbee484dcf9_added_column_volume_to_rse_transfer_.py +42 -0
- rucio/db/sqla/migrate_repo/versions/2edee4a83846_add_source_to_requests_and_requests_.py +47 -0
- rucio/db/sqla/migrate_repo/versions/2eef46be23d4_change_tokens_pk.py +46 -0
- rucio/db/sqla/migrate_repo/versions/2f648fc909f3_index_in_rule_history_on_scope_name.py +40 -0
- rucio/db/sqla/migrate_repo/versions/3082b8cef557_add_naming_convention_table_and_closed_.py +67 -0
- rucio/db/sqla/migrate_repo/versions/30d5206e9cad_increase_oauthrequest_redirect_msg_.py +37 -0
- rucio/db/sqla/migrate_repo/versions/30fa38b6434e_add_index_on_service_column_in_the_message_table.py +44 -0
- rucio/db/sqla/migrate_repo/versions/3152492b110b_added_staging_area_column.py +77 -0
- rucio/db/sqla/migrate_repo/versions/32c7d2783f7e_create_bad_replicas_table.py +60 -0
- rucio/db/sqla/migrate_repo/versions/3345511706b8_replicas_table_pk_definition_is_in_.py +72 -0
- rucio/db/sqla/migrate_repo/versions/35ef10d1e11b_change_index_on_table_requests.py +42 -0
- rucio/db/sqla/migrate_repo/versions/379a19b5332d_create_rse_limits_table.py +65 -0
- rucio/db/sqla/migrate_repo/versions/384b96aa0f60_created_rule_history_tables.py +133 -0
- rucio/db/sqla/migrate_repo/versions/3ac1660a1a72_extend_distance_table.py +55 -0
- rucio/db/sqla/migrate_repo/versions/3ad36e2268b0_create_collection_replicas_updates_table.py +76 -0
- rucio/db/sqla/migrate_repo/versions/3c9df354071b_extend_waiting_request_state.py +60 -0
- rucio/db/sqla/migrate_repo/versions/3d9813fab443_add_a_new_state_lost_in_badfilesstatus.py +44 -0
- rucio/db/sqla/migrate_repo/versions/40ad39ce3160_add_transferred_at_to_requests_table.py +43 -0
- rucio/db/sqla/migrate_repo/versions/4207be2fd914_add_notification_column_to_rules.py +64 -0
- rucio/db/sqla/migrate_repo/versions/42db2617c364_create_index_on_requests_external_id.py +40 -0
- rucio/db/sqla/migrate_repo/versions/436827b13f82_added_column_activity_to_table_requests.py +43 -0
- rucio/db/sqla/migrate_repo/versions/44278720f774_update_requests_typ_sta_upd_idx_index.py +44 -0
- rucio/db/sqla/migrate_repo/versions/45378a1e76a8_create_collection_replica_table.py +78 -0
- rucio/db/sqla/migrate_repo/versions/469d262be19_removing_created_at_index.py +41 -0
- rucio/db/sqla/migrate_repo/versions/4783c1f49cb4_create_distance_table.py +59 -0
- rucio/db/sqla/migrate_repo/versions/49a21b4d4357_create_index_on_table_tokens.py +44 -0
- rucio/db/sqla/migrate_repo/versions/4a2cbedda8b9_add_source_replica_expression_column_to_.py +43 -0
- rucio/db/sqla/migrate_repo/versions/4a7182d9578b_added_bytes_length_accessed_at_columns.py +49 -0
- rucio/db/sqla/migrate_repo/versions/4bab9edd01fc_create_index_on_requests_rule_id.py +40 -0
- rucio/db/sqla/migrate_repo/versions/4c3a4acfe006_new_attr_account_table.py +63 -0
- rucio/db/sqla/migrate_repo/versions/4cf0a2e127d4_adding_transient_metadata.py +43 -0
- 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 +45 -0
- rucio/db/sqla/migrate_repo/versions/52153819589c_add_rse_id_to_replicas_table.py +43 -0
- rucio/db/sqla/migrate_repo/versions/52fd9f4916fa_added_activity_to_rules.py +43 -0
- rucio/db/sqla/migrate_repo/versions/53b479c3cb0f_fix_did_meta_table_missing_updated_at_.py +45 -0
- rucio/db/sqla/migrate_repo/versions/5673b4b6e843_add_wfms_metadata_to_rule_tables.py +47 -0
- rucio/db/sqla/migrate_repo/versions/575767d9f89_added_source_history_table.py +58 -0
- rucio/db/sqla/migrate_repo/versions/58bff7008037_add_started_at_to_requests.py +45 -0
- rucio/db/sqla/migrate_repo/versions/58c8b78301ab_rename_callback_to_message.py +106 -0
- rucio/db/sqla/migrate_repo/versions/5f139f77382a_added_child_rule_id_column.py +55 -0
- rucio/db/sqla/migrate_repo/versions/688ef1840840_adding_did_meta_table.py +50 -0
- rucio/db/sqla/migrate_repo/versions/6e572a9bfbf3_add_new_split_container_column_to_rules.py +47 -0
- rucio/db/sqla/migrate_repo/versions/70587619328_add_comment_column_for_subscriptions.py +43 -0
- rucio/db/sqla/migrate_repo/versions/739064d31565_remove_history_table_pks.py +41 -0
- rucio/db/sqla/migrate_repo/versions/7541902bf173_add_didsfollowed_and_followevents_table.py +91 -0
- rucio/db/sqla/migrate_repo/versions/7ec22226cdbf_new_replica_state_for_temporary_.py +72 -0
- rucio/db/sqla/migrate_repo/versions/810a41685bc1_added_columns_rse_transfer_limits.py +49 -0
- rucio/db/sqla/migrate_repo/versions/83f991c63a93_correct_rse_expression_length.py +43 -0
- rucio/db/sqla/migrate_repo/versions/8523998e2e76_increase_size_of_extended_attributes_.py +43 -0
- rucio/db/sqla/migrate_repo/versions/8ea9122275b1_adding_missing_function_based_indices.py +53 -0
- rucio/db/sqla/migrate_repo/versions/90f47792bb76_add_clob_payload_to_messages.py +45 -0
- rucio/db/sqla/migrate_repo/versions/914b8f02df38_new_table_for_lifetime_model_exceptions.py +68 -0
- rucio/db/sqla/migrate_repo/versions/94a5961ddbf2_add_estimator_columns.py +45 -0
- rucio/db/sqla/migrate_repo/versions/9a1b149a2044_add_saml_identity_type.py +94 -0
- rucio/db/sqla/migrate_repo/versions/9a45bc4ea66d_add_vp_table.py +54 -0
- rucio/db/sqla/migrate_repo/versions/9eb936a81eb1_true_is_true.py +72 -0
- 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 +76 -0
- rucio/db/sqla/migrate_repo/versions/a193a275255c_add_status_column_in_messages.py +47 -0
- rucio/db/sqla/migrate_repo/versions/a5f6f6e928a7_1_7_0.py +121 -0
- rucio/db/sqla/migrate_repo/versions/a616581ee47_added_columns_to_table_requests.py +59 -0
- rucio/db/sqla/migrate_repo/versions/a6eb23955c28_state_idx_non_functional.py +52 -0
- rucio/db/sqla/migrate_repo/versions/a74275a1ad30_added_global_quota_table.py +54 -0
- rucio/db/sqla/migrate_repo/versions/a93e4e47bda_heartbeats.py +64 -0
- rucio/db/sqla/migrate_repo/versions/ae2a56fcc89_added_comment_column_to_rules.py +49 -0
- 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 +43 -0
- 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 +91 -0
- rucio/db/sqla/migrate_repo/versions/b818052fa670_add_index_to_quarantined_replicas.py +40 -0
- rucio/db/sqla/migrate_repo/versions/b8caac94d7f0_add_comments_column_for_subscriptions_.py +43 -0
- rucio/db/sqla/migrate_repo/versions/b96a1c7e1cc4_new_bad_pfns_table_and_bad_replicas_.py +143 -0
- rucio/db/sqla/migrate_repo/versions/bb695f45c04_extend_request_state.py +76 -0
- rucio/db/sqla/migrate_repo/versions/bc68e9946deb_add_staging_timestamps_to_request.py +50 -0
- rucio/db/sqla/migrate_repo/versions/bf3baa1c1474_correct_pk_and_idx_for_history_tables.py +72 -0
- rucio/db/sqla/migrate_repo/versions/c0937668555f_add_qos_policy_map_table.py +55 -0
- rucio/db/sqla/migrate_repo/versions/c129ccdb2d5_add_lumiblocknr_to_dids.py +43 -0
- rucio/db/sqla/migrate_repo/versions/ccdbcd48206e_add_did_type_column_index_on_did_meta_.py +65 -0
- rucio/db/sqla/migrate_repo/versions/cebad904c4dd_new_payload_column_for_heartbeats.py +47 -0
- rucio/db/sqla/migrate_repo/versions/d1189a09c6e0_oauth2_0_and_jwt_feature_support_adding_.py +146 -0
- rucio/db/sqla/migrate_repo/versions/d23453595260_extend_request_state_for_preparer.py +104 -0
- rucio/db/sqla/migrate_repo/versions/d6dceb1de2d_added_purge_column_to_rules.py +44 -0
- rucio/db/sqla/migrate_repo/versions/d6e2c3b2cf26_remove_third_party_copy_column_from_rse.py +43 -0
- rucio/db/sqla/migrate_repo/versions/d91002c5841_new_account_limits_table.py +103 -0
- rucio/db/sqla/migrate_repo/versions/e138c364ebd0_extending_columns_for_filter_and_.py +49 -0
- rucio/db/sqla/migrate_repo/versions/e59300c8b179_support_for_archive.py +104 -0
- rucio/db/sqla/migrate_repo/versions/f1b14a8c2ac1_postgres_use_check_constraints.py +29 -0
- rucio/db/sqla/migrate_repo/versions/f41ffe206f37_oracle_global_temporary_tables.py +74 -0
- rucio/db/sqla/migrate_repo/versions/f85a2962b021_adding_transfertool_column_to_requests_.py +47 -0
- rucio/db/sqla/migrate_repo/versions/fa7a7d78b602_increase_refresh_token_size.py +43 -0
- rucio/db/sqla/migrate_repo/versions/fb28a95fe288_add_replicas_rse_id_tombstone_idx.py +37 -0
- rucio/db/sqla/migrate_repo/versions/fe1a65b176c9_set_third_party_copy_read_and_write_.py +43 -0
- rucio/db/sqla/migrate_repo/versions/fe8ea2fa9788_added_third_party_copy_column_to_rse_.py +43 -0
- rucio/db/sqla/models.py +1743 -0
- rucio/db/sqla/sautils.py +55 -0
- rucio/db/sqla/session.py +529 -0
- rucio/db/sqla/types.py +206 -0
- rucio/db/sqla/util.py +543 -0
- rucio/gateway/__init__.py +13 -0
- rucio/gateway/account.py +345 -0
- rucio/gateway/account_limit.py +363 -0
- rucio/gateway/authentication.py +381 -0
- rucio/gateway/config.py +227 -0
- rucio/gateway/credential.py +70 -0
- rucio/gateway/did.py +987 -0
- rucio/gateway/dirac.py +83 -0
- rucio/gateway/exporter.py +60 -0
- rucio/gateway/heartbeat.py +76 -0
- rucio/gateway/identity.py +189 -0
- rucio/gateway/importer.py +46 -0
- rucio/gateway/lifetime_exception.py +121 -0
- rucio/gateway/lock.py +153 -0
- rucio/gateway/meta_conventions.py +98 -0
- rucio/gateway/permission.py +74 -0
- rucio/gateway/quarantined_replica.py +79 -0
- rucio/gateway/replica.py +538 -0
- rucio/gateway/request.py +330 -0
- rucio/gateway/rse.py +632 -0
- rucio/gateway/rule.py +437 -0
- rucio/gateway/scope.py +100 -0
- rucio/gateway/subscription.py +280 -0
- rucio/gateway/vo.py +126 -0
- rucio/rse/__init__.py +96 -0
- rucio/rse/protocols/__init__.py +13 -0
- rucio/rse/protocols/bittorrent.py +194 -0
- rucio/rse/protocols/cache.py +111 -0
- rucio/rse/protocols/dummy.py +100 -0
- rucio/rse/protocols/gfal.py +708 -0
- rucio/rse/protocols/globus.py +243 -0
- rucio/rse/protocols/http_cache.py +82 -0
- rucio/rse/protocols/mock.py +123 -0
- rucio/rse/protocols/ngarc.py +209 -0
- rucio/rse/protocols/posix.py +250 -0
- rucio/rse/protocols/protocol.py +361 -0
- rucio/rse/protocols/rclone.py +365 -0
- rucio/rse/protocols/rfio.py +145 -0
- rucio/rse/protocols/srm.py +338 -0
- rucio/rse/protocols/ssh.py +414 -0
- rucio/rse/protocols/storm.py +195 -0
- rucio/rse/protocols/webdav.py +594 -0
- rucio/rse/protocols/xrootd.py +302 -0
- rucio/rse/rsemanager.py +881 -0
- rucio/rse/translation.py +260 -0
- rucio/tests/__init__.py +13 -0
- rucio/tests/common.py +280 -0
- rucio/tests/common_server.py +149 -0
- rucio/transfertool/__init__.py +13 -0
- rucio/transfertool/bittorrent.py +200 -0
- rucio/transfertool/bittorrent_driver.py +50 -0
- rucio/transfertool/bittorrent_driver_qbittorrent.py +134 -0
- rucio/transfertool/fts3.py +1600 -0
- rucio/transfertool/fts3_plugins.py +152 -0
- rucio/transfertool/globus.py +201 -0
- rucio/transfertool/globus_library.py +181 -0
- rucio/transfertool/mock.py +89 -0
- rucio/transfertool/transfertool.py +221 -0
- rucio/vcsversion.py +11 -0
- rucio/version.py +45 -0
- rucio/web/__init__.py +13 -0
- rucio/web/rest/__init__.py +13 -0
- rucio/web/rest/flaskapi/__init__.py +13 -0
- rucio/web/rest/flaskapi/authenticated_bp.py +27 -0
- rucio/web/rest/flaskapi/v1/__init__.py +13 -0
- rucio/web/rest/flaskapi/v1/accountlimits.py +236 -0
- rucio/web/rest/flaskapi/v1/accounts.py +1103 -0
- rucio/web/rest/flaskapi/v1/archives.py +102 -0
- rucio/web/rest/flaskapi/v1/auth.py +1644 -0
- rucio/web/rest/flaskapi/v1/common.py +426 -0
- rucio/web/rest/flaskapi/v1/config.py +304 -0
- rucio/web/rest/flaskapi/v1/credentials.py +213 -0
- rucio/web/rest/flaskapi/v1/dids.py +2340 -0
- rucio/web/rest/flaskapi/v1/dirac.py +116 -0
- rucio/web/rest/flaskapi/v1/export.py +75 -0
- rucio/web/rest/flaskapi/v1/heartbeats.py +127 -0
- rucio/web/rest/flaskapi/v1/identities.py +285 -0
- rucio/web/rest/flaskapi/v1/import.py +132 -0
- rucio/web/rest/flaskapi/v1/lifetime_exceptions.py +312 -0
- rucio/web/rest/flaskapi/v1/locks.py +358 -0
- rucio/web/rest/flaskapi/v1/main.py +91 -0
- rucio/web/rest/flaskapi/v1/meta_conventions.py +241 -0
- rucio/web/rest/flaskapi/v1/metrics.py +36 -0
- rucio/web/rest/flaskapi/v1/nongrid_traces.py +97 -0
- rucio/web/rest/flaskapi/v1/ping.py +88 -0
- rucio/web/rest/flaskapi/v1/redirect.py +366 -0
- rucio/web/rest/flaskapi/v1/replicas.py +1894 -0
- rucio/web/rest/flaskapi/v1/requests.py +998 -0
- rucio/web/rest/flaskapi/v1/rses.py +2250 -0
- rucio/web/rest/flaskapi/v1/rules.py +854 -0
- rucio/web/rest/flaskapi/v1/scopes.py +159 -0
- rucio/web/rest/flaskapi/v1/subscriptions.py +650 -0
- rucio/web/rest/flaskapi/v1/templates/auth_crash.html +80 -0
- rucio/web/rest/flaskapi/v1/templates/auth_granted.html +82 -0
- rucio/web/rest/flaskapi/v1/traces.py +137 -0
- rucio/web/rest/flaskapi/v1/types.py +20 -0
- rucio/web/rest/flaskapi/v1/vos.py +278 -0
- rucio/web/rest/main.py +18 -0
- rucio/web/rest/metrics.py +27 -0
- rucio/web/rest/ping.py +27 -0
- rucio-37.0.0rc1.data/data/rucio/etc/alembic.ini.template +71 -0
- rucio-37.0.0rc1.data/data/rucio/etc/alembic_offline.ini.template +74 -0
- rucio-37.0.0rc1.data/data/rucio/etc/globus-config.yml.template +5 -0
- rucio-37.0.0rc1.data/data/rucio/etc/ldap.cfg.template +30 -0
- rucio-37.0.0rc1.data/data/rucio/etc/mail_templates/rule_approval_request.tmpl +38 -0
- rucio-37.0.0rc1.data/data/rucio/etc/mail_templates/rule_approved_admin.tmpl +4 -0
- rucio-37.0.0rc1.data/data/rucio/etc/mail_templates/rule_approved_user.tmpl +17 -0
- rucio-37.0.0rc1.data/data/rucio/etc/mail_templates/rule_denied_admin.tmpl +6 -0
- rucio-37.0.0rc1.data/data/rucio/etc/mail_templates/rule_denied_user.tmpl +17 -0
- rucio-37.0.0rc1.data/data/rucio/etc/mail_templates/rule_ok_notification.tmpl +19 -0
- rucio-37.0.0rc1.data/data/rucio/etc/rse-accounts.cfg.template +25 -0
- rucio-37.0.0rc1.data/data/rucio/etc/rucio.cfg.atlas.client.template +43 -0
- rucio-37.0.0rc1.data/data/rucio/etc/rucio.cfg.template +241 -0
- rucio-37.0.0rc1.data/data/rucio/etc/rucio_multi_vo.cfg.template +217 -0
- rucio-37.0.0rc1.data/data/rucio/requirements.server.txt +297 -0
- rucio-37.0.0rc1.data/data/rucio/tools/bootstrap.py +34 -0
- rucio-37.0.0rc1.data/data/rucio/tools/merge_rucio_configs.py +144 -0
- rucio-37.0.0rc1.data/data/rucio/tools/reset_database.py +40 -0
- rucio-37.0.0rc1.data/scripts/rucio +133 -0
- rucio-37.0.0rc1.data/scripts/rucio-abacus-account +74 -0
- rucio-37.0.0rc1.data/scripts/rucio-abacus-collection-replica +46 -0
- rucio-37.0.0rc1.data/scripts/rucio-abacus-rse +78 -0
- rucio-37.0.0rc1.data/scripts/rucio-admin +97 -0
- rucio-37.0.0rc1.data/scripts/rucio-atropos +60 -0
- rucio-37.0.0rc1.data/scripts/rucio-auditor +206 -0
- rucio-37.0.0rc1.data/scripts/rucio-automatix +50 -0
- rucio-37.0.0rc1.data/scripts/rucio-bb8 +57 -0
- rucio-37.0.0rc1.data/scripts/rucio-cache-client +141 -0
- rucio-37.0.0rc1.data/scripts/rucio-cache-consumer +42 -0
- rucio-37.0.0rc1.data/scripts/rucio-conveyor-finisher +58 -0
- rucio-37.0.0rc1.data/scripts/rucio-conveyor-poller +66 -0
- rucio-37.0.0rc1.data/scripts/rucio-conveyor-preparer +37 -0
- rucio-37.0.0rc1.data/scripts/rucio-conveyor-receiver +44 -0
- rucio-37.0.0rc1.data/scripts/rucio-conveyor-stager +76 -0
- rucio-37.0.0rc1.data/scripts/rucio-conveyor-submitter +139 -0
- rucio-37.0.0rc1.data/scripts/rucio-conveyor-throttler +104 -0
- rucio-37.0.0rc1.data/scripts/rucio-dark-reaper +53 -0
- rucio-37.0.0rc1.data/scripts/rucio-dumper +160 -0
- rucio-37.0.0rc1.data/scripts/rucio-follower +44 -0
- rucio-37.0.0rc1.data/scripts/rucio-hermes +54 -0
- rucio-37.0.0rc1.data/scripts/rucio-judge-cleaner +89 -0
- rucio-37.0.0rc1.data/scripts/rucio-judge-evaluator +137 -0
- rucio-37.0.0rc1.data/scripts/rucio-judge-injector +44 -0
- rucio-37.0.0rc1.data/scripts/rucio-judge-repairer +44 -0
- rucio-37.0.0rc1.data/scripts/rucio-kronos +44 -0
- rucio-37.0.0rc1.data/scripts/rucio-minos +53 -0
- rucio-37.0.0rc1.data/scripts/rucio-minos-temporary-expiration +50 -0
- rucio-37.0.0rc1.data/scripts/rucio-necromancer +120 -0
- rucio-37.0.0rc1.data/scripts/rucio-oauth-manager +63 -0
- rucio-37.0.0rc1.data/scripts/rucio-reaper +83 -0
- rucio-37.0.0rc1.data/scripts/rucio-replica-recoverer +248 -0
- rucio-37.0.0rc1.data/scripts/rucio-rse-decommissioner +66 -0
- rucio-37.0.0rc1.data/scripts/rucio-storage-consistency-actions +74 -0
- rucio-37.0.0rc1.data/scripts/rucio-transmogrifier +77 -0
- rucio-37.0.0rc1.data/scripts/rucio-undertaker +76 -0
- rucio-37.0.0rc1.dist-info/METADATA +92 -0
- rucio-37.0.0rc1.dist-info/RECORD +487 -0
- rucio-37.0.0rc1.dist-info/WHEEL +5 -0
- rucio-37.0.0rc1.dist-info/licenses/AUTHORS.rst +100 -0
- rucio-37.0.0rc1.dist-info/licenses/LICENSE +201 -0
- rucio-37.0.0rc1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
''' added comment column to rules '''
|
|
16
|
+
|
|
17
|
+
import sqlalchemy as sa
|
|
18
|
+
from alembic import context
|
|
19
|
+
from alembic.op import add_column, drop_column
|
|
20
|
+
|
|
21
|
+
from rucio.db.sqla.models import String
|
|
22
|
+
|
|
23
|
+
# Alembic revision identifiers
|
|
24
|
+
revision = 'ae2a56fcc89'
|
|
25
|
+
down_revision = '45378a1e76a8'
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def upgrade():
|
|
29
|
+
'''
|
|
30
|
+
Upgrade the database to this revision
|
|
31
|
+
'''
|
|
32
|
+
|
|
33
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
34
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
35
|
+
add_column('rules', sa.Column('comments', String(255)), schema=schema)
|
|
36
|
+
add_column('rules_hist_recent', sa.Column('comments', String(255)), schema=schema)
|
|
37
|
+
add_column('rules_history', sa.Column('comments', String(255)), schema=schema)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def downgrade():
|
|
41
|
+
'''
|
|
42
|
+
Downgrade the database to the previous revision
|
|
43
|
+
'''
|
|
44
|
+
|
|
45
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
46
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
47
|
+
drop_column('rules', 'comments', schema=schema)
|
|
48
|
+
drop_column('rules_hist_recent', 'comments', schema=schema)
|
|
49
|
+
drop_column('rules_history', 'comments', schema=schema)
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
''' Add deleted_did_meta table '''
|
|
16
|
+
|
|
17
|
+
import sqlalchemy as sa
|
|
18
|
+
from alembic import context
|
|
19
|
+
from alembic.op import create_index, create_primary_key, create_table, drop_table
|
|
20
|
+
|
|
21
|
+
from rucio.db.sqla.constants import DIDType
|
|
22
|
+
from rucio.db.sqla.types import JSON
|
|
23
|
+
|
|
24
|
+
# Alembic revision identifiers
|
|
25
|
+
revision = 'b0070f3695c8'
|
|
26
|
+
down_revision = 'b5493606bbf5'
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def upgrade():
|
|
30
|
+
'''
|
|
31
|
+
Upgrade the database to this revision
|
|
32
|
+
'''
|
|
33
|
+
|
|
34
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
35
|
+
create_table('deleted_did_meta',
|
|
36
|
+
sa.Column('scope', sa.String(25)),
|
|
37
|
+
sa.Column('name', sa.String(255)),
|
|
38
|
+
sa.Column('did_type', sa.Enum(DIDType,
|
|
39
|
+
name='DEL_DID_META_DID_TYPE_CHK',
|
|
40
|
+
create_constraint=True,
|
|
41
|
+
values_callable=lambda obj: [e.value for e in obj])),
|
|
42
|
+
sa.Column('meta', JSON()),
|
|
43
|
+
sa.Column('created_at', sa.DateTime),
|
|
44
|
+
sa.Column('updated_at', sa.DateTime),
|
|
45
|
+
sa.Column('deleted_at', sa.DateTime))
|
|
46
|
+
|
|
47
|
+
create_primary_key('DEL_DID_META_PK', 'deleted_did_meta', ['scope', 'name'])
|
|
48
|
+
create_index('DEL_DID_META_DID_TYPE_IDX', 'deleted_did_meta', ['did_type'])
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def downgrade():
|
|
52
|
+
'''
|
|
53
|
+
Downgrade the database to the previous revision
|
|
54
|
+
'''
|
|
55
|
+
|
|
56
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
57
|
+
drop_table('deleted_did_meta')
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
''' added column identity to table tokens '''
|
|
16
|
+
|
|
17
|
+
import sqlalchemy as sa
|
|
18
|
+
from alembic import context
|
|
19
|
+
from alembic.op import add_column, drop_column
|
|
20
|
+
|
|
21
|
+
# Alembic revision identifiers
|
|
22
|
+
revision = 'b4293a99f344'
|
|
23
|
+
down_revision = '3ac1660a1a72'
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def upgrade():
|
|
27
|
+
'''
|
|
28
|
+
Upgrade the database to this revision
|
|
29
|
+
'''
|
|
30
|
+
|
|
31
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
32
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
33
|
+
add_column('tokens', sa.Column('identity', sa.String(255)), schema=schema)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def downgrade():
|
|
37
|
+
'''
|
|
38
|
+
Downgrade the database to the previous revision
|
|
39
|
+
'''
|
|
40
|
+
|
|
41
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
42
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
43
|
+
drop_column('tokens', 'identity', schema=schema)
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
''' Fix primary key for subscription_history '''
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
from alembic import context
|
|
19
|
+
from alembic.op import create_primary_key, drop_constraint
|
|
20
|
+
|
|
21
|
+
# Alembic revision identifiers
|
|
22
|
+
revision = 'b5493606bbf5'
|
|
23
|
+
down_revision = 'a08fa8de1545'
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def upgrade():
|
|
27
|
+
'''
|
|
28
|
+
Upgrade the database to this revision
|
|
29
|
+
'''
|
|
30
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
31
|
+
drop_constraint(constraint_name='SUBSCRIPTIONS_PK', table_name='subscriptions_history', type_='primary')
|
|
32
|
+
create_primary_key('SUBSCRIPTIONS_HISTORY_PK', 'subscriptions_history', ['id', 'updated_at'])
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def downgrade():
|
|
36
|
+
'''
|
|
37
|
+
Downgrade the database to the previous revision
|
|
38
|
+
'''
|
|
39
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
40
|
+
drop_constraint(constraint_name='SUBSCRIPTIONS_HISTORY_PK', table_name='subscriptions_history', type_='primary')
|
|
41
|
+
create_primary_key('SUBSCRIPTIONS_PK', 'subscriptions_history', ['id', 'updated_at'])
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
''' Removal of ReplicaState.SOURCE '''
|
|
16
|
+
|
|
17
|
+
from alembic import context, op
|
|
18
|
+
from alembic.op import create_check_constraint
|
|
19
|
+
|
|
20
|
+
from rucio.db.sqla.util import try_drop_constraint
|
|
21
|
+
|
|
22
|
+
# Alembic revision identifiers
|
|
23
|
+
revision = 'b7d287de34fd'
|
|
24
|
+
down_revision = 'f1b14a8c2ac1'
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def upgrade():
|
|
28
|
+
'''
|
|
29
|
+
Upgrade the database to this revision
|
|
30
|
+
'''
|
|
31
|
+
|
|
32
|
+
schema = context.get_context().version_table_schema + '.' if context.get_context().version_table_schema else ''
|
|
33
|
+
|
|
34
|
+
if context.get_context().dialect.name == 'oracle':
|
|
35
|
+
try_drop_constraint('REPLICAS_STATE_CHK', 'replicas')
|
|
36
|
+
create_check_constraint(constraint_name='REPLICAS_STATE_CHK', table_name='replicas',
|
|
37
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'T')")
|
|
38
|
+
try_drop_constraint('COLLECTION_REPLICAS_STATE_CHK', 'collection_replicas')
|
|
39
|
+
create_check_constraint(constraint_name='COLLECTION_REPLICAS_STATE_CHK', table_name='collection_replicas',
|
|
40
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'T')")
|
|
41
|
+
|
|
42
|
+
elif context.get_context().dialect.name == 'postgresql':
|
|
43
|
+
op.execute('ALTER TABLE ' + schema + 'replicas DROP CONSTRAINT IF EXISTS "REPLICAS_STATE_CHK", ALTER COLUMN state TYPE CHAR')
|
|
44
|
+
op.execute('DROP TYPE "REPLICAS_STATE_CHK"')
|
|
45
|
+
op.execute("CREATE TYPE \"REPLICAS_STATE_CHK\" AS ENUM('A', 'U', 'C', 'B', 'D', 'T')")
|
|
46
|
+
op.execute("ALTER TABLE %sreplicas ALTER COLUMN state TYPE \"REPLICAS_STATE_CHK\" USING state::\"REPLICAS_STATE_CHK\"" % schema)
|
|
47
|
+
|
|
48
|
+
op.execute('ALTER TABLE ' + schema + 'collection_replicas DROP CONSTRAINT IF EXISTS "COLLECTION_REPLICAS_STATE_CHK", ALTER COLUMN state TYPE CHAR')
|
|
49
|
+
op.execute('DROP TYPE "COLLECTION_REPLICAS_STATE_CHK"')
|
|
50
|
+
op.execute("CREATE TYPE \"COLLECTION_REPLICAS_STATE_CHK\" AS ENUM('A', 'U', 'C', 'B', 'D', 'T')")
|
|
51
|
+
op.execute("ALTER TABLE %scollection_replicas ALTER COLUMN state TYPE \"COLLECTION_REPLICAS_STATE_CHK\" USING state::\"COLLECTION_REPLICAS_STATE_CHK\"" % schema)
|
|
52
|
+
|
|
53
|
+
elif context.get_context().dialect.name == 'mysql':
|
|
54
|
+
op.execute('ALTER TABLE ' + schema + 'replicas DROP CHECK REPLICAS_STATE_CHK') # pylint: disable=no-member
|
|
55
|
+
create_check_constraint(constraint_name='REPLICAS_STATE_CHK', table_name='replicas',
|
|
56
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'T')")
|
|
57
|
+
create_check_constraint(constraint_name='COLLECTION_REPLICAS_STATE_CHK', table_name='collection_replicas',
|
|
58
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'T')")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def downgrade():
|
|
62
|
+
'''
|
|
63
|
+
Downgrade the database to the previous revision
|
|
64
|
+
'''
|
|
65
|
+
|
|
66
|
+
schema = context.get_context().version_table_schema + '.' if context.get_context().version_table_schema else ''
|
|
67
|
+
|
|
68
|
+
if context.get_context().dialect.name == 'oracle':
|
|
69
|
+
try_drop_constraint('REPLICAS_STATE_CHK', 'replicas')
|
|
70
|
+
create_check_constraint(constraint_name='REPLICAS_STATE_CHK', table_name='replicas',
|
|
71
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'S', 'T')")
|
|
72
|
+
try_drop_constraint('COLLECTION_REPLICAS_STATE_CHK', 'collection_replicas')
|
|
73
|
+
create_check_constraint(constraint_name='COLLECTION_REPLICAS_STATE_CHK', table_name='collection_replicas',
|
|
74
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'S', 'T')")
|
|
75
|
+
|
|
76
|
+
elif context.get_context().dialect.name == 'postgresql':
|
|
77
|
+
op.execute('ALTER TABLE ' + schema + 'replicas DROP CONSTRAINT IF EXISTS "REPLICAS_STATE_CHK", ALTER COLUMN state TYPE CHAR')
|
|
78
|
+
op.execute('DROP TYPE "REPLICAS_STATE_CHK"')
|
|
79
|
+
op.execute("CREATE TYPE \"REPLICAS_STATE_CHK\" AS ENUM('A', 'U', 'C', 'B', 'D', 'S', 'T')")
|
|
80
|
+
op.execute("ALTER TABLE %sreplicas ALTER COLUMN state TYPE \"REPLICAS_STATE_CHK\" USING state::\"REPLICAS_STATE_CHK\"" % schema)
|
|
81
|
+
|
|
82
|
+
op.execute('ALTER TABLE ' + schema + 'collection_replicas DROP CONSTRAINT IF EXISTS "COLLECTION_REPLICAS_STATE_CHK", ALTER COLUMN state TYPE CHAR')
|
|
83
|
+
op.execute('DROP TYPE "COLLECTION_REPLICAS_STATE_CHK"')
|
|
84
|
+
op.execute("CREATE TYPE \"COLLECTION_REPLICAS_STATE_CHK\" AS ENUM('A', 'U', 'C', 'B', 'D', 'S', 'T')")
|
|
85
|
+
op.execute("ALTER TABLE %scollection_replicas ALTER COLUMN state TYPE \"COLLECTION_REPLICAS_STATE_CHK\" USING state::\"COLLECTION_REPLICAS_STATE_CHK\"" % schema)
|
|
86
|
+
|
|
87
|
+
elif context.get_context().dialect.name == 'mysql':
|
|
88
|
+
create_check_constraint(constraint_name='REPLICAS_STATE_CHK', table_name='replicas',
|
|
89
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'S', 'T')")
|
|
90
|
+
create_check_constraint(constraint_name='COLLECTION_REPLICAS_STATE_CHK', table_name='collection_replicas',
|
|
91
|
+
condition="state in ('A', 'U', 'C', 'B', 'D', 'S', 'T')")
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
''' add index to quarantined replicas '''
|
|
16
|
+
|
|
17
|
+
from alembic import context
|
|
18
|
+
from alembic.op import create_index, drop_index
|
|
19
|
+
|
|
20
|
+
# revision identifiers, used by Alembic.
|
|
21
|
+
revision = 'b818052fa670'
|
|
22
|
+
down_revision = '2962ece31cf4'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def upgrade():
|
|
26
|
+
'''
|
|
27
|
+
Upgrade the database to this revision
|
|
28
|
+
'''
|
|
29
|
+
|
|
30
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
31
|
+
create_index('QUARANTINED_REPLICAS_PATH_IDX', 'quarantined_replicas', ['path', 'rse_id'], unique=True)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def downgrade():
|
|
35
|
+
'''
|
|
36
|
+
Downgrade the database to the previous revision
|
|
37
|
+
'''
|
|
38
|
+
|
|
39
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
40
|
+
drop_index('QUARANTINED_REPLICAS_PATH_IDX', 'quarantined_replicas')
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
''' add comments column for subscriptions_history '''
|
|
16
|
+
|
|
17
|
+
import sqlalchemy as sa
|
|
18
|
+
from alembic import context
|
|
19
|
+
from alembic.op import add_column, drop_column
|
|
20
|
+
|
|
21
|
+
# Alembic revision identifiers
|
|
22
|
+
revision = 'b8caac94d7f0'
|
|
23
|
+
down_revision = '8523998e2e76'
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def upgrade():
|
|
27
|
+
'''
|
|
28
|
+
Upgrade the database to this revision
|
|
29
|
+
'''
|
|
30
|
+
|
|
31
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
32
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
33
|
+
add_column('subscriptions_history', sa.Column('comments', sa.String(4000)), schema=schema)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def downgrade():
|
|
37
|
+
'''
|
|
38
|
+
Downgrade the database to the previous revision
|
|
39
|
+
'''
|
|
40
|
+
|
|
41
|
+
if context.get_context().dialect.name in ['oracle', 'mysql', 'postgresql']:
|
|
42
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
43
|
+
drop_column('subscriptions_history', 'comments', schema=schema)
|
|
@@ -0,0 +1,143 @@
|
|
|
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
|
+
''' new bad_pfns table and bad_replicas changes '''
|
|
16
|
+
|
|
17
|
+
import datetime
|
|
18
|
+
|
|
19
|
+
import sqlalchemy as sa
|
|
20
|
+
from alembic import context, op
|
|
21
|
+
from alembic.op import add_column, create_check_constraint, create_foreign_key, create_index, create_primary_key, create_table, drop_column, drop_constraint, drop_index, drop_table
|
|
22
|
+
|
|
23
|
+
from rucio.db.sqla.constants import BadPFNStatus
|
|
24
|
+
from rucio.db.sqla.util import try_drop_constraint
|
|
25
|
+
|
|
26
|
+
# Alembic revision identifiers
|
|
27
|
+
revision = 'b96a1c7e1cc4'
|
|
28
|
+
down_revision = '1f46c5f240ac'
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def upgrade():
|
|
32
|
+
'''
|
|
33
|
+
Upgrade the database to this revision
|
|
34
|
+
'''
|
|
35
|
+
|
|
36
|
+
schema = context.get_context().version_table_schema + '.' if context.get_context().version_table_schema else ''
|
|
37
|
+
|
|
38
|
+
if context.get_context().dialect.name in ['oracle', 'postgresql']:
|
|
39
|
+
# Create new bad_pfns table
|
|
40
|
+
create_table('bad_pfns',
|
|
41
|
+
sa.Column('path', sa.String(2048)),
|
|
42
|
+
sa.Column('state', sa.Enum(BadPFNStatus,
|
|
43
|
+
name='BAD_PFNS_STATE_CHK',
|
|
44
|
+
create_constraint=True,
|
|
45
|
+
values_callable=lambda obj: [e.value for e in obj]),
|
|
46
|
+
default=BadPFNStatus.SUSPICIOUS),
|
|
47
|
+
sa.Column('reason', sa.String(255)),
|
|
48
|
+
sa.Column('account', sa.String(25)),
|
|
49
|
+
sa.Column('expires_at', sa.DateTime),
|
|
50
|
+
sa.Column('created_at', sa.DateTime, default=datetime.datetime.utcnow),
|
|
51
|
+
sa.Column('updated_at', sa.DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow))
|
|
52
|
+
|
|
53
|
+
create_primary_key('BAD_PFNS_PK', 'bad_pfns', ['path', 'state'])
|
|
54
|
+
create_foreign_key('BAD_PFNS_ACCOUNT_FK', 'bad_pfns', 'accounts', ['account'], ['account'])
|
|
55
|
+
|
|
56
|
+
try_drop_constraint('BAD_REPLICAS_STATE_CHK', 'bad_replicas')
|
|
57
|
+
create_check_constraint(constraint_name='BAD_REPLICAS_STATE_CHK', table_name='bad_replicas',
|
|
58
|
+
condition="state in ('B', 'D', 'L', 'R', 'S', 'T')")
|
|
59
|
+
|
|
60
|
+
# Add new column to bad_replicas table
|
|
61
|
+
add_column('bad_replicas', sa.Column('expires_at', sa.DateTime()), schema=schema[:-1])
|
|
62
|
+
|
|
63
|
+
# Change PK
|
|
64
|
+
drop_constraint('BAD_REPLICAS_STATE_PK', 'bad_replicas', type_='primary')
|
|
65
|
+
create_primary_key('BAD_REPLICAS_STATE_PK', 'bad_replicas', ['scope', 'name', 'rse_id', 'state', 'created_at'])
|
|
66
|
+
|
|
67
|
+
# Add new Index to Table
|
|
68
|
+
create_index('BAD_REPLICAS_EXPIRES_AT_IDX', 'bad_replicas', ['expires_at'])
|
|
69
|
+
|
|
70
|
+
elif context.get_context().dialect.name == 'mysql':
|
|
71
|
+
# Create new bad_pfns table
|
|
72
|
+
create_table('bad_pfns',
|
|
73
|
+
sa.Column('path', sa.String(2048)),
|
|
74
|
+
sa.Column('state', sa.Enum(BadPFNStatus,
|
|
75
|
+
name='BAD_PFNS_STATE_CHK',
|
|
76
|
+
create_constraint=True,
|
|
77
|
+
values_callable=lambda obj: [e.value for e in obj]),
|
|
78
|
+
default=BadPFNStatus.SUSPICIOUS),
|
|
79
|
+
sa.Column('reason', sa.String(255)),
|
|
80
|
+
sa.Column('account', sa.String(25)),
|
|
81
|
+
sa.Column('expires_at', sa.DateTime),
|
|
82
|
+
sa.Column('created_at', sa.DateTime, default=datetime.datetime.utcnow),
|
|
83
|
+
sa.Column('updated_at', sa.DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow))
|
|
84
|
+
|
|
85
|
+
create_primary_key('BAD_PFNS_PK', 'bad_pfns', ['path', 'state'])
|
|
86
|
+
create_foreign_key('BAD_PFNS_ACCOUNT_FK', 'bad_pfns', 'accounts', ['account'], ['account'])
|
|
87
|
+
|
|
88
|
+
op.execute('ALTER TABLE ' + schema + 'bad_replicas DROP CHECK BAD_REPLICAS_STATE_CHK') # pylint: disable=no-member
|
|
89
|
+
create_check_constraint(constraint_name='BAD_REPLICAS_STATE_CHK', table_name='bad_replicas',
|
|
90
|
+
condition="state in ('B', 'D', 'L', 'R', 'S', 'T')")
|
|
91
|
+
|
|
92
|
+
# Add new column to bad_replicas table
|
|
93
|
+
add_column('bad_replicas', sa.Column('expires_at', sa.DateTime()), schema=schema[:-1])
|
|
94
|
+
|
|
95
|
+
# Change PK
|
|
96
|
+
drop_constraint('BAD_REPLICAS_STATE_PK', 'bad_replicas', type_='primary')
|
|
97
|
+
create_primary_key('BAD_REPLICAS_STATE_PK', 'bad_replicas', ['scope', 'name', 'rse_id', 'state', 'created_at'])
|
|
98
|
+
|
|
99
|
+
# Add new Index to Table
|
|
100
|
+
create_index('BAD_REPLICAS_EXPIRES_AT_IDX', 'bad_replicas', ['expires_at'])
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def downgrade():
|
|
104
|
+
'''
|
|
105
|
+
Downgrade the database to the previous revision
|
|
106
|
+
'''
|
|
107
|
+
|
|
108
|
+
schema = context.get_context().version_table_schema + '.' if context.get_context().version_table_schema else ''
|
|
109
|
+
|
|
110
|
+
if context.get_context().dialect.name == 'oracle':
|
|
111
|
+
drop_table('bad_pfns')
|
|
112
|
+
drop_index('BAD_REPLICAS_EXPIRES_AT_IDX', 'bad_replicas')
|
|
113
|
+
|
|
114
|
+
try_drop_constraint('BAD_REPLICAS_STATE_CHK', 'bad_replicas')
|
|
115
|
+
create_check_constraint(constraint_name='BAD_REPLICAS_STATE_CHK', table_name='bad_replicas',
|
|
116
|
+
condition="state in ('B', 'D', 'L', 'R', 'S')")
|
|
117
|
+
|
|
118
|
+
drop_column('bad_replicas', 'expires_at')
|
|
119
|
+
drop_constraint('BAD_REPLICAS_STATE_PK', 'bad_replicas', type_='primary')
|
|
120
|
+
create_primary_key('BAD_REPLICAS_STATE_PK', 'bad_replicas', ['scope', 'name', 'rse_id', 'created_at'])
|
|
121
|
+
|
|
122
|
+
elif context.get_context().dialect.name == 'postgresql':
|
|
123
|
+
drop_table('bad_pfns')
|
|
124
|
+
drop_index('BAD_REPLICAS_EXPIRES_AT_IDX', 'bad_replicas')
|
|
125
|
+
|
|
126
|
+
op.execute('ALTER TABLE ' + schema + 'bad_replicas DROP CONSTRAINT IF EXISTS "BAD_REPLICAS_STATE_CHK", ALTER COLUMN state TYPE CHAR') # pylint: disable=no-member
|
|
127
|
+
create_check_constraint(constraint_name='BAD_REPLICAS_STATE_CHK', table_name='bad_replicas',
|
|
128
|
+
condition="state in ('B', 'D', 'L', 'R', 'S')")
|
|
129
|
+
|
|
130
|
+
drop_column('bad_replicas', 'expires_at', schema=schema[:-1])
|
|
131
|
+
drop_constraint('BAD_REPLICAS_STATE_PK', 'bad_replicas', type_='primary')
|
|
132
|
+
create_primary_key('BAD_REPLICAS_STATE_PK', 'bad_replicas', ['scope', 'name', 'rse_id', 'created_at'])
|
|
133
|
+
|
|
134
|
+
elif context.get_context().dialect.name == 'mysql':
|
|
135
|
+
drop_table('bad_pfns')
|
|
136
|
+
drop_index('BAD_REPLICAS_EXPIRES_AT_IDX', 'bad_replicas')
|
|
137
|
+
|
|
138
|
+
create_check_constraint(constraint_name='BAD_REPLICAS_STATE_CHK', table_name='bad_replicas',
|
|
139
|
+
condition="state in ('B', 'D', 'L', 'R', 'S')")
|
|
140
|
+
|
|
141
|
+
drop_column('bad_replicas', 'expires_at', schema=schema[:-1])
|
|
142
|
+
drop_constraint('BAD_REPLICAS_STATE_PK', 'bad_replicas', type_='primary')
|
|
143
|
+
create_primary_key('BAD_REPLICAS_STATE_PK', 'bad_replicas', ['scope', 'name', 'rse_id', 'created_at'])
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
''' extend request state '''
|
|
16
|
+
|
|
17
|
+
import sqlalchemy as sa
|
|
18
|
+
from alembic import context, op
|
|
19
|
+
from alembic.op import add_column, create_check_constraint, drop_column, drop_constraint
|
|
20
|
+
|
|
21
|
+
from rucio.db.sqla.util import try_drop_constraint
|
|
22
|
+
|
|
23
|
+
# Alembic revision identifiers
|
|
24
|
+
revision = 'bb695f45c04'
|
|
25
|
+
down_revision = '3082b8cef557'
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def upgrade():
|
|
29
|
+
'''
|
|
30
|
+
Upgrade the database to this revision
|
|
31
|
+
'''
|
|
32
|
+
|
|
33
|
+
schema = context.get_context().version_table_schema + '.' if context.get_context().version_table_schema else ''
|
|
34
|
+
|
|
35
|
+
if context.get_context().dialect.name in ['oracle', 'postgresql']:
|
|
36
|
+
try_drop_constraint('REQUESTS_STATE_CHK', 'requests')
|
|
37
|
+
create_check_constraint(constraint_name='REQUESTS_STATE_CHK', table_name='requests',
|
|
38
|
+
condition="state in ('Q', 'G', 'S', 'D', 'F', 'L', 'N', 'O', 'A', 'U')")
|
|
39
|
+
add_column('requests', sa.Column('submitter_id', sa.Integer()), schema=schema[:-1])
|
|
40
|
+
add_column('sources', sa.Column('is_using', sa.Boolean()), schema=schema[:-1])
|
|
41
|
+
|
|
42
|
+
elif context.get_context().dialect.name == 'mysql':
|
|
43
|
+
op.execute('ALTER TABLE ' + schema + 'requests DROP CHECK REQUESTS_STATE_CHK') # pylint: disable=no-member
|
|
44
|
+
create_check_constraint(constraint_name='REQUESTS_STATE_CHK', table_name='requests',
|
|
45
|
+
condition="state in ('Q', 'G', 'S', 'D', 'F', 'L', 'N', 'O', 'A', 'U')")
|
|
46
|
+
add_column('requests', sa.Column('submitter_id', sa.Integer()), schema=schema[:-1])
|
|
47
|
+
add_column('sources', sa.Column('is_using', sa.Boolean()), schema=schema[:-1])
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def downgrade():
|
|
51
|
+
'''
|
|
52
|
+
Downgrade the database to the previous revision
|
|
53
|
+
'''
|
|
54
|
+
|
|
55
|
+
schema = context.get_context().version_table_schema + '.' if context.get_context().version_table_schema else ''
|
|
56
|
+
|
|
57
|
+
if context.get_context().dialect.name == 'oracle':
|
|
58
|
+
try_drop_constraint('REQUESTS_STATE_CHK', 'requests')
|
|
59
|
+
create_check_constraint(constraint_name='REQUESTS_STATE_CHK', table_name='requests',
|
|
60
|
+
condition="state in ('Q', 'G', 'S', 'D', 'F', 'L')")
|
|
61
|
+
drop_column('requests', 'submitter_id')
|
|
62
|
+
drop_column('sources', 'is_using')
|
|
63
|
+
|
|
64
|
+
elif context.get_context().dialect.name == 'postgresql':
|
|
65
|
+
drop_constraint('REQUESTS_STATE_CHK', 'requests', type_='check')
|
|
66
|
+
create_check_constraint(constraint_name='REQUESTS_STATE_CHK', table_name='requests',
|
|
67
|
+
condition="state in ('Q', 'G', 'S', 'D', 'F', 'L')")
|
|
68
|
+
drop_column('requests', 'submitter_id', schema=schema[:-1])
|
|
69
|
+
drop_column('sources', 'is_using', schema=schema[:-1])
|
|
70
|
+
|
|
71
|
+
elif context.get_context().dialect.name == 'mysql':
|
|
72
|
+
op.execute('ALTER TABLE ' + schema + 'requests DROP CHECK REQUESTS_STATE_CHK') # pylint: disable=no-member
|
|
73
|
+
create_check_constraint(constraint_name='REQUESTS_STATE_CHK', table_name='requests',
|
|
74
|
+
condition="state in ('Q', 'G', 'S', 'D', 'F', 'L')")
|
|
75
|
+
drop_column('requests', 'submitter_id', schema=schema[:-1])
|
|
76
|
+
drop_column('sources', 'is_using', schema=schema[:-1])
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
|
|
16
|
+
''' add staging timestamps to request '''
|
|
17
|
+
|
|
18
|
+
import sqlalchemy as sa
|
|
19
|
+
from alembic import context
|
|
20
|
+
from alembic.op import add_column, drop_column
|
|
21
|
+
|
|
22
|
+
# Alembic revision identifiers
|
|
23
|
+
revision = 'bc68e9946deb'
|
|
24
|
+
down_revision = '9a1b149a2044'
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def upgrade():
|
|
28
|
+
'''
|
|
29
|
+
Upgrade the database to this revision
|
|
30
|
+
'''
|
|
31
|
+
|
|
32
|
+
if context.get_context().dialect.name in ['oracle', 'postgresql', 'mysql']:
|
|
33
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
34
|
+
add_column('requests', sa.Column('staging_started_at', sa.DateTime()), schema=schema)
|
|
35
|
+
add_column('requests', sa.Column('staging_finished_at', sa.DateTime()), schema=schema)
|
|
36
|
+
add_column('requests_history', sa.Column('staging_started_at', sa.DateTime()), schema=schema)
|
|
37
|
+
add_column('requests_history', sa.Column('staging_finished_at', sa.DateTime()), schema=schema)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def downgrade():
|
|
41
|
+
'''
|
|
42
|
+
Downgrade the database to the previous revision
|
|
43
|
+
'''
|
|
44
|
+
|
|
45
|
+
if context.get_context().dialect.name in ['oracle', 'postgresql', 'mysql']:
|
|
46
|
+
schema = context.get_context().version_table_schema if context.get_context().version_table_schema else ''
|
|
47
|
+
drop_column('requests', 'staging_started_at', schema=schema)
|
|
48
|
+
drop_column('requests', 'staging_finished_at', schema=schema)
|
|
49
|
+
drop_column('requests_history', 'staging_started_at', schema=schema)
|
|
50
|
+
drop_column('requests_history', 'staging_finished_at', schema=schema)
|