Sha256: b3fa476f46e25fc07dcf56f023c44ecc9ae6389b4cab4d725318d0796d41fbd3

Contents?: true

Size: 1.28 KB

Versions: 43

Compression:

Stored size: 1.28 KB

Contents

module ForemanTasks
  class ContinuousOutput
    attr_accessor :raw_outputs

    def initialize(raw_outputs = [])
      @raw_outputs = []
      raw_outputs.each { |raw_output| add_raw_output(raw_output) }
    end

    def add_raw_output(raw_output)
      missing_args = %w[output_type output timestamp] - raw_output.keys
      unless missing_args.empty?
        raise ArgumentError, "Missing args for raw output: #{missing_args.inspect}"
      end
      @raw_outputs << raw_output
    end

    def empty?
      @raw_outputs.empty?
    end

    def last_timestamp
      return if @raw_outputs.empty?
      @raw_outputs.last.fetch('timestamp')
    end

    def sort!
      @raw_outputs.sort_by! { |record| record['timestamp'].to_f }
    end

    def humanize
      sort!
      raw_outputs.map { |output| output['output'] }.join("\n")
    end

    def add_exception(context, exception, timestamp = Time.now.getlocal)
      add_output(context + ": #{exception.class} - #{exception.message}", 'debug', timestamp)
    end

    def add_output(*args)
      add_raw_output(self.class.format_output(*args))
    end

    def self.format_output(message, type = 'debug', timestamp = Time.now.getlocal)
      { 'output_type' => type,
        'output' => message,
        'timestamp' => timestamp.to_f }
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
foreman-tasks-8.1.2 lib/foreman_tasks/continuous_output.rb
foreman-tasks-8.1.1 lib/foreman_tasks/continuous_output.rb
foreman-tasks-8.1.0 lib/foreman_tasks/continuous_output.rb
foreman-tasks-8.0.2 lib/foreman_tasks/continuous_output.rb
foreman-tasks-8.0.1 lib/foreman_tasks/continuous_output.rb
foreman-tasks-8.0.0 lib/foreman_tasks/continuous_output.rb
foreman-tasks-7.2.1 lib/foreman_tasks/continuous_output.rb
foreman-tasks-7.1.1 lib/foreman_tasks/continuous_output.rb
foreman-tasks-7.2.0 lib/foreman_tasks/continuous_output.rb
foreman-tasks-7.1.0 lib/foreman_tasks/continuous_output.rb
foreman-tasks-6.0.3 lib/foreman_tasks/continuous_output.rb
foreman-tasks-7.0.0 lib/foreman_tasks/continuous_output.rb
foreman-tasks-6.0.2 lib/foreman_tasks/continuous_output.rb
foreman-tasks-5.2.3 lib/foreman_tasks/continuous_output.rb
foreman-tasks-6.0.1 lib/foreman_tasks/continuous_output.rb
foreman-tasks-5.2.2 lib/foreman_tasks/continuous_output.rb
foreman-tasks-6.0.0 lib/foreman_tasks/continuous_output.rb
foreman-tasks-5.2.1 lib/foreman_tasks/continuous_output.rb
foreman-tasks-5.3.0 lib/foreman_tasks/continuous_output.rb
foreman-tasks-5.2.0 lib/foreman_tasks/continuous_output.rb