stacker_bee 2.1.0.pre180 → 2.1.0.pre181
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 +8 -8
- data/lib/stacker_bee/connection.rb +9 -6
- data/lib/stacker_bee/middleware/clean_response.rb +5 -6
- data/lib/stacker_bee/middleware/dictionary_flattener.rb +3 -2
- data/lib/stacker_bee/middleware/endpoint_normalizer.rb +1 -3
- data/spec/integration/console_spec.rb +1 -1
- data/spec/integration/request_spec.rb +1 -1
- data/spec/units/stacker_bee/client_spec.rb +6 -7
- data/spec/units/stacker_bee/middleware/adapter_spec.rb +2 -2
- data/spec/units/stacker_bee/middleware/base_spec.rb +1 -1
- data/spec/units/stacker_bee/middleware/cloudstack_api_spec.rb +0 -1
- data/spec/units/stacker_bee/middleware/console_access_spec.rb +2 -3
- data/spec/units/stacker_bee/middleware/format_values_spec.rb +1 -1
- metadata +1 -3
- data/spec/integration/check_spec.rb +0 -48
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDBlNGIwYTAxNmY5Yjk5ZDVkZGZhNmQzMzc3NTlhMWZhN2Y2MDViMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTc3ZDY2NmRkNGJhMWJlMmUyOTJjMGEwOWYwOGMwMzMzNjAzN2RmMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODQwYTg0ODAxNzBiZDFkODQyMzVhMjU1YTcyY2YwOGI0OGNjZTFlOGFlOTRj
|
10
|
+
MjQxN2M2N2U2ZDY4YmVhMDgxZWY1YmI4OTc4MWJlYWMyYjI4N2UxZjRlZGEw
|
11
|
+
MmIwMzlmOGJkMTE1ZWQ2Nzc1YmZmYTQzNGQzMzQ1OGMyMDg1ZGM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDM2NTkxMWY4NDg0ZDQ0MzczYjBkYWMwZmYzODE5MDNjZTRkNTViMmM3MDQz
|
14
|
+
NTFjNzA5NzdiZjNjZmVlZmY2ZDQ4NGVmYTRkNWZjOTIwZjU2NTQwYjg1ZjNi
|
15
|
+
MzVkYjU1OTQ4ZGYwMWIyNzUxNThlNTVmMjZjNDdkZGJmNTRmYjg=
|
@@ -17,8 +17,11 @@ module StackerBee
|
|
17
17
|
uri.path = ''
|
18
18
|
fail ConnectionError, "no protocol specified" unless uri.scheme
|
19
19
|
|
20
|
-
ssl_verify = !configuration.ssl_verify.nil?
|
21
|
-
|
20
|
+
ssl_verify = if !configuration.ssl_verify.nil?
|
21
|
+
configuration.ssl_verify
|
22
|
+
else
|
23
|
+
true
|
24
|
+
end
|
22
25
|
|
23
26
|
initialize_faraday(url: uri.to_s,
|
24
27
|
ssl: { verify: ssl_verify })
|
@@ -31,14 +34,14 @@ module StackerBee
|
|
31
34
|
|
32
35
|
configuration.faraday_middlewares.call faraday
|
33
36
|
|
34
|
-
unless
|
37
|
+
unless using_adapter?(faraday.builder.handlers)
|
35
38
|
faraday.adapter Faraday.default_adapter # Net::HTTP
|
36
39
|
end
|
37
40
|
end
|
38
41
|
end
|
39
42
|
|
40
|
-
def
|
41
|
-
handlers.
|
43
|
+
def using_adapter?(handlers)
|
44
|
+
handlers.find do |handler|
|
42
45
|
handler.klass.ancestors.include?(Faraday::Adapter)
|
43
46
|
end
|
44
47
|
end
|
@@ -47,7 +50,7 @@ module StackerBee
|
|
47
50
|
@faraday.get(path, params)
|
48
51
|
rescue Faraday::Error::ConnectionFailed => error
|
49
52
|
raise ConnectionError,
|
50
|
-
|
53
|
+
"Failed to connect to #{configuration.url}, #{error}"
|
51
54
|
end
|
52
55
|
end
|
53
56
|
end
|
@@ -4,20 +4,20 @@ module StackerBee
|
|
4
4
|
def after(env)
|
5
5
|
body = env.response.body
|
6
6
|
|
7
|
-
return
|
7
|
+
return unless hash?(body)
|
8
8
|
|
9
|
-
if
|
10
|
-
env.response.body =remove_count(body)
|
9
|
+
if contains_count?(body)
|
10
|
+
env.response.body = remove_count(body)
|
11
11
|
elsif single_hash?(body)
|
12
12
|
env.response.body = first_hash(body)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
16
|
+
def hash?(body)
|
17
17
|
body.respond_to?(:keys)
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
20
|
+
def contains_count?(body)
|
21
21
|
body.size == 2 && body.key?("count")
|
22
22
|
end
|
23
23
|
|
@@ -39,4 +39,3 @@ module StackerBee
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
@@ -27,7 +27,9 @@ module StackerBee
|
|
27
27
|
hashes.each do |hash_name, hash|
|
28
28
|
remove_empties(hash).each_with_index do |(key, value), index|
|
29
29
|
hash_url_key = self.class.tokenize("#{hash_name}[#{index}]")
|
30
|
-
|
30
|
+
|
31
|
+
params["#{hash_url_key}.key"] = key
|
32
|
+
params["#{hash_url_key}.name"] = key
|
31
33
|
params["#{hash_url_key}.value"] = value
|
32
34
|
end
|
33
35
|
params.delete hash_name
|
@@ -39,6 +41,5 @@ module StackerBee
|
|
39
41
|
hash.reject { |_, v| v.nil? || v == "" }
|
40
42
|
end
|
41
43
|
end
|
42
|
-
|
43
44
|
end
|
44
45
|
end
|
@@ -3,9 +3,7 @@ module StackerBee
|
|
3
3
|
class EndpointNormalizer < Base
|
4
4
|
def before(env)
|
5
5
|
new_endpoint_name = endpoint_name_for(env.request.endpoint_name)
|
6
|
-
if new_endpoint_name
|
7
|
-
env.request.endpoint_name = new_endpoint_name
|
8
|
-
end
|
6
|
+
env.request.endpoint_name = new_endpoint_name if new_endpoint_name
|
9
7
|
end
|
10
8
|
|
11
9
|
def endpoint_name_for(name)
|
@@ -16,6 +16,6 @@ describe "A request sent to CloudStack for console access", :vcr do
|
|
16
16
|
subject(:console_access) { client.console_access(vm: vm) }
|
17
17
|
|
18
18
|
it "returns html for console access" do
|
19
|
-
expect(console_access).to match
|
19
|
+
expect(console_access).to match(/<html>.*<frame src=.*<\/html>/)
|
20
20
|
end
|
21
21
|
end
|
@@ -16,11 +16,11 @@ describe StackerBee::Client, "calling endpoint" do
|
|
16
16
|
let(:client) do
|
17
17
|
StackerBee::Client.new(
|
18
18
|
url: "http://example.com",
|
19
|
-
middlewares:
|
19
|
+
middlewares: lambda do |builder|
|
20
20
|
builder.before middleware_class,
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
expected_endpoint_name: endpoint_name,
|
22
|
+
expected_params: params,
|
23
|
+
response_body: response_body
|
24
24
|
end
|
25
25
|
)
|
26
26
|
end
|
@@ -28,8 +28,8 @@ describe StackerBee::Client, "calling endpoint" do
|
|
28
28
|
let(:middleware_class) do
|
29
29
|
Class.new StackerBee::Middleware::Base do
|
30
30
|
def call(env)
|
31
|
-
|
32
|
-
|
31
|
+
fail unless env.request.endpoint_name == expected_endpoint_name
|
32
|
+
fail unless env.request.params == expected_params
|
33
33
|
|
34
34
|
env.response.body = response_body
|
35
35
|
end
|
@@ -60,7 +60,6 @@ describe StackerBee::Client, "calling endpoint" do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
|
64
63
|
describe StackerBee::Client, "configuration" do
|
65
64
|
let(:default_url) { "default_cloud-stack.com" }
|
66
65
|
let(:default_api_key) { "default-cloud-stack-api-key" }
|
@@ -17,7 +17,7 @@ describe StackerBee::Middleware::Adapter do
|
|
17
17
|
let(:middleware) { described_class.new(app: app, connection: connection) }
|
18
18
|
|
19
19
|
let(:raw_response) do
|
20
|
-
double(env: { response_headers: response_headers}, body: response_body)
|
20
|
+
double(env: { response_headers: response_headers }, body: response_body)
|
21
21
|
end
|
22
22
|
let(:response_headers) { { "content-type" => content_type } }
|
23
23
|
let(:content_type) { "text/javascript; charset=UTF-8" }
|
@@ -43,7 +43,7 @@ describe StackerBee::Middleware::Adapter do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it "sorts the paramers" do
|
46
|
-
connection.should have_received(:get).with([
|
46
|
+
connection.should have_received(:get).with([%w(a a), %w(z z)], path)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
@@ -11,7 +11,7 @@ describe StackerBee::Middleware::Base do
|
|
11
11
|
let(:middleware) { subclass.new(app: app) }
|
12
12
|
|
13
13
|
let(:subclass) { Class.new(StackerBee::Middleware::Base, &subclass_body) }
|
14
|
-
let(:subclass_body) { proc {
|
14
|
+
let(:subclass_body) { proc {} }
|
15
15
|
|
16
16
|
describe "#call" do
|
17
17
|
before do
|
@@ -42,9 +42,8 @@ describe StackerBee::Middleware::ConsoleAccess do
|
|
42
42
|
describe "#endpoint_name_for" do
|
43
43
|
context "given names it reponds to" do
|
44
44
|
%w[consoleAccess console_access CONSOLEACCESS].each do |name|
|
45
|
-
|
46
|
-
|
47
|
-
end
|
45
|
+
subject { middleware.endpoint_name_for(name) }
|
46
|
+
it { should eq described_class::ENDPOINT }
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stacker_bee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.0.
|
4
|
+
version: 2.1.0.pre181
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Sterndale
|
@@ -226,7 +226,6 @@ files:
|
|
226
226
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/space_character_in_a_request_parameter/properly_signs_the_request.yml
|
227
227
|
- spec/fixtures/4.2.json
|
228
228
|
- spec/fixtures/simple.json
|
229
|
-
- spec/integration/check_spec.rb
|
230
229
|
- spec/integration/configure_middleware_spec.rb
|
231
230
|
- spec/integration/console_spec.rb
|
232
231
|
- spec/integration/request_spec.rb
|
@@ -300,7 +299,6 @@ test_files:
|
|
300
299
|
- spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/space_character_in_a_request_parameter/properly_signs_the_request.yml
|
301
300
|
- spec/fixtures/4.2.json
|
302
301
|
- spec/fixtures/simple.json
|
303
|
-
- spec/integration/check_spec.rb
|
304
302
|
- spec/integration/configure_middleware_spec.rb
|
305
303
|
- spec/integration/console_spec.rb
|
306
304
|
- spec/integration/request_spec.rb
|
@@ -1,48 +0,0 @@
|
|
1
|
-
if false
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe "Client initialization configures the middleware" do
|
5
|
-
context "pass a new middleware to the client" do
|
6
|
-
subject { StackerBee::Client.new(config_hash) }
|
7
|
-
|
8
|
-
let(:url) { CONFIG["url"] }
|
9
|
-
let(:config_hash) do
|
10
|
-
{
|
11
|
-
url: url,
|
12
|
-
api_key: api_key,
|
13
|
-
secret_key: secret_key,
|
14
|
-
apis_path: File.join(File.dirname(__FILE__), '../fixtures/4.2.json'),
|
15
|
-
faraday_middlewares: ->(faraday) { faraday.use middleware_class }
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
|
-
let(:middleware_class) do
|
20
|
-
Class.new(Faraday::Middleware) do
|
21
|
-
def call(env)
|
22
|
-
$query = env[:url].query
|
23
|
-
fail "MiddlewareUsed"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
before do
|
29
|
-
$query = nil
|
30
|
-
end
|
31
|
-
|
32
|
-
data = JSON.parse(File.read("/Users/mike/Desktop/stuff.json"))
|
33
|
-
data.each do |request|
|
34
|
-
context "something" do
|
35
|
-
let(:api_key) { request["config"]["api_key"] }
|
36
|
-
let(:secret_key) { request["config"]["secret_key"] }
|
37
|
-
it do
|
38
|
-
expect {
|
39
|
-
subject.request(*request["input"])
|
40
|
-
}.to raise_exception "MiddlewareUsed"
|
41
|
-
|
42
|
-
$query.should == request["query"]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|