From 38bb493f04d33b07aadc857e263ca6a25af0b4d7 Mon Sep 17 00:00:00 2001 From: Rupak Ganguly Date: Thu, 5 Jul 2012 16:41:24 -0400 Subject: [PATCH] Add get_volume_details request method for block storage. --- lib/fog/hp/block_storage.rb | 2 +- .../block_storage/get_volume_details.rb | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 lib/fog/hp/requests/block_storage/get_volume_details.rb diff --git a/lib/fog/hp/block_storage.rb b/lib/fog/hp/block_storage.rb index a14aa3c26..f6fc8cf0a 100644 --- a/lib/fog/hp/block_storage.rb +++ b/lib/fog/hp/block_storage.rb @@ -15,7 +15,7 @@ module Fog request_path 'fog/hp/requests/block_storage' #request :create_volume #request :delete_volume - #request :get_volume_details + request :get_volume_details request :list_volumes module Utils diff --git a/lib/fog/hp/requests/block_storage/get_volume_details.rb b/lib/fog/hp/requests/block_storage/get_volume_details.rb new file mode 100644 index 000000000..219eb688f --- /dev/null +++ b/lib/fog/hp/requests/block_storage/get_volume_details.rb @@ -0,0 +1,58 @@ +module Fog + module BlockStorage + class HP + class Real + + # Get details for existing block storage volume + # + # ==== Parameters + # * volume_id<~Integer> - Id of the volume to get + # + # ==== Returns + # * response<~Excon::Response>: + # * body<~Hash>: + # * volume<~Hash>: + # * 'id'<~Integer>: - Id for the volume + # * 'displayName'<~String>: - Name of the volume + # * 'displayDescription'<~String>: - Description of the volume + # * 'size'<~Integer>: - Size in GB for the volume + # * 'status'<~String>: - Status of the volume i.e. "available" + # * 'volumeType'<~String>: - Type of the volume + # * 'snapshotId'<~String>: - Id of the volume snapshot + # * 'createdAt'<~String>: - Timestamp in UTC when volume was created + # * 'availabilityZone'<~String>: - Availability zone i.e. "nova" + # * attachments<~Array>: Array of hashes of attachments + # * metadata<~Hash>: Hash of metadata for the volume + + def get_volume_details(volume_id) + response = request( + :expects => 200, + :method => 'GET', + :path => "os-volumes/#{volume_id}" + ) + response + end + + end + + class Mock # :nodoc:all + + def get_volume_details(volume_id) + unless volume_id + raise ArgumentError.new('volume_id is required') + end + response = Excon::Response.new + if volume = self.data[:volumes][volume_id] + response.status = 200 + response.body = { 'volume' => volume } + response + else + raise Fog::BlockStorage::HP::NotFound + end + + end + end + + end + end +end \ No newline at end of file