scout_scout 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.rdoc +6 -6
- data/Rakefile +3 -2
- data/lib/scout_scout.rb +37 -33
- data/lib/scout_scout/version.rb +1 -1
- data/spec/fixtures/activities.xml +33 -0
- data/spec/fixtures/client.xml +21 -0
- data/spec/fixtures/client_by_hostname.xml +23 -0
- data/spec/fixtures/clients.xml +57 -0
- data/spec/fixtures/plugin_data.xml +62 -0
- data/spec/fixtures/plugins.xml +127 -0
- data/spec/scout_scout_spec.rb +35 -26
- data/spec/spec_helper.rb +40 -11
- metadata +8 -3
- data/VERSION +0 -1
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
= scout_scout
|
2
2
|
|
3
|
-
|
3
|
+
Scout your data out of Scout:
|
4
4
|
|
5
5
|
require 'scout_scout'
|
6
6
|
scout = ScoutScout.new('youraccountname', 'your@awesome.com', 'sekret')
|
7
7
|
#all your servers
|
8
8
|
clients = scout.clients
|
9
|
-
#one specific server
|
10
|
-
ram_hungry = scout.client(
|
9
|
+
#one specific server - pass in hostname
|
10
|
+
ram_hungry = scout.client('db1.awesome.com')
|
11
11
|
#details on that server's plugins
|
12
|
-
ram_hungry_plugins = scout.plugins(
|
13
|
-
#details about the plugin with
|
14
|
-
data = scout.plugin_data(
|
12
|
+
ram_hungry_plugins = scout.plugins('db1.awesome.com')
|
13
|
+
#details about the plugin with with name 'Server Overview' on server 'db1.awesome.com'
|
14
|
+
data = scout.plugin_data('db1.awesome.com','Server Overview')
|
15
15
|
|
16
16
|
== Note on Patches/Pull Requests
|
17
17
|
|
data/Rakefile
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
+
$LOAD_PATH.unshift 'lib'
|
4
|
+
require 'scout_scout/version'
|
3
5
|
|
4
6
|
begin
|
5
7
|
require 'jeweler'
|
6
8
|
Jeweler::Tasks.new do |gem|
|
9
|
+
gem.version = ScoutScout::VERSION
|
7
10
|
gem.name = "scout_scout"
|
8
11
|
gem.summary = %Q{API wrapper for scout.com}
|
9
12
|
gem.description = %Q{API wrapper for scout.com}
|
@@ -38,8 +41,6 @@ task :spec => :check_dependencies
|
|
38
41
|
task :default => :spec
|
39
42
|
|
40
43
|
require 'rake/rdoctask'
|
41
|
-
$LOAD_PATH.unshift 'lib'
|
42
|
-
require 'scout_scout/version'
|
43
44
|
Rake::RDocTask.new do |rdoc|
|
44
45
|
version = ScoutScout::VERSION
|
45
46
|
|
data/lib/scout_scout.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'hashie'
|
2
2
|
require 'httparty'
|
3
3
|
require 'scout_scout/version'
|
4
|
+
require 'cgi'
|
4
5
|
|
5
6
|
class ScoutScout
|
6
7
|
include HTTParty
|
@@ -8,19 +9,20 @@ class ScoutScout
|
|
8
9
|
format :xml
|
9
10
|
mattr_inheritable :account
|
10
11
|
|
11
|
-
def initialize(
|
12
|
-
self.class.account =
|
13
|
-
self.class.basic_auth
|
12
|
+
def initialize(scout_account_name, username, password)
|
13
|
+
self.class.account = scout_account_name
|
14
|
+
self.class.basic_auth username, password
|
14
15
|
end
|
15
16
|
|
16
|
-
def alerts(
|
17
|
-
if
|
18
|
-
|
19
|
-
|
17
|
+
def alerts(client_id_or_hostname = nil)
|
18
|
+
response = if client_id_or_hostname.nil?
|
19
|
+
self.class.get("/#{self.class.account}/activities.xml")
|
20
|
+
elsif client_id_or_hostname.is_a?(Fixnum)
|
21
|
+
self.class.get("/#{self.class.account}/clients/#{client_id_or_hostname}/activities.xml")
|
20
22
|
else
|
21
|
-
|
22
|
-
response['alerts'].map { |alert| Hashie::Mash.new(alert) }
|
23
|
+
self.class.get("/#{self.class.account}/activities.xml?host=#{client_id_or_hostname}")
|
23
24
|
end
|
25
|
+
response['alerts'].map { |alert| Hashie::Mash.new(alert) }
|
24
26
|
end
|
25
27
|
|
26
28
|
def clients
|
@@ -28,33 +30,35 @@ class ScoutScout
|
|
28
30
|
response['clients'].map { |client| Hashie::Mash.new(client) }
|
29
31
|
end
|
30
32
|
|
31
|
-
def client(
|
32
|
-
|
33
|
-
|
33
|
+
def client(client_id_or_hostname)
|
34
|
+
if client_id_or_hostname.is_a?(Fixnum)
|
35
|
+
response = self.class.get("/#{self.class.account}/clients/#{client_id_or_hostname}.xml")
|
36
|
+
Hashie::Mash.new(response['client'])
|
37
|
+
else
|
38
|
+
response = self.class.get("/#{self.class.account}/clients.xml?host=#{client_id_or_hostname}")
|
39
|
+
Hashie::Mash.new(response['clients'].first)
|
40
|
+
end
|
34
41
|
end
|
35
42
|
|
36
|
-
def plugins(
|
37
|
-
response =
|
38
|
-
|
43
|
+
def plugins(client_id_or_hostname)
|
44
|
+
response = if client_id_or_hostname.is_a?(Fixnum)
|
45
|
+
self.class.get("/#{self.class.account}/clients/#{client_id_or_hostname}/plugins.xml")
|
46
|
+
else
|
47
|
+
self.class.get("/#{self.class.account}/plugins.xml?host=#{client_id_or_hostname}")
|
48
|
+
end
|
49
|
+
response['plugins'].map { |plugin| format_plugin(Hashie::Mash.new(plugin)) }
|
39
50
|
end
|
40
51
|
|
41
|
-
def plugin_data(
|
42
|
-
|
43
|
-
|
44
|
-
plugin_doc = Nokogiri::HTML(html)
|
45
|
-
table = plugin_doc.css('table.list.spaced').first
|
46
|
-
data = []
|
47
|
-
table.css('tr').each do |row|
|
48
|
-
if (columns = row.css('td')).length == 2
|
49
|
-
link = columns.first.css('a').first
|
50
|
-
descriptor = {}
|
51
|
-
descriptor[:name] = link.content
|
52
|
-
descriptor[:data] = columns[1].content.strip
|
53
|
-
descriptor[:id] = link.attribute('href').to_s.gsub(/.*=/,'').to_i
|
54
|
-
descriptor[:graph] = "#{self.class.base_uri}/#{self.class.account}/descriptors/#{descriptor[:id]}/graph"
|
55
|
-
data << Hashie::Mash.new(descriptor)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
data
|
52
|
+
def plugin_data(hostname, plugin_name)
|
53
|
+
response = self.class.get("/#{self.class.account}/plugins/show.xml?host=#{hostname}&name=#{CGI.escape(plugin_name)}")
|
54
|
+
format_plugin(Hashie::Mash.new(response['plugin']))
|
59
55
|
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
|
59
|
+
def format_plugin(plugin)
|
60
|
+
plugin.descriptors = plugin.descriptors.descriptor
|
61
|
+
plugin
|
62
|
+
end
|
63
|
+
|
60
64
|
end
|
data/lib/scout_scout/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<alerts type="array">
|
3
|
+
<alert>
|
4
|
+
<body nil="true"></body>
|
5
|
+
<client-id type="integer">24331</client-id>
|
6
|
+
<email-viewed-at type="datetime" nil="true"></email-viewed-at>
|
7
|
+
<id type="integer">35793021</id>
|
8
|
+
<last-repeated-at type="datetime">2010-01-21T20:30:00-05:00</last-repeated-at>
|
9
|
+
<needs-sms type="integer">0</needs-sms>
|
10
|
+
<num-repeats type="integer">1</num-repeats>
|
11
|
+
<plugin-id type="integer">122761</plugin-id>
|
12
|
+
<sms-sent-at type="datetime" nil="true"></sms-sent-at>
|
13
|
+
<stopped-repeating-at type="datetime" nil="true"></stopped-repeating-at>
|
14
|
+
<time type="datetime">2010-01-21T20:30:00-05:00</time>
|
15
|
+
<trigger-id type="integer">101821</trigger-id>
|
16
|
+
<title> Passenger Global Queue Depth met or exceeded 1 , increasing to 2 for 30 minutes at 08:30PM </title>
|
17
|
+
</alert>
|
18
|
+
<alert>
|
19
|
+
<body nil="true"></body>
|
20
|
+
<client-id type="integer">22301</client-id>
|
21
|
+
<email-viewed-at type="datetime" nil="true"></email-viewed-at>
|
22
|
+
<id type="integer">35793011</id>
|
23
|
+
<last-repeated-at type="datetime">2010-01-21T20:30:00-05:00</last-repeated-at>
|
24
|
+
<needs-sms type="integer">0</needs-sms>
|
25
|
+
<num-repeats type="integer">1</num-repeats>
|
26
|
+
<plugin-id type="integer">122731</plugin-id>
|
27
|
+
<sms-sent-at type="datetime" nil="true"></sms-sent-at>
|
28
|
+
<stopped-repeating-at type="datetime" nil="true"></stopped-repeating-at>
|
29
|
+
<time type="datetime">2010-01-21T20:30:00-05:00</time>
|
30
|
+
<trigger-id type="integer">101731</trigger-id>
|
31
|
+
<title> Passenger Global Queue Depth met or exceeded 1 , increasing to 1 for 30 minutes at 08:30PM </title>
|
32
|
+
</alert>
|
33
|
+
</alerts>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<client>
|
3
|
+
<checkin-interval type="integer">3</checkin-interval>
|
4
|
+
<checkup-status>OK</checkup-status>
|
5
|
+
<external-id nil="true"></external-id>
|
6
|
+
<id type="integer">13431</id>
|
7
|
+
<key>FOOBAR</key>
|
8
|
+
<last-checkin type="datetime">2010-01-21T20:35:01-05:00</last-checkin>
|
9
|
+
<last-ping type="datetime">2010-01-21T20:35:00-05:00</last-ping>
|
10
|
+
<name>foobar</name>
|
11
|
+
<num-checkins type="integer">20785</num-checkins>
|
12
|
+
<partner-id type="integer" nil="true"></partner-id>
|
13
|
+
<plan-updated-at type="datetime">2010-01-19T08:59:32-05:00</plan-updated-at>
|
14
|
+
<second-to-last-checkin type="datetime">2010-01-21T20:32:01-05:00</second-to-last-checkin>
|
15
|
+
<second-to-last-ping type="datetime">2010-01-21T20:32:00-05:00</second-to-last-ping>
|
16
|
+
<send-checkup-email type="boolean" nil="true"></send-checkup-email>
|
17
|
+
<send-checkup-sms type="boolean" nil="true"></send-checkup-sms>
|
18
|
+
<take-snapshots type="boolean">false</take-snapshots>
|
19
|
+
<version>3.2.6</version>
|
20
|
+
<active-alerts type="array"/>
|
21
|
+
</client>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<clients type="array">
|
3
|
+
<client>
|
4
|
+
<checkin-interval type="integer">3</checkin-interval>
|
5
|
+
<checkup-status>OK</checkup-status>
|
6
|
+
<external-id nil="true"></external-id>
|
7
|
+
<id type="integer">13431</id>
|
8
|
+
<key>FOOBAR</key>
|
9
|
+
<last-checkin type="datetime">2010-01-21T20:35:01-05:00</last-checkin>
|
10
|
+
<last-ping type="datetime">2010-01-21T20:35:00-05:00</last-ping>
|
11
|
+
<name>foobar</name>
|
12
|
+
<num-checkins type="integer">20785</num-checkins>
|
13
|
+
<partner-id type="integer" nil="true"></partner-id>
|
14
|
+
<plan-updated-at type="datetime">2010-01-19T08:59:32-05:00</plan-updated-at>
|
15
|
+
<second-to-last-checkin type="datetime">2010-01-21T20:32:01-05:00</second-to-last-checkin>
|
16
|
+
<second-to-last-ping type="datetime">2010-01-21T20:32:00-05:00</second-to-last-ping>
|
17
|
+
<send-checkup-email type="boolean" nil="true"></send-checkup-email>
|
18
|
+
<send-checkup-sms type="boolean" nil="true"></send-checkup-sms>
|
19
|
+
<take-snapshots type="boolean">false</take-snapshots>
|
20
|
+
<version>3.2.6</version>
|
21
|
+
<active-alerts type="array"/>
|
22
|
+
</client>
|
23
|
+
</clients>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<clients type="array">
|
3
|
+
<client>
|
4
|
+
<checkin-interval type="integer">3</checkin-interval>
|
5
|
+
<checkup-status>OK</checkup-status>
|
6
|
+
<external-id nil="true"></external-id>
|
7
|
+
<id type="integer">13431</id>
|
8
|
+
<key>FOOBAR</key>
|
9
|
+
<last-checkin type="datetime">2010-01-21T20:35:01-05:00</last-checkin>
|
10
|
+
<last-ping type="datetime">2010-01-21T20:35:00-05:00</last-ping>
|
11
|
+
<name>foobar</name>
|
12
|
+
<num-checkins type="integer">20785</num-checkins>
|
13
|
+
<partner-id type="integer" nil="true"></partner-id>
|
14
|
+
<plan-updated-at type="datetime">2010-01-19T08:59:32-05:00</plan-updated-at>
|
15
|
+
<second-to-last-checkin type="datetime">2010-01-21T20:32:01-05:00</second-to-last-checkin>
|
16
|
+
<second-to-last-ping type="datetime">2010-01-21T20:32:00-05:00</second-to-last-ping>
|
17
|
+
<send-checkup-email type="boolean" nil="true"></send-checkup-email>
|
18
|
+
<send-checkup-sms type="boolean" nil="true"></send-checkup-sms>
|
19
|
+
<take-snapshots type="boolean">false</take-snapshots>
|
20
|
+
<version>3.2.6</version>
|
21
|
+
<active-alerts type="array"/>
|
22
|
+
</client>
|
23
|
+
<client>
|
24
|
+
<checkin-interval type="integer">3</checkin-interval>
|
25
|
+
<checkup-status>Failure</checkup-status>
|
26
|
+
<external-id nil="true"></external-id>
|
27
|
+
<id type="integer">22751</id>
|
28
|
+
<key>FOO2</key>
|
29
|
+
<last-checkin type="datetime">2010-01-15T07:33:59-05:00</last-checkin>
|
30
|
+
<last-ping type="datetime">2010-01-15T07:33:52-05:00</last-ping>
|
31
|
+
<name>foo2</name>
|
32
|
+
<num-checkins type="integer">4801</num-checkins>
|
33
|
+
<partner-id type="integer" nil="true"></partner-id>
|
34
|
+
<plan-updated-at type="datetime">2010-01-19T08:59:32-05:00</plan-updated-at>
|
35
|
+
<second-to-last-checkin type="datetime">2010-01-05T05:33:14-05:00</second-to-last-checkin>
|
36
|
+
<second-to-last-ping type="datetime">2010-01-05T05:33:03-05:00</second-to-last-ping>
|
37
|
+
<send-checkup-email type="boolean" nil="true"></send-checkup-email>
|
38
|
+
<send-checkup-sms type="boolean" nil="true"></send-checkup-sms>
|
39
|
+
<take-snapshots type="boolean">false</take-snapshots>
|
40
|
+
<version>5.0.3</version>
|
41
|
+
<active-alerts type="array">
|
42
|
+
<alert>
|
43
|
+
<body nil="true"></body>
|
44
|
+
<email-viewed-at type="datetime" nil="true"></email-viewed-at>
|
45
|
+
<id type="integer">34555661</id>
|
46
|
+
<last-repeated-at type="datetime">2010-01-05T06:00:00-05:00</last-repeated-at>
|
47
|
+
<needs-sms type="integer">0</needs-sms>
|
48
|
+
<num-repeats type="integer">2</num-repeats>
|
49
|
+
<plugin-id type="integer">112001</plugin-id>
|
50
|
+
<sms-sent-at type="datetime" nil="true"></sms-sent-at>
|
51
|
+
<time type="datetime">2010-01-05T05:00:00-05:00</time>
|
52
|
+
<trigger-id type="integer">88111</trigger-id>
|
53
|
+
<title> Passenger private total increased 1,133 MB (200%) from 566 MB to 1,699 MB from 04:00AM-05:00AM relative to 03:00AM-04:00AM and is still continuing as of 06:00AM (16 days so far) </title>
|
54
|
+
</alert>
|
55
|
+
</active-alerts>
|
56
|
+
</client>
|
57
|
+
</clients>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<plugin>
|
2
|
+
<code-updated-at type="datetime">2010-01-14T18:39:52-05:00</code-updated-at>
|
3
|
+
<created-at type="datetime">2010-01-14T18:39:53-05:00</created-at>
|
4
|
+
<enabled type="boolean">true</enabled>
|
5
|
+
<failed-at type="datetime" nil="true"></failed-at>
|
6
|
+
<failing type="boolean">false</failing>
|
7
|
+
<first-reported-at type="datetime">2010-01-14T18:40:17-05:00</first-reported-at>
|
8
|
+
<id type="integer">122681</id>
|
9
|
+
<interval type="integer">0</interval>
|
10
|
+
<last-reported-at type="datetime">2010-01-30T19:01:00-05:00</last-reported-at>
|
11
|
+
<name>Passenger</name>
|
12
|
+
<plugin-url-id type="integer" nil="true"></plugin-url-id>
|
13
|
+
<status nil="true"></status>
|
14
|
+
<updated-at type="datetime">2010-01-30T19:01:04-05:00</updated-at>
|
15
|
+
<url>http://github.com/eric/sevenscale-scout-plugins/raw/master/passenger_united.rb</url>
|
16
|
+
<descriptors>
|
17
|
+
<descriptor>
|
18
|
+
<name>passenger_process_active</name>
|
19
|
+
<value>31</value>
|
20
|
+
</descriptor>
|
21
|
+
<descriptor>
|
22
|
+
<name>passenger_process_current</name>
|
23
|
+
<value>35</value>
|
24
|
+
</descriptor>
|
25
|
+
<descriptor>
|
26
|
+
<name>apache_vmsize_total</name>
|
27
|
+
<value>1613.7</value>
|
28
|
+
</descriptor>
|
29
|
+
<descriptor>
|
30
|
+
<name>passenger_queue_depth</name>
|
31
|
+
<value>0</value>
|
32
|
+
</descriptor>
|
33
|
+
<descriptor>
|
34
|
+
<name>passenger_max_pool_size</name>
|
35
|
+
<value>35</value>
|
36
|
+
</descriptor>
|
37
|
+
<descriptor>
|
38
|
+
<name>passenger_vmsize_total</name>
|
39
|
+
<value>6835.4</value>
|
40
|
+
</descriptor>
|
41
|
+
<descriptor>
|
42
|
+
<name>passenger_process_inactive</name>
|
43
|
+
<value>4</value>
|
44
|
+
</descriptor>
|
45
|
+
<descriptor>
|
46
|
+
<name>passenger_private_total</name>
|
47
|
+
<value>1515.1</value>
|
48
|
+
</descriptor>
|
49
|
+
<descriptor>
|
50
|
+
<name>nginx_processes</name>
|
51
|
+
<value>0</value>
|
52
|
+
</descriptor>
|
53
|
+
<descriptor>
|
54
|
+
<name>apache_private_total</name>
|
55
|
+
<value>10.3</value>
|
56
|
+
</descriptor>
|
57
|
+
<descriptor>
|
58
|
+
<name>apache_processes</name>
|
59
|
+
<value>5</value>
|
60
|
+
</descriptor>
|
61
|
+
</descriptors>
|
62
|
+
</plugin>
|
@@ -0,0 +1,127 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<plugins type="array">
|
3
|
+
<plugin>
|
4
|
+
<code-updated-at type="datetime">2010-01-14T18:39:52-05:00</code-updated-at>
|
5
|
+
<created-at type="datetime">2010-01-14T18:39:53-05:00</created-at>
|
6
|
+
<enabled type="boolean">true</enabled>
|
7
|
+
<failed-at type="datetime" nil="true"></failed-at>
|
8
|
+
<failing type="boolean">false</failing>
|
9
|
+
<first-reported-at type="datetime">2010-01-14T18:40:17-05:00</first-reported-at>
|
10
|
+
<id type="integer">122681</id>
|
11
|
+
<interval type="integer">0</interval>
|
12
|
+
<last-reported-at type="datetime">2010-01-30T19:01:00-05:00</last-reported-at>
|
13
|
+
<name>Passenger</name>
|
14
|
+
<plugin-url-id type="integer" nil="true"></plugin-url-id>
|
15
|
+
<status nil="true"></status>
|
16
|
+
<updated-at type="datetime">2010-01-30T19:01:04-05:00</updated-at>
|
17
|
+
<url>http://github.com/eric/sevenscale-scout-plugins/raw/master/passenger_united.rb</url>
|
18
|
+
<descriptors>
|
19
|
+
<descriptor>
|
20
|
+
<name>passenger_process_active</name>
|
21
|
+
<value>31</value>
|
22
|
+
</descriptor>
|
23
|
+
<descriptor>
|
24
|
+
<name>passenger_process_current</name>
|
25
|
+
<value>35</value>
|
26
|
+
</descriptor>
|
27
|
+
<descriptor>
|
28
|
+
<name>apache_vmsize_total</name>
|
29
|
+
<value>1613.7</value>
|
30
|
+
</descriptor>
|
31
|
+
<descriptor>
|
32
|
+
<name>passenger_queue_depth</name>
|
33
|
+
<value>0</value>
|
34
|
+
</descriptor>
|
35
|
+
<descriptor>
|
36
|
+
<name>passenger_max_pool_size</name>
|
37
|
+
<value>35</value>
|
38
|
+
</descriptor>
|
39
|
+
<descriptor>
|
40
|
+
<name>passenger_vmsize_total</name>
|
41
|
+
<value>6835.4</value>
|
42
|
+
</descriptor>
|
43
|
+
<descriptor>
|
44
|
+
<name>passenger_process_inactive</name>
|
45
|
+
<value>4</value>
|
46
|
+
</descriptor>
|
47
|
+
<descriptor>
|
48
|
+
<name>passenger_private_total</name>
|
49
|
+
<value>1515.1</value>
|
50
|
+
</descriptor>
|
51
|
+
<descriptor>
|
52
|
+
<name>nginx_processes</name>
|
53
|
+
<value>0</value>
|
54
|
+
</descriptor>
|
55
|
+
<descriptor>
|
56
|
+
<name>apache_private_total</name>
|
57
|
+
<value>10.3</value>
|
58
|
+
</descriptor>
|
59
|
+
<descriptor>
|
60
|
+
<name>apache_processes</name>
|
61
|
+
<value>5</value>
|
62
|
+
</descriptor>
|
63
|
+
</descriptors>
|
64
|
+
</plugin>
|
65
|
+
<plugin>
|
66
|
+
<code-updated-at type="datetime">2010-01-14T18:39:52-05:00</code-updated-at>
|
67
|
+
<created-at type="datetime">2010-01-14T18:39:53-05:00</created-at>
|
68
|
+
<enabled type="boolean">true</enabled>
|
69
|
+
<failed-at type="datetime" nil="true"></failed-at>
|
70
|
+
<failing type="boolean">false</failing>
|
71
|
+
<first-reported-at type="datetime">2010-01-14T18:40:17-05:00</first-reported-at>
|
72
|
+
<id type="integer">122682</id>
|
73
|
+
<interval type="integer">0</interval>
|
74
|
+
<last-reported-at type="datetime">2010-01-30T19:01:00-05:00</last-reported-at>
|
75
|
+
<name>Passenger 2</name>
|
76
|
+
<plugin-url-id type="integer" nil="true"></plugin-url-id>
|
77
|
+
<status nil="true"></status>
|
78
|
+
<updated-at type="datetime">2010-01-30T19:01:04-05:00</updated-at>
|
79
|
+
<url>http://github.com/eric/sevenscale-scout-plugins/raw/master/passenger_united.rb</url>
|
80
|
+
<descriptors>
|
81
|
+
<descriptor>
|
82
|
+
<name>passenger_process_active</name>
|
83
|
+
<value>31</value>
|
84
|
+
</descriptor>
|
85
|
+
<descriptor>
|
86
|
+
<name>passenger_process_current</name>
|
87
|
+
<value>35</value>
|
88
|
+
</descriptor>
|
89
|
+
<descriptor>
|
90
|
+
<name>apache_vmsize_total</name>
|
91
|
+
<value>1613.7</value>
|
92
|
+
</descriptor>
|
93
|
+
<descriptor>
|
94
|
+
<name>passenger_queue_depth</name>
|
95
|
+
<value>0</value>
|
96
|
+
</descriptor>
|
97
|
+
<descriptor>
|
98
|
+
<name>passenger_max_pool_size</name>
|
99
|
+
<value>35</value>
|
100
|
+
</descriptor>
|
101
|
+
<descriptor>
|
102
|
+
<name>passenger_vmsize_total</name>
|
103
|
+
<value>6835.4</value>
|
104
|
+
</descriptor>
|
105
|
+
<descriptor>
|
106
|
+
<name>passenger_process_inactive</name>
|
107
|
+
<value>4</value>
|
108
|
+
</descriptor>
|
109
|
+
<descriptor>
|
110
|
+
<name>passenger_private_total</name>
|
111
|
+
<value>1515.1</value>
|
112
|
+
</descriptor>
|
113
|
+
<descriptor>
|
114
|
+
<name>nginx_processes</name>
|
115
|
+
<value>0</value>
|
116
|
+
</descriptor>
|
117
|
+
<descriptor>
|
118
|
+
<name>apache_private_total</name>
|
119
|
+
<value>10.3</value>
|
120
|
+
</descriptor>
|
121
|
+
<descriptor>
|
122
|
+
<name>apache_processes</name>
|
123
|
+
<value>5</value>
|
124
|
+
</descriptor>
|
125
|
+
</descriptors>
|
126
|
+
</plugin>
|
127
|
+
</plugins>
|
data/spec/scout_scout_spec.rb
CHANGED
@@ -14,7 +14,7 @@ describe "ScoutScout" do
|
|
14
14
|
describe "global" do
|
15
15
|
describe "client list" do
|
16
16
|
before(:each) do
|
17
|
-
|
17
|
+
@scout_scout.stub_get('clients.xml')
|
18
18
|
@clients = @scout_scout.clients
|
19
19
|
end
|
20
20
|
it 'should list all clients' do
|
@@ -26,7 +26,7 @@ describe "ScoutScout" do
|
|
26
26
|
end
|
27
27
|
describe 'alert log' do
|
28
28
|
before(:each) do
|
29
|
-
|
29
|
+
@scout_scout.stub_get('activities.xml')
|
30
30
|
@activities = @scout_scout.alerts
|
31
31
|
end
|
32
32
|
it "should be accessable" do
|
@@ -38,18 +38,29 @@ describe "ScoutScout" do
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
describe 'individual clients' do
|
41
|
-
describe '' do
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
describe 'should be accessable' do
|
42
|
+
describe '' do
|
43
|
+
before(:each) do
|
44
|
+
@scout_scout.stub_get('clients/1234.xml', 'client.xml')
|
45
|
+
@client = @scout_scout.client(1234)
|
46
|
+
end
|
47
|
+
it "by id" do
|
48
|
+
@client.key.should == 'FOOBAR'
|
49
|
+
end
|
45
50
|
end
|
46
|
-
|
47
|
-
|
51
|
+
describe '' do
|
52
|
+
before(:each) do
|
53
|
+
@scout_scout.stub_get('clients.xml?host=foo.awesome.com', 'client_by_hostname.xml')
|
54
|
+
@client = @scout_scout.client('foo.awesome.com')
|
55
|
+
end
|
56
|
+
it "by hostname" do
|
57
|
+
@client.key.should == 'FOOBAR'
|
58
|
+
end
|
48
59
|
end
|
49
60
|
end
|
50
61
|
describe 'alert log' do
|
51
62
|
before(:each) do
|
52
|
-
|
63
|
+
@scout_scout.stub_get('clients/1234/activities.xml', 'activities.xml')
|
53
64
|
@activities = @scout_scout.alerts(1234)
|
54
65
|
end
|
55
66
|
it "should be accessable" do
|
@@ -59,37 +70,35 @@ describe "ScoutScout" do
|
|
59
70
|
end
|
60
71
|
end
|
61
72
|
end
|
62
|
-
describe '
|
63
|
-
describe '' do
|
73
|
+
describe 'plugin' do
|
74
|
+
describe 'list' do
|
64
75
|
before(:each) do
|
65
|
-
|
76
|
+
@scout_scout.stub_get('clients/1234/plugins.xml', 'plugins.xml')
|
66
77
|
@plugins = @scout_scout.plugins(1234)
|
67
78
|
end
|
68
79
|
it "should be accessable" do
|
69
|
-
@plugins.size.should ==
|
80
|
+
@plugins.size.should == 2
|
70
81
|
@plugins.each do |plugin|
|
71
|
-
plugin.
|
82
|
+
plugin.name.should =~ /Passenger/
|
83
|
+
plugin.descriptors.length.should == 11
|
72
84
|
end
|
73
85
|
end
|
74
86
|
end
|
75
|
-
describe '
|
87
|
+
describe 'individually' do
|
76
88
|
before(:each) do
|
77
|
-
|
78
|
-
@plugin_data = @scout_scout.plugin_data(
|
89
|
+
@scout_scout.stub_get('plugins/show.xml?host=foo.awesome.com&name=passenger', 'plugin_data.xml')
|
90
|
+
@plugin_data = @scout_scout.plugin_data('foo.awesome.com','passenger')
|
79
91
|
end
|
80
92
|
it "should be accessable" do
|
81
|
-
@plugin_data.
|
93
|
+
@plugin_data.name.should == 'Passenger'
|
94
|
+
@plugin_data.descriptors.length.should == 11
|
82
95
|
end
|
83
|
-
it "should include
|
84
|
-
@plugin_data.first.
|
85
|
-
|
86
|
-
it "should include graph URLs" do
|
87
|
-
@plugin_data.first.graph.should == 'https://scoutapp.com/account/descriptors/368241/graph'
|
88
|
-
end
|
89
|
-
it "should include name" do
|
90
|
-
@plugin_data.first.name.should == 'Swap Used'
|
96
|
+
it "should include descriptors" do
|
97
|
+
@plugin_data.descriptors.first.value.should == '31'
|
98
|
+
@plugin_data.descriptors.first.name.should == 'passenger_process_active'
|
91
99
|
end
|
92
100
|
end
|
101
|
+
|
93
102
|
end
|
94
103
|
end
|
95
104
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,19 +5,48 @@ require 'fakeweb'
|
|
5
5
|
|
6
6
|
FakeWeb.allow_net_connect = false
|
7
7
|
|
8
|
-
|
9
|
-
open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
|
10
|
-
end
|
8
|
+
class ScoutScout
|
11
9
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
10
|
+
def scout_url(path)
|
11
|
+
uri = URI.join(self.class.default_options[:base_uri], "#{self.class.account}/", path)
|
12
|
+
uri.userinfo = "#{self.class.default_options[:basic_auth][:username]}:#{self.class.default_options[:basic_auth][:password]}".gsub(/@/, '%40')
|
13
|
+
uri.to_s
|
14
|
+
end
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
def file_fixture(filename)
|
17
|
+
open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
|
18
|
+
end
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
def stub_get(path, filename = nil, status=nil)
|
21
|
+
filename = path if filename.nil?
|
22
|
+
options = {:body => file_fixture(filename)}
|
23
|
+
options.merge!({:status => status}) unless status.nil?
|
24
|
+
FakeWeb.register_uri(:get, scout_url(path), options)
|
25
|
+
end
|
26
|
+
|
27
|
+
def stub_post(path, filename)
|
28
|
+
FakeWeb.register_uri(:post, scout_url(path), :body => file_fixture(filename))
|
29
|
+
end
|
30
|
+
|
31
|
+
def stub_put(path, filename)
|
32
|
+
FakeWeb.register_uri(:put, scout_url(path), :body => file_fixture(filename))
|
33
|
+
end
|
34
|
+
|
35
|
+
def stub_delete(path, filename)
|
36
|
+
FakeWeb.register_uri(:delete, scout_url(path), :body => file_fixture(filename))
|
37
|
+
end
|
38
|
+
|
39
|
+
def stub_http_response_with(filename)
|
40
|
+
format = filename.split('.').last.intern
|
41
|
+
data = file_fixture(filename)
|
42
|
+
|
43
|
+
response = Net::HTTPOK.new("1.1", 200, "Content for you")
|
44
|
+
response.stub!(:body).and_return(data)
|
45
|
+
|
46
|
+
http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', :format => format)
|
47
|
+
http_request.stub!(:perform_actual_request).and_return(response)
|
48
|
+
|
49
|
+
HTTParty::Request.should_receive(:new).at_least(1).and_return(http_request)
|
50
|
+
end
|
21
51
|
|
22
|
-
HTTParty::Request.should_receive(:new).and_return(http_request)
|
23
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout_scout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesse Newland
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-30 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -67,9 +67,14 @@ files:
|
|
67
67
|
- LICENSE
|
68
68
|
- README.rdoc
|
69
69
|
- Rakefile
|
70
|
-
- VERSION
|
71
70
|
- lib/scout_scout.rb
|
72
71
|
- lib/scout_scout/version.rb
|
72
|
+
- spec/fixtures/activities.xml
|
73
|
+
- spec/fixtures/client.xml
|
74
|
+
- spec/fixtures/client_by_hostname.xml
|
75
|
+
- spec/fixtures/clients.xml
|
76
|
+
- spec/fixtures/plugin_data.xml
|
77
|
+
- spec/fixtures/plugins.xml
|
73
78
|
- spec/scout_scout_spec.rb
|
74
79
|
- spec/spec.opts
|
75
80
|
- spec/spec_helper.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.0.1
|