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:
parent
e9251a9c06
commit
2027b8b0df
9 changed files with 73 additions and 10 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue