debian-mirror-gitlab/db/post_migrate/20220425121435_backfill_integrations_enable_ssl_verification.rb
2022-07-16 19:58:13 +02:00

58 lines
1.7 KiB
Ruby

# frozen_string_literal: true
class BackfillIntegrationsEnableSslVerification < Gitlab::Database::Migration[2.0]
disable_ddl_transaction!
restrict_gitlab_migration gitlab_schema: :gitlab_main
MIGRATION = 'BackfillIntegrationsEnableSslVerification'
INTERVAL = 5.minutes
BATCH_SIZE = 1_000
class Integration < MigrationRecord
include EachBatch
include IgnorableColumns
self.table_name = :integrations
self.inheritance_column = :_type_disabled
ignore_column :template, remove_with: '15.0', remove_after: '2022-04-22'
ignore_column :type, remove_with: '15.0', remove_after: '2022-04-22'
ignore_column :properties, remove_with: '15.1', remove_after: '2022-05-22'
scope :affected, -> do
where(type_new: %w[Integrations::DroneCi Integrations::Teamcity]).where.not(encrypted_properties: nil)
end
attr_encrypted :properties,
mode: :per_attribute_iv,
key: Settings.attr_encrypted_db_key_base_32,
algorithm: 'aes-256-gcm',
marshal: true,
marshaler: ::Gitlab::Json,
encode: false,
encode_iv: false
# Handle assignment of props with symbol keys.
# To do this correctly, we need to call the method generated by attr_encrypted.
alias_method :attr_encrypted_props=, :properties=
private :attr_encrypted_props=
def properties=(props)
self.attr_encrypted_props = props&.with_indifferent_access&.freeze
end
end
def up
queue_background_migration_jobs_by_range_at_intervals(
Integration.affected,
MIGRATION,
INTERVAL,
batch_size: BATCH_SIZE,
track_jobs: true
)
end
def down
end
end