class InventorySync::Async::InventoryHostsSync

Public Instance Methods

create_facets() { || ... } click to toggle source
# File lib/inventory_sync/async/inventory_hosts_sync.rb, line 19
def create_facets
  # get the results from the event
  results = yield
  add_missing_insights_facets(results.organization, results.host_uuids)
  results
end
plan(organizations) click to toggle source
Calls superclass method
# File lib/inventory_sync/async/inventory_hosts_sync.rb, line 7
def plan(organizations)
  # by default the tasks will be executed concurrently
  super(organizations)
  plan_self_host_sync
end
rescue_strategy_for_self() click to toggle source
# File lib/inventory_sync/async/inventory_hosts_sync.rb, line 26
def rescue_strategy_for_self
  Dynflow::Action::Rescue::Fail
end
setup_facet_transaction() { || ... } click to toggle source
# File lib/inventory_sync/async/inventory_hosts_sync.rb, line 13
def setup_facet_transaction
  InsightsFacet.transaction do
    yield
  end
end

Private Instance Methods

action_name() click to toggle source
# File lib/inventory_sync/async/inventory_hosts_sync.rb, line 49
def action_name
  'inventory hosts sync'
end
add_missing_insights_facets(organization, uuids_hash) click to toggle source
# File lib/inventory_sync/async/inventory_hosts_sync.rb, line 32
def add_missing_insights_facets(organization, uuids_hash)
  # Filter out hosts that belong to different organization (although they are visible by the query)
  unrelated_hosts = Host.where.not(organization_id: organization.id).where(id: uuids_hash.keys).pluck(:id)
  all_facets = uuids_hash.except(unrelated_hosts).map do |host_id, uuid|
    {
      host_id: host_id,
      uuid: uuid,
    }
  end

  InsightsFacet.upsert_all(all_facets, unique_by: :host_id) unless all_facets.empty?
end
plan_self_host_sync() click to toggle source
# File lib/inventory_sync/async/inventory_hosts_sync.rb, line 45
def plan_self_host_sync
  plan_action InventorySync::Async::InventorySelfHostSync
end