Class: Actions::Pulp3::Repository::SaveVersions
- Defined in:
- app/lib/actions/pulp3/repository/save_versions.rb
Instance Method Summary collapse
- #find_repositories(repository_ids) ⇒ Object
- #latest_version_href(repo_backend_service) ⇒ Object
- #plan(repository_ids, options) ⇒ Object
- #run ⇒ Object
- #version_map(version_hrefs) ⇒ Object
Methods inherited from Abstract
Instance Method Details
#find_repositories(repository_ids) ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'app/lib/actions/pulp3/repository/save_versions.rb', line 61 def find_repositories(repository_ids) repository_ids.collect do |repo_id| if repo_id.is_a?(Hash) ::Katello::Repository.find(repo_id.with_indifferent_access[:id]) else ::Katello::Repository.find(repo_id) end end end |
#latest_version_href(repo_backend_service) ⇒ Object
56 57 58 59 |
# File 'app/lib/actions/pulp3/repository/save_versions.rb', line 56 def latest_version_href(repo_backend_service) repo_backend_service.api.repositories_api. read(repo_backend_service.repository_reference.repository_href).latest_version_href end |
#plan(repository_ids, options) ⇒ Object
5 6 7 |
# File 'app/lib/actions/pulp3/repository/save_versions.rb', line 5 def plan(repository_ids, ) plan_self(:repository_ids => repository_ids, :tasks => [:tasks]) end |
#run ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/lib/actions/pulp3/repository/save_versions.rb', line 9 def run return if input[:tasks].empty? version_hrefs = input[:tasks].last[:created_resources] repositories = find_repositories(input[:repository_ids]) output.merge!(contents_changed: false, updated_repositories: []) repositories.each do |repo| repo_backend_service = repo.backend_service(SmartProxy.pulp_primary) if repo.version_href # Chop off the version number to compare base repo strings unversioned_href = repo.version_href[0..-2].rpartition('/').first # Could have multiple version_hrefs for the same repo depending on the copy task new_version_hrefs = version_hrefs.collect do |version_href| version_href if unversioned_href == version_href[0..-2].rpartition('/').first end new_version_hrefs.compact! if new_version_hrefs.size > 1 # Find latest version_href by its version number new_version_href = version_map(new_version_hrefs).max_by { |_href, version| version }.first else new_version_href = new_version_hrefs.first end # Successive incremental updates won't generate a new repo version, so fetch the latest Pulp 3 repo version new_version_href ||= latest_version_href(repo_backend_service) else new_version_href = latest_version_href(repo_backend_service) end unless new_version_href == repo.version_href repo.update(version_href: new_version_href) repo.index_content output[:contents_changed] = true output[:updated_repositories] << repo.id end end end |
#version_map(version_hrefs) ⇒ Object
48 49 50 51 52 53 54 |
# File 'app/lib/actions/pulp3/repository/save_versions.rb', line 48 def version_map(version_hrefs) version_map = {} version_hrefs.each do |href| version_map[href] = href.split("/")[-1].to_i end version_map end |