namespace :katello do
namespace :upgrades do namespace '4.19' do desc "Populate repository version PRNs for all repositories" task :populate_repository_version_prns => ["dynflow:client", "check_ping"] do User.current = User.anonymous_api_admin api = ::Katello::Pulp3::Api::Core.new(SmartProxy.pulp_primary) updates = [] api.core_repository_versions_list_all(fields: 'pulp_href,prn').each do |repo_version| next if repo_version.prn.blank? updates << { version_href: repo_version.pulp_href, prn: repo_version.prn } end return if updates.empty? updates.each_slice(10_000) do |batch| when_clauses = batch.map do |update| version_href = ::Katello::Repository.connection.quote_string(update[:version_href]) prn = ::Katello::Repository.connection.quote_string(update[:prn]) "WHEN '#{version_href}' THEN '#{prn}'" end version_hrefs = batch.map { |u| u[:version_href] } case_statement = "CASE version_href #{when_clauses.join(' ')} END" ::Katello::Repository.where(version_href: version_hrefs) .update_all("version_prn = #{case_statement}") end end end end
end