scout 5.6.0.alpha.3 → 5.6.0.alpha.4
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/lib/scout/server.rb +2 -3
- data/lib/scout/server_base.rb +2 -1
- data/lib/scout/version.rb +1 -1
- data/test/scout_test.rb +64 -2
- metadata +41 -43
data/lib/scout/server.rb
CHANGED
@@ -36,7 +36,7 @@ module Scout
|
|
36
36
|
@server_name = server_name
|
37
37
|
@http_proxy = http_proxy
|
38
38
|
@https_proxy = https_proxy
|
39
|
-
@roles = roles || ''
|
39
|
+
@roles = (roles || '').gsub(/[^a-zA-Z0-9,]/,'')
|
40
40
|
@plugin_plan = []
|
41
41
|
@plugins_with_signature_errors = []
|
42
42
|
@directives = {} # take_snapshots, interval, sleep_interval
|
@@ -60,10 +60,9 @@ module Scout
|
|
60
60
|
def refresh?
|
61
61
|
return true if !ping_key or account_public_key_changed? # fetch the plan again if the account key is modified/created
|
62
62
|
|
63
|
-
url=URI.join( @server.sub("https://","http://"), "/clients/#{ping_key}/ping.scout")
|
63
|
+
url=URI.join( @server.sub("https://","http://"), "/clients/#{ping_key}/ping.scout?roles=#{@roles}&host=#{Socket.gethostname}")
|
64
64
|
|
65
65
|
headers = {"x-scout-tty" => ($stdin.tty? ? 'true' : 'false')}
|
66
|
-
headers["x-scout-roles"] = @roles
|
67
66
|
if @history["plan_last_modified"] and @history["old_plugins"]
|
68
67
|
headers["If-Modified-Since"] = @history["plan_last_modified"]
|
69
68
|
end
|
data/lib/scout/server_base.rb
CHANGED
@@ -28,7 +28,8 @@ module Scout
|
|
28
28
|
URI.join(@server,
|
29
29
|
"/clients/CLIENT_KEY/#{url_name}.scout".
|
30
30
|
gsub(/\bCLIENT_KEY\b/, @client_key).
|
31
|
-
gsub(/\b[A-Z_]+\b/) { |k| options[k.downcase.to_sym] || k }
|
31
|
+
gsub(/\b[A-Z_]+\b/) { |k| options[k.downcase.to_sym] || k },
|
32
|
+
"?roles=#{@roles}&host=#{Socket.gethostname}")
|
32
33
|
end
|
33
34
|
|
34
35
|
def post(url, error, body, headers = Hash.new, &response_handler)
|
data/lib/scout/version.rb
CHANGED
data/test/scout_test.rb
CHANGED
@@ -31,8 +31,8 @@ PATH_TO_TEST_PLUGIN = File.expand_path( File.dirname(__FILE__) ) + '/plugins/tem
|
|
31
31
|
|
32
32
|
class ScoutTest < Test::Unit::TestCase
|
33
33
|
def setup
|
34
|
-
load_fixtures :clients, :accounts, :plugins, :subscriptions, :plugin_metas
|
35
|
-
clear_tables :plugin_activities, :ar_descriptors, :summaries
|
34
|
+
load_fixtures :clients, :accounts, :plugins, :subscriptions, :plugin_metas, :roles, :plugin_definitions, :notification_groups
|
35
|
+
clear_tables :plugin_activities, :ar_descriptors, :summaries, :clients_roles
|
36
36
|
clear_working_dir
|
37
37
|
|
38
38
|
|
@@ -45,6 +45,12 @@ class ScoutTest < Test::Unit::TestCase
|
|
45
45
|
@plugin=@client.plugins.first
|
46
46
|
# avoid client limit issues
|
47
47
|
assert @client.account.subscription.update_attribute(:clients,100)
|
48
|
+
|
49
|
+
# roles-related
|
50
|
+
@roles_account = Account.find_by_name "beta"
|
51
|
+
@db_role=@roles_account.roles.find_by_name("db")
|
52
|
+
@app_role=@roles_account.roles.find_by_name("app")
|
53
|
+
@hostname = `hostname`.chomp
|
48
54
|
end
|
49
55
|
|
50
56
|
def test_should_checkin_during_interactive_install
|
@@ -503,6 +509,62 @@ mybar=100
|
|
503
509
|
assert_not_equal streams.first[:plugins][0][:fields][:v], streams.last[:plugins][0][:fields][:v]
|
504
510
|
end
|
505
511
|
|
512
|
+
|
513
|
+
# Roles related
|
514
|
+
|
515
|
+
def test_roles_enabled_account
|
516
|
+
scout(@roles_account.key)
|
517
|
+
client=@roles_account.clients.last
|
518
|
+
assert_equal @hostname, client.hostname
|
519
|
+
assert_equal 0, client.plugins.count, "the all servers role should have 0 plugins"
|
520
|
+
assert_equal 1, client.roles.count
|
521
|
+
assert_equal @roles_account.primary_role, client.roles.first
|
522
|
+
end
|
523
|
+
|
524
|
+
def test_specify_role
|
525
|
+
scout(@roles_account.key, "-rapp")
|
526
|
+
client=@roles_account.clients.last
|
527
|
+
assert_equal @hostname, client.hostname
|
528
|
+
assert_equal 2, client.plugins.count
|
529
|
+
assert_equal 2, client.roles.count
|
530
|
+
end
|
531
|
+
|
532
|
+
def test_change_roles_on_existing_server
|
533
|
+
# first checkin
|
534
|
+
exec_scout(@roles_account.key, "-rapp")
|
535
|
+
client=@roles_account.clients.last
|
536
|
+
assert_equal @hostname, client.hostname
|
537
|
+
assert_equal 2, client.roles.count
|
538
|
+
assert_equal 2, client.plugins.count
|
539
|
+
|
540
|
+
client.plugins.each do |plugin|
|
541
|
+
assert @app_role.plugin_definitions.include?(plugin.plugin_definition), "#{plugin} should be included in the app role"
|
542
|
+
end
|
543
|
+
|
544
|
+
# second checkin - add a role
|
545
|
+
exec_scout(@roles_account.key, "-rapp,db --force")
|
546
|
+
client=@roles_account.clients.last
|
547
|
+
assert_equal 3, client.roles.count
|
548
|
+
assert_equal 4, client.plugins.count
|
549
|
+
|
550
|
+
# 3rd checkin - remove a role
|
551
|
+
exec_scout(@roles_account.key, "-rdb --force")
|
552
|
+
client=@roles_account.clients.last
|
553
|
+
assert_equal 2, client.roles.count
|
554
|
+
assert_equal 2, client.plugins.count
|
555
|
+
|
556
|
+
client.plugins.each do |plugin|
|
557
|
+
assert @db_role.plugin_definitions.include?(plugin.plugin_definition), "#{plugin} should be included in the db role"
|
558
|
+
end
|
559
|
+
|
560
|
+
# 4th checking -- remove all roles
|
561
|
+
exec_scout(@roles_account.key, "--force")
|
562
|
+
client=@roles_account.clients.last
|
563
|
+
assert_equal 1, client.roles.count
|
564
|
+
assert_equal 0, client.plugins.count
|
565
|
+
|
566
|
+
end
|
567
|
+
|
506
568
|
######################
|
507
569
|
### Helper Methods ###
|
508
570
|
######################
|
metadata
CHANGED
@@ -1,44 +1,40 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.6.0.alpha.
|
5
|
-
prerelease: 6
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 5.6.0.alpha.4
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Andre Lewis
|
9
8
|
- Derek Haynes
|
10
9
|
- James Edward Gray II
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
|
14
|
+
date: 2012-11-14 00:00:00 -08:00
|
15
|
+
default_executable:
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
17
18
|
name: elif
|
18
|
-
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
|
-
requirements:
|
21
|
-
- - ! '>='
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: '0'
|
24
19
|
type: :runtime
|
25
|
-
|
26
|
-
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
description:
|
33
|
-
server monitoring service.
|
20
|
+
version_requirement:
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: "0"
|
26
|
+
version:
|
27
|
+
description: |
|
28
|
+
The scout gem reports metrics to scoutapp.com, an easy-to-use hosted server monitoring service.
|
34
29
|
|
35
|
-
'
|
36
30
|
email: support@scoutapp.com
|
37
|
-
executables:
|
31
|
+
executables:
|
38
32
|
- scout
|
39
33
|
extensions: []
|
34
|
+
|
40
35
|
extra_rdoc_files: []
|
41
|
-
|
36
|
+
|
37
|
+
files:
|
42
38
|
- .gitignore
|
43
39
|
- CHANGELOG.markdown
|
44
40
|
- Gemfile
|
@@ -223,32 +219,34 @@ files:
|
|
223
219
|
- vendor/signature/spec/signature_spec.rb
|
224
220
|
- vendor/signature/spec/spec_helper.rb
|
225
221
|
- vendor/util/lib/core_extensions.rb
|
222
|
+
has_rdoc: true
|
226
223
|
homepage: http://scoutapp.com
|
227
224
|
licenses: []
|
225
|
+
|
228
226
|
post_install_message:
|
229
227
|
rdoc_options: []
|
230
|
-
|
228
|
+
|
229
|
+
require_paths:
|
231
230
|
- lib
|
232
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
- !ruby/object:Gem::Version
|
231
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ">="
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: "0"
|
236
|
+
version:
|
237
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - ">"
|
240
|
+
- !ruby/object:Gem::Version
|
243
241
|
version: 1.3.1
|
242
|
+
version:
|
244
243
|
requirements: []
|
244
|
+
|
245
245
|
rubyforge_project: scout
|
246
|
-
rubygems_version: 1.
|
246
|
+
rubygems_version: 1.3.5
|
247
247
|
signing_key:
|
248
248
|
specification_version: 3
|
249
|
-
summary: Scout is an easy-to-use hosted server monitoring service. The scout Ruby
|
250
|
-
|
251
|
-
web interface, to monitor a server.
|
252
|
-
test_files:
|
249
|
+
summary: Scout is an easy-to-use hosted server monitoring service. The scout Ruby gem reports metrics to our service. The agent runs plugins, configured via the Scout web interface, to monitor a server.
|
250
|
+
test_files:
|
253
251
|
- test/plugins/disk_usage.rb
|
254
252
|
- test/scout_test.rb
|