Class: Katello::ContentViewDebFilter

Inherits:
ContentViewFilter show all
Defined in:
app/models/katello/content_view_deb_filter.rb

Constant Summary collapse

CONTENT_TYPE =
Deb::CONTENT_TYPE

Constants inherited from ContentViewFilter

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

Methods inherited from ContentViewFilter

applicable, #applicable_repos, #as_json, class_for, #content_type, create_for, deb, docker, errata, #filter_type, module_stream, #original_module_streams=, #original_packages=, #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_deb_clauses(package_filenames = []) ⇒ Object



28
29
30
# File 'app/models/katello/content_view_deb_filter.rb', line 28

def self.generate_deb_clauses(package_filenames = [])
  { 'filename' => { "$in" => package_filenames } } unless package_filenames.empty?
end

Instance Method Details

#applicable_debsObject



32
33
34
# File 'app/models/katello/content_view_deb_filter.rb', line 32

def applicable_debs
  Deb.in_repositories(self.applicable_repos)
end

#content_unit_pulp_ids(repo) ⇒ Object



19
20
21
22
23
24
25
26
# File 'app/models/katello/content_view_deb_filter.rb', line 19

def content_unit_pulp_ids(repo)
  deb_filenames = []
  self.deb_rules.each do |rule|
    deb_filenames.concat(query_debs(repo, rule))
  end
  debs = Deb.in_repositories(repo)
  debs.where(filename: deb_filenames).pluck(:pulp_id).flatten.uniq
end

#generate_clauses(repo) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'app/models/katello/content_view_deb_filter.rb', line 9

def generate_clauses(repo)
  package_filenames = []

  self.deb_rules.each do |rule|
    package_filenames.concat(query_debs(repo, rule))
  end

  ContentViewDebFilter.generate_deb_clauses(package_filenames)
end

#query_debs(repo, rule) ⇒ Object



36
37
38
39
# File 'app/models/katello/content_view_deb_filter.rb', line 36

def query_debs(repo, rule)
  debs = Deb.in_repositories(repo)
  query_debs_from_collection(debs, rule).pluck("#{Deb.table_name}.filename")
end

#query_debs_from_collection(collection, rule) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'app/models/katello/content_view_deb_filter.rb', line 41

def query_debs_from_collection(collection, rule)
  query_name = rule.name.tr("*", "%")
  query = collection.where("#{Deb.table_name}.name ilike ?", query_name)
  if rule.architecture.present?
    query_arch = rule.architecture.tr("*", "%")
    query = query.where("#{Deb.table_name}.architecture ilike ?", query_arch)
  end
  query.default_sort
end