Sha256: 7cfc6ce28a93dba5a30ef716763426572df7899a76adabc5810cbf1c44617ddf

Contents?: true

Size: 1.49 KB

Versions: 1

Compression:

Stored size: 1.49 KB

Contents

#
# Extra classes needed to operate with Chimp
#
module Chimp
  #
  # This class allows to check on the status of any of the tasks created.
  #
  class Task
    attr_writer :tasker
    attr_reader :tasker

    def initialize
      rate = ENV['API_POLLING_RATE'] || 30
      @api_polling_rate = rate.to_i
    end

    def wait_for_state(desired_state, timeout = 900)
      while timeout > 0
        # Make compatible with RL10.
        status = state.downcase
        return true if status.match(desired_state)
        friendly_url = Connection.audit_url + '/audit_entries/'
        friendly_url += href.split(/\//).last
        friendly_url = friendly_url.gsub('ae-', '')
        if status.match('failed') || status.match('aborted')
          raise "FATAL error, #{status}\n\n Audit: #{friendly_url}\n "
        end
        Log.debug "Polling again in #{@api_polling_rate}"
        sleep @api_polling_rate
        timeout -= @api_polling_rate
      end
      raise "FATAL: Timeout waiting for Executable to complete.  State was #{status}" if timeout <= 0
    end

    def wait_for_completed(timeout = 900)
      wait_for_state('completed', timeout)
    end

    def state
      tasker.show.summary
    end

    def href
      tasker.href
    end

    def friendly_url
      friendly_url = Connection.audit_url + '/audit_entries/'
      friendly_url += href.split(/\//).last
      friendly_url = friendly_url.gsub('ae-', '')
      friendly_url
    end

    def details
      tasker.show(view: 'extended').detail
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
right_chimp-2.4 lib/right_chimp/resources/task.rb