Class: WavefrontCli::Alert
- Inherits:
-
Base
- Object
- Base
- WavefrontCli::Alert
show all
- Defined in:
- lib/wavefront-cli/alert.rb
Overview
CLI coverage for the v2 ‘alert’ API.
Constant Summary
Constants included
from Constants
Constants::ALL_PAGE_SIZE, 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
Methods inherited from Base
#_sdk_class, #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, #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, #options_and_exit, #parseable_output, #range_hash, #run, #search_key, #validate_id, #validate_input, #validate_opts, #validate_tags, #validator_exception, #validator_method
Instance Method Details
#do_currently ⇒ Object
39
40
41
42
43
44
45
46
47
|
# File 'lib/wavefront-cli/alert.rb', line 39
def do_currently
state = options[:'<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
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/wavefront-cli/alert.rb', line 20
def do_delete
word = if wf.describe(options[:'<id>']).status.code == 200
'Soft'
else
'Permanently'
end
puts "#{word} deleting alert '#{options[:'<id>']}'."
wf.delete(options[:'<id>'])
end
|
#do_describe ⇒ Object
8
9
10
|
# File 'lib/wavefront-cli/alert.rb', line 8
def do_describe
wf.describe(options[:'<id>'], options[:version])
end
|
#do_firing ⇒ Object
49
50
51
|
# File 'lib/wavefront-cli/alert.rb', line 49
def do_firing
in_state(:firing)
end
|
#do_history ⇒ Object
35
36
37
|
# File 'lib/wavefront-cli/alert.rb', line 35
def do_history
wf.history(options[:'<id>'], options[:offset], options[:limit])
end
|
#do_queries ⇒ Object
57
58
59
60
61
|
# File 'lib/wavefront-cli/alert.rb', line 57
def do_queries
wf.list(0, :all).tap do |r|
r.response.items.map! { |a| { id: a.id, condition: a.condition } }
end
end
|
#do_snooze ⇒ Object
12
13
14
|
# File 'lib/wavefront-cli/alert.rb', line 12
def do_snooze
wf.snooze(options[:'<id>'], options[:time])
end
|
#do_snoozed ⇒ Object
53
54
55
|
# File 'lib/wavefront-cli/alert.rb', line 53
def do_snoozed
in_state(:firing)
end
|
#do_summary ⇒ Object
31
32
33
|
# File 'lib/wavefront-cli/alert.rb', line 31
def do_summary
wf.summary
end
|
#do_unsnooze ⇒ Object
16
17
18
|
# File 'lib/wavefront-cli/alert.rb', line 16
def do_unsnooze
wf.unsnooze(options[:'<id>'])
end
|
#find_in_state(status) ⇒ Object
Does the work for #in_state
78
79
80
81
82
83
84
85
86
|
# File 'lib/wavefront-cli/alert.rb', line 78
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_to_create(raw) ⇒ Object
Take a previously exported alert, and construct a hash which create() can use to re-create it.
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/wavefront-cli/alert.rb', line 104
def import_to_create(raw)
ret = %w[name condition minutes target severity displayExpression
additionalInformation].each_with_object({}) do |k, aggr|
aggr[k.to_sym] = raw[k]
end
if raw.key?('resolveAfterMinutes')
ret[:resolveMinutes] = raw['resolveAfterMinutes']
end
if raw.key?('customerTagsWithCounts')
ret[:sharedTags] = raw['customerTagsWithCounts'].keys
end
ret
end
|
#in_state(status) ⇒ Object
How many alerts are in the given state? If none, say so, rather than just printing nothing.
66
67
68
69
70
71
|
# File 'lib/wavefront-cli/alert.rb', line 66
def in_state(status)
options[: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.
93
94
95
96
97
|
# File 'lib/wavefront-cli/alert.rb', line 93
def state_time(item)
return item[:event][:startTime] if item.key?(:event)
return item[:snoozed] if item.key?(:snoozed)
nil
end
|