32 lines
776 B
Ruby
32 lines
776 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Gitlab
|
||
|
module Terraform
|
||
|
class StateMigrationHelper
|
||
|
class << self
|
||
|
def migrate_to_remote_storage(&block)
|
||
|
migrate_in_batches(
|
||
|
::Terraform::StateVersion.with_files_stored_locally.preload_state,
|
||
|
::Terraform::StateUploader::Store::REMOTE,
|
||
|
&block
|
||
|
)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def batch_size
|
||
|
ENV.fetch('MIGRATION_BATCH_SIZE', 10).to_i
|
||
|
end
|
||
|
|
||
|
def migrate_in_batches(versions, store, &block)
|
||
|
versions.find_each(batch_size: batch_size) do |version| # rubocop:disable CodeReuse/ActiveRecord
|
||
|
version.file.migrate!(store)
|
||
|
|
||
|
yield version if block_given?
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|