monit 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,3 +3,5 @@ require "bundler/gem_tasks"
3
3
 
4
4
  require "rspec/core/rake_task"
5
5
  RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
@@ -2,11 +2,11 @@ module Monit
2
2
  # The HTTPD section from the Monit XML
3
3
  class HTTPD
4
4
  attr_reader :address, :port, :ssl
5
-
5
+
6
6
  def initialize(options = {})
7
7
  @address = options["address"]
8
- @port = options["port"].to_i
9
- @ssl = options["ssl"] == "1" ? true : false
8
+ @port = options["port"]
9
+ @ssl = options["ssl"] == "1" ? true : false
10
10
  end
11
11
  end
12
12
  end
@@ -2,7 +2,7 @@ module Monit
2
2
  # The platform section from the Monit XML
3
3
  class Platform
4
4
  attr_reader :name, :release, :version, :machine, :cpu, :memory
5
-
5
+
6
6
  def initialize(options = {})
7
7
  @name = options["name"]
8
8
  @release = options["release"]
@@ -1,18 +1,18 @@
1
1
  module Monit
2
2
  # The server section from the Monit XML
3
3
  class Server
4
- attr_reader :id, :incarnation, :version, :uptime, :poll, :startdelay, :localhostname, :controlfile, :httpd
5
-
6
- def initialize(options = {})
7
- @id = options["id"]
8
- @incarnation = options["incarnation"]
9
- @version = options["version"]
10
- @uptime = options["uptime"].to_i
11
- @poll = options["poll"].to_i
12
- @startdelay = options["startdelay"].to_i
13
- @localhostname = options["localhostname"]
14
- @controlfile = options["controlfile"]
15
- @httpd = options["httpd"].is_a?(HTTPD) ? options["httpd"] : HTTPD.new(options["httpd"])
16
- end
4
+ attr_reader :id, :incarnation, :version, :uptime, :poll, :startdelay, :localhostname, :controlfile, :httpd
5
+
6
+ def initialize(options = {})
7
+ @id = options["id"]
8
+ @incarnation = options["incarnation"]
9
+ @version = options["version"]
10
+ @uptime = options["uptime"].to_i
11
+ @poll = options["poll"].to_i
12
+ @startdelay = options["startdelay"].to_i
13
+ @localhostname = options["localhostname"]
14
+ @controlfile = options["controlfile"]
15
+ @httpd = options["httpd"].is_a?(HTTPD) ? options["httpd"] : HTTPD.new(options["httpd"])
16
+ end
17
17
  end
18
18
  end
@@ -5,10 +5,10 @@ module Monit
5
5
  TYPES = { 0 => "Filesystem", 1 => "Directory", 2 => "File", 3 => "Daemon", 4 => "Connection", 5 => "System" }
6
6
 
7
7
  def initialize(hash = nil, options = {})
8
- @host ||= options[:host] ||= "localhost"
9
- @port ||= options[:port] ||= 2812
10
- @ssl ||= options[:ssl] ||= false
11
- @auth ||= options[:auth] ||= false
8
+ @host ||= options[:host] || "localhost"
9
+ @port ||= options[:port] || 2812
10
+ @ssl ||= options[:ssl] || false
11
+ @auth ||= options[:auth] || false
12
12
  @username = options[:username]
13
13
  @password = options[:password]
14
14
 
@@ -21,24 +21,10 @@ module Monit
21
21
  @ssl ? URI::HTTPS.build(url_params) : URI::HTTP.build(url_params)
22
22
  end
23
23
 
24
- def start!
25
- self.do :start
26
- end
27
-
28
- def stop!
29
- self.do :stop
30
- end
31
-
32
- def restart!
33
- self.do :restart
34
- end
35
-
36
- def monitor!
37
- self.do :monitor
38
- end
39
-
40
- def unmonitor!
41
- self.do :unmonitor
24
+ [:start, :stop, :restart, :monitor, :unmonitor].each do |action|
25
+ define_method "#{action}!" do
26
+ self.do action
27
+ end
42
28
  end
43
29
 
44
30
  def do(action)
@@ -46,17 +32,14 @@ module Monit
46
32
  http = Net::HTTP.new(uri.host, uri.port)
47
33
 
48
34
  if @ssl
49
- http.use_ssl = true
35
+ http.use_ssl = true
50
36
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
51
37
  end
52
38
 
53
- request = Net::HTTP::Post.new(uri.request_uri)
39
+ request = Net::HTTP::Post.new(uri.request_uri)
54
40
  request.body = "action=#{action}"
55
41
 
56
- if @auth
57
- request.basic_auth(@username, @password)
58
- end
59
-
42
+ request.basic_auth(@username, @password) if @auth
60
43
  request["User-Agent"] = "Monit Ruby client #{Monit::VERSION}"
61
44
 
62
45
  begin
@@ -27,10 +27,10 @@ module Monit
27
27
  # * +username+ - username for authentication
28
28
  # * +password+ - password for authentication
29
29
  def initialize(options = {})
30
- @host ||= options[:host] ||= "localhost"
31
- @port ||= options[:port] ||= 2812
32
- @ssl ||= options[:ssl] ||= false
33
- @auth ||= options[:auth] ||= false
30
+ @host = options[:host] || "localhost"
31
+ @port = (options[:port] || 2812).to_i
32
+ @ssl = options[:ssl] || false
33
+ @auth = options[:auth] || false
34
34
  @username = options[:username]
35
35
  @password = options[:password]
36
36
  @services = []
@@ -72,17 +72,18 @@ module Monit
72
72
 
73
73
  # Parse the XML from Monit into a hash and into a Ruby representation.
74
74
  def parse(xml)
75
- @hash = Hash.from_xml(xml)
76
- @server = Server.new(@hash["monit"]["server"])
75
+ @hash = Hash.from_xml(xml)
76
+ @server = Server.new(@hash["monit"]["server"])
77
77
  @platform = Platform.new(@hash["monit"]["platform"])
78
78
 
79
- options = {
80
- :host => @host,
81
- :port => @port,
82
- :ssl => @ssl,
83
- :auth => @auth,
84
- :username => @username,
85
- :password => @password }
79
+ options = {
80
+ :host => @host,
81
+ :port => @port,
82
+ :ssl => @ssl,
83
+ :auth => @auth,
84
+ :username => @username,
85
+ :password => @password
86
+ }
86
87
 
87
88
  if @hash["monit"]["service"].is_a? Array
88
89
  @services = @hash["monit"]["service"].map do |service|
@@ -1,3 +1,3 @@
1
1
  module Monit
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -17,7 +17,7 @@ describe Monit do
17
17
  lambda { @status.password }.should raise_error(NoMethodError)
18
18
  @status.services.should == []
19
19
  end
20
-
20
+
21
21
  it "should generate the correct URL" do
22
22
  @status = Monit::Status.new
23
23
  @status.url.should be_kind_of URI
@@ -29,7 +29,7 @@ describe Monit do
29
29
  @status.port = 8080
30
30
  @status.url.to_s.should == "https://rails.fi:8080/_status?format=xml"
31
31
  end
32
-
32
+
33
33
  it "should parse XML into a Hash" do
34
34
  status = Monit::Status.new
35
35
  status.stub!(:xml).and_return(File.read(SMALLISH_STATUS_PATH))
@@ -39,7 +39,7 @@ describe Monit do
39
39
  status.hash["monit"]["server"].should_not be_nil
40
40
  status.hash["monit"]["platform"].should_not be_nil
41
41
  status.hash["monit"]["service"].should_not be_nil
42
-
42
+
43
43
  status.stub!(:xml).and_return(File.read(LARGISH_STATUS_PATH))
44
44
  status.parse(status.xml)
45
45
  status.hash.should be_kind_of Hash
@@ -48,22 +48,22 @@ describe Monit do
48
48
  status.hash["monit"]["platform"].should_not be_nil
49
49
  status.hash["monit"]["service"].should_not be_nil
50
50
  end
51
-
51
+
52
52
  it "should parse XML into a Ruby representation" do
53
53
  status = Monit::Status.new
54
54
  status.stub!(:xml).and_return(File.read(SMALLISH_STATUS_PATH))
55
55
  status.parse(status.xml)
56
-
56
+
57
57
  status.server.should be_kind_of Monit::Server
58
58
  status.server.httpd.should be_kind_of Monit::HTTPD
59
59
  status.platform.should be_kind_of Monit::Platform
60
60
  status.services.should be_kind_of Array
61
61
  status.services.first.should be_kind_of Monit::Service
62
62
  status.services.first.should be_kind_of OpenStruct
63
-
63
+
64
64
  status.stub!(:xml).and_return(File.read(LARGISH_STATUS_PATH))
65
65
  status.parse(status.xml)
66
-
66
+
67
67
  status.server.should be_kind_of Monit::Server
68
68
  status.server.httpd.should be_kind_of Monit::HTTPD
69
69
  status.platform.should be_kind_of Monit::Platform
@@ -72,20 +72,20 @@ describe Monit do
72
72
  status.services.first.should be_kind_of OpenStruct
73
73
  end
74
74
  end
75
-
75
+
76
76
  describe "Server" do
77
77
  it "should create a new instance of Monit::Server from a hash" do
78
78
  hash = { "id" => "52255a0b8999c46c98de9697a8daef67",
79
- "incarnation" => "1283946152",
80
- "version" => "5.1.1",
81
- "uptime" => "4",
82
- "poll" => "30",
83
- "startdelay" => "0",
84
- "localhostname" => "Example.local",
85
- "controlfile" => "/etc/monitrc",
86
- "httpd" => { "address" => nil,
87
- "port" => "2812",
88
- "ssl" => "0" } }
79
+ "incarnation" => "1283946152",
80
+ "version" => "5.1.1",
81
+ "uptime" => "4",
82
+ "poll" => "30",
83
+ "startdelay" => "0",
84
+ "localhostname" => "Example.local",
85
+ "controlfile" => "/etc/monitrc",
86
+ "httpd" => { "address" => nil,
87
+ "port" => "2812",
88
+ "ssl" => "0" } }
89
89
  server = Monit::Server.new(hash)
90
90
  server.id.should == "52255a0b8999c46c98de9697a8daef67"
91
91
  server.incarnation.should == "1283946152"
@@ -98,27 +98,27 @@ describe Monit do
98
98
  server.httpd.should be_kind_of Monit::HTTPD
99
99
  end
100
100
  end
101
-
101
+
102
102
  describe "HTTPD" do
103
103
  it "should create a new instance of Monit::HTTPD from a hash" do
104
104
  hash = { "address" => nil,
105
- "port" => "2812",
106
- "ssl" => "0" }
105
+ "port" => 2812,
106
+ "ssl" => "0" }
107
107
  httpd = Monit::HTTPD.new(hash)
108
108
  httpd.address.should be_nil
109
109
  httpd.port.should == 2812
110
110
  httpd.ssl.should be_false
111
111
  end
112
112
  end
113
-
113
+
114
114
  describe "Platform" do
115
115
  it "should create a new instance of Monit::Platform from a hash" do
116
116
  hash = { "name" => "Darwin",
117
- "release" => "10.4.0",
118
- "version" => "Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386",
119
- "machine" => "i386",
120
- "cpu" => "2",
121
- "memory" => "4194304" }
117
+ "release" => "10.4.0",
118
+ "version" => "Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386",
119
+ "machine" => "i386",
120
+ "cpu" => "2",
121
+ "memory" => "4194304" }
122
122
  platform = Monit::Platform.new(hash)
123
123
  platform.name.should == "Darwin"
124
124
  platform.release.should == "10.4.0"
@@ -128,27 +128,27 @@ describe Monit do
128
128
  platform.memory.should == 4194304
129
129
  end
130
130
  end
131
-
131
+
132
132
  describe "Service" do
133
133
  let(:service) do
134
134
  hash = { "collected_sec" => "1283946152",
135
- "collected_usec" => "309973",
136
- "name" => "Example.local",
137
- "status" => "0",
138
- "status_hint" => "0",
139
- "monitor" => "1",
140
- "monitormode" => "0",
141
- "pendingaction" => "0",
142
- "groups" => { "name" => "server" },
143
- "system" => { "load" => { "avg01" => "0.28",
144
- "avg05" => "0.43",
145
- "avg15" => "0.48" },
146
- "cpu" => { "user" => "10.0",
147
- "system" => "4.1" },
148
- "memory" => { "percent" => "44.1",
149
- "kilobyte" => "1850152" }
150
- },
151
- "type" => "5" }
135
+ "collected_usec" => "309973",
136
+ "name" => "Example.local",
137
+ "status" => "0",
138
+ "status_hint" => "0",
139
+ "monitor" => "1",
140
+ "monitormode" => "0",
141
+ "pendingaction" => "0",
142
+ "groups" => { "name" => "server" },
143
+ "system" => { "load" => { "avg01" => "0.28",
144
+ "avg05" => "0.43",
145
+ "avg15" => "0.48" },
146
+ "cpu" => { "user" => "10.0",
147
+ "system" => "4.1" },
148
+ "memory" => { "percent" => "44.1",
149
+ "kilobyte" => "1850152" }
150
+ },
151
+ "type" => "5" }
152
152
  Monit::Service.new(hash)
153
153
  end
154
154
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-14 00:00:00.000000000 Z
12
+ date: 2013-06-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -127,10 +127,6 @@ files:
127
127
  - lib/monit/server.rb
128
128
  - lib/monit/service.rb
129
129
  - lib/monit/status.rb
130
- - lib/monit/status/httpd.rb
131
- - lib/monit/status/platform.rb
132
- - lib/monit/status/server.rb
133
- - lib/monit/status/service.rb
134
130
  - lib/monit/version.rb
135
131
  - monit.gemspec
136
132
  - spec/monit_spec.rb
@@ -149,21 +145,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
145
  - - ! '>='
150
146
  - !ruby/object:Gem::Version
151
147
  version: '0'
152
- segments:
153
- - 0
154
- hash: -2454781035396715959
155
148
  required_rubygems_version: !ruby/object:Gem::Requirement
156
149
  none: false
157
150
  requirements:
158
151
  - - ! '>='
159
152
  - !ruby/object:Gem::Version
160
153
  version: '0'
161
- segments:
162
- - 0
163
- hash: -2454781035396715959
164
154
  requirements: []
165
155
  rubyforge_project:
166
- rubygems_version: 1.8.25
156
+ rubygems_version: 1.8.23
167
157
  signing_key:
168
158
  specification_version: 3
169
159
  summary: Connect to Monit
@@ -1,12 +0,0 @@
1
- module Monit
2
- # The HTTPD section from the Monit XML
3
- class HTTPD
4
- attr_reader :address, :port, :ssl
5
-
6
- def initialize(options = {})
7
- @address = options["address"]
8
- @port = options["port"].to_i
9
- @ssl = options["ssl"] == "1" ? true : false
10
- end
11
- end
12
- end
@@ -1,15 +0,0 @@
1
- module Monit
2
- # The platform section from the Monit XML
3
- class Platform
4
- attr_reader :name, :release, :version, :machine, :cpu, :memory
5
-
6
- def initialize(options = {})
7
- @name = options["name"]
8
- @release = options["release"]
9
- @version = options["version"]
10
- @machine = options["machine"]
11
- @cpu = options["cpu"].to_i
12
- @memory = options["memory"].to_i
13
- end
14
- end
15
- end
@@ -1,18 +0,0 @@
1
- module Monit
2
- # The server section from the Monit XML
3
- class Server
4
- attr_reader :id, :incarnation, :version, :uptime, :poll, :startdelay, :localhostname, :controlfile, :httpd
5
-
6
- def initialize(options = {})
7
- @id = options["id"]
8
- @incarnation = options["incarnation"]
9
- @version = options["version"]
10
- @uptime = options["uptime"].to_i
11
- @poll = options["poll"].to_i
12
- @startdelay = options["startdelay"].to_i
13
- @localhostname = options["localhostname"]
14
- @controlfile = options["controlfile"]
15
- @httpd = options["httpd"].is_a?(HTTPD) ? options["httpd"] : HTTPD.new(options["httpd"])
16
- end
17
- end
18
- end
@@ -1,79 +0,0 @@
1
- require "ostruct"
2
- module Monit
3
- # The service section from the Monit XML. Inherits from OpenStruct.
4
- class Service < OpenStruct
5
- TYPES = { 0 => "Filesystem", 1 => "Directory", 2 => "File", 3 => "Daemon", 4 => "Connection", 5 => "System" }
6
-
7
- def initialize(hash = nil, options = {})
8
- @host ||= options[:host] ||= "localhost"
9
- @port ||= options[:port] ||= 2812
10
- @ssl ||= options[:ssl] ||= false
11
- @auth ||= options[:auth] ||= false
12
- @username = options[:username]
13
- @password = options[:password]
14
-
15
- hash = rename_service_type(hash) if hash
16
- super(hash)
17
- end
18
-
19
- def url path
20
- url_params = { :host => @host, :port => @port, :path => "/#{path}" }
21
- @ssl ? URI::HTTPS.build(url_params) : URI::HTTP.build(url_params)
22
- end
23
-
24
- def start
25
- return self.do :start
26
- end
27
-
28
- def stop
29
- return self.do :stop
30
- end
31
-
32
- def restart
33
- return self.do :restart
34
- end
35
-
36
- def monitor
37
- return self.do :monitor
38
- end
39
-
40
- def unmonitor
41
- return self.do :unmonitor
42
- end
43
-
44
- def do(action)
45
- uri = self.url self.name
46
- http = Net::HTTP.new(uri.host, uri.port)
47
-
48
- if @ssl
49
- http.use_ssl = true
50
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
51
- end
52
-
53
- request = Net::HTTP::Post.new(uri.request_uri)
54
- request.body = "action=#{action}"
55
-
56
- if @auth
57
- request.basic_auth(@username, @password)
58
- end
59
-
60
- request["User-Agent"] = "Monit Ruby client #{Monit::VERSION}"
61
-
62
- response = http.request(request)
63
-
64
- if response.code == "200"
65
- return true
66
- else
67
- return false
68
- end
69
- end
70
-
71
- private
72
- # Renames the Service type from "type" to "service_type" to avoid conflicts
73
- def rename_service_type(hash)
74
- hash["service_type"] = hash["type"]
75
- hash.delete("type")
76
- hash
77
- end
78
- end
79
- end