Class: Katello::Util::CVECFMigrator

Inherits:
Object
  • Object
show all
Defined in:
app/lib/katello/util/cvecf_migrator.rb

Overview

used in db/migrate/20220929204746_add_content_view_environment_content_facet.rb

Instance Method Summary collapse

Instance Method Details

#execute!Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/lib/katello/util/cvecf_migrator.rb', line 4

def execute!
  hosts_with_no_cve = []
  hosts_with_missing_cve = []

  ::Host::Managed.all.each do |host|
    next if host.content_facet.blank?
    if ::Katello::ContentView.exists?(id: host.content_facet.content_view_id) && ::Katello::KTEnvironment.exists?(host.content_facet.lifecycle_environment_id)
      cve = ::Katello::ContentViewEnvironment.find_by(content_view_id: host.content_facet.content_view_id, environment_id: host.content_facet.lifecycle_environment_id)
      if cve.blank?
        hosts_with_no_cve << host
      end
    else
      hosts_with_missing_cve << host
    end
  end

  if hosts_with_missing_cve.present? || hosts_with_no_cve.present?
    Rails.logger.warn "Found #{hosts_with_no_cve.count} hosts whose lifecycle environment does not have a corresponding ContentViewEnvironment"
    Rails.logger.warn "Found #{hosts_with_missing_cve.count} hosts whose content facet is missing either content_view_id or lifecycle_environment_id"
    Rails.logger.info "You may want to change the content view / lifecycle environment for these hosts manually."
  end
  (hosts_with_no_cve + hosts_with_missing_cve).each do |host|
    default_content_view = host.organization.default_content_view
    library = host.organization.library
    Rails.logger.info "Updating host #{host.name} with default content_view_id and lifecycle_environment_id"
    host.content_facet&.update_columns(content_view_id: default_content_view&.id, lifecycle_environment_id: library&.id)
  end
end