summaryrefslogtreecommitdiff
path: root/db/migrate
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-07-08 13:55:03 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-07-08 13:55:03 +0000
commitcd1cc23153ed8115bc565f62b5a9f4eddc0942ca (patch)
treeb379b2c66a70ffbb0d3baf71bdcc89eba8e434f2 /db/migrate
parent755aa9544e3f5595cdc4f7a9d746758670d2393b (diff)
downloadgitlab-ce-cd1cc23153ed8115bc565f62b5a9f4eddc0942ca.tar.gz
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.rb26
-rw-r--r--db/migrate/20200509203901_reseed_repository_storages_weighted.rb37
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