srvmonitor 0.0.4 → 0.0.5

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/README.markdown CHANGED
@@ -41,7 +41,7 @@ SrvMonitor::Monitor.create do
41
41
  :to => 'you@gmail.com',
42
42
  :status => :down }
43
43
 
44
- alert :if => :down, :attempts => 5
44
+ alert :if => :down, :retries => 5
45
45
  applications railswatch, loadwatch
46
46
 
47
47
  forever true
@@ -36,7 +36,7 @@ module SrvMonitor
36
36
 
37
37
  def servers(*args)
38
38
  servers = args.find_all{ |r| r.is_a?(SrvMonitor::Server) }
39
- options = args.find{ |r| r.is_a?(Hash) }
39
+ options = args.find{ |r| r.is_a?(Hash) } || {}
40
40
  servers.each{ |r| server(r, options) }
41
41
  end
42
42
 
@@ -49,12 +49,28 @@ module SrvMonitor
49
49
  @reports[params] = status
50
50
  end
51
51
 
52
- def run
52
+ def run(alert)
53
53
  puts "\n### Runing #{label}"
54
54
  statuses = []
55
+
56
+ tries = 0
57
+
55
58
  @scouts.each do |scout|
59
+ tries += 1
60
+
56
61
  scout.run(@reports)
57
- statuses << scout.status
62
+
63
+ if scout.status == alert[:if]
64
+ if tries <= alert[:retries]
65
+ redo
66
+ else
67
+ tries = 0
68
+ statuses << scout.status
69
+ end
70
+ else
71
+ statuses << scout.status
72
+ end
73
+
58
74
  end
59
75
  @status = SrvMonitor::Report.summarize(statuses)
60
76
  end
@@ -32,8 +32,7 @@ module SrvMonitor
32
32
 
33
33
  def alert(args={})
34
34
  @alert[:if] = args[:if] || :down
35
- @alert[:attempts] = args[:attempts] || 1
36
- @alert[:count] = 0
35
+ @alert[:retries] = args[:retries] || 1
37
36
  end
38
37
 
39
38
  def notifier(notifier_klass, args={})
@@ -45,21 +44,14 @@ module SrvMonitor
45
44
  end
46
45
 
47
46
  def run
48
- loop do
49
- @applications.each(&:run)
50
-
51
- unless @alert.empty?
52
- @alert[:count] = 0 unless status == @alert[:if]
53
-
54
- if status == @alert[:if]
55
- if @alert[:count] < @alert[:attempts]
56
- @alert[:count] += 1
57
- sleep @wait
58
- redo
59
- else
60
- notify!
61
- @alert[:count] = 0
62
- end
47
+ loop do
48
+ @applications.each do |app|
49
+ app.run(@alert)
50
+
51
+ unless status == @alert[:if]
52
+ sleep @wait
53
+ else
54
+ notify!
63
55
  end
64
56
  end
65
57
 
@@ -72,7 +64,5 @@ module SrvMonitor
72
64
  return unless @notifier
73
65
  @notifier.send(self)
74
66
  end
75
-
76
67
  end
77
- end
78
-
68
+ end
@@ -94,5 +94,4 @@ module SrvMonitor
94
94
  end
95
95
  end
96
96
  end
97
- end
98
-
97
+ end
@@ -18,13 +18,18 @@ module SrvMonitor
18
18
  # @option options [String] :path The path that will be fetched from the host.
19
19
  # @option options [String] :http_class The class that will be used to fetch the page, defaults to Net::HTTP
20
20
  # @option options [Number] :timout
21
- def initialize(options)
22
- @port = options[:port] || 80
21
+ def initialize(options)
23
22
  @path = options[:path] || '/'
24
23
  @http_class = options[:http_class] || Net::HTTP
25
24
  @timeout = options[:timeout] || 15
26
25
  @server = options[:server]
27
26
  @host = @server ? @server.host : options[:host] || '127.0.0.1'
27
+
28
+ @port = if options[:port]
29
+ options[:port]
30
+ else
31
+ @server ? @server.port : 80
32
+ end
28
33
  end
29
34
 
30
35
  def execute
@@ -6,7 +6,7 @@ end
6
6
 
7
7
  module SrvMonitor
8
8
  class Server
9
- attr_reader :name, :description, :host, :method, :user, :password
9
+ attr_reader :name, :description, :host, :method, :user, :password, :port
10
10
 
11
11
  def initialize(options)
12
12
  @name = options[:name]
@@ -15,6 +15,7 @@ module SrvMonitor
15
15
  @method = options[:method] || :local
16
16
  @user = options[:user]
17
17
  @password = options[:password]
18
+ @port = options[:port]
18
19
  end
19
20
 
20
21
  def exec(&block)
@@ -24,7 +25,7 @@ module SrvMonitor
24
25
  end
25
26
 
26
27
  def clone(args={})
27
- config = { :name => @name, :description => @description, :host => @host, :method => @method, :user => @user }
28
+ config = { :name => @name, :description => @description, :host => @host, :method => @method, :user => @user, :port => @port }
28
29
  Server.new config.merge(args)
29
30
  end
30
31
 
@@ -1,5 +1,5 @@
1
1
  module SrvMonitor
2
- PATCH = 4
2
+ PATCH = 5
3
3
  MINOR = 0
4
4
  MAJOR = 0
5
5
  VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}".freeze
metadata CHANGED
@@ -1,22 +1,32 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: srvmonitor
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 5
9
+ version: 0.0.5
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Click Jogos
9
13
  autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
- date: 2011-09-23 00:00:00.000000000Z
16
+
17
+ date: 2011-11-25 00:00:00 -02:00
18
+ default_executable:
13
19
  dependencies: []
20
+
14
21
  description: Server monitor.
15
22
  email: clickjogos@clickjogos.com.br
16
23
  executables: []
24
+
17
25
  extensions: []
26
+
18
27
  extra_rdoc_files: []
19
- files:
28
+
29
+ files:
20
30
  - .gitignore
21
31
  - Gemfile
22
32
  - MIT-LICENSE
@@ -40,28 +50,35 @@ files:
40
50
  - lib/srvmonitor/server.rb
41
51
  - lib/srvmonitor/version.rb
42
52
  - srvmonitor.gemspec
53
+ has_rdoc: true
43
54
  homepage: http://www.github.com/clickjogos/srvmonitor
44
55
  licenses: []
56
+
45
57
  post_install_message:
46
58
  rdoc_options: []
47
- require_paths:
59
+
60
+ require_paths:
48
61
  - lib
49
- required_ruby_version: !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- required_rubygems_version: !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - ! '>='
59
- - !ruby/object:Gem::Version
60
- version: '0'
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ segments:
67
+ - 0
68
+ version: "0"
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 0
75
+ version: "0"
61
76
  requirements: []
77
+
62
78
  rubyforge_project: srvmonitor
63
- rubygems_version: 1.8.6
79
+ rubygems_version: 1.3.6
64
80
  signing_key:
65
81
  specification_version: 3
66
82
  summary: Server monitor.
67
83
  test_files: []
84
+