Class: WavefrontCli::Alert
Overview
CLI coverage for the v2 ‘alert’ 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
Attributes inherited from Base
#klass, #klass_word, #options, #wf
Instance Method Summary collapse
- #do_currently ⇒ Object
-
#do_delete ⇒ Object
rubocop:disable Metrics/AbcSize.
- #do_describe ⇒ Object
- #do_firing ⇒ Object
- #do_history ⇒ Object
- #do_install ⇒ Object
- #do_queries ⇒ Object
- #do_snooze ⇒ Object
- #do_snoozed ⇒ Object
-
#do_summary ⇒ Object
rubocop:enable Metrics/AbcSize.
- #do_uninstall ⇒ Object
- #do_unsnooze ⇒ Object
-
#find_in_state(status) ⇒ Object
Does the work for #in_state.
- #import_fields ⇒ Object
-
#import_to_create(raw) ⇒ Object
Take a previously exported alert, and construct a hash which create() can use to re-create it.
-
#in_state(status) ⇒ Object
How many alerts are in the given state? If none, say so, rather than just printing nothing.
-
#state_time(item) ⇒ Integer
Snoozed alerts don’t have a start time, they have a “snoozed” time.
Methods inherited from Base
#_sdk_class, #cannot_noop!, #check_status, #conds_to_query, #dispatch, #display, #display_api_error, #display_no_api_response, #do_import, #do_list, #do_search, #do_tag_add, #do_tag_clear, #do_tag_delete, #do_tag_set, #do_tags, #do_undelete, #do_update, #extract_values, #failed_validation_message, #format_var, #handle_error, #handle_response, #hcl_fields, #initialize, #load_display_class, #load_file, #load_from_stdin, #mk_creds, #mk_opts, #no_api_response, #ok_exit, #one_or_all, #options_and_exit, #parseable_output, #range_hash, #run, #search_key, #validate_id, #validate_input, #validate_opts, #validate_tags, #validator_exception, #validator_method
Constructor Details
This class inherits a constructor from WavefrontCli::Base
Instance Method Details
#do_currently ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/wavefront-cli/alert.rb', line 48 def do_currently state = [:'<state>'].to_s if wf.respond_to?(state) in_state(state) else abort format("'%s' is not a valid alert state.", state) end end |
#do_delete ⇒ Object
rubocop:disable Metrics/AbcSize
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/wavefront-cli/alert.rb', line 26 def do_delete cannot_noop! word = if wf.describe([:'<id>']).status.code == 200 'Soft' else 'Permanently' end puts "#{word} deleting alert '#{[:'<id>']}'." wf.delete([:'<id>']) end |
#do_describe ⇒ Object
13 14 15 |
# File 'lib/wavefront-cli/alert.rb', line 13 def do_describe wf.describe([:'<id>'], [:version]) end |
#do_firing ⇒ Object
58 59 60 |
# File 'lib/wavefront-cli/alert.rb', line 58 def do_firing in_state(:firing) end |
#do_history ⇒ Object
44 45 46 |
# File 'lib/wavefront-cli/alert.rb', line 44 def do_history wf.history([:'<id>'], [:offset], [:limit]) end |
#do_install ⇒ Object
76 77 78 |
# File 'lib/wavefront-cli/alert.rb', line 76 def do_install wf.install([:'<id>']) end |
#do_queries ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/wavefront-cli/alert.rb', line 66 def do_queries resp, data = one_or_all resp.tap do |r| r.response.items = data.map do |a| { id: a.id, condition: a.condition } end end end |
#do_snooze ⇒ Object
17 18 19 |
# File 'lib/wavefront-cli/alert.rb', line 17 def do_snooze wf.snooze([:'<id>'], [:time]) end |
#do_snoozed ⇒ Object
62 63 64 |
# File 'lib/wavefront-cli/alert.rb', line 62 def do_snoozed in_state(:snoozed) end |
#do_summary ⇒ Object
rubocop:enable Metrics/AbcSize
40 41 42 |
# File 'lib/wavefront-cli/alert.rb', line 40 def do_summary wf.summary end |
#do_uninstall ⇒ Object
80 81 82 |
# File 'lib/wavefront-cli/alert.rb', line 80 def do_uninstall wf.uninstall([:'<id>']) end |
#do_unsnooze ⇒ Object
21 22 23 |
# File 'lib/wavefront-cli/alert.rb', line 21 def do_unsnooze wf.unsnooze([:'<id>']) end |
#find_in_state(status) ⇒ Object
Does the work for #in_state
99 100 101 102 103 104 105 106 107 |
# File 'lib/wavefront-cli/alert.rb', line 99 def find_in_state(status) search = do_search([format('status=%s', status)]) items = search.response.items.map do |i| { name: i.name, id: i.id, time: state_time(i) } end search.tap { |s| s.response[:items] = items } end |
#import_fields ⇒ Object
8 9 10 11 |
# File 'lib/wavefront-cli/alert.rb', line 8 def import_fields %w[name condition minutes target severity displayExpression tags additionalInformation] end |
#import_to_create(raw) ⇒ Object
Take a previously exported alert, and construct a hash which create() can use to re-create it.
125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/wavefront-cli/alert.rb', line 125 def import_to_create(raw) import_fields.each_with_object({}) { |k, a| a[k.to_sym] = raw[k] } .tap do |ret| if raw.key?('resolveAfterMinutes') ret[:resolveMinutes] = raw['resolveAfterMinutes'] end if raw.key?('customerTagsWithCounts') ret[:sharedTags] = raw['customerTagsWithCounts'].keys end end end |
#in_state(status) ⇒ Object
How many alerts are in the given state? If none, say so, rather than just printing nothing.
87 88 89 90 91 92 |
# File 'lib/wavefront-cli/alert.rb', line 87 def in_state(status) [:all] = true ret = find_in_state(status) ok_exit(format('No alerts are currently %s.', status)) if ret.empty? ret end |
#state_time(item) ⇒ Integer
Snoozed alerts don’t have a start time, they have a “snoozed” time. This is -1 if they are snoozed forever: the formatting methods know what to do with that.
114 115 116 117 118 |
# File 'lib/wavefront-cli/alert.rb', line 114 def state_time(item) return item[:event][:startTime] if item.key?(:event) return item[:snoozed] if item.key?(:snoozed) nil end |