Class: Katello::Pulp3::PulpContentUnit
- Inherits:
-
Object
- Object
- Katello::Pulp3::PulpContentUnit
show all
- Defined in:
- app/services/katello/pulp3/pulp_content_unit.rb
Direct Known Subclasses
AnsibleCollection, Deb, Distribution, DockerBlob, DockerManifest, DockerManifestList, DockerTag, Erratum, FileUnit, GenericContentUnit, ModuleStream, PackageGroup, Rpm, Srpm
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of PulpContentUnit.
82
83
84
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 82
def initialize(uuid)
self.uuid = uuid
end
|
Instance Attribute Details
#backend_data ⇒ Object
158
159
160
161
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 158
def backend_data
@backend_data ||= fetch_backend_data
@backend_data.try(:with_indifferent_access)
end
|
#uuid ⇒ Object
Returns the value of attribute uuid.
79
80
81
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 79
def uuid
@uuid
end
|
Class Method Details
.add_timestamps(rows) ⇒ Object
104
105
106
107
108
109
110
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 104
def self.add_timestamps(rows)
rows.each do |row|
row[:created_at] = DateTime.now
row[:updated_at] = DateTime.now
end
rows
end
|
.backend_unit_identifier ⇒ Object
71
72
73
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 71
def self.backend_unit_identifier
nil
end
|
.content_api ⇒ Object
rubocop:enable Metrics/MethodLength
49
50
51
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 49
def self.content_api
fail NotImplementedError
end
|
.content_api_create(opts = {}) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 53
def self.content_api_create(opts = {})
relative_path = opts.delete(:relative_path)
if Katello::RepositoryTypeManager.generic_content_type?(opts[:content_type])
repository_type = Katello::Repository.find(opts[:repository_id]).repository_type
content_type = opts[:content_type]
self.content_api(repository_type, content_type).create(relative_path, opts)
elsif self.content_type == 'rpm' || self.content_type == 'srpm'
self.content_api.create(opts)
else
self.content_api.create(relative_path, opts)
end
end
|
.content_type ⇒ Object
94
95
96
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 94
def self.content_type
self::CONTENT_TYPE
end
|
.content_unit_list(page_opts) ⇒ Object
154
155
156
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 154
def self.content_unit_list(page_opts)
self.content_api.list page_opts
end
|
.create_content ⇒ Object
67
68
69
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 67
def self.create_content
fail NotImplementedError
end
|
.fetch_content_list(page_opts) ⇒ Object
167
168
169
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 167
def self.fetch_content_list(page_opts)
content_unit_list page_opts
end
|
.find_duplicate_unit(repository, unit_type_id, file, checksum) ⇒ Object
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 171
def self.find_duplicate_unit(repository, unit_type_id, file, checksum)
filter_label = :sha256
path_label = :relative_path
if unit_type_id == 'ostree_ref'
filter_label = :checksum
end
if unit_type_id == 'rpm'
filter_label = :pkg_id
path_label = :location_href
end
content_backend_service = SmartProxy.pulp_primary.content_service(unit_type_id)
duplicates_allowed = ::Katello::RepositoryTypeManager.find_content_type(unit_type_id).try(:duplicates_allowed)
if repository.generic? && duplicates_allowed
filename_key = ::Katello::RepositoryTypeManager.find_content_type(unit_type_id).filename_key
duplicate_sha_path_content_list = content_backend_service.content_api(repository.repository_type, unit_type_id).list(
filter_label => checksum,
filename_key => file[:filename])
elsif repository.generic?
duplicate_sha_path_content_list = content_backend_service.content_api(repository.repository_type, unit_type_id).list(
filter_label => checksum)
elsif unit_type_id == 'deb'
duplicate_sha_path_content_list = content_backend_service.content_api.list(filter_label => checksum)
else
duplicate_sha_path_content_list = content_backend_service.content_api.list(
filter_label => checksum,
path_label => file[:filename])
end
duplicate_sha_path_content_list
end
|
.katello_name_from_pulpcore_name(pulpcore_name, repo) ⇒ Object
rubocop:disable Metrics/MethodLength
.page_options(page_opts = {}) ⇒ Object
145
146
147
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 145
def self.page_options(page_opts = {})
page_opts
end
|
.pulp_data(href) ⇒ Object
149
150
151
152
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 149
def self.pulp_data(href)
content_unit = self.content_api.read(href)
content_unit.as_json
end
|
.pulp_units_batch_all(content_unit_hrefs) ⇒ Object
112
113
114
115
116
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 112
def self.pulp_units_batch_all(content_unit_hrefs)
Enumerator.new do |yielder|
yielder.yield content_unit_hrefs.collect { |href| pulp_data(href) }
end
end
|
.pulp_units_batch_for_repo(repository, options = {}) ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 118
def self.pulp_units_batch_for_repo(repository, options = {})
fetch_identifiers = options.fetch(:fetch_identifiers, false)
page_size = options.fetch(:page_size, Setting[:bulk_load_size])
repository_version_href = repository.version_href
page_opts = { "offset" => 0, repository_version: repository_version_href, limit: page_size }
page_opts[:fields] = self.const_get(:PULP_INDEXED_FIELDS).join(",") if self.constants.include?(:PULP_INDEXED_FIELDS)
page_opts[:fields] = 'pulp_href' if fetch_identifiers
response = {}
Enumerator.new do |yielder|
loop do
page_opts = page_opts.with_indifferent_access
break unless (
(response["count"] && page_opts["offset"] < response["count"]) ||
page_opts["offset"] == 0)
page_opts = page_options page_opts
if repository.generic?
response = fetch_content_list page_opts, repository.repository_type, options[:content_type]
else
response = fetch_content_list page_opts
end
response = response.as_json.with_indifferent_access
yielder.yield response[:results]
page_opts[:offset] += page_size
end
end
end
|
.pulp_units_for_ids(content_unit_hrefs) ⇒ Object
98
99
100
101
102
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 98
def self.pulp_units_for_ids(content_unit_hrefs)
Enumerator.new do |yielder|
yielder.yield content_unit_hrefs.collect { |href| pulp_data(href).with_indifferent_access }
end
end
|
.supports_id_fetch? ⇒ Boolean
75
76
77
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 75
def self.supports_id_fetch?
true
end
|
.unit_identifier ⇒ Object
90
91
92
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 90
def self.unit_identifier
"pulp_href"
end
|
Instance Method Details
#fetch_backend_data ⇒ Object
163
164
165
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 163
def fetch_backend_data
self.class.pulp_data(self.uuid)
end
|