diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-08 16:55:03 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-08 16:55:03 +0300 |
commit | cd1cc23153ed8115bc565f62b5a9f4eddc0942ca (patch) | |
tree | b379b2c66a70ffbb0d3baf71bdcc89eba8e434f2 /db/migrate | |
parent | 755aa9544e3f5595cdc4f7a9d746758670d2393b (diff) |
Add latest changes from gitlab-org/gitlab@13-1-stable-ee
Diffstat (limited to 'db/migrate')
-rw-r--r-- | db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb | 26 | ||||
-rw-r--r-- | db/migrate/20200509203901_reseed_repository_storages_weighted.rb | 37 |
2 files changed, 63 insertions, 0 deletions
diff --git a/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb b/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb index b9d4f65989a..fecaed9a7a0 100644 --- a/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb +++ b/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb @@ -3,11 +3,37 @@ class AddRepositoryStoragesWeightedToApplicationSettings < ActiveRecord::Migration[6.0] DOWNTIME = false + class ApplicationSetting < ActiveRecord::Base + serialize :repository_storages + self.table_name = 'application_settings' + end + def up add_column :application_settings, :repository_storages_weighted, :jsonb, default: {}, null: false + + seed_repository_storages_weighted end def down remove_column :application_settings, :repository_storages_weighted end + + private + + def seed_repository_storages_weighted + # We need to flush the cache to ensure the newly-added column is loaded + ApplicationSetting.reset_column_information + + # There should only be one row here due to + # 20200420162730_remove_additional_application_settings_rows.rb + ApplicationSetting.all.each do |settings| + storages = Gitlab.config.repositories.storages.keys.collect do |storage| + weight = settings.repository_storages.include?(storage) ? 100 : 0 + [storage.to_sym, weight] + end + + settings.repository_storages_weighted = Hash[storages] + settings.save! + end + end end diff --git a/db/migrate/20200509203901_reseed_repository_storages_weighted.rb b/db/migrate/20200509203901_reseed_repository_storages_weighted.rb new file mode 100644 index 00000000000..7a751b77c1c --- /dev/null +++ b/db/migrate/20200509203901_reseed_repository_storages_weighted.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +class ReseedRepositoryStoragesWeighted < ActiveRecord::Migration[6.0] + DOWNTIME = false + + class ApplicationSetting < ActiveRecord::Base + serialize :repository_storages + self.table_name = 'application_settings' + end + + def up + reseed_repository_storages_weighted + end + + private + + def reseed_repository_storages_weighted + # We need to flush the cache to ensure the newly-added column is loaded + ApplicationSetting.reset_column_information + + # There should only be one row here due to + # 20200420162730_remove_additional_application_settings_rows.rb + ApplicationSetting.all.each do |settings| + # Admins may have already tweaked these values, so don't do anything + # if there is data already. + next if settings.repository_storages_weighted.present? + + storages = Gitlab.config.repositories.storages.keys.collect do |storage| + weight = settings.repository_storages.include?(storage) ? 100 : 0 + [storage.to_sym, weight] + end + + settings.repository_storages_weighted = Hash[storages] + settings.save! + end + end +end |