1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

first pass at image specs

This commit is contained in:
Wesley Beary 2009-11-20 12:46:44 -08:00
parent e9251a9c06
commit 2027b8b0df
9 changed files with 73 additions and 10 deletions

View file

@ -43,7 +43,24 @@ else
module Rackspace module Rackspace
class Servers class Servers
def create_image def create_image(server_id, options = {})
response = Excon::Response.new
response.status = 202
now = Time.now
data = {
'created' => now,
'id' => 123456,
'name' => options['name'] || '',
'serverId' => server_id,
'status' => 'SAVING',
'updated' => now,
}
Fog::Rackspace::Servers.data[:last_modified][:images][data['id']] = now
Fog::Rackspace::Servers.data[:images][data['id']] = data
response.body = { 'image' => data.reject {|key, value| !['id', 'name', 'serverId'].include?(key)} }
response
end end
end end

View file

@ -90,7 +90,7 @@ else
'status' => 'BUILD' 'status' => 'BUILD'
} }
data['adminPass'] = "#{data['name']}password" data['adminPass'] = "#{data['name']}password"
Fog::Rackspace::Servers.data[:last_modified][data['id']] = Time.now Fog::Rackspace::Servers.data[:last_modified][:servers][data['id']] = Time.now
Fog::Rackspace::Servers.data[:servers][data['id']] = data Fog::Rackspace::Servers.data[:servers][data['id']] = data
response.body = { 'server' => data } response.body = { 'server' => data }
response response

View file

@ -27,7 +27,22 @@ else
module Rackspace module Rackspace
class Servers class Servers
def delete_image def delete_image(image_id)
response = Excon::Response.new
if image = list_images_detail.body['images'].detect {|image| image['id'] == image_id}
if image['status'] == 'SAVING'
response.status = 409
raise(Excon::Errors.status_error({:expects => 202}, response))
else
Fog::Rackspace::Servers.data[:last_modified][:images].delete(image_id)
Fog::Rackspace::Servers.data[:images].delete(image_id)
response.status = 202
end
else
response.status = 400
raise(Excon::Errors.status_error({:expects => 202}, response))
end
response
end end
end end

View file

@ -32,9 +32,9 @@ else
if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id } if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
if server['status'] == 'BUILD' if server['status'] == 'BUILD'
response.status = 409 response.status = 409
raise(Excon::Errors.status_error(202, 409, response)) raise(Excon::Errors.status_error({:expects => 202}, response))
else else
Fog::Rackspace::Servers.data[:last_modified].delete(server_id) Fog::Rackspace::Servers.data[:last_modified][:servers].delete(server_id)
Fog::Rackspace::Servers.data[:servers].delete(server_id) Fog::Rackspace::Servers.data[:servers].delete(server_id)
response.status = 202 response.status = 202
end end

View file

@ -30,6 +30,16 @@ else
class Servers class Servers
def list_images def list_images
response = Excon::Response.new
data = list_images_detail.body['images']
images = []
for image in data
images << image.reject { |key, value| !['id', 'name'].include?(key) }
end
response.status = [200, 203][rand(1)]
response.body = { 'images' => images }
response
end end
end end

View file

@ -32,7 +32,22 @@ else
module Rackspace module Rackspace
class Servers class Servers
def list_images def list_images_detail
response = Excon::Response.new
images = Fog::Rackspace::Servers.data[:images].values
for image in images
case image['status']
when 'SAVING'
if Time.now - Fog::Rackspace::Servers.data[:last_modified][:images][image['id']] > 2
image['status'] = 'ACTIVE'
end
end
end
response.status = [200, 203][rand(1)]
response.body = { 'images' => images }
response
end end
end end

View file

@ -46,7 +46,7 @@ else
for server in servers for server in servers
case server['status'] case server['status']
when 'BUILD' when 'BUILD'
if Time.now - Fog::Rackspace::Servers.data[:last_modified][server['id']] > 2 if Time.now - Fog::Rackspace::Servers.data[:last_modified][:servers][server['id']] > 2
server['status'] = 'ACTIVE' server['status'] = 'ACTIVE'
end end
end end

View file

@ -8,7 +8,11 @@ module Fog
end end
def self.reset_data def self.reset_data
@data = { @data = {
:last_modified => [], :last_modified => {
:images => {},
:servers => {}
},
:images => {},
:servers => {} :servers => {}
} }
end end

View file

@ -16,13 +16,15 @@ describe 'Rackspace::Servers.delete_image' do
end end
it "should return proper attributes" do it "should return proper attributes" do
eventually(128) do
servers.delete_image(@image_id) servers.delete_image(@image_id)
end end
end
end end
describe 'failure' do describe 'failure' do
it "should raise a NotFound error if the image does not exist" do it "should raise a BadRequest error if the image does not exist" do
lambda do lambda do
servers.delete_image(0) servers.delete_image(0)
end.should raise_error(Excon::Errors::BadRequest) end.should raise_error(Excon::Errors::BadRequest)