Class: WavefrontCli::Query
- Includes:
- Wavefront::Mixins
- Defined in:
- lib/wavefront-cli/query.rb
Overview
CLI coverage for the v2 ‘query’ API.
Constant Summary
Constants included from Constants
Constants::ALL_PAGE_SIZE, Constants::DEFAULT_CONFIG, Constants::DEFAULT_OPTS, Constants::HUMAN_TIME_FORMAT, Constants::HUMAN_TIME_FORMAT_MS
Instance Attribute Summary collapse
-
#query_string ⇒ Object
readonly
Returns the value of attribute query_string.
Attributes inherited from Base
#klass, #klass_word, #options, #wf
Instance Method Summary collapse
-
#all_aliases ⇒ Hash
All query aliases for the active profile.
-
#default_granularity(window) ⇒ Object
Work out a sensible granularity based on the time window.
- #do_aliases ⇒ Object
- #do_default ⇒ Object
- #do_raw ⇒ Object
- #do_run ⇒ Object
- #extra_validation ⇒ Object
- #granularity(t_start, t_end) ⇒ Object
- #no_api_response ⇒ Object
-
#q_opts ⇒ Hash
rubocop:disable Metrics/AbcSize.
-
#window_end ⇒ Integer
End of query window.
-
#window_start ⇒ Integer
Start of query window.
Methods inherited from Base
#_sdk_class, #cannot_noop!, #check_status, #conds_to_query, #dispatch, #display, #display_api_error, #display_no_api_response, #do_delete, #do_describe, #do_import, #do_list, #do_search, #do_undelete, #do_update, #extract_values, #failed_validation_message, #format_var, #handle_error, #handle_response, #hcl_fields, #import_to_create, #initialize, #load_display_class, #load_file, #load_from_stdin, #mk_creds, #mk_opts, #ok_exit, #one_or_all, #options_and_exit, #parseable_output, #range_hash, #run, #search_key, #smart_delete, #smart_delete_message, #validate_id, #validate_input, #validate_opts, #validate_tags, #validator_exception, #validator_method
Constructor Details
This class inherits a constructor from WavefrontCli::Base
Instance Attribute Details
#query_string ⇒ Object (readonly)
Returns the value of attribute query_string.
9 10 11 |
# File 'lib/wavefront-cli/query.rb', line 9 def query_string @query_string end |
Instance Method Details
#all_aliases ⇒ Hash
115 116 117 118 119 |
# File 'lib/wavefront-cli/query.rb', line 115 def all_aliases WavefrontCli::OptHandler.new().opts.select do |line| line.to_s.start_with?('q_') end end |
#default_granularity(window) ⇒ Object
Work out a sensible granularity based on the time window
90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/wavefront-cli/query.rb', line 90 def default_granularity(window) window = window.abs / 1000 if window < 300 :s elsif window < 10_800 :m elsif window < 259_200 :h else :d end end |
#do_aliases ⇒ Object
46 47 48 |
# File 'lib/wavefront-cli/query.rb', line 46 def do_aliases all_aliases end |
#do_default ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/wavefront-cli/query.rb', line 17 def do_default qs = query_string || [:'<query>'] t_start = window_start t_end = window_end granularity = granularity(t_start, t_end) t_end = nil unless [:end] wf.query(qs, granularity, t_start, t_end, q_opts) end |
#do_raw ⇒ Object
28 29 30 31 |
# File 'lib/wavefront-cli/query.rb', line 28 def do_raw wf.raw([:'<metric>'], [:host], [:start], [:end]) end |
#do_run ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/wavefront-cli/query.rb', line 33 def do_run alias_key = format('q_%s', [:'<alias>']).to_sym query = all_aliases.fetch(alias_key, nil) unless query abort "Query not found. 'wf query aliases' will show all " \ 'aliased queries.' end @query_string = query do_default end |
#extra_validation ⇒ Object
104 105 106 107 108 109 110 111 |
# File 'lib/wavefront-cli/query.rb', line 104 def extra_validation return unless [:granularity] begin wf_granularity?([:granularity]) rescue Wavefront::Exception::InvalidGranularity abort "'#{options[:granularity]}' is not a valid granularity." end end |
#granularity(t_start, t_end) ⇒ Object
84 85 86 |
# File 'lib/wavefront-cli/query.rb', line 84 def granularity(t_start, t_end) [:granularity] || default_granularity(t_start - t_end) end |
#no_api_response ⇒ Object
13 14 15 |
# File 'lib/wavefront-cli/query.rb', line 13 def no_api_response %w[do_aliases] end |
#q_opts ⇒ Hash
rubocop:disable Metrics/AbcSize
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/wavefront-cli/query.rb', line 53 def q_opts ret = { autoEvents: [:events], i: [:inclusive], summarization: [:summarize] || 'mean', listMode: true, strict: true, includeObsoleteMetrics: [:obsolete], sorted: true } ret[:n] = [:name] if [:name] ret[:p] = [:points] if [:points] ret end |
#window_end ⇒ Integer
79 80 81 82 |
# File 'lib/wavefront-cli/query.rb', line 79 def window_end t = [:end] ? [:end].dup : Time.now parse_time(t, true) end |
#window_start ⇒ Integer
71 72 73 74 |
# File 'lib/wavefront-cli/query.rb', line 71 def window_start t = [:start] ? [:start].dup : Time.now - 600 parse_time(t, true) end |