Class: Flapjack::Processor
- Inherits:
-
Object
- Object
- Flapjack::Processor
show all
- Includes:
- Utility
- Defined in:
- lib/flapjack/processor.rb
Instance Method Summary
collapse
Methods included from Utility
#hashify, #load_template, #local_timezone, #relative_time_ago, #remove_utc_offset, #stringify, #symbolize, #time_period_in_words, #truncate
Constructor Details
#initialize(opts = {}) ⇒ Processor
Returns a new instance of Processor.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/flapjack/processor.rb', line 27
def initialize(opts = {})
@lock = opts[:lock]
@config = opts[:config]
@boot_time = opts[:boot_time]
@queue = @config['queue'] || 'events'
@initial_failure_delay = @config['initial_failure_delay']
if !@initial_failure_delay.is_a?(Integer) || (@initial_failure_delay < 0)
@initial_failure_delay = nil
end
@repeat_failure_delay = @config['repeat_failure_delay']
if !@repeat_failure_delay.is_a?(Integer) || (@repeat_failure_delay < 0)
@repeat_failure_delay = nil
end
@initial_recovery_delay = @config['initial_recovery_delay']
if !@initial_recovery_delay.is_a?(Integer) || (@initial_recovery_delay < 0)
@initial_recovery_delay = nil
end
@notifier_queue = Flapjack::RecordQueue.new(@config['notifier_queue'] || 'notifications',
Flapjack::Data::Notification)
@archive_events = @config['archive_events'] || false
@events_archive_maxage = @config['events_archive_maxage']
ncsm_duration_conf = @config['new_check_scheduled_maintenance_duration'] || '100 years'
@ncsm_duration = ChronicDuration.parse(ncsm_duration_conf, :keep_zero => true)
ncsm_ignore = @config['new_check_scheduled_maintenance_ignore_regex']
@ncsm_ignore_regex = if ncsm_ignore.nil? || ncsm_ignore.strip.empty?
nil
else
Regexp.new(ncsm_ignore)
end
@exit_on_queue_empty = !!@config['exit_on_queue_empty']
@filters = [Flapjack::Filters::Ok.new,
Flapjack::Filters::ScheduledMaintenance.new,
Flapjack::Filters::UnscheduledMaintenance.new,
Flapjack::Filters::Delays.new,
Flapjack::Filters::Acknowledgement.new]
fqdn = `/bin/hostname -f`.chomp
pid = Process.pid
@instance_id = "#{fqdn}:#{pid}"
end
|
Instance Method Details
#start ⇒ Object
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/flapjack/processor.rb', line 99
def start
Flapjack.logger.info("Booting main loop.")
begin
Zermelo.redis = Flapjack.redis
start_stats
queue = (@config['queue'] || 'events')
loop do
@lock.synchronize do
foreach_on_queue(queue) {|event| process_event(event)}
end
raise Flapjack::GlobalStop if @exit_on_queue_empty
wait_for_queue(queue)
end
ensure
@instance_stats.destroy unless @instance_stats.nil? || !@instance_stats.persisted?
Flapjack.redis.quit
end
end
|
#start_stats ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/flapjack/processor.rb', line 80
def start_stats
empty_stats = {:created_at => @boot_time, :all_events => 0,
:ok_events => 0, :failure_events => 0, :action_events => 0,
:invalid_events => 0}
@global_stats = Flapjack::Data::Statistic.
intersect(:instance_name => 'global').all.first
if @global_stats.nil?
@global_stats = Flapjack::Data::Statistic.new(empty_stats.merge(
:instance_name => 'global'))
@global_stats.save!
end
@instance_stats = Flapjack::Data::Statistic.new(empty_stats.merge(
:instance_name => @instance_id))
@instance_stats.save!
end
|
#stop_type ⇒ Object
125
126
127
|
# File 'lib/flapjack/processor.rb', line 125
def stop_type
:exception
end
|