Sha256: 970a38abce1a65b2cfe2b36c8619b4433f6d2a047d1650f2798ce0694c5cc31f

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

require 'rest-client'

module InventorySync
  module Async
    class QueryInventoryJob < ::Actions::EntryAction
      include ActiveSupport::Callbacks
      include ::ForemanRhCloud::CloudAuth

      define_callbacks :iteration, :step

      def run
        run_callbacks :iteration do
          page = 1
          loop do
            api_response = query_inventory(page)
            results = HostResult.new(api_response)
            logger.debug("Downloaded cloud inventory data: #{results.percentage}%")

            run_callbacks :step do
              results
            end

            page += 1
            break if results.last?
          end
        end
      end

      private

      def query_inventory(page = 1)
        hosts_inventory_response = execute_cloud_request(
          method: :get,
          url: ForemanInventoryUpload.inventory_export_url,
          headers: {
            params: {
              per_page: 100,
              page: page,
            },
          }
        )

        JSON.parse(hosts_inventory_response)
      end

      def logger
        action_logger
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
foreman_rh_cloud-3.0.23 lib/inventory_sync/async/query_inventory_job.rb
foreman_rh_cloud-4.0.23 lib/inventory_sync/async/query_inventory_job.rb
foreman_rh_cloud-3.0.22 lib/inventory_sync/async/query_inventory_job.rb
foreman_rh_cloud-4.0.22 lib/inventory_sync/async/query_inventory_job.rb