Class: Katello::Pulp3::RepositoryMirror
- Inherits:
-
Object
- Object
- Katello::Pulp3::RepositoryMirror
- Defined in:
- app/services/katello/pulp3/repository_mirror.rb
Instance Attribute Summary collapse
-
#repo_service ⇒ Object
Returns the value of attribute repo_service.
Instance Method Summary collapse
- #backend_object_name ⇒ Object
- #common_remote_options ⇒ Object
- #compute_remote_options ⇒ Object
- #content_guard_href ⇒ Object
- #create(_force = false) ⇒ Object
- #create_distribution(path) ⇒ Object
- #create_entities ⇒ Object
- #create_publication ⇒ Object
- #create_remote ⇒ Object
- #create_version(options = {}) ⇒ Object
- #delete(href = repository_href) ⇒ Object
- #distribution_options(path, options = {}) ⇒ Object
- #fetch_remote ⇒ Object
- #fetch_repository ⇒ Object
-
#initialize(repository_service) ⇒ RepositoryMirror
constructor
A new instance of RepositoryMirror.
- #needs_updates? ⇒ Boolean
- #publication_href ⇒ Object
- #publication_options(repository_version) ⇒ Object
- #pulp3_enabled_repo_types ⇒ Object
- #refresh_distributions(_options = {}) ⇒ Object
- #refresh_entities ⇒ Object
- #remote_feed_url ⇒ Object
- #remote_href ⇒ Object
- #remote_options ⇒ Object
- #repository_href ⇒ Object
- #ssl_remote_options ⇒ Object
- #sync(options = {}) ⇒ Object
- #update ⇒ Object
- #version_href ⇒ Object
Constructor Details
#initialize(repository_service) ⇒ RepositoryMirror
Returns a new instance of RepositoryMirror.
10 11 12 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 10 def initialize(repository_service) @repo_service = repository_service end |
Instance Attribute Details
#repo_service ⇒ Object
Returns the value of attribute repo_service.
4 5 6 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 4 def repo_service @repo_service end |
Instance Method Details
#backend_object_name ⇒ Object
19 20 21 22 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 19 def backend_object_name #Create repos in pulp3 instance with the name as this repo's pulp_id repo.pulp_id end |
#common_remote_options ⇒ Object
145 146 147 148 149 150 151 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 145 def = { name: backend_object_name } .merge!({download_concurrency: repo.download_concurrency}) if repo.download_concurrency .merge!() end |
#compute_remote_options ⇒ Object
123 124 125 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 123 def repo_service.() end |
#content_guard_href ⇒ Object
14 15 16 17 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 14 def content_guard_href content_guard_api = ::Katello::Pulp3::Api::ContentGuard.new(smart_proxy) content_guard_api.list&.results&.first&.pulp_href end |
#create(_force = false) ⇒ Object
54 55 56 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 54 def create(_force = false) api.repositories_api.create(name: backend_object_name) end |
#create_distribution(path) ⇒ Object
220 221 222 223 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 220 def create_distribution(path) distribution_data = api.distribution_class.new((path)) repo_service.distributions_api.create(distribution_data) end |
#create_entities ⇒ Object
49 50 51 52 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 49 def create_entities create create_remote unless fetch_remote end |
#create_publication ⇒ Object
177 178 179 180 181 182 183 184 185 186 187 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 177 def create_publication if (href = version_href) if repo_service.repo.content_type == "deb" publication_data = api.publication_verbatim_class.new({repository_version: href}) api.publications_verbatim_api.create(publication_data) else publication_data = api.publication_class.new((href)) api.publications_api.create(publication_data) end end end |
#create_remote ⇒ Object
113 114 115 116 117 118 119 120 121 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 113 def create_remote if [:url]&.start_with?('uln') remote_file_data = @repo_service.api.class.remote_uln_class.new() api.remotes_uln_api.create(remote_file_data) else remote_file_data = @repo_service.api.remote_class.new() api.remotes_api.create(remote_file_data) end end |
#create_version(options = {}) ⇒ Object
89 90 91 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 89 def create_version( = {}) api.repository_versions_api.create(repository_href, ) end |
#delete(href = repository_href) ⇒ Object
62 63 64 65 66 67 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 62 def delete(href = repository_href) api.repositories_api.delete(href) if href rescue api.api_exception_class => e raise e if e.code != 404 nil end |
#distribution_options(path, options = {}) ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 93 def (path, = {}) ret = { base_path: path, name: "#{backend_object_name}" } ret[:content_guard] = repo.unprotected ? nil : content_guard_href ret[:publication] = [:publication] if .key? :publication ret[:repository_version] = [:repository_version] if .key? :repository_version ret end |
#fetch_remote ⇒ Object
127 128 129 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 127 def fetch_remote api.remotes_list(name: backend_object_name).first end |
#fetch_repository ⇒ Object
73 74 75 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 73 def fetch_repository repo_service.api.list_all(name: backend_object_name).first end |
#needs_updates? ⇒ Boolean
38 39 40 41 42 43 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 38 def needs_updates? remote = fetch_remote return true if remote.blank? = repo_service. .keys.any? { |key| remote.send(key) != [key] } end |
#publication_href ⇒ Object
81 82 83 84 85 86 87 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 81 def publication_href if repo_service.repo.content_type == "deb" api.publications_verbatim_api.list(:repository_version => version_href).results.first&.pulp_href else api.publications_api.list(:repository_version => version_href).results.first&.pulp_href end end |
#publication_options(repository_version) ⇒ Object
169 170 171 172 173 174 175 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 169 def (repository_version) popts = {repository_version: repository_version} if ( = repo_service.try(:mirror_publication_options)) popts.merge!() end popts end |
#pulp3_enabled_repo_types ⇒ Object
214 215 216 217 218 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 214 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 |
#refresh_distributions(_options = {}) ⇒ Object
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 189 def refresh_distributions( = {}) path = repo_service.relative_path dist_params = {} if repo_service.repo.repository_type.pulp3_skip_publication dist_params[:repository_version] = version_href fail "could not lookup a version_href for repo #{repo_service.repo.id}" if version_href.nil? else dist_params[:publication] = publication_href fail "Could not lookup a publication_href for repo #{repo_service.repo.id}" if publication_href.nil? end = (path, dist_params) .delete(:content_guard) if repo_service.repo.content_type == "docker" if (distro = repo_service.lookup_distributions(base_path: path).first) || (distro = repo_service.lookup_distributions(name: "#{backend_object_name}").first) # update dist = .except(:name) api.distributions_api.partial_update(distro.pulp_href, ) else # create dist distribution_data = api.distribution_class.new() api.distributions_api.create(distribution_data) end end |
#refresh_entities ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 24 def refresh_entities href = remote_href if href if [:url]&.start_with?('uln') [api.remotes_uln_api.partial_update(href, )] else [api.remotes_api.partial_update(href, )] end else create_remote [] end end |
#remote_feed_url ⇒ Object
163 164 165 166 167 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 163 def remote_feed_url uri = ::SmartProxy.pulp_primary.pulp3_uri! uri.path = repo_service.partial_repo_path uri.to_s end |
#remote_href ⇒ Object
45 46 47 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 45 def remote_href fetch_remote.try(:pulp_href) end |
#remote_options ⇒ Object
104 105 106 107 108 109 110 111 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 104 def = .merge!(url: remote_feed_url) if ( = repo_service.try(:mirror_remote_options)) .merge!() end end |
#repository_href ⇒ Object
69 70 71 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 69 def repository_href fetch_repository.try(:pulp_href) end |
#ssl_remote_options ⇒ Object
153 154 155 156 157 158 159 160 161 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 153 def ueber_cert = ::Cert::Certs.ueber_cert(repo.root.organization) { client_cert: ueber_cert[:cert], client_key: ueber_cert[:key], ca_cert: ::Cert::Certs.ca_cert, tls_validation: true } end |
#sync(options = {}) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 131 def sync( = {}) sync_params = repo_service.sync_url_params() sync_params[:remote] = remote_href if repo.yum? sync_params.delete(:skip_types) if sync_params[:skip_types] sync_params[:sync_policy] = 'mirror_complete' else sync_params.delete(:sync_policy) sync_params[:mirror] = true end repository_sync_url_data = api.repository_sync_url_class.new(sync_params) [api.repositories_api.sync(repository_href, repository_sync_url_data)] end |
#update ⇒ Object
58 59 60 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 58 def update api.repositories_api.update(repository_href, name: backend_object_name) end |
#version_href ⇒ Object
77 78 79 |
# File 'app/services/katello/pulp3/repository_mirror.rb', line 77 def version_href fetch_repository.latest_version_href end |