Class: Katello::ContentViewPackageFilter
Constant Summary
collapse
- CONTENT_TYPE =
Rpm::CONTENT_TYPE
Katello::ContentViewFilter::CONTENT_OPTIONS, Katello::ContentViewFilter::CONTENT_TYPES, Katello::ContentViewFilter::DEB, Katello::ContentViewFilter::DOCKER, Katello::ContentViewFilter::ERRATA, Katello::ContentViewFilter::MODULE_STREAM, Katello::ContentViewFilter::PACKAGE_GROUP, Katello::ContentViewFilter::RPM
Class Method Summary
collapse
Instance Method Summary
collapse
applicable, #applicable_repos, #as_json, class_for, #content_type, create_for, deb, docker, errata, #filter_type, module_stream, #original_module_streams=, #params_format, #resulting_products, rule_class_for, rule_ids_for, #validate_content_view, #validate_filter_repos, yum
Methods inherited from Model
#destroy!
Class Method Details
.generate_rpm_clauses(package_filenames = []) ⇒ Object
45
46
47
|
# File 'app/models/katello/content_view_package_filter.rb', line 45
def self.generate_rpm_clauses(package_filenames = [])
{ 'filename' => { "$in" => package_filenames.sort } } unless package_filenames.empty?
end
|
Instance Method Details
#applicable_rpms ⇒ Object
49
50
51
|
# File 'app/models/katello/content_view_package_filter.rb', line 49
def applicable_rpms
Rpm.in_repositories(self.applicable_repos)
end
|
#content_unit_pulp_ids(repo) ⇒ Object
35
36
37
38
39
40
41
42
43
|
# File 'app/models/katello/content_view_package_filter.rb', line 35
def content_unit_pulp_ids(repo)
package_filenames = []
self.package_rules.each do |rule|
package_filenames.concat(query_rpms(repo, rule))
end
package_filenames.concat(repo.packages_without_errata.map(&:filename)) if self.original_packages
rpms = Rpm.in_repositories(repo)
rpms.where(filename: package_filenames).where(:modular => false).pluck(:pulp_id).flatten.uniq
end
|
#generate_clauses(repo) ⇒ Array
Returns a set of Pulp/MongoDB conditions to filter out packages in the repo repository that match parameters if the repository content type is managed by pulp2.
Returns a set of pulpcore hrefs (pulp_ids) if the repository content type is managed by pulpcore.
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'app/models/katello/content_view_package_filter.rb', line 18
def generate_clauses(repo)
package_filenames = []
self.package_rules.each do |rule|
package_filenames.concat(query_rpms(repo, rule))
end
if self.original_packages
package_filenames.concat(repo.packages_without_errata.map(&:filename))
end
ContentViewPackageFilter.generate_rpm_clauses(package_filenames)
end
|
#original_packages=(value) ⇒ Object
31
32
33
|
# File 'app/models/katello/content_view_package_filter.rb', line 31
def original_packages=(value)
self[:original_packages] = value
end
|
#query_rpms(repo, rule) ⇒ Object
53
54
55
56
|
# File 'app/models/katello/content_view_package_filter.rb', line 53
def query_rpms(repo, rule)
rpms = Rpm.in_repositories(repo)
query_rpms_from_collection(rpms, rule).pluck("#{Rpm.table_name}.filename")
end
|
#query_rpms_from_collection(collection, rule) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'app/models/katello/content_view_package_filter.rb', line 58
def query_rpms_from_collection(collection, rule)
query_name = rule.name.tr("*", "%")
query = collection.non_modular.where("#{Rpm.table_name}.name ilike ?", query_name)
if rule.architecture.present?
query_arch = rule.architecture.tr("*", "%")
query = query.where("#{Rpm.table_name}.arch ilike ?", query_arch)
end
if rule.version.present?
query = query.search_version_equal(rule.version)
elsif rule.min_version.present? || rule.max_version.present?
query = query.search_version_range(rule.min_version, rule.max_version)
end
query.default_sort
end
|