flapjack 0.6.39 → 0.6.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -2
- data/Gemfile +5 -1
- data/README.md +3 -2
- data/Rakefile +2 -1
- data/bin/flapjack +2 -2
- data/bin/flapjack-nagios-receiver +2 -8
- data/bin/flapjack-populator +11 -11
- data/etc/flapjack_config.yaml.example +28 -0
- data/features/steps/events_steps.rb +1 -1
- data/features/steps/notifications_steps.rb +7 -4
- data/features/support/env.rb +17 -6
- data/flapjack.gemspec +1 -0
- data/lib/flapjack/api.rb +72 -28
- data/lib/flapjack/configuration.rb +9 -1
- data/lib/flapjack/coordinator.rb +138 -162
- data/lib/flapjack/data/contact.rb +3 -1
- data/lib/flapjack/data/entity.rb +10 -1
- data/lib/flapjack/data/entity_check.rb +19 -21
- data/lib/flapjack/data/event.rb +26 -27
- data/lib/flapjack/data/message.rb +45 -0
- data/lib/flapjack/data/notification.rb +49 -0
- data/lib/flapjack/executive.rb +53 -74
- data/lib/flapjack/filters/acknowledgement.rb +14 -11
- data/lib/flapjack/jabber.rb +84 -18
- data/lib/flapjack/notification/email.rb +67 -37
- data/lib/flapjack/notification/sms.rb +40 -28
- data/lib/flapjack/oobetet.rb +1 -1
- data/lib/flapjack/pagerduty.rb +24 -15
- data/lib/flapjack/patches.rb +3 -1
- data/lib/flapjack/pikelet.rb +51 -20
- data/lib/flapjack/rack_logger.rb +8 -0
- data/lib/flapjack/version.rb +1 -1
- data/lib/flapjack/web.rb +51 -27
- data/spec/lib/flapjack/api_spec.rb +28 -3
- data/spec/lib/flapjack/coordinator_spec.rb +69 -43
- data/spec/lib/flapjack/data/contact_spec.rb +17 -9
- data/spec/lib/flapjack/data/entity_check_spec.rb +0 -25
- data/spec/lib/flapjack/data/entity_spec.rb +4 -0
- data/spec/lib/flapjack/data/global_spec.rb +6 -0
- data/spec/lib/flapjack/data/message_spec.rb +6 -0
- data/spec/lib/flapjack/data/notification_spec.rb +6 -0
- data/spec/lib/flapjack/executive_spec.rb +2 -2
- data/spec/lib/flapjack/jabber_spec.rb +8 -9
- data/spec/lib/flapjack/pagerduty_spec.rb +53 -45
- data/spec/lib/flapjack/utility_spec.rb +55 -0
- data/spec/lib/flapjack/web_spec.rb +7 -5
- data/tasks/events.rake +26 -59
- data/tasks/profile.rake +366 -0
- metadata +30 -19
- data/lib/flapjack/notification/common.rb +0 -23
- data/lib/flapjack/persistence/couch.rb +0 -5
- data/lib/flapjack/persistence/couch/connection.rb +0 -66
- data/lib/flapjack/persistence/couch/couch.rb +0 -63
- data/lib/flapjack/persistence/data_mapper.rb +0 -3
- data/lib/flapjack/persistence/data_mapper/data_mapper.rb +0 -67
- data/lib/flapjack/persistence/data_mapper/models/check.rb +0 -90
- data/lib/flapjack/persistence/data_mapper/models/check_template.rb +0 -20
- data/lib/flapjack/persistence/data_mapper/models/event.rb +0 -19
- data/lib/flapjack/persistence/data_mapper/models/node.rb +0 -18
- data/lib/flapjack/persistence/data_mapper/models/related_check.rb +0 -15
- data/lib/flapjack/persistence/sqlite3.rb +0 -3
- data/lib/flapjack/persistence/sqlite3/sqlite3.rb +0 -166
- data/lib/flapjack/transports/beanstalkd.rb +0 -50
- data/lib/flapjack/transports/result.rb +0 -58
- data/lib/flapjack/worker/application.rb +0 -121
- data/lib/flapjack/worker/cli.rb +0 -49
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: flapjack
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.40
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2012-
|
|
14
|
+
date: 2012-11-07 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: daemons
|
|
@@ -173,6 +173,22 @@ dependencies:
|
|
|
173
173
|
- - ! '>='
|
|
174
174
|
- !ruby/object:Gem::Version
|
|
175
175
|
version: '0'
|
|
176
|
+
- !ruby/object:Gem::Dependency
|
|
177
|
+
name: async-rack
|
|
178
|
+
requirement: !ruby/object:Gem::Requirement
|
|
179
|
+
none: false
|
|
180
|
+
requirements:
|
|
181
|
+
- - ! '>='
|
|
182
|
+
- !ruby/object:Gem::Version
|
|
183
|
+
version: '0'
|
|
184
|
+
type: :runtime
|
|
185
|
+
prerelease: false
|
|
186
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
187
|
+
none: false
|
|
188
|
+
requirements:
|
|
189
|
+
- - ! '>='
|
|
190
|
+
- !ruby/object:Gem::Version
|
|
191
|
+
version: '0'
|
|
176
192
|
- !ruby/object:Gem::Dependency
|
|
177
193
|
name: rack-fiber_pool
|
|
178
194
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -380,6 +396,8 @@ files:
|
|
|
380
396
|
- lib/flapjack/data/entity_check.rb
|
|
381
397
|
- lib/flapjack/data/event.rb
|
|
382
398
|
- lib/flapjack/data/global.rb
|
|
399
|
+
- lib/flapjack/data/message.rb
|
|
400
|
+
- lib/flapjack/data/notification.rb
|
|
383
401
|
- lib/flapjack/executive.rb
|
|
384
402
|
- lib/flapjack/filters/acknowledgement.rb
|
|
385
403
|
- lib/flapjack/filters/base.rb
|
|
@@ -390,7 +408,6 @@ files:
|
|
|
390
408
|
- lib/flapjack/filters/unscheduled_maintenance.rb
|
|
391
409
|
- lib/flapjack/inifile.rb
|
|
392
410
|
- lib/flapjack/jabber.rb
|
|
393
|
-
- lib/flapjack/notification/common.rb
|
|
394
411
|
- lib/flapjack/notification/email.rb
|
|
395
412
|
- lib/flapjack/notification/email/alert.html.haml
|
|
396
413
|
- lib/flapjack/notification/email/alert.text.erb
|
|
@@ -404,22 +421,9 @@ files:
|
|
|
404
421
|
- lib/flapjack/oobetet.rb
|
|
405
422
|
- lib/flapjack/pagerduty.rb
|
|
406
423
|
- lib/flapjack/patches.rb
|
|
407
|
-
- lib/flapjack/persistence/couch.rb
|
|
408
|
-
- lib/flapjack/persistence/couch/connection.rb
|
|
409
|
-
- lib/flapjack/persistence/couch/couch.rb
|
|
410
|
-
- lib/flapjack/persistence/data_mapper.rb
|
|
411
|
-
- lib/flapjack/persistence/data_mapper/data_mapper.rb
|
|
412
|
-
- lib/flapjack/persistence/data_mapper/models/check.rb
|
|
413
|
-
- lib/flapjack/persistence/data_mapper/models/check_template.rb
|
|
414
|
-
- lib/flapjack/persistence/data_mapper/models/event.rb
|
|
415
|
-
- lib/flapjack/persistence/data_mapper/models/node.rb
|
|
416
|
-
- lib/flapjack/persistence/data_mapper/models/related_check.rb
|
|
417
|
-
- lib/flapjack/persistence/sqlite3.rb
|
|
418
|
-
- lib/flapjack/persistence/sqlite3/sqlite3.rb
|
|
419
424
|
- lib/flapjack/pikelet.rb
|
|
425
|
+
- lib/flapjack/rack_logger.rb
|
|
420
426
|
- lib/flapjack/redis_pool.rb
|
|
421
|
-
- lib/flapjack/transports/beanstalkd.rb
|
|
422
|
-
- lib/flapjack/transports/result.rb
|
|
423
427
|
- lib/flapjack/utility.rb
|
|
424
428
|
- lib/flapjack/version.rb
|
|
425
429
|
- lib/flapjack/web.rb
|
|
@@ -430,8 +434,6 @@ files:
|
|
|
430
434
|
- lib/flapjack/web/views/contacts.haml
|
|
431
435
|
- lib/flapjack/web/views/index.haml
|
|
432
436
|
- lib/flapjack/web/views/self_stats.haml
|
|
433
|
-
- lib/flapjack/worker/application.rb
|
|
434
|
-
- lib/flapjack/worker/cli.rb
|
|
435
437
|
- spec.old/check_sandbox/echo
|
|
436
438
|
- spec.old/check_sandbox/sandboxed_check
|
|
437
439
|
- spec.old/configs/flapjack-notifier-couchdb.ini
|
|
@@ -467,6 +469,9 @@ files:
|
|
|
467
469
|
- spec/lib/flapjack/data/entity_check_spec.rb
|
|
468
470
|
- spec/lib/flapjack/data/entity_spec.rb
|
|
469
471
|
- spec/lib/flapjack/data/event_spec.rb
|
|
472
|
+
- spec/lib/flapjack/data/global_spec.rb
|
|
473
|
+
- spec/lib/flapjack/data/message_spec.rb
|
|
474
|
+
- spec/lib/flapjack/data/notification_spec.rb
|
|
470
475
|
- spec/lib/flapjack/executive_spec.rb
|
|
471
476
|
- spec/lib/flapjack/filters/acknowledgement_spec.rb
|
|
472
477
|
- spec/lib/flapjack/filters/delays_spec.rb
|
|
@@ -481,11 +486,13 @@ files:
|
|
|
481
486
|
- spec/lib/flapjack/pagerduty_spec.rb
|
|
482
487
|
- spec/lib/flapjack/pikelet_spec.rb
|
|
483
488
|
- spec/lib/flapjack/redis_pool_spec.rb
|
|
489
|
+
- spec/lib/flapjack/utility_spec.rb
|
|
484
490
|
- spec/lib/flapjack/web_spec.rb
|
|
485
491
|
- spec/spec_helper.rb
|
|
486
492
|
- spec/support/profile_all_formatter.rb
|
|
487
493
|
- spec/support/uncolored_doc_formatter.rb
|
|
488
494
|
- tasks/events.rake
|
|
495
|
+
- tasks/profile.rake
|
|
489
496
|
- tmp/acknowledge.rb
|
|
490
497
|
- tmp/create_config_yaml.rb
|
|
491
498
|
- tmp/create_events_failure.rb
|
|
@@ -543,6 +550,9 @@ test_files:
|
|
|
543
550
|
- spec/lib/flapjack/data/entity_check_spec.rb
|
|
544
551
|
- spec/lib/flapjack/data/entity_spec.rb
|
|
545
552
|
- spec/lib/flapjack/data/event_spec.rb
|
|
553
|
+
- spec/lib/flapjack/data/global_spec.rb
|
|
554
|
+
- spec/lib/flapjack/data/message_spec.rb
|
|
555
|
+
- spec/lib/flapjack/data/notification_spec.rb
|
|
546
556
|
- spec/lib/flapjack/executive_spec.rb
|
|
547
557
|
- spec/lib/flapjack/filters/acknowledgement_spec.rb
|
|
548
558
|
- spec/lib/flapjack/filters/delays_spec.rb
|
|
@@ -557,6 +567,7 @@ test_files:
|
|
|
557
567
|
- spec/lib/flapjack/pagerduty_spec.rb
|
|
558
568
|
- spec/lib/flapjack/pikelet_spec.rb
|
|
559
569
|
- spec/lib/flapjack/redis_pool_spec.rb
|
|
570
|
+
- spec/lib/flapjack/utility_spec.rb
|
|
560
571
|
- spec/lib/flapjack/web_spec.rb
|
|
561
572
|
- spec/spec_helper.rb
|
|
562
573
|
- spec/support/profile_all_formatter.rb
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require 'flapjack/pikelet'
|
|
4
|
-
|
|
5
|
-
module Flapjack
|
|
6
|
-
module Notification
|
|
7
|
-
|
|
8
|
-
module Common
|
|
9
|
-
|
|
10
|
-
include Flapjack::Pikelet
|
|
11
|
-
|
|
12
|
-
# TODO to make this testable, work out a supported way to make the passed redis connection
|
|
13
|
-
# use the test db
|
|
14
|
-
def perform(notification)
|
|
15
|
-
bootstrap
|
|
16
|
-
@logger.debug "Woo, got a notification to send out: #{notification.inspect}"
|
|
17
|
-
dispatch(notification, :logger => @logger, :redis => ::Resque.redis)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
module Flapjack
|
|
4
|
-
module Persistence
|
|
5
|
-
class Couch
|
|
6
|
-
class Connection
|
|
7
|
-
class << self
|
|
8
|
-
attr_accessor :host, :port
|
|
9
|
-
def setup(options={})
|
|
10
|
-
@host = options[:host]
|
|
11
|
-
@port = options[:port]
|
|
12
|
-
@database = options[:database]
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def get(id)
|
|
16
|
-
uri = "/#{@database}/#{id}"
|
|
17
|
-
req = ::Net::HTTP::Get.new(uri)
|
|
18
|
-
request(req)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def post(options={})
|
|
22
|
-
document = options[:document]
|
|
23
|
-
uri = "/#{@database}/"
|
|
24
|
-
|
|
25
|
-
req = ::Net::HTTP::Post.new(uri)
|
|
26
|
-
req["content-type"] = "application/json"
|
|
27
|
-
req.body = document.to_json
|
|
28
|
-
|
|
29
|
-
request(req)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def put(options={})
|
|
33
|
-
document = options[:document]
|
|
34
|
-
uri = "/#{@database}/#{(options[:document]["id"] || options[:document]["_id"])}"
|
|
35
|
-
|
|
36
|
-
req = ::Net::HTTP::Put.new(uri)
|
|
37
|
-
req["content-type"] = "application/json"
|
|
38
|
-
req.body = document.to_json
|
|
39
|
-
|
|
40
|
-
request(req)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def delete(options={})
|
|
44
|
-
document = options[:document]
|
|
45
|
-
|
|
46
|
-
uri = "/#{@database}/#{(options[:document]["id"] || options[:document]["_id"])}"
|
|
47
|
-
|
|
48
|
-
req = ::Net::HTTP::Put.new(uri)
|
|
49
|
-
req["content-type"] = "application/json"
|
|
50
|
-
req.body = document.to_json
|
|
51
|
-
|
|
52
|
-
request(req)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def request(request)
|
|
56
|
-
response = Net::HTTP.start(@host, @port) {|http| http.request(request)}
|
|
57
|
-
|
|
58
|
-
@parser = Yajl::Parser.new
|
|
59
|
-
hash = @parser.parse(response.body)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end # class Couch
|
|
64
|
-
end # module Persistence
|
|
65
|
-
end # module Flapjack
|
|
66
|
-
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require 'net/http'
|
|
4
|
-
require 'yajl/json_gem'
|
|
5
|
-
|
|
6
|
-
module Flapjack
|
|
7
|
-
module Persistence
|
|
8
|
-
class Couch
|
|
9
|
-
|
|
10
|
-
attr_accessor :config
|
|
11
|
-
|
|
12
|
-
def initialize(options={})
|
|
13
|
-
@options = options
|
|
14
|
-
@config = OpenStruct.new(options)
|
|
15
|
-
@log = @config.log
|
|
16
|
-
|
|
17
|
-
Flapjack::Persistence::Couch::Connection.setup(@options)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def any_parents_failed?(id)
|
|
21
|
-
id == "1" ? false : true
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def save_check(attrs)
|
|
25
|
-
true
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def get_check(id)
|
|
29
|
-
id == "4" ? nil : true
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def delete_check(id)
|
|
33
|
-
true
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def all_checks
|
|
37
|
-
[true, true, true]
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def save_check_relationship(attrs)
|
|
41
|
-
true
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def create_event(result)
|
|
45
|
-
true
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def all_events_for(id)
|
|
49
|
-
[true, true, true]
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def all_events
|
|
53
|
-
[true, true, true]
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def all_check_relationships
|
|
57
|
-
[true, true, true]
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end # class Couch
|
|
61
|
-
end # module Persistence
|
|
62
|
-
end # module Flapjack
|
|
63
|
-
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require 'dm-core'
|
|
4
|
-
require 'dm-validations'
|
|
5
|
-
require 'dm-types'
|
|
6
|
-
require 'dm-timestamps'
|
|
7
|
-
|
|
8
|
-
Dir.glob(File.join(File.dirname(__FILE__), 'models', '*.rb')).each do |model|
|
|
9
|
-
require model
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
module Flapjack
|
|
13
|
-
module Persistence
|
|
14
|
-
class DataMapper
|
|
15
|
-
def initialize(options={})
|
|
16
|
-
@options = options
|
|
17
|
-
@config = OpenStruct.new(options)
|
|
18
|
-
@log = @config.log
|
|
19
|
-
connect
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def any_parents_failed?(result)
|
|
23
|
-
check = Check.get(result.check_id)
|
|
24
|
-
if check
|
|
25
|
-
check.worst_parent_status != 0
|
|
26
|
-
else
|
|
27
|
-
@log.warning("Check with id #{result.check_id} doesn't exist!")
|
|
28
|
-
false # this will notify
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def save(result)
|
|
33
|
-
check = Check.get(result.check_id)
|
|
34
|
-
if check
|
|
35
|
-
check.status = result.status
|
|
36
|
-
check.save
|
|
37
|
-
else
|
|
38
|
-
@log.warning("Check with id #{result.check_id} doesn't exist!")
|
|
39
|
-
true
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def create_event(result)
|
|
44
|
-
event = Event.new(:check_id => result.check_id)
|
|
45
|
-
event.save
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
private
|
|
49
|
-
def connect
|
|
50
|
-
raise ArgumentError, "Database URI wasn't specified" unless @config.uri
|
|
51
|
-
::DataMapper.setup(:default, @config.uri)
|
|
52
|
-
validate_structure
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def validate_structure
|
|
56
|
-
begin
|
|
57
|
-
::DataMapper.repository(:default).adapter.execute("SELECT 'id' FROM 'checks';")
|
|
58
|
-
rescue Sqlite3Error => e
|
|
59
|
-
@log.warning("The specified database doesn't appear to have any structure!")
|
|
60
|
-
@log.warning("Exiting.")
|
|
61
|
-
raise
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
class Check
|
|
4
|
-
include DataMapper::Resource
|
|
5
|
-
|
|
6
|
-
timestamps :at
|
|
7
|
-
|
|
8
|
-
has n, :related_checks, :child_key => [:child_id, :parent_id]
|
|
9
|
-
has n, :events
|
|
10
|
-
|
|
11
|
-
#has n, :parent_checks, :through => :related_checks,
|
|
12
|
-
# :child_key => :child_id, :class_name => "Check"
|
|
13
|
-
#has n, :child_checks, :through => :related_checks,
|
|
14
|
-
# :child_key => :parent_id, :class_name => "Check"
|
|
15
|
-
|
|
16
|
-
belongs_to :node
|
|
17
|
-
belongs_to :check_template
|
|
18
|
-
|
|
19
|
-
property :id, Serial, :key => true
|
|
20
|
-
property :command, Text, :nullable => false
|
|
21
|
-
property :params, Yaml
|
|
22
|
-
property :name, String, :nullable => false
|
|
23
|
-
property :enabled, Boolean, :default => false
|
|
24
|
-
property :status, Integer, :default => 0
|
|
25
|
-
|
|
26
|
-
# dm-timestamps
|
|
27
|
-
property :created_at, DateTime
|
|
28
|
-
property :updated_at, DateTime
|
|
29
|
-
property :deleted_at, ParanoidDateTime
|
|
30
|
-
|
|
31
|
-
# copy command onto check
|
|
32
|
-
before :valid? do
|
|
33
|
-
if self.check_template && self.command.blank?
|
|
34
|
-
self.command = self.check_template.command
|
|
35
|
-
self.name = self.check_template.name
|
|
36
|
-
self.params = (self.check_template.params || {})
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def parameters_and_values
|
|
41
|
-
names = parameter_names_from_command
|
|
42
|
-
hash = {}
|
|
43
|
-
names.each { |name| hash[name] = params ? params[name] : "" }
|
|
44
|
-
hash["$FQDN"] = self.node_fqdn # pkey of node check belongs to
|
|
45
|
-
hash
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def parameter_names_from_command
|
|
49
|
-
self.command.split.grep(/\$\w/)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def executed_command
|
|
53
|
-
c = self.command
|
|
54
|
-
parameters_and_values.each_pair do |param, value|
|
|
55
|
-
value = value.to_s
|
|
56
|
-
c.gsub!(param, value)
|
|
57
|
-
end
|
|
58
|
-
return c
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# FIXME: this should work through related checks association, but doesn't
|
|
62
|
-
def parent_checks
|
|
63
|
-
RelatedCheck.all(:child_id => self.id).map {|rc| rc.parent_check}
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def child_checks
|
|
67
|
-
RelatedCheck.all(:parent_id => self.id).map {|rc| rc.child_check}
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def worst_parent_status
|
|
71
|
-
if parent_checks.size > 0
|
|
72
|
-
self.parent_checks.map { |parent| parent.status }.sort.pop
|
|
73
|
-
else
|
|
74
|
-
0
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
def pretty_print_status
|
|
80
|
-
case self.status
|
|
81
|
-
when 0
|
|
82
|
-
"good"
|
|
83
|
-
when 1
|
|
84
|
-
"bad"
|
|
85
|
-
when 2
|
|
86
|
-
"ugly"
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
end
|