class Wavefront::Cli::Ts

Attributes

arguments[RW]
options[RW]

Public Instance Methods

run() click to toggle source
# File lib/wavefront/cli/ts.rb, line 26
def run
  raise 'Please supply a query.' if @arguments.empty?
  query = @arguments[0]

  if @options[:minutes]
    granularity = 'm'
  elsif @options[:hours]
    granularity = 'h'
  elsif @options[:seconds]
    granularity = 's'
  elsif @options[:days]
    granularity = 'd'
  else
    raise "You must specify a granularity of either --seconds, --minutes --hours or --days. See --help for more information."
  end

  unless Wavefront::Client::FORMATS.include?(@options[:format].to_sym)
    raise "The output format must be one of: #{Wavefront::Client::FORMATS.join(', ')}."
  end

  options = Hash.new
  options[:response_format] = @options[:format].to_sym
  options[:prefix_length] = @options[:prefixlength].to_i

  if @options[:start]
    options[:start_time] = Time.at(parse_time(@options[:start]))
  end

  if @options[:end]
    options[:end_time] = Time.at(parse_time(@options[:end]))
  end

  wave = Wavefront::Client.new(@options[:token], @options[:endpoint], @options[:debug], { noop: @options[:noop], verbose: @options[:verbose]})

  if noop
    wave.query(query, granularity, options)
    return
  end

  case options[:response_format]
  when :json
    pp wave.query(query, granularity, options)
  when :raw
    puts wave.query(query, granularity, options)
  when :graphite
    puts wave.query(query, granularity, options).graphite.to_json
  when :human
    puts wave.query(query, granularity, options).human
  else
    pp wave.query(query, granularity, options)
  end

  exit 0
end