rscalr 0.0.8 → 0.0.10
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/rscalr.rb +3 -0
- data/lib/rscalr/api/scalr.rb +5 -0
- data/lib/rscalr/model/dashboard.rb +30 -5
- data/lib/rscalr/model/environment.rb +3 -0
- data/lib/rscalr/model/farm.rb +37 -0
- data/lib/rscalr/model/log.rb +7 -0
- data/lib/rscalr/model/log_list.rb +16 -0
- data/lib/rscalr/version.rb +1 -1
- data/test/test_env_id.rb +20 -0
- data/test_integration/test_obj_environments.rb +24 -0
- data/test_integration/test_obj_logs.rb +30 -0
- metadata +12 -5
data/lib/rscalr.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
require 'rscalr/api/scalr'
|
2
2
|
require 'rscalr/model/dashboard'
|
3
|
+
require 'rscalr/model/environment'
|
3
4
|
require 'rscalr/model/farm'
|
4
5
|
require 'rscalr/model/farm_role'
|
6
|
+
require 'rscalr/model/log'
|
7
|
+
require 'rscalr/model/log_list'
|
5
8
|
require 'rscalr/model/role'
|
6
9
|
require 'rscalr/model/script'
|
7
10
|
require 'rscalr/model/server'
|
data/lib/rscalr/api/scalr.rb
CHANGED
@@ -357,5 +357,10 @@ class ScalrResponse < REXML::Document
|
|
357
357
|
root.elements['Message'].text
|
358
358
|
end
|
359
359
|
end
|
360
|
+
|
361
|
+
# Convenience method to output a repsonse to a stream in a human readable format
|
362
|
+
def pretty_print(dest=$stdout)
|
363
|
+
write(dest, 1)
|
364
|
+
end
|
360
365
|
end
|
361
366
|
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'rscalr/model/farm'
|
2
|
-
require 'rscalr/model/script'
|
3
|
-
|
4
1
|
class Dashboard
|
5
|
-
|
2
|
+
|
6
3
|
def initialize client
|
7
4
|
@client = client
|
5
|
+
@env_id = @client.env_id
|
8
6
|
end
|
9
7
|
|
10
8
|
def get_farm(name)
|
@@ -15,7 +13,7 @@ class Dashboard
|
|
15
13
|
end
|
16
14
|
|
17
15
|
def load_farms
|
18
|
-
@farms = {}
|
16
|
+
@farms = {}
|
19
17
|
|
20
18
|
scalr_response = @client.farms_list
|
21
19
|
scalr_response.root.each_element('FarmSet/Item') { |row|
|
@@ -66,4 +64,31 @@ class Dashboard
|
|
66
64
|
|
67
65
|
@scripts
|
68
66
|
end
|
67
|
+
|
68
|
+
def get_environment(name)
|
69
|
+
if @environments.nil?
|
70
|
+
load_environments
|
71
|
+
end
|
72
|
+
@environments[name]
|
73
|
+
end
|
74
|
+
|
75
|
+
def load_environments
|
76
|
+
@environments = {}
|
77
|
+
|
78
|
+
scalr_response = @client.environments_list
|
79
|
+
scalr_response.root.each_element('EnvironmentSet/Item') { |row|
|
80
|
+
environment = Environment.new
|
81
|
+
|
82
|
+
row.each_element { |prop|
|
83
|
+
if "ID" == prop.name
|
84
|
+
environment.id = prop.text
|
85
|
+
elsif "Name" == prop.name
|
86
|
+
environment.name = prop.text
|
87
|
+
end
|
88
|
+
}
|
89
|
+
@environments[environment.name] = environment
|
90
|
+
}
|
91
|
+
|
92
|
+
@environments
|
93
|
+
end
|
69
94
|
end
|
data/lib/rscalr/model/farm.rb
CHANGED
@@ -57,6 +57,43 @@ class Farm
|
|
57
57
|
@farm_roles
|
58
58
|
end
|
59
59
|
|
60
|
+
# Loads a Loglist of Log entries for the farm, given the specified parameters
|
61
|
+
def load_logs(server_id=nil, start=nil, limit=nil)
|
62
|
+
scalr_response = @client.logs_list(@id, server_id, start, limit)
|
63
|
+
loglist = LogList.new
|
64
|
+
|
65
|
+
scalr_response.root.each_element do |element|
|
66
|
+
if "TotalRecords" == element.name
|
67
|
+
loglist.total_records = element.text.to_i
|
68
|
+
elsif "StartFrom" == element.name
|
69
|
+
loglist.start = element.text.to_i
|
70
|
+
elsif "RecordsLimit" == element.name
|
71
|
+
loglist.limit = element.text.to_i
|
72
|
+
elsif "LogSet" == element.name
|
73
|
+
element.each_element do |item|
|
74
|
+
log = Log.new
|
75
|
+
|
76
|
+
item.each_element do |prop|
|
77
|
+
if "ServerID" == prop.name
|
78
|
+
log.server_id = prop.text
|
79
|
+
elsif "Message" == prop.name
|
80
|
+
log.message = prop.text
|
81
|
+
elsif "Severity" == prop.name
|
82
|
+
log.severity = prop.text.to_i
|
83
|
+
elsif "Timestamp" == prop.name
|
84
|
+
log.timestamp = prop.text.to_i
|
85
|
+
elsif "Source" == prop.name
|
86
|
+
server.source = prop.text
|
87
|
+
end
|
88
|
+
end
|
89
|
+
loglist << log
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
loglist
|
95
|
+
end
|
96
|
+
|
60
97
|
def to_s
|
61
98
|
"{ type: \"farm\", id: #{@id}, name: \"#{@name}\", status: #{@status} }"
|
62
99
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class LogList
|
2
|
+
attr_accessor :total_records, :start, :limit
|
3
|
+
attr_reader :logs
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@logs = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def <<(log)
|
10
|
+
@logs << log if log.is_a? Log
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_s
|
14
|
+
"{ type: \"loglist\", total_records: #{@total_records}, start: \"#{@message}\", limit: #{@severity}, logs: [ #{@logs.each do |log| log.to_s + ',' end} ] }"
|
15
|
+
end
|
16
|
+
end
|
data/lib/rscalr/version.rb
CHANGED
data/test/test_env_id.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rscalr'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestSig < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_set_and_get_env
|
7
|
+
scalr = Scalr.new({ :key_id => '123', :key_secret => '123abc' })
|
8
|
+
|
9
|
+
assert_equal(nil, scalr.env_id, "env_id should default to nil if not specified")
|
10
|
+
|
11
|
+
scalr = Scalr.new({ :key_id => '123', :key_secret => '123abc', :env_id => 456 })
|
12
|
+
|
13
|
+
assert_equal(456, scalr.env_id, "env_id not set correctly from config in ctor")
|
14
|
+
|
15
|
+
scalr.env_id = 789
|
16
|
+
|
17
|
+
assert_equal(789, scalr.env_id, "env_id not set correctly from setter")
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rscalr'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestObjEnvironments < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@scalr = Scalr.new({
|
8
|
+
:key_id => ENV['SCALR_TEST_API_KEY'],
|
9
|
+
:key_secret => ENV['SCALR_TEST_API_SECRET'],
|
10
|
+
:env_id => ENV['SCALR_TEST_ENV_ID']
|
11
|
+
})
|
12
|
+
|
13
|
+
@dashboard = Dashboard.new @scalr
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_list_launch_details_terminate
|
17
|
+
environment = @dashboard.get_environment(ENV['SCALR_TEST_ENV_NAME'])
|
18
|
+
|
19
|
+
assert_not_nil(environment, "Test environment not found by name")
|
20
|
+
assert_equal(ENV['SCALR_TEST_ENV_ID'], environment.id)
|
21
|
+
assert_equal(ENV['SCALR_TEST_ENV_NAME'], environment.name)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rscalr'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestObjLogs < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@scalr = Scalr.new({
|
8
|
+
:key_id => ENV['SCALR_TEST_API_KEY'],
|
9
|
+
:key_secret => ENV['SCALR_TEST_API_SECRET'],
|
10
|
+
:env_id => ENV['SCALR_TEST_ENV_ID']
|
11
|
+
})
|
12
|
+
|
13
|
+
@dashboard = Dashboard.new @scalr
|
14
|
+
|
15
|
+
@farm_test1_name = 'test1'
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_list_launch_details_terminate
|
19
|
+
farm = @dashboard.get_farm(@farm_test1_name)
|
20
|
+
|
21
|
+
assert_not_nil(farm, "Test farm not found by name")
|
22
|
+
|
23
|
+
loglist = farm.load_logs
|
24
|
+
|
25
|
+
assert_not_nil(loglist, "Log list could not be loaded")
|
26
|
+
assert_equal(0, loglist.total_records, "Test farm 1 should not have any logs associated with it")
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rscalr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
13
|
-
default_executable:
|
12
|
+
date: 2013-02-15 00:00:00.000000000 Z
|
14
13
|
dependencies: []
|
15
14
|
description: Rscalr is a Ruby implementation of the Scalr API, written to interface
|
16
15
|
cleanly with Chef and other internal release management tasks.
|
@@ -25,16 +24,21 @@ files:
|
|
25
24
|
- lib/rscalr.rb
|
26
25
|
- lib/rscalr/api/scalr.rb
|
27
26
|
- lib/rscalr/model/dashboard.rb
|
27
|
+
- lib/rscalr/model/environment.rb
|
28
28
|
- lib/rscalr/model/farm.rb
|
29
29
|
- lib/rscalr/model/farm_role.rb
|
30
|
+
- lib/rscalr/model/log.rb
|
31
|
+
- lib/rscalr/model/log_list.rb
|
30
32
|
- lib/rscalr/model/role.rb
|
31
33
|
- lib/rscalr/model/script.rb
|
32
34
|
- lib/rscalr/model/server.rb
|
33
35
|
- lib/rscalr/version.rb
|
34
36
|
- rscalr.gemspec
|
37
|
+
- test/test_env_id.rb
|
35
38
|
- test/test_sig.rb
|
36
39
|
- test_integration/test_client_farms.rb
|
37
|
-
|
40
|
+
- test_integration/test_obj_environments.rb
|
41
|
+
- test_integration/test_obj_logs.rb
|
38
42
|
homepage:
|
39
43
|
licenses: []
|
40
44
|
post_install_message:
|
@@ -55,10 +59,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
55
59
|
version: '0'
|
56
60
|
requirements: []
|
57
61
|
rubyforge_project:
|
58
|
-
rubygems_version: 1.
|
62
|
+
rubygems_version: 1.8.25
|
59
63
|
signing_key:
|
60
64
|
specification_version: 3
|
61
65
|
summary: Ruby implementation of the Scalr API
|
62
66
|
test_files:
|
67
|
+
- test/test_env_id.rb
|
63
68
|
- test/test_sig.rb
|
64
69
|
- test_integration/test_client_farms.rb
|
70
|
+
- test_integration/test_obj_environments.rb
|
71
|
+
- test_integration/test_obj_logs.rb
|