mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
66 lines
2.7 KiB
Ruby
66 lines
2.7 KiB
Ruby
module Fog
|
|
module Storage
|
|
class IBM
|
|
class Real
|
|
|
|
# Requests a new Storage Volume be created.
|
|
#
|
|
# ==== Parameters
|
|
# * name<~String> - The alias to use to referance storage volume
|
|
# * offeringID<~String> - offering id can be requested from /computecloud/enterprise/api/rest/20100331/offerings/storage
|
|
# * format<~String> - filesystem format for volume
|
|
# * location<~String> - datacenter location for volume
|
|
# * size<~String> - size of volume desired (Small, Medium, Large) (varies by location what size actually is)
|
|
# * storageAreaID<~String> - (not supported yet)
|
|
#
|
|
# === Returns
|
|
# * response<~Excon::Response>:
|
|
# * body<~Hash>:
|
|
# * name<~String> - The alias to use to referance storage volume
|
|
# * format<~String> - filesystem format for storage
|
|
# * location<~String> - datacenter location for storage
|
|
# * createdTime<~Integer> - Epoch time of creation
|
|
# * size<~String> - size of storage desired (Small, Medium, Large) (varies by location what size actually is)
|
|
# * productCodes<~Array> -
|
|
# * offeringID<~String> - offering id can be requested from /computecloud/enterprise/api/rest/20100331/offerings/storage
|
|
# * id<~String> - id of new storage
|
|
# * owner<~String> - owner of new storage
|
|
# * state<~Integer> - state of newly requested storage
|
|
def create_volume(name, offering_id, format, location_id, size)
|
|
request(
|
|
:method => 'POST',
|
|
:expects => 200,
|
|
:path => '/storage',
|
|
:body => {
|
|
'name' => name,
|
|
'offeringID' => offering_id,
|
|
'format' => format,
|
|
'location' => location_id,
|
|
'size' => size
|
|
}
|
|
)
|
|
end
|
|
end
|
|
|
|
class Mock
|
|
|
|
def create_volume(name, offering_id, format, location_id, size)
|
|
volume = Fog::IBM::Mock.create_volume(name, offering_id, format, location_id, size)
|
|
self.data[:volumes][volume['id']] = volume
|
|
response = Excon::Response.new
|
|
response.status = 200
|
|
response.body = format_create_volume_response_for(volume['id'])
|
|
response
|
|
end
|
|
|
|
# The create_volume response doesn't contain ioPrice either
|
|
def format_create_volume_response_for(volume_id)
|
|
# If we aren't attached/ready, make us ready
|
|
ready_volume(volume_id) unless volume_attached? volume_id
|
|
self.data[:volumes][volume_id].reject { |k,v| k == 'ioPrice' }
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|