Module: ForemanKernelCare::HostManagedExtensions
- Defined in:
- app/models/concerns/foreman_kernel_care/host_managed_extensions.rb
Instance Method Summary collapse
- #import_package_profile(simple_packages) ⇒ Object
- #import_tracer_profile(tracer_profile) ⇒ Object
- #sync_kernel_associations(new_patched_kernel_ids, delete_ids) ⇒ Object
- #update_kernel_version(version, release) ⇒ Object
Instance Method Details
#import_package_profile(simple_packages) ⇒ Object
3 4 5 6 7 8 9 10 11 12 |
# File 'app/models/concerns/foreman_kernel_care/host_managed_extensions.rb', line 3 def import_package_profile(simple_packages) if kernelcare? composer = ::JobInvocationComposer.for_feature(:kernel_version, self) composer.triggering.mode = :future composer.trigger! end found = import_package_profile_in_bulk(simple_packages) sync_package_associations(found.map(&:id).uniq) end |
#import_tracer_profile(tracer_profile) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/models/concerns/foreman_kernel_care/host_managed_extensions.rb', line 14 def import_tracer_profile(tracer_profile) traces = [] tracer_profile.each do |trace, attributes| next if attributes[:helper].blank? if trace.to_s == 'kernel' && kernelcare? composer = ::JobInvocationComposer.for_feature(:update_kernel, self) composer.triggering.mode = :future composer.trigger! next end traces << { host_id: id, application: trace, helper: attributes[:helper], app_type: attributes[:type] } end host_traces.delete_all Katello::HostTracer.import(traces, validate: false) update_trace_status end |
#sync_kernel_associations(new_patched_kernel_ids, delete_ids) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/concerns/foreman_kernel_care/host_managed_extensions.rb', line 51 def sync_kernel_associations(new_patched_kernel_ids, delete_ids) ::Katello::Util::Support.active_record_retry do table_name = host_installed_packages.table_name queries = [] if delete_ids.any? queries << "DELETE FROM #{table_name} WHERE host_id=#{id} AND installed_package_id IN (#{delete_ids.join(', ')})" end unless new_patched_kernel_ids.empty? inserts = new_patched_kernel_ids.map { |unit_id| "(#{unit_id.to_i}, #{id.to_i})" } queries << "INSERT INTO #{table_name} (installed_package_id, host_id) VALUES #{inserts.join(', ')}" end queries.each do |query| ::ActiveRecord::Base.connection.execute(query) end end end |
#update_kernel_version(version, release) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/models/concerns/foreman_kernel_care/host_managed_extensions.rb', line 34 def update_kernel_version(version, release) packages = ::Katello::InstalledPackage.where('name LIKE ?', '%kernel%').where.not(name: 'kernelcare').to_a delete_ids = [] simple_packages = packages.map do |p| delete_ids << p.id ::Katello::Pulp::SimplePackage.new({ arch: p.arch, epoch: p.epoch, version: version, release: release, name: p.name }) end found = import_package_profile_in_bulk(simple_packages) sync_kernel_associations(found.map(&:id).uniq, delete_ids) end |