mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[ec2] snapshots, parse missing fields, allow description, consolidated shindo tests
This commit is contained in:
parent
b8823a7c8f
commit
04ecade81b
5 changed files with 80 additions and 6 deletions
|
@ -7,10 +7,14 @@ module Fog
|
||||||
|
|
||||||
def end_element(name)
|
def end_element(name)
|
||||||
case name
|
case name
|
||||||
when 'progress', 'snapshotId', 'status', 'volumeId'
|
when 'description', 'ownerId', 'progress', 'snapshotId', 'status', 'volumeId'
|
||||||
|
@response[name] = @value
|
||||||
|
when 'requestId'
|
||||||
@response[name] = @value
|
@response[name] = @value
|
||||||
when 'startTime'
|
when 'startTime'
|
||||||
@response[name] = Time.parse(@value)
|
@response[name] = Time.parse(@value)
|
||||||
|
when 'volumeSize'
|
||||||
|
@response[name] = @value.to_i
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,10 +15,14 @@ module Fog
|
||||||
when 'item'
|
when 'item'
|
||||||
@response['snapshotSet'] << @snapshot
|
@response['snapshotSet'] << @snapshot
|
||||||
@snapshot = {}
|
@snapshot = {}
|
||||||
when 'progress', 'snapshotId', 'status', 'volumeId'
|
when 'description', 'ownerId', 'progress', 'snapshotId', 'status', 'volumeId'
|
||||||
@snapshot[name] = @value
|
@snapshot[name] = @value
|
||||||
|
when 'requestId'
|
||||||
|
@response[name] = @value
|
||||||
when 'startTime'
|
when 'startTime'
|
||||||
@snapshot[name] = Time.parse(@value)
|
@snapshot[name] = Time.parse(@value)
|
||||||
|
when 'volumeSize'
|
||||||
|
@snapshot[name] = @value.to_i
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,12 @@ module Fog
|
||||||
# * 'startTime'<~Time> - timestamp when snapshot was initiated
|
# * 'startTime'<~Time> - timestamp when snapshot was initiated
|
||||||
# * 'status'<~String> - state of snapshot
|
# * 'status'<~String> - state of snapshot
|
||||||
# * 'volumeId'<~String> - id of volume snapshot targets
|
# * 'volumeId'<~String> - id of volume snapshot targets
|
||||||
def create_snapshot(volume_id)
|
def create_snapshot(volume_id, description = nil)
|
||||||
request(
|
request(
|
||||||
'Action' => 'CreateSnapshot',
|
'Action' => 'CreateSnapshot',
|
||||||
'VolumeId' => volume_id,
|
'Description' => description,
|
||||||
:parser => Fog::Parsers::AWS::EC2::CreateSnapshot.new
|
'VolumeId' => volume_id,
|
||||||
|
:parser => Fog::Parsers::AWS::EC2::CreateSnapshot.new
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,22 @@ module AWS
|
||||||
'return' => ::Fog::Boolean
|
'return' => ::Fog::Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SNAPSHOT = {
|
||||||
|
'description' => NilClass,
|
||||||
|
'ownerId' => String,
|
||||||
|
'progress' => String,
|
||||||
|
'snapshotId' => String,
|
||||||
|
'startTime' => Time,
|
||||||
|
'status' => String,
|
||||||
|
'volumeId' => String,
|
||||||
|
'volumeSize' => Integer
|
||||||
|
}
|
||||||
|
|
||||||
|
SNAPSHOTS = {
|
||||||
|
'requestId' => String,
|
||||||
|
'snapshotSet' => [SNAPSHOT]
|
||||||
|
}
|
||||||
|
|
||||||
VOLUME = {
|
VOLUME = {
|
||||||
'availabilityZone' => String,
|
'availabilityZone' => String,
|
||||||
'createTime' => Time,
|
'createTime' => Time,
|
||||||
|
|
49
tests/aws/requests/ec2/snapshot_tests.rb
Normal file
49
tests/aws/requests/ec2/snapshot_tests.rb
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
Shindo.tests('AWS::EC2 | snapshot requests', ['aws']) do
|
||||||
|
|
||||||
|
@volume = AWS[:ec2].volumes.create(:availability_zone => 'us-east-1a', :size => 1)
|
||||||
|
|
||||||
|
tests('success') do
|
||||||
|
|
||||||
|
@snapshot_id = nil
|
||||||
|
|
||||||
|
test("#create_snapshot(#{@volume.identity})") do
|
||||||
|
@data = AWS[:ec2].create_snapshot(@volume.identity).body
|
||||||
|
@snapshot_id = @data['snapshotId']
|
||||||
|
has_format(@data, AWS::EC2::Formats::SNAPSHOT.merge('progress' => NilClass, 'requestId' => String))
|
||||||
|
end
|
||||||
|
|
||||||
|
test("#describe_snapshots") do
|
||||||
|
@data = AWS[:ec2].describe_snapshots.body
|
||||||
|
has_format(@data, AWS::EC2::Formats::SNAPSHOTS)
|
||||||
|
end
|
||||||
|
|
||||||
|
test("#describe_snapshots('#{@snapshot_id}')") do
|
||||||
|
@data = AWS[:ec2].describe_snapshots(@snapshot_id).body
|
||||||
|
has_format(@data, AWS::EC2::Formats::SNAPSHOTS)
|
||||||
|
end
|
||||||
|
|
||||||
|
test("#delete_snapshots(#{@snapshot_id})") do
|
||||||
|
@data = AWS[:ec2].delete_snapshot(@snapshot_id).body
|
||||||
|
has_format(@data, AWS::EC2::Formats::BASIC)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
tests ('failure') do
|
||||||
|
|
||||||
|
test("#describe_snapshot('snap-00000000') raises BadRequest error") do
|
||||||
|
has_error(Excon::Errors::BadRequest) do
|
||||||
|
AWS[:ec2].describe_snapshots('snap-00000000')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test("#delete_snapshot('snap-00000000') raises BadRequest error") do
|
||||||
|
has_error(Excon::Errors::BadRequest) do
|
||||||
|
AWS[:ec2].delete_snapshot('snap-00000000')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
@volume.destroy
|
||||||
|
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue