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