Commit 6e0a4fc1 authored by Rubén Dávila's avatar Rubén Dávila

Convert migrations to generate subkeys to a background migration

parent dd139e65
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class ScheduleCreateGpgKeySubkeysFromGpgKeys < ActiveRecord::Migration
disable_ddl_transaction!
DOWNTIME = false
class GpgKey < ActiveRecord::Base
self.table_name = 'gpg_keys'
end
def up
GpgKey.select(:id).in_batches do |relation|
jobs = relation.pluck(:id).map do |id|
['CreateGpgKeySubkeysFromGpgKeys', [id]]
end
BackgroundMigrationWorker.perform_bulk(jobs)
end
end
def down
end
end
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20171004121444) do ActiveRecord::Schema.define(version: 20171005130944) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
......
# See http://doc.gitlab.com/ce/development/migration_style_guide.html class Gitlab::BackgroundMigration::CreateGpgKeySubkeysFromGpgKeys
# for more information on how to write migrations for GitLab.
class CreateGpgKeySubkeysForExistingGpgKeys < ActiveRecord::Migration
disable_ddl_transaction!
DOWNTIME = false
class GpgKey < ActiveRecord::Base class GpgKey < ActiveRecord::Base
self.table_name = 'gpg_keys' self.table_name = 'gpg_keys'
...@@ -27,17 +20,13 @@ class CreateGpgKeySubkeysForExistingGpgKeys < ActiveRecord::Migration ...@@ -27,17 +20,13 @@ class CreateGpgKeySubkeysForExistingGpgKeys < ActiveRecord::Migration
sha_attribute :fingerprint sha_attribute :fingerprint
end end
def up def perform(gpg_key_id)
GpgKey.with_subkeys.each_batch do |batch| gpg_key = GpgKey.find_by(id: gpg_key_id)
batch.each do |gpg_key|
next if gpg_key.subkeys.any?
create_subkeys(gpg_key) && update_signatures(gpg_key) return if gpg_key.nil?
end return if gpg_key.subkeys.any?
end
end
def down create_subkeys(gpg_key) && update_signatures(gpg_key)
end end
private private
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment