snapshot mocks

This commit is contained in:
Wesley Beary 2009-08-20 19:26:14 -07:00
parent 2c25fae5f1
commit 96895338dc
4 changed files with 190 additions and 68 deletions

View File

@ -7,7 +7,14 @@ module Fog
@data
end
def self.reset_data
@data = { :deleted_at => {}, :addresses => {}, :key_pairs => {}, :security_groups => {}, :volumes => {} }
@data = {
:deleted_at => {},
:addresses => {},
:key_pairs => {},
:security_groups => {},
:snapshots => {},
:volumes => {}
}
end
end

View File

@ -1,3 +1,5 @@
unless Fog.mocking?
module Fog
module AWS
class EC2
@ -26,3 +28,38 @@ module Fog
end
end
end
else
module Fog
module AWS
class EC2
def create_snapshot(volume_id)
response = Fog::Response.new
if Fog::AWS::EC2.data[:volumes][volume_id]
response.status = 200
snapshot_id = Fog::AWS::Mock.snapshot_id
data = {
'progress' => '',
'snapshotId' => snapshot_id,
'startTime' => Time.now,
'status' => 'pending',
'volumeId' => volume_id
}
Fog::AWS::EC2.data[:snapshots][snapshot_id] = data
response.body = {
'requestId' => Fog::AWS::Mock.request_id
}.merge!(data)
else
response.status = 400
raise(Fog::Errors.status_error(200, 400, response))
end
response
end
end
end
end
end

View File

@ -1,3 +1,5 @@
unless Fog.mocking?
module Fog
module AWS
class EC2
@ -22,3 +24,30 @@ module Fog
end
end
end
else
module Fog
module AWS
class EC2
def delete_snapshot(snapshot_id)
response = Fog::Response.new
if snapshot = Fog::AWS::EC2.data[:snapshots].delete(snapshot_id)
response.status = true
response.body = {
'requestId' => Fog::AWS::Mock.request_id,
'return' => true
}
else
response.status = 400
raise(Fog::Errors.status_error(200, 400, response))
end
response
end
end
end
end
end

View File

@ -1,3 +1,5 @@
unless Fog.mocking?
module Fog
module AWS
class EC2
@ -27,3 +29,50 @@ module Fog
end
end
end
else
module Fog
module AWS
class EC2
def describe_snapshots(snapshot_id = [])
response = Fog::Response.new
snapshot_id = [*snapshot_id]
if snapshot_id != []
snapshot_set = Fog::AWS::EC2.data[:snapshots].reject {|key,value| !snapshot_id.include?(key)}.values
else
snapshot_set = Fog::AWS::EC2.data[:snapshots].values
end
snapshot_set.each do |snapshot|
case snapshot['status']
when 'creating'
if Time.now - volume['createTime'] > 2
snapshot['progress'] = '100%'
snapshot['status'] = 'completed'
else
snapshot['progress'] = '50%'
snapshot['status'] = 'in progress'
end
end
end
if snapshot_id.length == 0 || snapshot_id.length == snapshot_set.length
response.status = 200
response.body = {
'requestId' => Fog::AWS::Mock.request_id,
'snapshotSet' => snapshot_set
}
else
response.status = 400
raise(Fog::Errors.status_error(200, 400, response))
end
response
end
end
end
end
end