misty 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/misty/auth.rb +3 -2
- data/lib/misty/cloud.rb +6 -2
- data/lib/misty/http/client.rb +1 -1
- data/lib/misty/http/net_http.rb +3 -3
- data/lib/misty/version.rb +1 -1
- data/test/unit/auth_test.rb +10 -10
- data/test/unit/cloud_test.rb +3 -1
- data/test/unit/http/client_test.rb +3 -2
- data/test/unit/openstack/microversion_test.rb +8 -1
- data/test/unit/service_helper.rb +8 -1
- metadata +14 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0108d5bb9451b9500d689c21f6cf43b4ae90186c'
|
4
|
+
data.tar.gz: a6d0744f4806007d55044ad7fe3f96e4be645ec0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b73c8d875c03a7495c5e84be31ca00e9b6b13667d0a576334e710f76a6586ec47a7400022ef29f6e896cea866793ac2d41f174cbfb9b81b6b016137875957335
|
7
|
+
data.tar.gz: 8df0ce513d52b08551537a0fe6dc702ce1d6f7e9f06ac43082c1f14a7c27d33952d136273592a8eb8ba6a936077c9eca8450bc49a897ef3dfcc85caae4d5a943
|
data/README.md
CHANGED
@@ -212,6 +212,10 @@ The following options are applied to each service unless specifically provided f
|
|
212
212
|
Type: String
|
213
213
|
Allowed values: "public", "internal", "admin"
|
214
214
|
Default: "public"
|
215
|
+
* :http_proxy
|
216
|
+
For example: `"http://userid:password@somewhere.com:8080/"` or `ENV["http_proxy"]`
|
217
|
+
Type: String
|
218
|
+
Default: `""`
|
215
219
|
* :ssl_verify_mode
|
216
220
|
When using SSL mode (defined by URI scheme => "https://")
|
217
221
|
Type: Boolean
|
data/lib/misty/auth.rb
CHANGED
@@ -24,19 +24,20 @@ module Misty
|
|
24
24
|
|
25
25
|
attr_reader :catalog
|
26
26
|
|
27
|
-
def initialize(options, ssl_verify_mode, log)
|
27
|
+
def initialize(options, proxy, ssl_verify_mode, log)
|
28
28
|
@ssl_verify_mode, @log = ssl_verify_mode, log
|
29
29
|
@credentials = scoped_authentication
|
30
30
|
|
31
31
|
raise URLError, "No URL provided" unless options[:url] && !options[:url].empty?
|
32
32
|
@uri = URI.parse(options[:url])
|
33
|
+
@proxy = proxy
|
33
34
|
@token = nil
|
34
35
|
setup(authenticate)
|
35
36
|
raise CatalogError, "No catalog provided during authentication" if @catalog.empty?
|
36
37
|
end
|
37
38
|
|
38
39
|
def authenticate
|
39
|
-
http = net_http(@uri, @ssl_verify_mode, @log)
|
40
|
+
http = net_http(@uri, @proxy, @ssl_verify_mode, @log)
|
40
41
|
response = http.post(self.class.path, @credentials.to_json, Misty::HEADER_JSON)
|
41
42
|
raise AuthenticationError, "Response code=#{response.code}, Msg=#{response.msg}" unless response.code =~ /200|201/
|
42
43
|
response
|
data/lib/misty/cloud.rb
CHANGED
@@ -3,7 +3,9 @@ require 'misty/auth/auth_v3'
|
|
3
3
|
|
4
4
|
module Misty
|
5
5
|
class Cloud
|
6
|
-
Setup
|
6
|
+
class Setup
|
7
|
+
attr_accessor :auth, :content_type, :log, :interface, :proxy, :region_id, :ssl_verify_mode
|
8
|
+
end
|
7
9
|
|
8
10
|
Options = Struct.new(:alarming, :baremetal, :block_storage, :clustering, :compute, :container, :data_processing,
|
9
11
|
:database, :data_protection, :dns, :identity, :image, :messaging, :metering, :network, :object_storage,
|
@@ -25,7 +27,9 @@ module Misty
|
|
25
27
|
setup.log.level = params[:log_level] ? params[:log_level] : Misty::LOG_LEVEL
|
26
28
|
setup.region_id = params[:region_id] ? params[:region_id] : Misty::REGION_ID
|
27
29
|
setup.ssl_verify_mode = params.key?(:ssl_verify_mode) ? params[:ssl_verify_mode] : Misty::SSL_VERIFY_MODE
|
28
|
-
|
30
|
+
http_proxy = params[:http_proxy] ? params[:http_proxy] : ""
|
31
|
+
setup.proxy = URI.parse(http_proxy)
|
32
|
+
setup.auth = Misty::Auth.factory(params[:auth], setup.proxy, setup.ssl_verify_mode, setup.log)
|
29
33
|
setup
|
30
34
|
end
|
31
35
|
|
data/lib/misty/http/client.rb
CHANGED
@@ -51,7 +51,7 @@ module Misty
|
|
51
51
|
@uri = URI.parse(@setup.auth.get_endpoint(@options.service_names, @options.region_id, @options.interface))
|
52
52
|
@base_path = @options.base_path ? @options.base_path : @uri.path
|
53
53
|
@base_path = @base_path.chomp("/")
|
54
|
-
@http = net_http(@uri, @options[:ssl_verify_mode], @setup.log)
|
54
|
+
@http = net_http(@uri, @setup.proxy, @options[:ssl_verify_mode], @setup.log)
|
55
55
|
@version = nil
|
56
56
|
@microversion = false
|
57
57
|
end
|
data/lib/misty/http/net_http.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Misty
|
2
2
|
module HTTP
|
3
3
|
module NetHTTP
|
4
|
-
def net_http(
|
5
|
-
http = Net::HTTP.new(
|
4
|
+
def net_http(endpoint, proxy, ssl_verify_mode, log)
|
5
|
+
http = Net::HTTP.new(endpoint.host, endpoint.port, proxy.host, proxy.port, proxy.user, proxy.password)
|
6
6
|
http.set_debug_output(log) if log.level == Logger::DEBUG
|
7
|
-
if
|
7
|
+
if endpoint.scheme == "https"
|
8
8
|
http.use_ssl = true
|
9
9
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless ssl_verify_mode
|
10
10
|
end
|
data/lib/misty/version.rb
CHANGED
data/test/unit/auth_test.rb
CHANGED
@@ -19,7 +19,7 @@ describe Misty::Auth do
|
|
19
19
|
:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json'}).
|
20
20
|
to_return(:status => 200, :body => JSON.dump(auth_response_v3("identity", "keystone")), :headers => {"x-subject-token"=>"token_data"})
|
21
21
|
|
22
|
-
Misty::AuthV3.new(auth, false, log)
|
22
|
+
Misty::AuthV3.new(auth, URI.parse(""), false, log)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "authenticates using domain scoped authorization" do
|
@@ -34,7 +34,7 @@ describe Misty::Auth do
|
|
34
34
|
:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json'}).
|
35
35
|
to_return(:status => 200, :body => JSON.dump(auth_response_v3("identity", "keystone")), :headers => {"x-subject-token"=>"token_data"})
|
36
36
|
|
37
|
-
Misty::AuthV3.new(auth, false, log)
|
37
|
+
Misty::AuthV3.new(auth, URI.parse(""), false, log)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -53,7 +53,7 @@ describe Misty::Auth do
|
|
53
53
|
to_return(:status => 200, :body => "{\"token\":{\"catalog\":[]}}", :headers => {"x-subject-token"=>"token_data"})
|
54
54
|
|
55
55
|
proc do
|
56
|
-
Misty::AuthV3.new({}, false, log)
|
56
|
+
Misty::AuthV3.new({}, URI.parse(""), false, log)
|
57
57
|
end.must_raise Misty::Auth::CredentialsError
|
58
58
|
end
|
59
59
|
|
@@ -61,7 +61,7 @@ describe Misty::Auth do
|
|
61
61
|
stub_request(:post, "http://localhost:5000/v3/auth/tokens").
|
62
62
|
to_return(:status => 200, :body => "{\"token\":{\"catalog\":[\"catalog_data\"]}}", :headers => {"x-subject-token"=>"token_data"})
|
63
63
|
|
64
|
-
auth = Misty::AuthV3.new(authv3_creds, false, log)
|
64
|
+
auth = Misty::AuthV3.new(authv3_creds, URI.parse(""), false, log)
|
65
65
|
auth.stub :expired?, false do
|
66
66
|
auth.get_token.must_equal "token_data"
|
67
67
|
end
|
@@ -71,7 +71,7 @@ describe Misty::Auth do
|
|
71
71
|
stub_request(:post, "http://localhost:5000/v3/auth/tokens").
|
72
72
|
to_return(:status => 200, :body => "{\"token\":{\"catalog\":[\"catalog_data\"]}}", :headers => {"x-subject-token"=>"token_data"})
|
73
73
|
|
74
|
-
auth = Misty::AuthV3.new(authv3_creds, false, log)
|
74
|
+
auth = Misty::AuthV3.new(authv3_creds, URI.parse(""), false, log)
|
75
75
|
auth.catalog.must_equal ["catalog_data"]
|
76
76
|
end
|
77
77
|
|
@@ -79,7 +79,7 @@ describe Misty::Auth do
|
|
79
79
|
stub_request(:post, "http://localhost:5000/v3/auth/tokens").
|
80
80
|
to_return(:status => 200, :body => JSON.dump(auth_response_v3("identity", "keystone")), :headers => {"x-subject-token"=>"token_data"})
|
81
81
|
|
82
|
-
auth = Misty::AuthV3.new(authv3_creds, false, log)
|
82
|
+
auth = Misty::AuthV3.new(authv3_creds, URI.parse(""), false, log)
|
83
83
|
auth.get_endpoint(%w{identity}, "regionOne", "public").must_equal "http://localhost"
|
84
84
|
end
|
85
85
|
end
|
@@ -92,7 +92,7 @@ describe Misty::Auth do
|
|
92
92
|
to_return(:status => 200, :body => "{\"access\":{\"token\":{\"id\":\"token_data\"}}}", :headers => {})
|
93
93
|
|
94
94
|
proc do
|
95
|
-
Misty::AuthV2.new({}, false, log)
|
95
|
+
Misty::AuthV2.new({}, URI.parse(""), false, log)
|
96
96
|
end.must_raise Misty::Auth::CredentialsError
|
97
97
|
end
|
98
98
|
end
|
@@ -111,7 +111,7 @@ describe Misty::Auth do
|
|
111
111
|
stub_request(:post, "http://localhost:5000/v2.0/tokens").
|
112
112
|
to_return(:status => 200, :body => "{\"access\":{\"token\":{\"id\":\"token_data\"},\"serviceCatalog\":[\"catalog_data\"]}}", :headers => {})
|
113
113
|
|
114
|
-
auth = Misty::AuthV2.new(authv2_creds, false, log)
|
114
|
+
auth = Misty::AuthV2.new(authv2_creds, URI.parse(""), false, log)
|
115
115
|
auth.stub :expired?, false do
|
116
116
|
auth.get_token.must_equal "token_data"
|
117
117
|
end
|
@@ -121,7 +121,7 @@ describe Misty::Auth do
|
|
121
121
|
stub_request(:post, "http://localhost:5000/v2.0/tokens").
|
122
122
|
to_return(:status => 200, :body => "{\"access\":{\"token\":{\"id\":\"token_data\"},\"serviceCatalog\":[\"catalog_data\"]}}", :headers => {})
|
123
123
|
|
124
|
-
auth = Misty::AuthV2.new(authv2_creds, false, log)
|
124
|
+
auth = Misty::AuthV2.new(authv2_creds, URI.parse(""), false, log)
|
125
125
|
auth.catalog.must_equal ["catalog_data"]
|
126
126
|
end
|
127
127
|
|
@@ -129,7 +129,7 @@ describe Misty::Auth do
|
|
129
129
|
stub_request(:post, "http://localhost:5000/v2.0/tokens").
|
130
130
|
to_return(:status => 200, :body => JSON.dump(auth_response_v2("identity", "keystone")), :headers => {"x-subject-token"=>"token_data"})
|
131
131
|
|
132
|
-
auth = Misty::AuthV2.new(authv2_creds, false, log)
|
132
|
+
auth = Misty::AuthV2.new(authv2_creds, URI.parse(""), false, log)
|
133
133
|
auth.get_endpoint(%w{identity}, "regionOne", "public").must_equal "http://localhost"
|
134
134
|
end
|
135
135
|
end
|
data/test/unit/cloud_test.rb
CHANGED
@@ -54,10 +54,12 @@ describe Misty::Cloud do
|
|
54
54
|
it "sets up default values" do
|
55
55
|
Misty::Auth.stub :factory, nil do
|
56
56
|
setup = Misty::Cloud.setup({})
|
57
|
-
setup.must_be_kind_of
|
57
|
+
setup.must_be_kind_of Misty::Cloud::Setup
|
58
58
|
setup.content_type.must_equal Misty::CONTENT_TYPE
|
59
59
|
setup.log.must_be_kind_of Logger
|
60
60
|
setup.interface.must_equal Misty::INTERFACE
|
61
|
+
setup.proxy.must_be_kind_of URI
|
62
|
+
setup.proxy.host.must_be_nil
|
61
63
|
setup.region_id.must_equal Misty::REGION_ID
|
62
64
|
setup.ssl_verify_mode.must_equal Misty::SSL_VERIFY_MODE
|
63
65
|
end
|
@@ -41,8 +41,9 @@ describe Misty::HTTP::Client do
|
|
41
41
|
|
42
42
|
describe "#net_http" do
|
43
43
|
it "returns a Net/http instance" do
|
44
|
-
|
45
|
-
|
44
|
+
endpoint = URI.parse("http://localhost")
|
45
|
+
proxy = URI.parse("")
|
46
|
+
service.send(:net_http, endpoint, proxy, false, Logger.new("/dev/null")).must_be_instance_of Net::HTTP
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
@@ -31,7 +31,14 @@ describe Misty::HTTP::Microversion do
|
|
31
31
|
"token_id"
|
32
32
|
end
|
33
33
|
|
34
|
-
setup = Misty::Cloud::Setup.new
|
34
|
+
setup = Misty::Cloud::Setup.new
|
35
|
+
setup.auth = auth
|
36
|
+
setup.content_type = :ruby
|
37
|
+
setup.log = Logger.new('/dev/null')
|
38
|
+
setup.interface = Misty::INTERFACE
|
39
|
+
setup.proxy = URI.parse('')
|
40
|
+
setup.region_id = Misty::REGION_ID
|
41
|
+
setup.ssl_verify_mode = Misty::SSL_VERIFY_MODE
|
35
42
|
|
36
43
|
stub_request(:get, "http://localhost/").
|
37
44
|
with(:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json'}).
|
data/test/unit/service_helper.rb
CHANGED
@@ -15,7 +15,14 @@ def service(content_type = :ruby)
|
|
15
15
|
"token_id"
|
16
16
|
end
|
17
17
|
|
18
|
-
setup = Misty::Cloud::Setup.new
|
18
|
+
setup = Misty::Cloud::Setup.new
|
19
|
+
setup.auth = auth
|
20
|
+
setup.content_type = content_type
|
21
|
+
setup.log = Logger.new('/dev/null')
|
22
|
+
setup.interface = Misty::INTERFACE
|
23
|
+
setup.proxy = URI.parse("")
|
24
|
+
setup.region_id = Misty::REGION_ID
|
25
|
+
setup.ssl_verify_mode = Misty::SSL_VERIFY_MODE
|
19
26
|
|
20
27
|
stub_request(:get, "http://localhost/").
|
21
28
|
with(:headers => request_header).
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: misty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gilles Dubreuil
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.8.3
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
22
|
+
version: '3'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.8.3
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
32
|
+
version: '3'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: bundler
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -205,7 +211,7 @@ files:
|
|
205
211
|
- test/unit/test_helper.rb
|
206
212
|
homepage: https://github.com/flystack/misty
|
207
213
|
licenses:
|
208
|
-
- Apache
|
214
|
+
- Apache-2.0
|
209
215
|
metadata: {}
|
210
216
|
post_install_message:
|
211
217
|
rdoc_options:
|
@@ -227,6 +233,5 @@ rubyforge_project:
|
|
227
233
|
rubygems_version: 2.5.2
|
228
234
|
signing_key:
|
229
235
|
specification_version: 4
|
230
|
-
summary: Misty is
|
231
|
-
management.
|
236
|
+
summary: Misty is an OpenStack API client
|
232
237
|
test_files: []
|