Class: Katello::Pulp3::SmartProxyRepository

Inherits:
Object
  • Object
show all
Defined in:
app/services/katello/pulp3/smart_proxy_repository.rb

Direct Known Subclasses

SmartProxyMirrorRepository

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(smart_proxy) ⇒ SmartProxyRepository

Returns a new instance of SmartProxyRepository.



6
7
8
9
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 6

def initialize(smart_proxy)
  fail "Cannot use a mirror" if smart_proxy.pulp_mirror?
  @smart_proxy = smart_proxy
end

Instance Attribute Details

#smart_proxyObject

Returns the value of attribute smart_proxy.



4
5
6
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 4

def smart_proxy
  @smart_proxy
end

Class Method Details

.instance_for_type(smart_proxy) ⇒ Object



11
12
13
14
15
16
17
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 11

def self.instance_for_type(smart_proxy)
  if smart_proxy.pulp_primary?
    SmartProxyRepository.new(smart_proxy)
  else
    SmartProxyMirrorRepository.new(smart_proxy)
  end
end

Instance Method Details

#==(other) ⇒ Object



19
20
21
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 19

def ==(other)
  other.class == self.class && other.smart_proxy == smart_proxy
end

#current_repositories(environment_id = nil, content_view_id = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 23

def current_repositories(environment_id = nil, content_view_id = nil)
  katello_repos = Katello::Repository.all
  katello_repos = katello_repos.where(:environment_id => environment_id) if environment_id
  katello_repos = katello_repos.in_content_views([content_view_id]) if content_view_id
  katello_repos = katello_repos.select { |repo| smart_proxy.pulp3_support?(repo) }
  repos_on_capsule = pulp3_enabled_repo_types.collect do |repo_type|
    repo_type.pulp3_api(smart_proxy).list_all(name_in: katello_repos.map(&:pulp_id))
  end
  repos_on_capsule.flatten!
  repo_ids = repos_on_capsule.map(&:name)
  katello_repos.select { |repo| repo_ids.include? repo.pulp_id }
end

#delete_orphan_repositoriesObject



66
67
68
69
70
71
72
73
74
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 66

def delete_orphan_repositories
  tasks = []
  orphan_repositories.each do |api, hrefs|
    tasks << hrefs.collect do |href|
      api.repositories_api.delete(href)
    end
  end
  tasks.flatten
end

#delete_orphan_repository_versionsObject



36
37
38
39
40
41
42
43
44
45
46
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 36

def delete_orphan_repository_versions
  tasks = []

  orphan_repository_versions.each do |api, version_hrefs|
    tasks << version_hrefs.collect do |href|
      api.repository_versions_api.delete(href)
    end
  end

  tasks.flatten
end

#orphan_repositoriesObject



76
77
78
79
80
81
82
83
84
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 76

def orphan_repositories
  repo_map = {}
  pulp3_enabled_repo_types(false).each do |repo_type|
    api = repo_type.pulp3_service_class.api(smart_proxy)
    repo_hrefs = api.list_all.map(&:pulp_href)
    repo_map[api] = repo_hrefs - ::Katello::Pulp3::RepositoryReference.where(repository_href: repo_hrefs).pluck(:repository_href)
  end
  repo_map
end

#orphan_repository_versionsObject



54
55
56
57
58
59
60
61
62
63
64
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 54

def orphan_repository_versions
  # Each key is a Pulp 3 plugin API and each value is the list of version_hrefs
  repo_version_map = {}
  pulp3_enabled_repo_types.each do |repo_type|
    api = repo_type.pulp3_api(smart_proxy)
    version_hrefs = api.repository_versions.select { |repo_version| repo_version.number != 0 }.map(&:pulp_href)
    repo_version_map[api] = version_hrefs - ::Katello::Repository.where(version_href: version_hrefs).pluck(:version_href)
  end

  repo_version_map
end

#pulp3_enabled_repo_typesObject



48
49
50
51
52
# File 'app/services/katello/pulp3/smart_proxy_repository.rb', line 48

def pulp3_enabled_repo_types
  Katello::RepositoryTypeManager.enabled_repository_types.values.select do |repository_type|
    smart_proxy.pulp3_repository_type_support?(repository_type)
  end
end