You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by ma...@apache.org on 2012/01/03 10:39:05 UTC
svn commit: r1226715 -
/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb
Author: marios
Date: Tue Jan 3 09:39:04 2012
New Revision: 1226715
URL: http://svn.apache.org/viewvc?rev=1226715&view=rev
Log:
Adds attach/detach volume to deltacloud mock driver
Modified:
deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb
Modified: deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb
URL: http://svn.apache.org/viewvc/deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb?rev=1226715&r1=1226714&r2=1226715&view=diff
==============================================================================
--- deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb (original)
+++ deltacloud/trunk/server/lib/deltacloud/drivers/mock/mock_driver.rb Tue Jan 3 09:39:04 2012
@@ -264,6 +264,17 @@ module Deltacloud::Drivers::Mock
@client.destroy(:storage_volumes, opts[:id])
end
+ #opts: {:id=,:instance_id,:device}
+ def attach_storage_volume(credentials, opts)
+ check_credentials(credentials)
+ attach_volume_instance(opts[:id], opts[:device], opts[:instance_id])
+ end
+
+ def detach_storage_volume(credentials, opts)
+ check_credentials(credentials)
+ detach_volume_instance(opts[:id], opts[:instance_id])
+ end
+
#
# Storage Snapshots
#
@@ -440,6 +451,32 @@ module Deltacloud::Drivers::Mock
end
end
+ def attach_volume_instance(volume_id, device, instance_id)
+ volume = @client.load(:storage_volumes, volume_id)
+ instance = @client.load(:instances, instance_id)
+ volume[:instance_id] = instance_id
+ volume[:device] = device
+ volume[:state] = "IN-USE"
+ instance[:storage_volumes] ||= []
+ instance[:storage_volumes] << {volume_id=>device}
+ @client.store(:storage_volumes, volume)
+ @client.store(:instances, instance)
+ StorageVolume.new(volume)
+ end
+
+ def detach_volume_instance(volume_id, instance_id)
+ volume = @client.load(:storage_volumes, volume_id)
+ instance = @client.load(:instances, instance_id)
+ volume[:instance_id] = nil
+ device = volume[:device]
+ volume[:device] = nil
+ volume[:state] = "AVAILABLE"
+ instance[:storage_volumes].delete({volume_id => device}) unless instance[:storage_volumes].nil?
+ @client.store(:storage_volumes, volume)
+ @client.store(:instances, instance)
+ StorageVolume.new(volume)
+ end
+
exceptions do
on /AuthFailure/ do