1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/aws/requests/compute/create_volume.rb

74 lines
2.6 KiB
Ruby
Raw Normal View History

2010-03-16 18:46:21 -04:00
module Fog
module AWS
2010-09-08 17:40:02 -04:00
class Compute
2010-03-16 18:46:21 -04:00
class Real
2009-08-15 18:19:07 -04:00
2010-09-08 17:40:02 -04:00
require 'fog/aws/parsers/compute/create_volume'
2010-06-12 18:31:17 -04:00
2009-08-15 18:19:07 -04:00
# Create an EBS volume
#
# ==== Parameters
# * availability_zone<~String> - availability zone to create volume in
# * size<~Integer> - Size in GiBs for volume. Must be between 1 and 1024.
# * snapshot_id<~String> - Optional, snapshot to create volume from
#
# ==== Returns
# * response<~Excon::Response>:
2009-08-15 18:19:07 -04:00
# * body<~Hash>:
# * 'availabilityZone'<~String> - Availability zone for volume
# * 'createTime'<~Time> - Timestamp for creation
# * 'size'<~Integer> - Size in GiBs for volume
# * 'snapshotId'<~String> - Snapshot volume was created from, if any
# * 'status's<~String> - State of volume
# * 'volumeId'<~String> - Reference to volume
def create_volume(availability_zone, size, snapshot_id = nil)
request(
'Action' => 'CreateVolume',
'AvailabilityZone' => availability_zone,
'Size' => size,
'SnapshotId' => snapshot_id,
2010-09-08 17:40:02 -04:00
:parser => Fog::Parsers::AWS::Compute::CreateVolume.new
)
2009-08-15 18:19:07 -04:00
end
end
2010-03-16 18:46:21 -04:00
class Mock
2009-08-15 18:19:07 -04:00
def create_volume(availability_zone, size, snapshot_id = nil)
2009-11-20 14:08:08 -05:00
response = Excon::Response.new
if availability_zone && size
response.status = 200
volume_id = Fog::AWS::Mock.volume_id
data = {
'availabilityZone' => availability_zone,
'attachmentSet' => [],
'createTime' => Time.now,
'size' => size,
'snapshotId' => snapshot_id,
'status' => 'creating',
'volumeId' => volume_id
}
2010-03-16 18:46:21 -04:00
@data[:volumes][volume_id] = data
response.body = {
'requestId' => Fog::AWS::Mock.request_id
}.merge!(data.reject {|key,value| !['availabilityZone','createTime','size','snapshotId','status','volumeId'].include?(key) })
else
response.status = 400
response.body = {
'Code' => 'MissingParameter'
}
unless availability_zone
response.body['Message'] = 'The request must contain the parameter availability_zone'
else
response.body['Message'] = 'The request must contain the parameter size'
end
end
2009-08-15 18:19:07 -04:00
response
end
end
end
end
2009-08-15 18:19:07 -04:00
end