rscalr 0.0.15 → 0.0.16
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.
- checksums.yaml +7 -0
- data/README.md +1 -0
- data/Rakefile +8 -0
- data/lib/rscalr/api/scalr.rb +22 -3
- data/lib/rscalr/model/dashboard.rb +31 -0
- data/lib/rscalr/version.rb +1 -1
- data/{test_integration → test}/test_client_farms.rb +0 -0
- data/{test_integration → test}/test_obj_environments.rb +0 -0
- data/{test_integration → test}/test_obj_logs.rb +0 -0
- data/test/test_obj_roles.rb +22 -0
- data/test/test_url.rb +20 -0
- metadata +35 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c1d09e3277034b6fff104dd498bc8c7280fa4f4a
|
4
|
+
data.tar.gz: f037ab7e67e26247eebcb2885efe0db9aca164e5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c628603cf19d159730791913700b7ee5a1fcdd2024f69eaf11ca8fa10c4183950b2a79debd2d0abc83ea9d7b41e6fcb3d5c6278c9b4904d201723374117e4033
|
7
|
+
data.tar.gz: 899109fde0145cc322eba14e37604ab7fb472958d8f6465eb43666f10281b13b75df46ea8a1c9a0d8d8dd417e5fd562cfea0168b819717e310dfe74da29c8ee2
|
data/README.md
CHANGED
@@ -50,6 +50,7 @@ If you use this tool a lot from the command line, you can set environment variab
|
|
50
50
|
```bash
|
51
51
|
export SCALR_API_KEY=your-api-key
|
52
52
|
export SCALR_API_SECRET=your-api-secret
|
53
|
+
export SCALR_URL=scalr-api-url, optional, default=https://api.scalr.net
|
53
54
|
export SCALR_ENV_ID=id-of-desired-environment # optional
|
54
55
|
export SCALR_CLIENT_VERBOSE=true # Print API calls/responses to stdout, optional, default=false
|
55
56
|
```
|
data/Rakefile
ADDED
data/lib/rscalr/api/scalr.rb
CHANGED
@@ -12,9 +12,10 @@ require 'rexml/document'
|
|
12
12
|
class Scalr
|
13
13
|
attr_accessor :config
|
14
14
|
|
15
|
-
# Default
|
15
|
+
# Default values
|
16
16
|
$DEFAULT_VERSION = '2.3.0'
|
17
17
|
$DEFAULT_AUTH_VERSION = '3'
|
18
|
+
$DEFAULT_URL = 'https://api.scalr.net'
|
18
19
|
|
19
20
|
def initialize(config=nil)
|
20
21
|
if (config.nil?)
|
@@ -25,6 +26,7 @@ class Scalr
|
|
25
26
|
|
26
27
|
@config[:version] = $DEFAULT_VERSION if @config[:version].nil?
|
27
28
|
@config[:auth_version] = $DEFAULT_AUTH_VERSION if @config[:auth_version].nil?
|
29
|
+
@config[:url] = $DEFAULT_URL if @config[:url].nil?
|
28
30
|
end
|
29
31
|
|
30
32
|
#=================== API Section ===================================
|
@@ -263,6 +265,7 @@ class Scalr
|
|
263
265
|
config = {}
|
264
266
|
config[:key_id] = ENV['SCALR_API_KEY'] unless ENV['SCALR_API_KEY'].nil?
|
265
267
|
config[:key_secret] = ENV['SCALR_API_SECRET'] unless ENV['SCALR_API_SECRET'].nil?
|
268
|
+
config[:url] = ENV['SCALR_URL'] unless ENV['SCALR_URL'].nil?
|
266
269
|
config[:env_id] = ENV['SCALR_ENV_ID'] unless ENV['SCALR_ENV_ID'].nil?
|
267
270
|
config[:version] = ENV['SCALR_API_VERSION'] unless ENV['SCALR_API_VERSION'].nil?
|
268
271
|
config[:auth_version] = ENV['SCALR_API_AUTH_VERSION'] unless ENV['SCALR_API_AUTH_VERSION'].nil?
|
@@ -294,8 +297,8 @@ class Scalr
|
|
294
297
|
params[:AuthVersion] = @config[:auth_version]
|
295
298
|
params[:KeyID] = @config[:key_id]
|
296
299
|
params[:EnvID] = @config[:env_id] unless @config[:env_id].nil?
|
297
|
-
|
298
|
-
uri = URI("
|
300
|
+
|
301
|
+
uri = URI(url + "?" + hash_to_querystring(params))
|
299
302
|
$stdout.puts(uri) if @config[:verbose]
|
300
303
|
|
301
304
|
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
|
@@ -350,6 +353,22 @@ class Scalr
|
|
350
353
|
@config[:env_id]
|
351
354
|
end
|
352
355
|
|
356
|
+
# Changes the configured API endpoint for this instance
|
357
|
+
def url= url
|
358
|
+
@config[:url] = url
|
359
|
+
end
|
360
|
+
|
361
|
+
# Get the current environment value. A nil response means the "first" environment will be assumed for API calls,
|
362
|
+
# per the Scalr API docs.
|
363
|
+
def url
|
364
|
+
@config[:url]
|
365
|
+
end
|
366
|
+
|
367
|
+
def verbose= setting
|
368
|
+
if !!setting == setting
|
369
|
+
@config[:verbose] = !!setting
|
370
|
+
end
|
371
|
+
end
|
353
372
|
end
|
354
373
|
|
355
374
|
# Represents a response from an API call. Thin wrapper around an REXML::Document of the parsed repsonse.
|
@@ -110,6 +110,33 @@ class Dashboard
|
|
110
110
|
@environments
|
111
111
|
end
|
112
112
|
|
113
|
+
def get_role(name)
|
114
|
+
if @roles.nil?
|
115
|
+
load_roles
|
116
|
+
end
|
117
|
+
@roles[name]
|
118
|
+
end
|
119
|
+
|
120
|
+
def load_roles
|
121
|
+
@roles = {}
|
122
|
+
|
123
|
+
scalr_response = @client.roles_list
|
124
|
+
scalr_response.root.each_element('RoleSet/Item') { |row|
|
125
|
+
role = Role.new
|
126
|
+
|
127
|
+
row.each_element { |prop|
|
128
|
+
if "ID" == prop.name
|
129
|
+
role.id = prop.text
|
130
|
+
elsif "Name" == prop.name
|
131
|
+
role.name = prop.text
|
132
|
+
end
|
133
|
+
}
|
134
|
+
@roles[role.name] = role
|
135
|
+
}
|
136
|
+
|
137
|
+
@roles
|
138
|
+
end
|
139
|
+
|
113
140
|
# Blocks up to timeout seconds waiting on log response(s) of script execution. Returns true iff
|
114
141
|
# script executed successfully (returned) exit_value on all servers.
|
115
142
|
def verify_script_success(script_execution, exit_value=0, timeout_sec=60)
|
@@ -162,4 +189,8 @@ class Dashboard
|
|
162
189
|
|
163
190
|
success
|
164
191
|
end
|
192
|
+
|
193
|
+
def verbose= setting
|
194
|
+
@client.verbose = setting
|
195
|
+
end
|
165
196
|
end
|
data/lib/rscalr/version.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rscalr'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestObjRoles < 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_get_role_by_name
|
17
|
+
role = @dashboard.get_role(ENV['SCALR_TEST_ROLE_NAME'])
|
18
|
+
|
19
|
+
assert_not_nil(role, "Test role not found by name")
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/test/test_url.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rscalr'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
class TestUrl < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_set_and_get_url
|
7
|
+
scalr = Scalr.new({ :key_id => '123', :key_secret => '123abc' })
|
8
|
+
|
9
|
+
assert_equal('https://api.scalr.net', scalr.url, "url should default to api.scalr.net if not specified")
|
10
|
+
|
11
|
+
scalr = Scalr.new({ :key_id => '123', :key_secret => '123abc', :url => 'https://scalr.example.com/api/api.php' })
|
12
|
+
|
13
|
+
assert_equal('https://scalr.example.com/api/api.php', scalr.url, "url not set correctly from config in ctor")
|
14
|
+
|
15
|
+
scalr.url = 'http://api.scalr.example.net'
|
16
|
+
|
17
|
+
assert_equal('http://api.scalr.example.net', scalr.url, "url not set correctly from setter")
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
metadata
CHANGED
@@ -1,30 +1,26 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rscalr
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.0.15
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.16
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Nathan Smith
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2013-03-14 00:00:00 Z
|
11
|
+
date: 2014-02-09 00:00:00.000000000 Z
|
14
12
|
dependencies: []
|
15
|
-
|
16
|
-
|
17
|
-
email:
|
13
|
+
description: Rscalr is a Ruby implementation of the Scalr API, written to interface
|
14
|
+
cleanly with Chef and other internal release management tasks.
|
15
|
+
email:
|
18
16
|
- nate@branchout.com
|
19
17
|
executables: []
|
20
|
-
|
21
18
|
extensions: []
|
22
|
-
|
23
19
|
extra_rdoc_files: []
|
24
|
-
|
25
|
-
files:
|
20
|
+
files:
|
26
21
|
- .gitignore
|
27
22
|
- README.md
|
23
|
+
- Rakefile
|
28
24
|
- lib/rscalr.rb
|
29
25
|
- lib/rscalr/api/scalr.rb
|
30
26
|
- lib/rscalr/model/dashboard.rb
|
@@ -41,41 +37,41 @@ files:
|
|
41
37
|
- lib/rscalr/model/server_log.rb
|
42
38
|
- lib/rscalr/version.rb
|
43
39
|
- rscalr.gemspec
|
40
|
+
- test/test_client_farms.rb
|
44
41
|
- test/test_env_id.rb
|
42
|
+
- test/test_obj_environments.rb
|
43
|
+
- test/test_obj_logs.rb
|
44
|
+
- test/test_obj_roles.rb
|
45
45
|
- test/test_sig.rb
|
46
|
-
-
|
47
|
-
- test_integration/test_obj_environments.rb
|
48
|
-
- test_integration/test_obj_logs.rb
|
46
|
+
- test/test_url.rb
|
49
47
|
homepage:
|
50
48
|
licenses: []
|
51
|
-
|
49
|
+
metadata: {}
|
52
50
|
post_install_message:
|
53
51
|
rdoc_options: []
|
54
|
-
|
55
|
-
require_paths:
|
52
|
+
require_paths:
|
56
53
|
- lib
|
57
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: "0"
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - '>='
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
69
64
|
requirements: []
|
70
|
-
|
71
65
|
rubyforge_project:
|
72
|
-
rubygems_version:
|
66
|
+
rubygems_version: 2.0.5
|
73
67
|
signing_key:
|
74
|
-
specification_version:
|
68
|
+
specification_version: 4
|
75
69
|
summary: Ruby implementation of the Scalr API
|
76
|
-
test_files:
|
70
|
+
test_files:
|
71
|
+
- test/test_client_farms.rb
|
77
72
|
- test/test_env_id.rb
|
73
|
+
- test/test_obj_environments.rb
|
74
|
+
- test/test_obj_logs.rb
|
75
|
+
- test/test_obj_roles.rb
|
78
76
|
- test/test_sig.rb
|
79
|
-
-
|
80
|
-
- test_integration/test_obj_environments.rb
|
81
|
-
- test_integration/test_obj_logs.rb
|
77
|
+
- test/test_url.rb
|