deltacloud-core 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +10 -3
- data/bin/deltacloudd +67 -35
- data/config.ru +1 -1
- data/lib/deltacloud/drivers/ec2/ec2_driver.rb +9 -0
- data/lib/deltacloud/drivers/gogrid/gogrid_client.rb +7 -2
- data/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +25 -11
- data/lib/deltacloud/drivers/gogrid/test.rb +13 -0
- data/lib/deltacloud/drivers/mock/mock_driver.rb +9 -0
- data/lib/deltacloud/drivers/rackspace/rackspace_driver.rb +19 -1
- data/lib/deltacloud/drivers/terremark/terremark_driver.rb +10 -1
- data/lib/deltacloud/helpers/application_helper.rb +3 -3
- data/lib/deltacloud/models/base_model.rb +2 -2
- data/lib/sinatra/url_for.rb +7 -1
- data/server.rb +5 -2
- data/test.rb +8 -0
- data/tests/url_for_test.rb +50 -0
- data/views/api/show.html.haml +1 -1
- data/views/docs/collection.html.haml +2 -2
- data/views/docs/collection.xml.haml +2 -2
- data/views/docs/index.html.haml +1 -1
- data/views/docs/index.xml.haml +1 -1
- data/views/docs/operation.html.haml +2 -2
- data/views/docs/operation.xml.haml +1 -1
- data/views/layout.html.haml +2 -1
- metadata +133 -92
data/Rakefile
CHANGED
@@ -37,15 +37,22 @@ Rake::TestTask.new("test") { |t|
|
|
37
37
|
'tests/images_test.rb',
|
38
38
|
'tests/instances_test.rb',
|
39
39
|
'tests/instance_states_test.rb',
|
40
|
+
'tests/url_for_test.rb'
|
40
41
|
]
|
41
42
|
t.verbose = true
|
42
43
|
t.warning = false
|
43
44
|
}
|
44
45
|
|
45
|
-
load 'deltacloud-core.gemspec'
|
46
46
|
|
47
|
-
|
48
|
-
|
47
|
+
@specs = ['ruby', 'java'].inject({}) do |hash, spec_platform|
|
48
|
+
$platform = spec_platform
|
49
|
+
hash.update(spec_platform => Gem::Specification.load('deltacloud-core.gemspec'))
|
50
|
+
end
|
51
|
+
|
52
|
+
@specs.values.each do |spec|
|
53
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
54
|
+
pkg.need_tar = true
|
55
|
+
end
|
49
56
|
end
|
50
57
|
|
51
58
|
desc "Install API"
|
data/bin/deltacloudd
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'optparse'
|
5
|
-
require 'thin'
|
6
5
|
|
7
6
|
options = {
|
8
7
|
:env => 'development'
|
@@ -44,45 +43,78 @@ end
|
|
44
43
|
ENV["API_HOST"] = "localhost" unless ENV["API_HOST"]
|
45
44
|
ENV["API_PORT"] = "3001" unless ENV["API_PORT"]
|
46
45
|
|
46
|
+
puts "Starting Deltacloud API :: #{ENV["API_DRIVER"]} :: http://#{ENV["API_HOST"]}:#{ENV["API_PORT"]}/api"
|
47
|
+
puts
|
48
|
+
|
47
49
|
dirname="#{File.dirname(__FILE__)}/.."
|
50
|
+
platform = RUBY_PLATFORM[/java/] || 'ruby'
|
48
51
|
|
49
|
-
|
50
|
-
|
51
|
-
argv_opts << ['--address', ENV["API_HOST"] ]
|
52
|
-
argv_opts << ['--port', ENV["API_PORT"] ]
|
53
|
-
argv_opts << ['--rackup', 'config.ru' ]
|
54
|
-
argv_opts << ['--chdir', dirname ]
|
55
|
-
argv_opts << ['-e', options[:env] ]
|
56
|
-
argv_opts << ['--threaded', '-D', '--stats', '/stats']
|
57
|
-
|
58
|
-
argv_opts.flatten!
|
59
|
-
|
60
|
-
if options[:env] == "development"
|
61
|
-
use_rerun = false
|
62
|
-
begin
|
63
|
-
require "rerun"
|
64
|
-
use_rerun = true
|
65
|
-
rescue
|
66
|
-
# Do nothing
|
67
|
-
end
|
68
|
-
end
|
52
|
+
if platform == 'java'
|
53
|
+
require 'rack'
|
69
54
|
|
70
|
-
|
71
|
-
|
55
|
+
# We can't chdir with webrick so add our root directory
|
56
|
+
# onto the load path
|
57
|
+
$: << dirname
|
58
|
+
|
59
|
+
# Read in config.ru and convert it to an instance of Rack::Builder
|
60
|
+
cfgfile = File.read(File.join(dirname, 'config.ru'))
|
61
|
+
inner_app = eval("Rack::Builder.new {(" + cfgfile + "\n )}.to_app",
|
62
|
+
nil, 'config.ru')
|
72
63
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
64
|
+
app = Rack::Builder.new {
|
65
|
+
use Rack::CommonLogger # apache-like logging
|
66
|
+
use Rack::Reloader if options[:env] == "development"
|
67
|
+
set :root, dirname # Set Sinatra root since we can't chdir to ../
|
68
|
+
run inner_app
|
69
|
+
}.to_app
|
70
|
+
|
71
|
+
# There's a bug with string ports on JRuby so convert to int
|
72
|
+
# http://jira.codehaus.org/browse/JRUBY-4868
|
73
|
+
port = ENV["API_PORT"].to_i
|
74
|
+
|
75
|
+
puts "=> Ctrl-C to shutdown server"
|
76
|
+
Rack::Handler::WEBrick.run(app,
|
77
|
+
:Host => ENV["API_HOST"],
|
78
|
+
:Port => port,
|
79
|
+
:AccessLog => [])
|
80
80
|
else
|
81
|
-
thin
|
81
|
+
require 'thin'
|
82
|
+
|
83
|
+
argv_opts = ARGV.clone
|
84
|
+
argv_opts << ['start'] unless Thin::Runner.commands.include?(options[0])
|
85
|
+
argv_opts << ['--address', ENV["API_HOST"] ]
|
86
|
+
argv_opts << ['--port', ENV["API_PORT"] ]
|
87
|
+
argv_opts << ['--rackup', 'config.ru' ]
|
88
|
+
argv_opts << ['--chdir', dirname ]
|
89
|
+
argv_opts << ['-e', options[:env] ]
|
90
|
+
argv_opts << ['--threaded', '-D', '--stats', '/stats']
|
91
|
+
|
92
|
+
argv_opts.flatten!
|
93
|
+
|
94
|
+
if options[:env] == "development"
|
95
|
+
use_rerun = false
|
96
|
+
begin
|
97
|
+
require "rerun"
|
98
|
+
use_rerun = true
|
99
|
+
rescue
|
100
|
+
# Do nothing
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
if use_rerun
|
105
|
+
argv_opts.unshift "thin"
|
106
|
+
command = argv_opts.join(" ")
|
107
|
+
topdir = File::expand_path(File::join(File::dirname(__FILE__), ".."))
|
108
|
+
rerun = Rerun::Runner.new(command, :dir => topdir)
|
109
|
+
rerun.start
|
110
|
+
rerun.join
|
111
|
+
else
|
112
|
+
thin = Thin::Runner.new(argv_opts)
|
82
113
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
114
|
+
begin
|
115
|
+
thin.run!
|
116
|
+
rescue Exception => e
|
117
|
+
puts "ERROR: #{e.message}"
|
118
|
+
end
|
87
119
|
end
|
88
120
|
end
|
data/config.ru
CHANGED
@@ -310,6 +310,15 @@ class EC2Driver < Deltacloud::BaseDriver
|
|
310
310
|
end
|
311
311
|
end
|
312
312
|
|
313
|
+
def valid_credentials?(credentials)
|
314
|
+
client = new_client(credentials)
|
315
|
+
# FIXME: We need to do this call to determine if
|
316
|
+
# EC2 is working with given credentials. There is no
|
317
|
+
# other way to check, if given credentials are valid or not.
|
318
|
+
realms = client.describe_availability_zones rescue false
|
319
|
+
return realms ? true : false
|
320
|
+
end
|
321
|
+
|
313
322
|
private
|
314
323
|
|
315
324
|
def new_client(credentials)
|
@@ -9,7 +9,7 @@ class GoGridClient
|
|
9
9
|
apikey='YOUR API KEY',
|
10
10
|
secret='YOUR SHARED SECRET',
|
11
11
|
format='json',
|
12
|
-
version='1.
|
12
|
+
version='1.5')
|
13
13
|
@server = server
|
14
14
|
@secret = secret
|
15
15
|
@default_params = {'format'=>format, 'v'=>version,'api_key' => apikey}
|
@@ -30,7 +30,12 @@ class GoGridClient
|
|
30
30
|
open(getRequestURL(method,params)).read
|
31
31
|
end
|
32
32
|
|
33
|
-
def request(method, params={})
|
33
|
+
def request(method, params={}, version=nil)
|
34
|
+
if version
|
35
|
+
@default_params['v'] = version
|
36
|
+
else
|
37
|
+
@default_params['v'] = '1.5'
|
38
|
+
end
|
34
39
|
begin
|
35
40
|
JSON::parse(sendAPIRequest(method, params))
|
36
41
|
rescue Exception => e
|
@@ -67,7 +67,7 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
67
67
|
|
68
68
|
def realms(credentials, opts=nil)
|
69
69
|
safely do
|
70
|
-
new_client(credentials).request('common/lookup/list', { 'lookup' => '
|
70
|
+
new_client(credentials).request('common/lookup/list', { 'lookup' => 'ip.datacenter' })['list'].collect do |realm|
|
71
71
|
convert_realm(realm)
|
72
72
|
end
|
73
73
|
end
|
@@ -88,7 +88,7 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
88
88
|
'name' => name,
|
89
89
|
'image' => image_id,
|
90
90
|
'server.ram' => server_ram,
|
91
|
-
'ip' =>
|
91
|
+
'ip' => get_free_ip_from_realm(credentials, opts[:realm_id] || '1')
|
92
92
|
})['list'].first
|
93
93
|
if instance
|
94
94
|
login_data = get_login_data(client, instance[:id])
|
@@ -120,6 +120,7 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
120
120
|
end
|
121
121
|
|
122
122
|
def instances(credentials, opts=nil)
|
123
|
+
require 'ap'
|
123
124
|
instances = []
|
124
125
|
if opts and opts[:id]
|
125
126
|
begin
|
@@ -154,25 +155,25 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
154
155
|
|
155
156
|
def reboot_instance(credentials, id)
|
156
157
|
safely do
|
157
|
-
new_client(credentials).request('grid/server/power', { '
|
158
|
+
new_client(credentials).request('grid/server/power', { 'name' => id, 'power' => 'reboot'})
|
158
159
|
end
|
159
160
|
end
|
160
161
|
|
161
162
|
def destroy_instance(credentials, id)
|
162
163
|
safely do
|
163
|
-
new_client(credentials).request('grid/server/delete', { '
|
164
|
+
new_client(credentials).request('grid/server/delete', { 'name' => id})
|
164
165
|
end
|
165
166
|
end
|
166
167
|
|
167
168
|
def stop_instance(credentials, id)
|
168
169
|
safely do
|
169
|
-
new_client(credentials).request('grid/server/power', { '
|
170
|
+
new_client(credentials).request('grid/server/power', { 'name' => id, 'power' => 'off'})
|
170
171
|
end
|
171
172
|
end
|
172
173
|
|
173
174
|
def start_instance(credentials, id)
|
174
175
|
safely do
|
175
|
-
new_client(credentials).request('grid/server/power', { '
|
176
|
+
new_client(credentials).request('grid/server/power', { 'name' => id, 'power' => 'on'})
|
176
177
|
end
|
177
178
|
end
|
178
179
|
|
@@ -183,12 +184,23 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
183
184
|
def keys(credentials, opts=nil)
|
184
185
|
gogrid = new_client( credentials )
|
185
186
|
creds = []
|
186
|
-
|
187
|
-
|
187
|
+
safely do
|
188
|
+
gogrid.request('support/password/list')['list'].each do |password|
|
189
|
+
creds << convert_key(password)
|
190
|
+
end
|
188
191
|
end
|
189
192
|
return creds
|
190
193
|
end
|
191
194
|
|
195
|
+
def valid_credentials?(credentials)
|
196
|
+
client = new_client(credentials)
|
197
|
+
# FIXME: We need to do this call to determine if
|
198
|
+
# GoGrid is working with given credentials. There is no
|
199
|
+
# other way to check, if given credentials are valid or not.
|
200
|
+
return false unless new_client(credentials).request('common/lookup/list', { 'lookup' => 'ip.datacenter' })
|
201
|
+
true
|
202
|
+
end
|
203
|
+
|
192
204
|
define_instance_states do
|
193
205
|
start.to( :pending ) .automatically
|
194
206
|
pending.to( :running ) .automatically
|
@@ -202,6 +214,7 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
202
214
|
|
203
215
|
def new_client(credentials)
|
204
216
|
GoGridClient.new('https://api.gogrid.com/api', credentials.user, credentials.password)
|
217
|
+
|
205
218
|
end
|
206
219
|
|
207
220
|
def get_login_data(client, instance_id)
|
@@ -282,7 +295,7 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
282
295
|
:image_id => instance['image']['id'],
|
283
296
|
:instance_profile => prof,
|
284
297
|
:name => instance['name'],
|
285
|
-
:realm_id => instance['
|
298
|
+
:realm_id => instance['ip']['datacenter']['id'],
|
286
299
|
:state => convert_server_state(instance['state']['name'], instance['id']),
|
287
300
|
:actions => instance_actions_for(convert_server_state(instance['state']['name'], instance['id'])),
|
288
301
|
:public_addresses => [ instance['ip']['ip'] ],
|
@@ -301,12 +314,13 @@ class GogridDriver < Deltacloud::BaseDriver
|
|
301
314
|
state.eql?('Off') ? 'STOPPED' : 'RUNNING'
|
302
315
|
end
|
303
316
|
|
304
|
-
def
|
317
|
+
def get_free_ip_from_realm(credentials, realm_id)
|
305
318
|
ip = ""
|
306
319
|
safely do
|
307
320
|
ip = new_client(credentials).request('grid/ip/list', {
|
308
321
|
'ip.type' => '1',
|
309
|
-
'ip.state' => '1'
|
322
|
+
'ip.state' => '1',
|
323
|
+
'datacenter' => realm_id
|
310
324
|
})['list'].first['ip']
|
311
325
|
end
|
312
326
|
return ip
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'gogrid_client'
|
2
|
+
require 'ap'
|
3
|
+
|
4
|
+
user='fbb1de3897597ccf'
|
5
|
+
password='ngieth10'
|
6
|
+
|
7
|
+
client=GoGridClient.new('https://api.gogrid.com/api', user, password)
|
8
|
+
|
9
|
+
ap client.request('grid/ip/list', {
|
10
|
+
'ip.type' => '1',
|
11
|
+
'ip.state' => '1',
|
12
|
+
'datacenter' => '1'
|
13
|
+
})
|
@@ -257,6 +257,15 @@ class MockDriver < Deltacloud::BaseDriver
|
|
257
257
|
snapshots
|
258
258
|
end
|
259
259
|
|
260
|
+
def valid_credentials?(credentials)
|
261
|
+
begin
|
262
|
+
check_credentials(credentials)
|
263
|
+
return true
|
264
|
+
rescue Deltacloud::AuthException
|
265
|
+
end
|
266
|
+
return false
|
267
|
+
end
|
268
|
+
|
260
269
|
private
|
261
270
|
|
262
271
|
def check_credentials(credentials)
|
@@ -73,6 +73,11 @@ class RackspaceDriver < Deltacloud::BaseDriver
|
|
73
73
|
safely do
|
74
74
|
racks.reboot_server(id)
|
75
75
|
end
|
76
|
+
Instance.new( {
|
77
|
+
:id => id,
|
78
|
+
:state => "REBOOT",
|
79
|
+
:actions => instance_actions_for( state ),
|
80
|
+
} )
|
76
81
|
end
|
77
82
|
|
78
83
|
def stop_instance(credentials, id)
|
@@ -84,6 +89,11 @@ class RackspaceDriver < Deltacloud::BaseDriver
|
|
84
89
|
safely do
|
85
90
|
racks.delete_server(id)
|
86
91
|
end
|
92
|
+
Instance.new( {
|
93
|
+
:id => id,
|
94
|
+
:state => "STOPPED",
|
95
|
+
:actions => instance_actions_for( "STOPPED" ),
|
96
|
+
} )
|
87
97
|
end
|
88
98
|
|
89
99
|
|
@@ -121,9 +131,17 @@ class RackspaceDriver < Deltacloud::BaseDriver
|
|
121
131
|
instances
|
122
132
|
end
|
123
133
|
|
134
|
+
def valid_credentials?(credentials)
|
135
|
+
begin
|
136
|
+
new_client(credentials)
|
137
|
+
rescue
|
138
|
+
return false
|
139
|
+
end
|
140
|
+
true
|
141
|
+
end
|
142
|
+
|
124
143
|
|
125
144
|
def convert_srv_to_instance(srv)
|
126
|
-
status = srv["status"] == "ACTIVE" ? "RUNNING" : "PENDING"
|
127
145
|
inst = Instance.new(:id => srv["id"].to_s,
|
128
146
|
:owner_id => "root",
|
129
147
|
:realm_id => "us")
|
@@ -118,7 +118,7 @@ VAPP_STATE_MAP = { "0" => "PENDING", "1" => "PENDING", "2" => "STOPPED", "4"
|
|
118
118
|
running.to(:running) .on( :reboot )
|
119
119
|
running.to(:shutting_down) .on( :stop )
|
120
120
|
shutting_down.to(:stopped) .automatically
|
121
|
-
stopped.to(:
|
121
|
+
stopped.to(:finish) .on( :destroy )
|
122
122
|
end
|
123
123
|
|
124
124
|
|
@@ -191,6 +191,15 @@ def destroy_instance(credentials, id)
|
|
191
191
|
end
|
192
192
|
end
|
193
193
|
|
194
|
+
def valid_credentials?(credentials)
|
195
|
+
begin
|
196
|
+
new_client(credentials)
|
197
|
+
rescue Deltacloud::AuthException
|
198
|
+
return false
|
199
|
+
end
|
200
|
+
true
|
201
|
+
end
|
202
|
+
|
194
203
|
#--
|
195
204
|
# PRIVATE METHODS:
|
196
205
|
#--
|
@@ -20,8 +20,8 @@
|
|
20
20
|
module ApplicationHelper
|
21
21
|
|
22
22
|
def bread_crumb
|
23
|
-
s = "<ul class='breadcrumb'><li class='first'><a href='/'>δ</a></li>"
|
24
|
-
url = request.
|
23
|
+
s = "<ul class='breadcrumb'><li class='first'><a href='#{url_for('/')}'>δ</a></li>"
|
24
|
+
url = request.path_info.split('?') #remove extra query string parameters
|
25
25
|
levels = url[0].split('/') #break up url into different levels
|
26
26
|
levels.each_with_index do |level, index|
|
27
27
|
unless level.blank?
|
@@ -30,7 +30,7 @@ module ApplicationHelper
|
|
30
30
|
s += "<li class='subsequent'>#{level.gsub(/_/, ' ')}</li>\n" unless level.to_i > 0
|
31
31
|
else
|
32
32
|
link = levels.slice(0, index+1).join("/")
|
33
|
-
s += "<li class='subsequent'><a href=\"#{link}\">#{level.gsub(/_/, ' ')}</a></li>\n"
|
33
|
+
s += "<li class='subsequent'><a href=\"#{url_for(link)}\">#{level.gsub(/_/, ' ')}</a></li>\n"
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/lib/sinatra/url_for.rb
CHANGED
@@ -33,7 +33,13 @@ module Sinatra
|
|
33
33
|
raise TypeError, "Unknown url_for mode #{mode}"
|
34
34
|
end
|
35
35
|
url_escape = URI.escape(url_fragment)
|
36
|
-
|
36
|
+
# Don't add the base fragment if url_for gets called more than once
|
37
|
+
# per url or the url_fragment passed in is an absolute url
|
38
|
+
if url_escape.match(/^#{base}/) or url_escape.match(/^http/)
|
39
|
+
url_escape
|
40
|
+
else
|
41
|
+
"#{base}#{url_escape}"
|
42
|
+
end
|
37
43
|
end
|
38
44
|
|
39
45
|
def root_url
|
data/server.rb
CHANGED
@@ -38,10 +38,13 @@ error Deltacloud::BackendError do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# Redirect to /api
|
41
|
-
get '/' do redirect '/api'; end
|
41
|
+
get '/' do redirect url_for('/api'); end
|
42
42
|
|
43
43
|
get '/api\/?' do
|
44
44
|
@version = 0.1
|
45
|
+
if params[:force_auth]
|
46
|
+
return [401, 'Authentication failed'] unless driver.valid_credentials?(credentials)
|
47
|
+
end
|
45
48
|
respond_to do |format|
|
46
49
|
format.xml { haml :"api/show" }
|
47
50
|
format.json do
|
@@ -174,7 +177,7 @@ END
|
|
174
177
|
end
|
175
178
|
|
176
179
|
operation :show do
|
177
|
-
description 'Show an
|
180
|
+
description 'Show an instance identified by "id" parameter.'
|
178
181
|
param :id, :string, :required
|
179
182
|
control { show(:instance) }
|
180
183
|
end
|
data/test.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'tests/common'
|
2
|
+
|
3
|
+
module DeltacloudUnitTest
|
4
|
+
class UrlForTest < Test::Unit::TestCase
|
5
|
+
include Rack::Test::Methods
|
6
|
+
|
7
|
+
def app
|
8
|
+
Sinatra::Application
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_it_works_for_root
|
12
|
+
verify_url_for("/", "/")
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_it_works_for_root_absolute
|
16
|
+
verify_url_for("/", "http://localhost/", :full)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_it_works_with_spaces
|
20
|
+
verify_url_for("/url with spaces", "/url%20with%20spaces")
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_it_works_when_given_absolute
|
24
|
+
verify_url_for("http://test.com", "http://test.com")
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_it_works_when_not_at_root_context
|
28
|
+
verify_url_for("/", "context/", :path_only, {}, {"SCRIPT_NAME" => "context"})
|
29
|
+
end
|
30
|
+
|
31
|
+
def verify_url_for(url, expected_url, mode=:path_only, params={}, rack_env={})
|
32
|
+
# generate a unique url for each test
|
33
|
+
test_url = "/url_for_test/#{expected_url.hash}/#{Time.now.to_f}"
|
34
|
+
# Create our sinatra test endpoint
|
35
|
+
self.class.create_test_url_content(test_url, url, mode)
|
36
|
+
|
37
|
+
# verify the generated url matches what we expect
|
38
|
+
get test_url, params, rack_env
|
39
|
+
last_response.body.should == expected_url
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.create_test_url_content(test_url, url_content, mode)
|
43
|
+
get test_url do
|
44
|
+
content_type "text/plain"
|
45
|
+
url_for(url_content, mode)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/views/api/show.html.haml
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
- @operations.keys.sort_by { |k| k.to_s }.each do |operation|
|
17
17
|
%tr
|
18
18
|
%td{:style => "width:15em"}
|
19
|
-
%a{:href => "/api/docs/#{@collection.name.to_s}/#{operation}"} #{operation}
|
19
|
+
%a{:href => url_for("/api/docs/#{@collection.name.to_s}/#{operation}")} #{operation}
|
20
20
|
%td{:style => "width:10em"} #{@operations[operation].description}
|
21
21
|
|
22
22
|
%h3 Features:
|
@@ -34,4 +34,4 @@
|
|
34
34
|
%td= feature.description
|
35
35
|
%td
|
36
36
|
- feature.operations.each do |op|
|
37
|
-
%a{:href => "/api/docs/#{@collection.name.to_s}/#{op.name}"} #{op.name}
|
37
|
+
%a{:href => url_for("/api/docs/#{@collection.name.to_s}/#{op.name}")} #{op.name}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
%docs{:status => "unsupported"}
|
2
|
-
%collection{:url => "/api/docs/#{@collection.name}", :name => "#{@collection.name}"}
|
2
|
+
%collection{:url => url_for("/api/docs/#{@collection.name}"), :name => "#{@collection.name}"}
|
3
3
|
%description #{@collection.description}
|
4
4
|
%operations
|
5
5
|
- @operations.keys.sort_by { |k| k.to_s }.each do |operation|
|
6
|
-
%operation{:url => "/api/#{@collection.name.to_s}", :name => "#{operation}", :href => "#{@operations[operation].path}", :method => "#{@operations[operation].method}"}
|
6
|
+
%operation{:url => url_for("/api/#{@collection.name.to_s}"), :name => "#{operation}", :href => url_for("#{@operations[operation].path}"), :method => "#{@operations[operation].method}"}
|
7
7
|
%description #{@operations[operation].description}
|
8
8
|
- @operations[operation].each_param do |param|
|
9
9
|
%parameter{:name => "#{param.name}", :type => "#{param.type}"}
|
data/views/docs/index.html.haml
CHANGED
@@ -11,5 +11,5 @@
|
|
11
11
|
- collections.keys.sort_by { |k| k.to_s }.each do |collection|
|
12
12
|
%tr
|
13
13
|
%td{:style => "width:15em"}
|
14
|
-
%a{:href => "/api/docs/#{collection}"} #{collection}
|
14
|
+
%a{:href => url_for("/api/docs/#{collection}")} #{collection}
|
15
15
|
%td{:style => "width:10em"} #{collections[collection].description}
|
data/views/docs/index.xml.haml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
%docs{:status => "unsupported"}
|
2
2
|
- collections.keys.sort_by { |k| k.to_s }.each do |collection|
|
3
|
-
%collection{:url => "/api/docs/#{collection}"}
|
3
|
+
%collection{:url => url_for("/api/docs/#{collection}")}
|
4
4
|
%name #{collection}
|
5
5
|
%description #{collections[collection].description}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
%h2
|
2
|
-
%a{:href => "/api/docs/#{@collection.name.to_s}"} #{@collection.name.to_s.titlecase}
|
2
|
+
%a{:href => url_for("/api/docs/#{@collection.name.to_s}")} #{@collection.name.to_s.titlecase}
|
3
3
|
#{'::'}
|
4
4
|
#{@operation.name}
|
5
5
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
%h3
|
10
10
|
URL:
|
11
11
|
%u
|
12
|
-
= "/api/#{@collection.name.to_s}/#{@operation.name.to_s}"
|
12
|
+
= url_for("/api/#{@collection.name.to_s}/#{@operation.name.to_s}")
|
13
13
|
%br
|
14
14
|
%h3 Parameters:
|
15
15
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
%docs{:status => "unsupported"}
|
2
|
-
%operation{:url => "/api/docs/#{@collection.name.to_s}", :name => "#{@operation.name.to_s}", :href => "#{@operation.path}", :method => "#{@operation.method}"}
|
2
|
+
%operation{:url => url_for("/api/docs/#{@collection.name.to_s}"), :name => "#{@operation.name.to_s}", :href => url_for("#{@operation.path}"), :method => "#{@operation.method}"}
|
3
3
|
%description #{@operation.description}
|
4
4
|
- @operation.each_param do |param|
|
5
5
|
%parameter{:name => "#{param.name}", :type => "#{param.type}"}
|
data/views/layout.html.haml
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deltacloud-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Red Hat, Inc.
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-09-10 00:00:00 +02:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: rake
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 49
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
- 8
|
@@ -35,9 +38,11 @@ dependencies:
|
|
35
38
|
name: eventmachine
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 59
|
41
46
|
segments:
|
42
47
|
- 0
|
43
48
|
- 12
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: haml
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - ">="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 37
|
55
62
|
segments:
|
56
63
|
- 2
|
57
64
|
- 2
|
@@ -63,9 +70,11 @@ dependencies:
|
|
63
70
|
name: sinatra
|
64
71
|
prerelease: false
|
65
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
66
74
|
requirements:
|
67
75
|
- - ">="
|
68
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 51
|
69
78
|
segments:
|
70
79
|
- 0
|
71
80
|
- 9
|
@@ -77,9 +86,11 @@ dependencies:
|
|
77
86
|
name: rack
|
78
87
|
prerelease: false
|
79
88
|
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
80
90
|
requirements:
|
81
91
|
- - ">="
|
82
92
|
- !ruby/object:Gem::Version
|
93
|
+
hash: 23
|
83
94
|
segments:
|
84
95
|
- 1
|
85
96
|
- 0
|
@@ -91,9 +102,11 @@ dependencies:
|
|
91
102
|
name: thin
|
92
103
|
prerelease: false
|
93
104
|
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
94
106
|
requirements:
|
95
107
|
- - ">="
|
96
108
|
- !ruby/object:Gem::Version
|
109
|
+
hash: 21
|
97
110
|
segments:
|
98
111
|
- 1
|
99
112
|
- 2
|
@@ -105,9 +118,11 @@ dependencies:
|
|
105
118
|
name: rerun
|
106
119
|
prerelease: false
|
107
120
|
requirement: &id007 !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
108
122
|
requirements:
|
109
123
|
- - ">="
|
110
124
|
- !ruby/object:Gem::Version
|
125
|
+
hash: 15
|
111
126
|
segments:
|
112
127
|
- 0
|
113
128
|
- 5
|
@@ -119,9 +134,11 @@ dependencies:
|
|
119
134
|
name: json
|
120
135
|
prerelease: false
|
121
136
|
requirement: &id008 !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
122
138
|
requirements:
|
123
139
|
- - ">="
|
124
140
|
- !ruby/object:Gem::Version
|
141
|
+
hash: 1
|
125
142
|
segments:
|
126
143
|
- 1
|
127
144
|
- 4
|
@@ -133,9 +150,11 @@ dependencies:
|
|
133
150
|
name: compass
|
134
151
|
prerelease: false
|
135
152
|
requirement: &id009 !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
136
154
|
requirements:
|
137
155
|
- - ">="
|
138
156
|
- !ruby/object:Gem::Version
|
157
|
+
hash: 29
|
139
158
|
segments:
|
140
159
|
- 0
|
141
160
|
- 8
|
@@ -147,9 +166,11 @@ dependencies:
|
|
147
166
|
name: nokogiri
|
148
167
|
prerelease: false
|
149
168
|
requirement: &id010 !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
150
170
|
requirements:
|
151
171
|
- - ">="
|
152
172
|
- !ruby/object:Gem::Version
|
173
|
+
hash: 5
|
153
174
|
segments:
|
154
175
|
- 1
|
155
176
|
- 4
|
@@ -161,9 +182,11 @@ dependencies:
|
|
161
182
|
name: rack-test
|
162
183
|
prerelease: false
|
163
184
|
requirement: &id011 !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
164
186
|
requirements:
|
165
187
|
- - ">="
|
166
188
|
- !ruby/object:Gem::Version
|
189
|
+
hash: 13
|
167
190
|
segments:
|
168
191
|
- 0
|
169
192
|
- 5
|
@@ -175,9 +198,11 @@ dependencies:
|
|
175
198
|
name: cucumber
|
176
199
|
prerelease: false
|
177
200
|
requirement: &id012 !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
178
202
|
requirements:
|
179
203
|
- - ">="
|
180
204
|
- !ruby/object:Gem::Version
|
205
|
+
hash: 1
|
181
206
|
segments:
|
182
207
|
- 0
|
183
208
|
- 6
|
@@ -189,9 +214,11 @@ dependencies:
|
|
189
214
|
name: rcov
|
190
215
|
prerelease: false
|
191
216
|
requirement: &id013 !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
192
218
|
requirements:
|
193
219
|
- - ">="
|
194
220
|
- !ruby/object:Gem::Version
|
221
|
+
hash: 43
|
195
222
|
segments:
|
196
223
|
- 0
|
197
224
|
- 9
|
@@ -210,129 +237,138 @@ extra_rdoc_files:
|
|
210
237
|
files:
|
211
238
|
- Rakefile
|
212
239
|
- config.ru
|
240
|
+
- test.rb
|
213
241
|
- deltacloud.rb
|
214
242
|
- server.rb
|
215
|
-
- support/fedora/deltacloudd
|
216
243
|
- support/fedora/rubygem-deltacloud-core.spec
|
217
|
-
-
|
218
|
-
- lib/
|
219
|
-
- lib/
|
220
|
-
- lib/
|
221
|
-
- lib/
|
244
|
+
- support/fedora/deltacloudd
|
245
|
+
- lib/drivers.rb
|
246
|
+
- lib/sinatra/respond_to.rb
|
247
|
+
- lib/sinatra/lazy_auth.rb
|
248
|
+
- lib/sinatra/accept_media_types.rb
|
249
|
+
- lib/sinatra/static_assets.rb
|
250
|
+
- lib/sinatra/url_for.rb
|
251
|
+
- lib/sinatra/rabbit.rb
|
252
|
+
- lib/deltacloud/models/base_model.rb
|
253
|
+
- lib/deltacloud/models/realm.rb
|
254
|
+
- lib/deltacloud/models/instance.rb
|
255
|
+
- lib/deltacloud/models/key.rb
|
256
|
+
- lib/deltacloud/models/instance_profile.rb
|
257
|
+
- lib/deltacloud/models/storage_volume.rb
|
258
|
+
- lib/deltacloud/models/storage_snapshot.rb
|
259
|
+
- lib/deltacloud/models/image.rb
|
260
|
+
- lib/deltacloud/method_serializer.rb
|
261
|
+
- lib/deltacloud/helpers.rb
|
222
262
|
- lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
|
263
|
+
- lib/deltacloud/drivers/ec2/ec2_driver.rb
|
264
|
+
- lib/deltacloud/drivers/terremark/terremark_driver.rb
|
265
|
+
- lib/deltacloud/drivers/gogrid/test.rb
|
223
266
|
- lib/deltacloud/drivers/gogrid/gogrid_client.rb
|
224
267
|
- lib/deltacloud/drivers/gogrid/gogrid_driver.rb
|
225
|
-
- lib/deltacloud/drivers/mock/mock_driver.rb
|
226
|
-
- lib/deltacloud/drivers/opennebula/cloud_client.rb
|
227
|
-
- lib/deltacloud/drivers/opennebula/occi_client.rb
|
228
268
|
- lib/deltacloud/drivers/opennebula/opennebula_driver.rb
|
269
|
+
- lib/deltacloud/drivers/opennebula/occi_client.rb
|
270
|
+
- lib/deltacloud/drivers/opennebula/cloud_client.rb
|
271
|
+
- lib/deltacloud/drivers/mock/mock_driver.rb
|
272
|
+
- lib/deltacloud/drivers/rimuhosting/rimuhosting_driver.rb
|
273
|
+
- lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb
|
229
274
|
- lib/deltacloud/drivers/rackspace/rackspace_client.rb
|
230
275
|
- lib/deltacloud/drivers/rackspace/rackspace_driver.rb
|
231
276
|
- lib/deltacloud/drivers/rhevm/rhevm_driver.rb
|
232
|
-
- lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb
|
233
|
-
- lib/deltacloud/drivers/rimuhosting/rimuhosting_driver.rb
|
234
|
-
- lib/deltacloud/drivers/terremark/terremark_driver.rb
|
235
277
|
- lib/deltacloud/hardware_profile.rb
|
236
|
-
- lib/deltacloud/
|
278
|
+
- lib/deltacloud/validation.rb
|
279
|
+
- lib/deltacloud/base_driver/mock_driver.rb
|
280
|
+
- lib/deltacloud/base_driver/base_driver.rb
|
281
|
+
- lib/deltacloud/base_driver/features.rb
|
282
|
+
- lib/deltacloud/helpers/hardware_profiles_helper.rb
|
237
283
|
- lib/deltacloud/helpers/application_helper.rb
|
238
284
|
- lib/deltacloud/helpers/conversion_helper.rb
|
239
|
-
- lib/deltacloud/helpers/hardware_profiles_helper.rb
|
240
|
-
- lib/deltacloud/method_serializer.rb
|
241
|
-
- lib/deltacloud/models/base_model.rb
|
242
|
-
- lib/deltacloud/models/image.rb
|
243
|
-
- lib/deltacloud/models/instance.rb
|
244
|
-
- lib/deltacloud/models/instance_profile.rb
|
245
|
-
- lib/deltacloud/models/realm.rb
|
246
|
-
- lib/deltacloud/models/storage_snapshot.rb
|
247
|
-
- lib/deltacloud/models/storage_volume.rb
|
248
|
-
- lib/deltacloud/models/key.rb
|
249
285
|
- lib/deltacloud/state_machine.rb
|
250
|
-
- lib/deltacloud/
|
251
|
-
- lib/drivers.
|
252
|
-
- lib/
|
253
|
-
- lib/
|
254
|
-
- lib/
|
255
|
-
- lib/
|
256
|
-
- lib/
|
257
|
-
- lib/sinatra/url_for.rb
|
258
|
-
- lib/deltacloud/drivers/mock/data/images/img1.yml
|
286
|
+
- lib/deltacloud/base_driver.rb
|
287
|
+
- lib/deltacloud/drivers/mock/data/storage_volumes/vol1.yml
|
288
|
+
- lib/deltacloud/drivers/mock/data/storage_volumes/vol3.yml
|
289
|
+
- lib/deltacloud/drivers/mock/data/storage_volumes/vol2.yml
|
290
|
+
- lib/deltacloud/drivers/mock/data/storage_snapshots/snap3.yml
|
291
|
+
- lib/deltacloud/drivers/mock/data/storage_snapshots/snap1.yml
|
292
|
+
- lib/deltacloud/drivers/mock/data/storage_snapshots/snap2.yml
|
259
293
|
- lib/deltacloud/drivers/mock/data/images/img2.yml
|
260
294
|
- lib/deltacloud/drivers/mock/data/images/img3.yml
|
261
|
-
- lib/deltacloud/drivers/mock/data/
|
295
|
+
- lib/deltacloud/drivers/mock/data/images/img1.yml
|
262
296
|
- lib/deltacloud/drivers/mock/data/instances/inst1.yml
|
263
297
|
- lib/deltacloud/drivers/mock/data/instances/inst2.yml
|
264
|
-
- lib/deltacloud/drivers/mock/data/
|
265
|
-
-
|
266
|
-
-
|
267
|
-
-
|
268
|
-
-
|
269
|
-
-
|
298
|
+
- lib/deltacloud/drivers/mock/data/instances/inst0.yml
|
299
|
+
- views/instance_states/show.xml.haml
|
300
|
+
- views/instance_states/show.html.haml
|
301
|
+
- views/root/index.html.haml
|
302
|
+
- views/storage_volumes/show.xml.haml
|
303
|
+
- views/storage_volumes/index.xml.haml
|
304
|
+
- views/storage_volumes/index.html.haml
|
305
|
+
- views/storage_volumes/show.html.haml
|
270
306
|
- views/accounts/index.html.haml
|
271
307
|
- views/accounts/show.html.haml
|
272
|
-
- views/
|
273
|
-
- views/
|
274
|
-
- views/
|
275
|
-
- views/
|
276
|
-
- views/
|
277
|
-
- views/
|
278
|
-
- views/docs/operation.html.haml
|
279
|
-
- views/docs/operation.xml.haml
|
280
|
-
- views/errors/auth_exception.html.haml
|
308
|
+
- views/storage_snapshots/show.xml.haml
|
309
|
+
- views/storage_snapshots/index.xml.haml
|
310
|
+
- views/storage_snapshots/index.html.haml
|
311
|
+
- views/storage_snapshots/show.html.haml
|
312
|
+
- views/layout.html.haml
|
313
|
+
- views/errors/not_found.html.haml
|
281
314
|
- views/errors/auth_exception.xml.haml
|
282
|
-
- views/errors/backend_error.html.haml
|
283
|
-
- views/errors/backend_error.xml.haml
|
284
|
-
- views/errors/validation_failure.html.haml
|
285
315
|
- views/errors/validation_failure.xml.haml
|
286
|
-
- views/errors/not_found.html.haml
|
287
316
|
- views/errors/not_found.xml.haml
|
288
|
-
- views/
|
289
|
-
- views/
|
290
|
-
- views/
|
291
|
-
- views/
|
292
|
-
- views/images/
|
317
|
+
- views/errors/backend_error.xml.haml
|
318
|
+
- views/errors/auth_exception.html.haml
|
319
|
+
- views/errors/backend_error.html.haml
|
320
|
+
- views/errors/validation_failure.html.haml
|
321
|
+
- views/images/show.xml.haml
|
293
322
|
- views/images/index.xml.haml
|
323
|
+
- views/images/index.html.haml
|
294
324
|
- views/images/show.html.haml
|
295
|
-
- views/
|
296
|
-
- views/
|
297
|
-
- views/
|
298
|
-
- views/
|
325
|
+
- views/api/show.xml.haml
|
326
|
+
- views/api/show.html.haml
|
327
|
+
- views/keys/show.xml.haml
|
328
|
+
- views/keys/new.html.haml
|
329
|
+
- views/keys/index.xml.haml
|
330
|
+
- views/keys/index.html.haml
|
331
|
+
- views/keys/show.html.haml
|
332
|
+
- views/instances/show.xml.haml
|
299
333
|
- views/instances/index.xml.haml
|
300
|
-
- views/instances/
|
334
|
+
- views/instances/index.html.haml
|
301
335
|
- views/instances/show.html.haml
|
302
|
-
- views/instances/
|
303
|
-
- views/
|
304
|
-
- views/
|
336
|
+
- views/instances/new.html.haml
|
337
|
+
- views/hardware_profiles/show.xml.haml
|
338
|
+
- views/hardware_profiles/index.xml.haml
|
339
|
+
- views/hardware_profiles/index.html.haml
|
340
|
+
- views/hardware_profiles/show.html.haml
|
341
|
+
- views/docs/operation.xml.haml
|
342
|
+
- views/docs/operation.html.haml
|
343
|
+
- views/docs/collection.xml.haml
|
344
|
+
- views/docs/index.xml.haml
|
345
|
+
- views/docs/index.html.haml
|
346
|
+
- views/docs/collection.html.haml
|
347
|
+
- views/realms/show.xml.haml
|
305
348
|
- views/realms/index.xml.haml
|
306
349
|
- views/realms/show.html.haml
|
307
|
-
- views/realms/
|
308
|
-
- views/root/index.html.haml
|
309
|
-
- views/storage_snapshots/index.html.haml
|
310
|
-
- views/storage_snapshots/index.xml.haml
|
311
|
-
- views/storage_snapshots/show.html.haml
|
312
|
-
- views/storage_snapshots/show.xml.haml
|
313
|
-
- views/storage_volumes/index.html.haml
|
314
|
-
- views/storage_volumes/index.xml.haml
|
315
|
-
- views/storage_volumes/show.html.haml
|
316
|
-
- views/storage_volumes/show.xml.haml
|
317
|
-
- views/keys/index.html.haml
|
318
|
-
- views/keys/index.xml.haml
|
319
|
-
- views/keys/new.html.haml
|
320
|
-
- views/keys/show.html.haml
|
321
|
-
- views/keys/show.xml.haml
|
350
|
+
- views/realms/index.html.haml
|
322
351
|
- views/instance_states/show.gv.erb
|
323
352
|
- public/favicon.ico
|
353
|
+
- public/images/topbar-bg.png
|
324
354
|
- public/images/grid.png
|
325
|
-
- public/images/logo-wide.png
|
326
355
|
- public/images/rails.png
|
327
|
-
- public/images/
|
328
|
-
- public/javascripts/application.js
|
356
|
+
- public/images/logo-wide.png
|
329
357
|
- public/javascripts/jquery-1.4.2.min.js
|
330
|
-
- public/
|
358
|
+
- public/javascripts/application.js
|
331
359
|
- public/stylesheets/compiled/ie.css
|
360
|
+
- public/stylesheets/compiled/application.css
|
332
361
|
- public/stylesheets/compiled/print.css
|
333
362
|
- public/stylesheets/compiled/screen.css
|
334
363
|
- bin/deltacloudd
|
335
364
|
- COPYING
|
365
|
+
- tests/instance_states_test.rb
|
366
|
+
- tests/api_test.rb
|
367
|
+
- tests/instances_test.rb
|
368
|
+
- tests/hardware_profiles_test.rb
|
369
|
+
- tests/realms_test.rb
|
370
|
+
- tests/images_test.rb
|
371
|
+
- tests/url_for_test.rb
|
336
372
|
has_rdoc: true
|
337
373
|
homepage: http://www.deltacloud.org
|
338
374
|
licenses: []
|
@@ -343,32 +379,37 @@ rdoc_options: []
|
|
343
379
|
require_paths:
|
344
380
|
- lib
|
345
381
|
required_ruby_version: !ruby/object:Gem::Requirement
|
382
|
+
none: false
|
346
383
|
requirements:
|
347
384
|
- - ">="
|
348
385
|
- !ruby/object:Gem::Version
|
386
|
+
hash: 53
|
349
387
|
segments:
|
350
388
|
- 1
|
351
389
|
- 8
|
352
390
|
- 1
|
353
391
|
version: 1.8.1
|
354
392
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
393
|
+
none: false
|
355
394
|
requirements:
|
356
395
|
- - ">="
|
357
396
|
- !ruby/object:Gem::Version
|
397
|
+
hash: 3
|
358
398
|
segments:
|
359
399
|
- 0
|
360
400
|
version: "0"
|
361
401
|
requirements: []
|
362
402
|
|
363
403
|
rubyforge_project:
|
364
|
-
rubygems_version: 1.3.
|
404
|
+
rubygems_version: 1.3.7
|
365
405
|
signing_key:
|
366
406
|
specification_version: 3
|
367
407
|
summary: Deltacloud REST API
|
368
408
|
test_files:
|
369
|
-
- tests/
|
370
|
-
- tests/images_test.rb
|
371
|
-
- tests/instances_test.rb
|
409
|
+
- tests/instance_states_test.rb
|
372
410
|
- tests/api_test.rb
|
411
|
+
- tests/instances_test.rb
|
373
412
|
- tests/hardware_profiles_test.rb
|
374
|
-
- tests/
|
413
|
+
- tests/realms_test.rb
|
414
|
+
- tests/images_test.rb
|
415
|
+
- tests/url_for_test.rb
|