Class: InventorySync::Async::HostResult
- Inherits:
 - 
      Object
      
        
- Object
 - InventorySync::Async::HostResult
 
 
- Defined in:
 - lib/inventory_sync/async/host_result.rb
 
Instance Attribute Summary collapse
- 
  
    
      #organization  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute organization.
 - 
  
    
      #uuid_by_fqdn  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute uuid_by_fqdn.
 
Instance Method Summary collapse
- #host_id(sub_id) ⇒ Object
 - #host_uuids ⇒ Object
 - #hosts ⇒ Object
 - 
  
    
      #initialize(result, organization)  ⇒ HostResult 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of HostResult.
 - #last? ⇒ Boolean
 - #missing_hosts ⇒ Object
 - #percentage ⇒ Object
 - #status_hashes ⇒ Object
 
Constructor Details
#initialize(result, organization) ⇒ HostResult
Returns a new instance of HostResult.
      6 7 8 9 10 11 12 13 14 15 16  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 6 def initialize(result, organization) @organization = organization @total = result['total'] @count = result['count'] @page = result['page'] @per_page = result['per_page'] @sub_ids = result["results"].map { |host| host['subscription_manager_id'] } @uuid_by_sub_id = Hash[result["results"].map { |host| [host['subscription_manager_id'], host['id']] }] @uuid_by_fqdn = Hash[result["results"].map { |host| [host['fqdn']&.downcase, host['id']] }] @results = result["results"] end  | 
  
Instance Attribute Details
#organization ⇒ Object (readonly)
Returns the value of attribute organization.
      4 5 6  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 4 def organization @organization end  | 
  
#uuid_by_fqdn ⇒ Object (readonly)
Returns the value of attribute uuid_by_fqdn.
      4 5 6  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 4 def uuid_by_fqdn @uuid_by_fqdn end  | 
  
Instance Method Details
#host_id(sub_id) ⇒ Object
      32 33 34  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 32 def host_id(sub_id) hosts[sub_id] end  | 
  
#host_uuids ⇒ Object
      42 43 44  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 42 def host_uuids @host_uuids ||= Hash[@sub_ids.map { |sub_id| [host_id(sub_id), @uuid_by_sub_id[sub_id]] }].except(nil) end  | 
  
#hosts ⇒ Object
      36 37 38 39 40  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 36 def hosts @hosts ||= Hash[ Katello::Host::SubscriptionFacet.where(uuid: @sub_ids).pluck(:uuid, :host_id) ] end  | 
  
#last? ⇒ Boolean
      55 56 57  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 55 def last? @total <= @per_page * @page end  | 
  
#missing_hosts ⇒ Object
      46 47 48  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 46 def missing_hosts @results.select { |host| hosts[host['subscription_manager_id']].nil? } end  | 
  
#percentage ⇒ Object
      50 51 52 53  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 50 def percentage ratio = @per_page * @page * 1.0 / @total * 100 ratio > 100 ? 100 : ratio.truncate(2) end  | 
  
#status_hashes ⇒ Object
      18 19 20 21 22 23 24 25 26 27 28 29 30  | 
    
      # File 'lib/inventory_sync/async/host_result.rb', line 18 def status_hashes @sub_ids.map do |sub_id| host_id = host_id(sub_id) if host_id { host_id: host_id, status: InventorySync::InventoryStatus::SYNC, reported_at: DateTime.current, type: InventorySync::InventoryStatus.name, } end end.compact end  |