Sha256: ed01e3ad3fbe059667dd5544b8c54e0398b1f12d8e0dd9333c9e02dcbf940547

Contents?: true

Size: 1.27 KB

Versions: 13

Compression:

Stored size: 1.27 KB

Contents

module InventorySync
  module Async
    class InventoryHostsSync < QueryInventoryJob
      set_callback :iteration, :around, :setup_facet_transaction
      set_callback :step, :around, :create_facets

      def plan
        unless cloud_auth_available?
          logger.debug('Cloud authentication is not available, skipping inventory hosts sync')
          return
        end

        # by default the tasks will be executed concurrently
        plan_self
        plan_self_host_sync
      end

      def setup_facet_transaction
        InsightsFacet.transaction do
          yield
        end
      end

      def create_facets
        # get the results from the event
        results = yield
        add_missing_insights_facets(results.host_uuids)
        results
      end

      def rescue_strategy_for_self
        Dynflow::Action::Rescue::Fail
      end

      private

      def add_missing_insights_facets(uuids_hash)
        all_facets = uuids_hash.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

      def plan_self_host_sync
        plan_action InventorySync::Async::InventorySelfHostSync
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
foreman_rh_cloud-4.0.36 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-4.0.35 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-5.0.35 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-5.0.34 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-5.0.33 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-4.0.32 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-5.0.32 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-4.0.31 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-5.0.31 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-5.0.30 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-4.0.30 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-4.0.29 lib/inventory_sync/async/inventory_hosts_sync.rb
foreman_rh_cloud-5.0.29 lib/inventory_sync/async/inventory_hosts_sync.rb