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.
81
82
83
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 81
def initialize(uuid)
self.uuid = uuid
end
|
Instance Attribute Details
#backend_data ⇒ Object
157
158
159
160
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 157
def backend_data
@backend_data ||= fetch_backend_data
@backend_data.try(:with_indifferent_access)
end
|
#uuid ⇒ Object
Returns the value of attribute uuid.
78
79
80
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 78
def uuid
@uuid
end
|
Class Method Details
.add_timestamps(rows) ⇒ Object
103
104
105
106
107
108
109
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 103
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
70
71
72
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 70
def self.backend_unit_identifier
nil
end
|
.content_api ⇒ Object
rubocop:enable Metrics/MethodLength
48
49
50
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 48
def self.content_api
fail NotImplementedError
end
|
.content_api_create(opts = {}) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 52
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
93
94
95
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 93
def self.content_type
self::CONTENT_TYPE
end
|
.content_unit_list(page_opts) ⇒ Object
153
154
155
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 153
def self.content_unit_list(page_opts)
self.content_api.list page_opts
end
|
.create_content ⇒ Object
66
67
68
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 66
def self.create_content
fail NotImplementedError
end
|
.fetch_content_list(page_opts) ⇒ Object
166
167
168
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 166
def self.fetch_content_list(page_opts)
content_unit_list page_opts
end
|
.find_duplicate_unit(repository, unit_type_id, file, checksum) ⇒ Object
170
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
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 170
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
144
145
146
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 144
def self.page_options(page_opts = {})
page_opts
end
|
.pulp_data(href) ⇒ Object
148
149
150
151
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 148
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
111
112
113
114
115
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 111
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
117
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
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 117
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
97
98
99
100
101
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 97
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
74
75
76
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 74
def self.supports_id_fetch?
true
end
|
.unit_identifier ⇒ Object
89
90
91
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 89
def self.unit_identifier
"pulp_href"
end
|
Instance Method Details
#fetch_backend_data ⇒ Object
162
163
164
|
# File 'app/services/katello/pulp3/pulp_content_unit.rb', line 162
def fetch_backend_data
self.class.pulp_data(self.uuid)
end
|