class Vcloud::Core::Query

Public Class Methods

new(type=nil, options={}, query_runner = Vcloud::Core::QueryRunner.new) click to toggle source

Initialize a new Vcloud::Core::Query object

@param type [String] Restrict query results to this type (see QueryRunner#available_query_types) @param options [Hash] key :output_type defines the output type and defaults to tsv; csv and yaml are valid options @param query_runner [Method] default=Vcloud::Core::QueryRunner.new @return [Vcloud::Core::Query]

# File lib/vcloud/core/query.rb, line 13
def initialize(type=nil, options={}, query_runner = Vcloud::Core::QueryRunner.new)
  @type = type
  @options = options
  @options[:output_format] ||= 'tsv'
  @query_runner = query_runner
end

Public Instance Methods

get_all_results() click to toggle source

DEPRECATED: Please use Vcloud::Core::QueryRunner.run instead.

# File lib/vcloud/core/query.rb, line 32
def get_all_results
  warn "[DEPRECATION] `Vcloud::Core::Query::get_all_results` is deprecated.  Please use `Vcloud::Core::QueryRunner.run` instead."
  @query_runner.run(@type, @options)
end
run() click to toggle source

Run the query and print to standard out

@return [void]

# File lib/vcloud/core/query.rb, line 23
def run()
  if @type.nil?
    output_available_query_types
  else
    output_query_results
  end
end

Private Instance Methods

output_available_query_types() click to toggle source
# File lib/vcloud/core/query.rb, line 44
def output_available_query_types
  @query_runner.available_query_types.each do |entity_type|
    puts entity_type
  end
end
output_header(results) click to toggle source
# File lib/vcloud/core/query.rb, line 50
def output_header(results)
  return if results.size == 0
  case @options[:output_format]
  when 'csv'
    csv_string = CSV.generate do |csv|
      csv << results.first.keys
    end
    puts csv_string
  when 'tsv'
    puts results.first.keys.join("\t")
  end
end
output_query_results() click to toggle source
# File lib/vcloud/core/query.rb, line 38
def output_query_results
  results = @query_runner.run(@type, @options)
  output_header(results)
  output_results(results)
end
output_results(results) click to toggle source
# File lib/vcloud/core/query.rb, line 63
def output_results(results)
  return if results.size == 0

  case @options[:output_format]
  when 'yaml'
    puts YAML.dump(results)
  when 'csv'
    csv_string = CSV.generate do |csv|
      results.each do |record|
        csv << record.values
      end
    end
    puts csv_string
  when 'tsv'
    puts results.first.keys.join("\t") if @options[:page] == 1
    results.each do |record|
      puts record.values.join("\t")
    end
  else
    raise "Unsupported output format #{@options[:output_format]}"
  end
end