cloudservers 0.4.1 → 0.4.2
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/CHANGELOG +8 -0
- data/VERSION +1 -1
- data/cloudservers.gemspec +3 -6
- data/lib/cloudservers/authentication.rb +1 -1
- data/lib/cloudservers/connection.rb +2 -2
- data/lib/cloudservers/server.rb +0 -2
- data/lib/cloudservers/version.rb +3 -0
- data/lib/cloudservers.rb +1 -1
- data/test/cloudservers_servers_test.rb +4 -99
- data/test/fixtures/create_server.json +23 -0
- data/test/fixtures/list_servers.json +45 -0
- data/test/fixtures/test_server.json +24 -0
- data/test/test_helper.rb +8 -0
- metadata +8 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
================================================================================
|
2
|
+
0.4.2 (2012/01/13)
|
3
|
+
================================================================================
|
4
|
+
o Test fixtures.
|
5
|
+
o Fix issue with paths, applicable for ruby 1.9.
|
6
|
+
o Change ConnectionException to Connection.
|
7
|
+
o Accept all 20x status codes to support OpenStack.
|
8
|
+
|
1
9
|
================================================================================
|
2
10
|
0.4.1 (2011/02/02)
|
3
11
|
================================================================================
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.2
|
data/cloudservers.gemspec
CHANGED
@@ -1,11 +1,8 @@
|
|
1
|
-
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
require './lib/cloudservers/version'
|
5
2
|
|
6
3
|
Gem::Specification.new do |s|
|
7
4
|
s.name = %q{cloudservers}
|
8
|
-
s.version =
|
5
|
+
s.version = CloudServers::VERSION
|
9
6
|
|
10
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
8
|
s.authors = ["H. Wade Minter", "Mike Mayo", "Dan Prince"]
|
@@ -22,7 +19,6 @@ Gem::Specification.new do |s|
|
|
22
19
|
"README.rdoc",
|
23
20
|
"Rakefile",
|
24
21
|
"TODO",
|
25
|
-
"VERSION",
|
26
22
|
"cloudservers.gemspec",
|
27
23
|
"lib/cloudservers.rb",
|
28
24
|
"lib/cloudservers/authentication.rb",
|
@@ -33,6 +29,7 @@ Gem::Specification.new do |s|
|
|
33
29
|
"lib/cloudservers/image.rb",
|
34
30
|
"lib/cloudservers/server.rb",
|
35
31
|
"lib/cloudservers/shared_ip_group.rb",
|
32
|
+
"lib/cloudservers/version.rb",
|
36
33
|
"test/cloudservers_authentication_test.rb",
|
37
34
|
"test/cloudservers_connection_test.rb",
|
38
35
|
"test/cloudservers_exception_test.rb",
|
@@ -21,7 +21,7 @@ module CloudServers
|
|
21
21
|
raise CloudServers::Exception::Connection, "Unable to connect to #{server}"
|
22
22
|
end
|
23
23
|
response = server.get(path,hdrhash)
|
24
|
-
if (response.code
|
24
|
+
if (response.code =~ /^20./)
|
25
25
|
connection.authtoken = response["x-auth-token"]
|
26
26
|
connection.svrmgmthost = URI.parse(response["x-server-management-url"]).host
|
27
27
|
connection.svrmgmtpath = URI.parse(response["x-server-management-url"]).path
|
@@ -86,7 +86,7 @@ module CloudServers
|
|
86
86
|
retry
|
87
87
|
rescue CloudServers::Exception::ExpiredAuthToken
|
88
88
|
raise CloudServers::Exception::Connection, "Authentication token expired and you have requested not to retry" if @retry_auth == false
|
89
|
-
|
89
|
+
CloudServers::Authentication.new(self)
|
90
90
|
retry
|
91
91
|
end
|
92
92
|
|
@@ -331,7 +331,7 @@ module CloudServers
|
|
331
331
|
end
|
332
332
|
@http[server].start
|
333
333
|
rescue
|
334
|
-
raise CloudServers::Exception::
|
334
|
+
raise CloudServers::Exception::Connection, "Unable to connect to #{server}"
|
335
335
|
end
|
336
336
|
end
|
337
337
|
end
|
data/lib/cloudservers/server.rb
CHANGED
@@ -10,7 +10,6 @@ module CloudServers
|
|
10
10
|
attr_reader :hostId
|
11
11
|
attr_reader :imageId
|
12
12
|
attr_reader :flavorId
|
13
|
-
attr_reader :metadata
|
14
13
|
attr_accessor :adminPass
|
15
14
|
|
16
15
|
# This class is the representation of a single Cloud Server object. The constructor finds the server identified by the specified
|
@@ -54,7 +53,6 @@ module CloudServers
|
|
54
53
|
@hostId = data["hostId"]
|
55
54
|
@imageId = data["imageId"]
|
56
55
|
@flavorId = data["flavorId"]
|
57
|
-
@metadata = data["metadata"]
|
58
56
|
true
|
59
57
|
end
|
60
58
|
alias :refresh :populate
|
data/lib/cloudservers.rb
CHANGED
@@ -20,7 +20,6 @@ module CloudServers
|
|
20
20
|
AUTH_USA = "https://auth.api.rackspacecloud.com"
|
21
21
|
AUTH_UK = "https://lon.auth.api.rackspacecloud.com"
|
22
22
|
|
23
|
-
VERSION = IO.read(File.dirname(__FILE__) + '/../VERSION')
|
24
23
|
require 'net/http'
|
25
24
|
require 'net/https'
|
26
25
|
require 'uri'
|
@@ -34,6 +33,7 @@ module CloudServers
|
|
34
33
|
end
|
35
34
|
|
36
35
|
$:.unshift(File.dirname(__FILE__))
|
36
|
+
require 'cloudservers/version'
|
37
37
|
require 'cloudservers/authentication'
|
38
38
|
require 'cloudservers/connection'
|
39
39
|
require 'cloudservers/server'
|
@@ -4,31 +4,6 @@ require 'tempfile'
|
|
4
4
|
|
5
5
|
class CloudServersServersTest < Test::Unit::TestCase
|
6
6
|
|
7
|
-
CREATE_SERVER_JSON = %{{
|
8
|
-
"server" : {
|
9
|
-
"id" : 1234,
|
10
|
-
"name" : "sample-server",
|
11
|
-
"imageId" : 2,
|
12
|
-
"flavorId" : 1,
|
13
|
-
"hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0",
|
14
|
-
"adminPass" : "blah",
|
15
|
-
"status" : "BUILD",
|
16
|
-
"progress" : 60,
|
17
|
-
"addresses" : {
|
18
|
-
"public" : [
|
19
|
-
"67.23.10.132"
|
20
|
-
],
|
21
|
-
"private" : [
|
22
|
-
"10.176.42.16"
|
23
|
-
]
|
24
|
-
},
|
25
|
-
"metadata" : {
|
26
|
-
"Racker" : "Fanatical"
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}}
|
30
|
-
|
31
|
-
|
32
7
|
include TestConnection
|
33
8
|
|
34
9
|
def setup
|
@@ -37,53 +12,8 @@ CREATE_SERVER_JSON = %{{
|
|
37
12
|
|
38
13
|
def test_list_servers
|
39
14
|
|
40
|
-
json_response = %{{
|
41
|
-
"servers" : [
|
42
|
-
{
|
43
|
-
"id" : 1234,
|
44
|
-
"name" : "sample-server",
|
45
|
-
"imageId" : 2,
|
46
|
-
"flavorId" : 1,
|
47
|
-
"hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0",
|
48
|
-
"status" : "BUILD",
|
49
|
-
"progress" : 60,
|
50
|
-
"addresses" : {
|
51
|
-
"public" : [
|
52
|
-
"67.23.10.132",
|
53
|
-
"67.23.10.131"
|
54
|
-
],
|
55
|
-
"private" : [
|
56
|
-
"10.176.42.16"
|
57
|
-
]
|
58
|
-
},
|
59
|
-
"metadata" : {
|
60
|
-
"Server Label" : "Web Head 1",
|
61
|
-
"Image Version" : "2.1"
|
62
|
-
}
|
63
|
-
},
|
64
|
-
{
|
65
|
-
"id" : 5678,
|
66
|
-
"name" : "sample-server2",
|
67
|
-
"imageId" : 2,
|
68
|
-
"flavorId" : 1,
|
69
|
-
"hostId" : "9e107d9d372bb6826bd81d3542a419d6",
|
70
|
-
"status" : "ACTIVE",
|
71
|
-
"addresses" : {
|
72
|
-
"public" : [
|
73
|
-
"67.23.10.133"
|
74
|
-
],
|
75
|
-
"private" : [
|
76
|
-
"10.176.42.17"
|
77
|
-
]
|
78
|
-
},
|
79
|
-
"metadata" : {
|
80
|
-
"Server Label" : "DB 1"
|
81
|
-
}
|
82
|
-
}
|
83
|
-
]
|
84
|
-
}}
|
85
15
|
response = mock()
|
86
|
-
response.stubs(:code => "200", :body =>
|
16
|
+
response.stubs(:code => "200", :body => fixture('list_servers.json'))
|
87
17
|
|
88
18
|
@conn.stubs(:csreq).returns(response)
|
89
19
|
servers=@conn.list_servers
|
@@ -189,7 +119,7 @@ json_response = %{{
|
|
189
119
|
def test_create_server_with_local_file_personality
|
190
120
|
|
191
121
|
response = mock()
|
192
|
-
response.stubs(:code => "200", :body =>
|
122
|
+
response.stubs(:code => "200", :body => fixture('create_server.json'))
|
193
123
|
@conn.stubs(:csreq).returns(response)
|
194
124
|
|
195
125
|
tmp = Tempfile.open('ruby_cloud_servers')
|
@@ -205,7 +135,7 @@ json_response = %{{
|
|
205
135
|
def test_create_server_with_personalities
|
206
136
|
|
207
137
|
response = mock()
|
208
|
-
response.stubs(:code => "200", :body =>
|
138
|
+
response.stubs(:code => "200", :body => fixture('create_server.json'))
|
209
139
|
@conn.stubs(:csreq).returns(response)
|
210
140
|
|
211
141
|
server = @conn.create_server(:name => "sample-server", :imageId => 2, :flavorId => 2, :metadata => {'Racker' => 'Fanatical'}, :personality => [{:path => '/root/hello.txt', :contents => "Hello there!"}, {:path => '/root/.ssh/authorized_keys', :contents => ""}])
|
@@ -234,33 +164,8 @@ json_response = %{{
|
|
234
164
|
private
|
235
165
|
def get_test_server
|
236
166
|
|
237
|
-
json_response = %{{
|
238
|
-
"server" : {
|
239
|
-
"id" : 1234,
|
240
|
-
"name" : "sample-server",
|
241
|
-
"imageId" : 2,
|
242
|
-
"flavorId" : 1,
|
243
|
-
"hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0",
|
244
|
-
"status" : "BUILD",
|
245
|
-
"progress" : 60,
|
246
|
-
"addresses" : {
|
247
|
-
"public" : [
|
248
|
-
"67.23.10.132",
|
249
|
-
"67.23.10.131"
|
250
|
-
],
|
251
|
-
"private" : [
|
252
|
-
"10.176.42.16"
|
253
|
-
]
|
254
|
-
},
|
255
|
-
"metadata" : {
|
256
|
-
"Server Label" : "Web Head 1",
|
257
|
-
"Image Version" : "2.1"
|
258
|
-
}
|
259
|
-
}
|
260
|
-
}}
|
261
|
-
|
262
167
|
response = mock()
|
263
|
-
response.stubs(:code => "200", :body =>
|
168
|
+
response.stubs(:code => "200", :body => fixture('test_server.json'))
|
264
169
|
|
265
170
|
@conn=get_test_connection
|
266
171
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
{
|
2
|
+
"server" : {
|
3
|
+
"id" : 1234,
|
4
|
+
"name" : "sample-server",
|
5
|
+
"imageId" : 2,
|
6
|
+
"flavorId" : 1,
|
7
|
+
"hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0",
|
8
|
+
"adminPass" : "blah",
|
9
|
+
"status" : "BUILD",
|
10
|
+
"progress" : 60,
|
11
|
+
"addresses" : {
|
12
|
+
"public" : [
|
13
|
+
"67.23.10.132"
|
14
|
+
],
|
15
|
+
"private" : [
|
16
|
+
"10.176.42.16"
|
17
|
+
]
|
18
|
+
},
|
19
|
+
"metadata" : {
|
20
|
+
"Racker" : "Fanatical"
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
{
|
2
|
+
"servers" : [
|
3
|
+
{
|
4
|
+
"id" : 1234,
|
5
|
+
"name" : "sample-server",
|
6
|
+
"imageId" : 2,
|
7
|
+
"flavorId" : 1,
|
8
|
+
"hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0",
|
9
|
+
"status" : "BUILD",
|
10
|
+
"progress" : 60,
|
11
|
+
"addresses" : {
|
12
|
+
"public" : [
|
13
|
+
"67.23.10.132",
|
14
|
+
"67.23.10.131"
|
15
|
+
],
|
16
|
+
"private" : [
|
17
|
+
"10.176.42.16"
|
18
|
+
]
|
19
|
+
},
|
20
|
+
"metadata" : {
|
21
|
+
"Server Label" : "Web Head 1",
|
22
|
+
"Image Version" : "2.1"
|
23
|
+
}
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"id" : 5678,
|
27
|
+
"name" : "sample-server2",
|
28
|
+
"imageId" : 2,
|
29
|
+
"flavorId" : 1,
|
30
|
+
"hostId" : "9e107d9d372bb6826bd81d3542a419d6",
|
31
|
+
"status" : "ACTIVE",
|
32
|
+
"addresses" : {
|
33
|
+
"public" : [
|
34
|
+
"67.23.10.133"
|
35
|
+
],
|
36
|
+
"private" : [
|
37
|
+
"10.176.42.17"
|
38
|
+
]
|
39
|
+
},
|
40
|
+
"metadata" : {
|
41
|
+
"Server Label" : "DB 1"
|
42
|
+
}
|
43
|
+
}
|
44
|
+
]
|
45
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
{
|
2
|
+
"server" : {
|
3
|
+
"id" : 1234,
|
4
|
+
"name" : "sample-server",
|
5
|
+
"imageId" : 2,
|
6
|
+
"flavorId" : 1,
|
7
|
+
"hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0",
|
8
|
+
"status" : "BUILD",
|
9
|
+
"progress" : 60,
|
10
|
+
"addresses" : {
|
11
|
+
"public" : [
|
12
|
+
"67.23.10.132",
|
13
|
+
"67.23.10.131"
|
14
|
+
],
|
15
|
+
"private" : [
|
16
|
+
"10.176.42.16"
|
17
|
+
]
|
18
|
+
},
|
19
|
+
"metadata" : {
|
20
|
+
"Server Label" : "Web Head 1",
|
21
|
+
"Image Version" : "2.1"
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudservers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 2
|
10
|
+
version: 0.4.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- H. Wade Minter
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date:
|
20
|
+
date: 2012-01-13 00:00:00 -05:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -60,10 +60,14 @@ files:
|
|
60
60
|
- lib/cloudservers/image.rb
|
61
61
|
- lib/cloudservers/server.rb
|
62
62
|
- lib/cloudservers/shared_ip_group.rb
|
63
|
+
- lib/cloudservers/version.rb
|
63
64
|
- test/cloudservers_authentication_test.rb
|
64
65
|
- test/cloudservers_connection_test.rb
|
65
66
|
- test/cloudservers_exception_test.rb
|
66
67
|
- test/cloudservers_servers_test.rb
|
68
|
+
- test/fixtures/create_server.json
|
69
|
+
- test/fixtures/list_servers.json
|
70
|
+
- test/fixtures/test_server.json
|
67
71
|
- test/test_helper.rb
|
68
72
|
has_rdoc: true
|
69
73
|
homepage: https://github.com/rackspace/ruby-cloudservers
|