monit 0.3.0 → 0.3.1

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/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