fog-terremark 0.0.3 → 0.0.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.
- checksums.yaml +4 -4
- data/.hound.yml +20 -0
- data/CONTRIBUTORS.md +1 -0
- data/README.md +2 -0
- data/fog-terremark.gemspec +11 -7
- data/lib/fog/compute/terremark/common.rb +3 -2
- data/lib/fog/compute/terremark/real.rb +45 -31
- data/lib/fog/compute/terremark/requests/get_organizations.rb +19 -18
- data/lib/fog/terremark/version.rb +1 -1
- data/spec/cassettes/get_login_token.yml +45 -0
- data/spec/credentials_spec.rb +12 -7
- data/spec/minitest_helper.rb +16 -9
- metadata +23 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e34b03eb966c2bff4765e3a09fdb7c5b1acc922f
|
4
|
+
data.tar.gz: 07830710067565af142020e0c489ba13e5d71e4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f05d7f1cc4d1b922dc7b57dfbb9a64d74642d89ef7c50fd86b048e3ac0710e29083ec3d6034b22ec74cb4a11b91c47a392104d1870ce12ae0109ca2ec9e7f89f
|
7
|
+
data.tar.gz: 0dc74bdeb681d33d5cf7aa88c43db11af1ca720b31b4c692e1e56c545c2526ad17f7bd8f8e47377f7ba7c980083ece4ac212e51a572eb6dc25f422ce65645a71
|
data/.hound.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Metrics/LineLength:
|
2
|
+
Enabled: false
|
3
|
+
|
4
|
+
Style/EachWithObject:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
Style/Encoding:
|
8
|
+
EnforcedStyle: when_needed
|
9
|
+
|
10
|
+
Style/FormatString:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
Style/HashSyntax:
|
14
|
+
EnforcedStyle: hash_rockets
|
15
|
+
|
16
|
+
Style/SignalException:
|
17
|
+
EnforcedStyle: only_raise
|
18
|
+
|
19
|
+
Style/StringLiterals:
|
20
|
+
EnforcedStyle: double_quotes
|
data/CONTRIBUTORS.md
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
* James Herdman <james.herdman@me.com>
|
6
6
|
* Juris Galang <jurisgalang@gmail.com>
|
7
7
|
* marios <marios@redhat.com>
|
8
|
+
* Nathan Buesgens <nathan@natb1.com>
|
8
9
|
* Paul Thornthwaite <tokengeek@gmail.com>
|
9
10
|
* Paulo Henrique Lopes Ribeiro <plribeiro3000@gmail.com>
|
10
11
|
* Wesley Beary <geemus@gmail.com>
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Fog::Terremark
|
2
2
|
|
3
|
+
 [](https://travis-ci.org/fog/fog-terremark) [](https://gemnasium.com/fog/fog-terremark) [](https://coveralls.io/r/fog/fog-terremark?branch=master) [](https://codeclimate.com/github/fog/fog-terremark)
|
4
|
+
|
3
5
|
Module for the 'fog' gem to support Terremark vCloud
|
4
6
|
|
5
7
|
## Help Needed
|
data/fog-terremark.gemspec
CHANGED
@@ -1,22 +1,25 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "fog/terremark/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "fog-terremark"
|
8
8
|
spec.version = Fog::Terremark::VERSION
|
9
9
|
spec.authors = ["Paulo Henrique Lopes Ribeiro"]
|
10
10
|
spec.email = ["plribeiro3000@gmail.com"]
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
|
11
|
+
spec.summary = "Module for the 'fog' gem to support Terremark vCloud."
|
12
|
+
spec.description = <<-EOS
|
13
|
+
This library can be used as a module for `fog` or
|
14
|
+
as standalone provider to use the Terremark vCloud in
|
15
|
+
applications.
|
16
|
+
EOS
|
14
17
|
spec.homepage = ""
|
15
18
|
spec.license = "MIT"
|
16
19
|
|
17
20
|
spec.files = `git ls-files -z`.split("\x0")
|
18
|
-
spec.executables = spec.files.grep(
|
19
|
-
spec.test_files = spec.files.grep(
|
21
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
22
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
20
23
|
spec.require_paths = ["lib"]
|
21
24
|
|
22
25
|
spec.add_dependency "fog-core"
|
@@ -26,6 +29,7 @@ Gem::Specification.new do |spec|
|
|
26
29
|
spec.add_development_dependency "minitest"
|
27
30
|
spec.add_development_dependency "turn"
|
28
31
|
spec.add_development_dependency "pry"
|
32
|
+
spec.add_development_dependency "vcr"
|
29
33
|
|
30
34
|
if RUBY_VERSION.to_f > 1.9
|
31
35
|
spec.add_development_dependency "coveralls"
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module Fog
|
2
2
|
module Compute
|
3
3
|
class Terremark
|
4
|
+
# doc stub
|
4
5
|
module Common
|
5
6
|
def default_organization_id
|
6
7
|
@default_organization_id ||= begin
|
7
|
-
org_list =
|
8
|
+
org_list = organizations.body["OrgList"]
|
8
9
|
if org_list.length == 1
|
9
|
-
org_list.first[
|
10
|
+
org_list.first["href"].split("/").last.to_i
|
10
11
|
else
|
11
12
|
nil
|
12
13
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Fog
|
2
2
|
module Compute
|
3
3
|
class Terremark
|
4
|
+
# documentation stub
|
4
5
|
class Real
|
5
6
|
include Common
|
6
7
|
|
@@ -12,18 +13,28 @@ module Fog
|
|
12
13
|
private
|
13
14
|
|
14
15
|
def auth_token
|
15
|
-
response = @connection.request(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
16
|
+
response = @connection.request(
|
17
|
+
:expects => 200,
|
18
|
+
:headers => auth_headers,
|
19
|
+
:host => @host,
|
20
|
+
:method => "POST",
|
21
|
+
:parser => Fog::Parsers::Terremark::GetOrganizations.new,
|
22
|
+
:path => "#{@path}/login"
|
23
|
+
)
|
24
|
+
response.headers["Set-Cookie"]
|
25
|
+
end
|
26
|
+
|
27
|
+
def auth_headers
|
28
|
+
credentials = "#{@terremark_username}:#{@terremark_password}"
|
29
|
+
encoded_credentials = Base64.encode64(credentials)
|
30
|
+
# remove newlines because strict_encode64 is not compatible with 1.8
|
31
|
+
encoded_credentials = encoded_credentials.gsub(/\n/, "")
|
32
|
+
{
|
33
|
+
"Authorization" => "Basic #{encoded_credentials}",
|
34
|
+
# Terremark said they're going to remove passing in the
|
35
|
+
# Content-Type to login in a future release
|
36
|
+
"Content-Type" => "application/vnd.vmware.vcloud.orgList+xml"
|
37
|
+
}
|
27
38
|
end
|
28
39
|
|
29
40
|
def reload
|
@@ -31,9 +42,7 @@ module Fog
|
|
31
42
|
end
|
32
43
|
|
33
44
|
def request(params)
|
34
|
-
|
35
|
-
@cookie = auth_token
|
36
|
-
end
|
45
|
+
@cookie ||= auth_token
|
37
46
|
begin
|
38
47
|
do_request(params)
|
39
48
|
rescue Excon::Errors::Unauthorized
|
@@ -43,30 +52,35 @@ module Fog
|
|
43
52
|
end
|
44
53
|
|
45
54
|
def do_request(params)
|
55
|
+
@connection.request(
|
56
|
+
:body => params[:body],
|
57
|
+
:expects => params[:expects],
|
58
|
+
:headers => make_headers(params),
|
59
|
+
:host => @host,
|
60
|
+
:method => params[:method],
|
61
|
+
:parser => params[:parser],
|
62
|
+
:path => make_path(params)
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def make_headers(params)
|
46
67
|
headers = {}
|
47
|
-
if @cookie
|
48
|
-
|
49
|
-
|
68
|
+
headers.merge!("Cookie" => @cookie) if @cookie
|
69
|
+
headers.merge!(params[:headers] || {})
|
70
|
+
end
|
71
|
+
|
72
|
+
def make_path(params)
|
50
73
|
if params[:path]
|
51
74
|
if params[:override_path] == true
|
52
|
-
|
75
|
+
params[:path]
|
53
76
|
else
|
54
|
-
|
77
|
+
"#{@path}/#{params[:path]}"
|
55
78
|
end
|
56
79
|
else
|
57
|
-
|
80
|
+
"#{@path}"
|
58
81
|
end
|
59
|
-
@connection.request({
|
60
|
-
:body => params[:body],
|
61
|
-
:expects => params[:expects],
|
62
|
-
:headers => headers.merge!(params[:headers] || {}),
|
63
|
-
:host => @host,
|
64
|
-
:method => params[:method],
|
65
|
-
:parser => params[:parser],
|
66
|
-
:path => path
|
67
|
-
})
|
68
82
|
end
|
69
83
|
end
|
70
84
|
end
|
71
85
|
end
|
72
|
-
end
|
86
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Fog
|
2
2
|
module Compute
|
3
3
|
class Terremark
|
4
|
+
# doc stub
|
4
5
|
class Real
|
5
6
|
# Get list of organizations
|
6
7
|
#
|
@@ -10,34 +11,34 @@ module Fog
|
|
10
11
|
# * 'description'<~String> - Description of organization
|
11
12
|
# * 'links'<~Array> - An array of links to entities in the organization
|
12
13
|
# * 'name'<~String> - Name of organization
|
13
|
-
def
|
14
|
-
request(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
:method => 'POST',
|
22
|
-
:parser => Fog::Parsers::Terremark::GetOrganizations.new,
|
23
|
-
:path => 'login'
|
24
|
-
})
|
14
|
+
def organizations
|
15
|
+
request(
|
16
|
+
:expects => 200,
|
17
|
+
:headers => auth_headers,
|
18
|
+
:method => "POST",
|
19
|
+
:parser => Fog::Parsers::Terremark::GetOrganizations.new,
|
20
|
+
:path => "login"
|
21
|
+
)
|
25
22
|
end
|
26
23
|
end
|
27
24
|
|
25
|
+
# doc stub
|
28
26
|
class Mock
|
29
|
-
def
|
27
|
+
def organizations
|
30
28
|
response = Excon::Response.new
|
31
|
-
|
29
|
+
response.body = { "OrgList" => org_fixture }
|
30
|
+
response.status = 200
|
31
|
+
response.headers = Fog::Compute::Terremark::Mock.headers(response.body, "application/vnd.vmware.vcloud.orgList+xml")
|
32
|
+
response
|
33
|
+
end
|
34
|
+
|
35
|
+
def org_fixture
|
36
|
+
data[:organizations].map do |organization|
|
32
37
|
{ "name" => organization[:info][:name],
|
33
38
|
"href" => "#{@base_url}/org/#{organization[:info][:id]}",
|
34
39
|
"type" => "application/vnd.vmware.vcloud.org+xml"
|
35
40
|
}
|
36
41
|
end
|
37
|
-
response.body = { "OrgList" => org_list }
|
38
|
-
response.status = 200
|
39
|
-
response.headers = Fog::Compute::Terremark::Mock.headers(response.body, "application/vnd.vmware.vcloud.orgList+xml")
|
40
|
-
response
|
41
42
|
end
|
42
43
|
end
|
43
44
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/login
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- fog-core/1.25.0
|
12
|
+
Authorization:
|
13
|
+
- Basic CREDENTIALS
|
14
|
+
Content-Type:
|
15
|
+
- application/vnd.vmware.vcloud.orgList+xml
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message:
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- private
|
23
|
+
Content-Length:
|
24
|
+
- '328'
|
25
|
+
Content-Type:
|
26
|
+
- application/vnd.vmware.vcloud.orgList+xml
|
27
|
+
Server:
|
28
|
+
- Microsoft-IIS/7.0
|
29
|
+
X-AspNet-Version:
|
30
|
+
- 4.0.30319
|
31
|
+
Set-Cookie:
|
32
|
+
- vcloud-token=TOKEN; path=/
|
33
|
+
X-Powered-By:
|
34
|
+
- ASP.NET
|
35
|
+
Date:
|
36
|
+
- Mon, 24 Nov 2014 20:39:30 GMT
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: |-
|
40
|
+
<OrgList xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
41
|
+
<Org href="https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/org/ORG_ID" type="application/vnd.vmware.vcloud.org+xml" name="TERREMARK_VCLOUD_USERNAME"/>
|
42
|
+
</OrgList>
|
43
|
+
http_version:
|
44
|
+
recorded_at: Mon, 24 Nov 2014 20:39:30 GMT
|
45
|
+
recorded_with: VCR 2.9.3
|
data/spec/credentials_spec.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
-
require
|
1
|
+
require "minitest_helper"
|
2
2
|
|
3
|
-
describe Fog::
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
describe Fog::Terremark::Vcloud do
|
4
|
+
|
5
|
+
it "gets a login token" do
|
6
|
+
VCR.use_cassette("get_login_token") do
|
7
|
+
service = Fog::Terremark::Vcloud.new(
|
8
|
+
:terremark_vcloud_username => "test@example.com",
|
9
|
+
:terremark_vcloud_password => "123456")
|
10
|
+
service.send(:auth_token)
|
11
|
+
end
|
8
12
|
end
|
9
|
-
|
13
|
+
|
14
|
+
end
|
data/spec/minitest_helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "minitest/spec"
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "turn"
|
4
|
+
require "vcr"
|
4
5
|
|
5
6
|
Turn.config do |c|
|
6
7
|
# use one of output formats:
|
@@ -17,15 +18,21 @@ Turn.config do |c|
|
|
17
18
|
c.natural = true
|
18
19
|
end
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
VCR.configure do |c|
|
22
|
+
c.cassette_library_dir = "spec/cassettes"
|
23
|
+
c.hook_into :excon
|
24
|
+
c.debug_logger = $stderr
|
25
|
+
end
|
26
|
+
|
27
|
+
if ENV["COVERAGE"]
|
28
|
+
require "coveralls"
|
29
|
+
require "simplecov"
|
23
30
|
|
24
31
|
SimpleCov.start do
|
25
|
-
add_filter
|
32
|
+
add_filter "/spec/"
|
26
33
|
end
|
27
34
|
end
|
28
35
|
|
29
|
-
require File.join(File.dirname(__FILE__),
|
36
|
+
require File.join(File.dirname(__FILE__), "../lib/fog/terremark.rb")
|
30
37
|
|
31
|
-
Coveralls.wear! if ENV[
|
38
|
+
Coveralls.wear! if ENV["COVERAGE"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-terremark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paulo Henrique Lopes Ribeiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog-core
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: vcr
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: coveralls
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,9 +136,10 @@ dependencies:
|
|
122
136
|
- - ">="
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0'
|
125
|
-
description:
|
126
|
-
|
127
|
-
|
139
|
+
description: |2
|
140
|
+
This library can be used as a module for `fog` or
|
141
|
+
as standalone provider to use the Terremark vCloud in
|
142
|
+
applications.
|
128
143
|
email:
|
129
144
|
- plribeiro3000@gmail.com
|
130
145
|
executables: []
|
@@ -132,6 +147,7 @@ extensions: []
|
|
132
147
|
extra_rdoc_files: []
|
133
148
|
files:
|
134
149
|
- ".gitignore"
|
150
|
+
- ".hound.yml"
|
135
151
|
- ".rubocop.yml"
|
136
152
|
- ".ruby-gemset"
|
137
153
|
- ".ruby-version"
|
@@ -223,6 +239,7 @@ files:
|
|
223
239
|
- lib/fog/terremark/vcloud/mock.rb
|
224
240
|
- lib/fog/terremark/vcloud/real.rb
|
225
241
|
- lib/fog/terremark/version.rb
|
242
|
+
- spec/cassettes/get_login_token.yml
|
226
243
|
- spec/credentials_spec.rb
|
227
244
|
- spec/minitest_helper.rb
|
228
245
|
homepage: ''
|
@@ -250,5 +267,6 @@ signing_key:
|
|
250
267
|
specification_version: 4
|
251
268
|
summary: Module for the 'fog' gem to support Terremark vCloud.
|
252
269
|
test_files:
|
270
|
+
- spec/cassettes/get_login_token.yml
|
253
271
|
- spec/credentials_spec.rb
|
254
272
|
- spec/minitest_helper.rb
|