2018-11-21 11:35:40 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Gitlab
|
|
|
|
module BackgroundMigration
|
|
|
|
# EncryptColumn migrates data from an unencrypted column - `foo`, say - to
|
|
|
|
# an encrypted column - `encrypted_foo`, say.
|
|
|
|
#
|
|
|
|
# We only create a subclass here because we want to isolate this migration
|
|
|
|
# (migrating unencrypted runner registration tokens to encrypted columns)
|
|
|
|
# from other `EncryptColumns` migration. This class name is going to be
|
|
|
|
# serialized and stored in Redis and later picked by Sidekiq, so we need to
|
|
|
|
# create a separate class name in order to isolate these migration tasks.
|
|
|
|
#
|
|
|
|
# We can solve this differently, see tech debt issue:
|
|
|
|
#
|
|
|
|
# https://gitlab.com/gitlab-org/gitlab-ce/issues/54328
|
|
|
|
#
|
2018-11-23 12:28:29 +00:00
|
|
|
class EncryptRunnersTokens < EncryptColumns
|
|
|
|
def perform(model, from, to)
|
|
|
|
resource = "::Gitlab::BackgroundMigration::Models::EncryptColumns::#{model.to_s.capitalize}"
|
|
|
|
model = resource.constantize
|
|
|
|
attributes = model.encrypted_attributes.keys
|
|
|
|
|
|
|
|
super(model, attributes, from, to)
|
|
|
|
end
|
|
|
|
end
|
2018-11-21 11:35:40 +00:00
|
|
|
end
|
|
|
|
end
|