[Ovirt-devel] [PATCH server] split StorageVolumeService.svc_new into two methods.
Scott Seago
sseago at redhat.com
Wed May 20 17:55:26 UTC 2009
Signed-off-by: Scott Seago <sseago at redhat.com>
---
src/app/controllers/storage_volume_controller.rb | 6 ++-
src/app/services/storage_volume_service.rb | 60 ++++++++++++---------
2 files changed, 39 insertions(+), 27 deletions(-)
diff --git a/src/app/controllers/storage_volume_controller.rb b/src/app/controllers/storage_volume_controller.rb
index b89513a..fb6bc9c 100644
--- a/src/app/controllers/storage_volume_controller.rb
+++ b/src/app/controllers/storage_volume_controller.rb
@@ -21,7 +21,11 @@ class StorageVolumeController < ApplicationController
include StorageVolumeService
def new
- svc_new(params[:storage_pool_id], params[:source_volume_id])
+ if params[:storage_pool_id]
+ svc_new(params[:storage_pool_id])
+ else
+ svc_new_lv(params[:source_volume_id])
+ end
@return_to_workflow = params[:return_to_workflow] || false
render :layout => 'popup'
end
diff --git a/src/app/services/storage_volume_service.rb b/src/app/services/storage_volume_service.rb
index a18fe55..368af9b 100644
--- a/src/app/services/storage_volume_service.rb
+++ b/src/app/services/storage_volume_service.rb
@@ -48,37 +48,45 @@ module StorageVolumeService
# === Instance variables
# [<tt>@storage_volume</tt>] loads a new StorageVolume object into memory
# [<tt>@storage_pool</tt>] Storage pool containing <tt>@storage_volume</tt>
- # [<tt>@source_volume</tt>] Storage volume containing the LVM
- # <tt>@storage_pool</tt> if storage type is LVM
# === Required permissions
# [<tt>Privilege::MODIFY</tt>] for the storage volume's HardwarePool
- def svc_new(storage_pool_id, source_volume_id)
- if storage_pool_id
- @storage_pool = StoragePool.find(storage_pool_id)
- unless @storage_pool.user_subdividable
- raise ActionError.new("Unsupported action for " +
- "#{@storage_pool.get_type_label} volumes.")
- end
- else
- @source_volume = StorageVolume.find(source_volume_id)
- @storage_pool = @source_volume.storage_pool
- unless @source_volume.supports_lvm_subdivision
- raise ActionError.new("LVM is not supported for this storage volume")
- end
+ def svc_new(storage_pool_id)
+ @storage_pool = StoragePool.find(storage_pool_id)
+ unless @storage_pool.user_subdividable
+ raise ActionError.new("Unsupported action for " +
+ "#{@storage_pool.get_type_label} volumes.")
end
authorized!(Privilege::MODIFY, at storage_pool.hardware_pool)
+ @storage_volume = StorageVolume.factory(@storage_pool.get_type_label,
+ { :storage_pool_id =>
+ @storage_pool.id})
+ end
+
+ # Load a new LvmStorageVolume for creating
+ #
+ # === Instance variables
+ # [<tt>@storage_volume</tt>] loads a new StorageVolume object into memory
+ # [<tt>@storage_pool</tt>] Storage pool containing <tt>@storage_volume</tt>
+ # [<tt>@source_volume</tt>] Storage volume containing the LVM
+ # <tt>@storage_pool</tt>
+ # === Required permissions
+ # [<tt>Privilege::MODIFY</tt>] for the storage volume's HardwarePool
+ def svc_new_lv(source_volume_id)
+ @source_volume = StorageVolume.find(source_volume_id)
+ unless @source_volume.supports_lvm_subdivision
+ raise ActionError.new("LVM is not supported for this storage volume")
+ end
+ authorized!(Privilege::MODIFY, at source_volume.storage_pool.hardware_pool)
- if source_volume_id
- @storage_pool = @source_volume.lvm_storage_pool
- unless @storage_pool
- # FIXME: what should we do about VG/LV names?
- # for now auto-create VG name as ovirt_vg_#{@source_volume.id}
- new_params = { :vg_name => "ovirt_vg_#{@source_volume.id}",
- :hardware_pool_id => @source_volume.storage_pool.hardware_pool_id}
- @storage_pool = StoragePool.factory(StoragePool::LVM, new_params)
- @storage_pool.source_volumes << @source_volume
- @storage_pool.save!
- end
+ @storage_pool = @source_volume.lvm_storage_pool
+ unless @storage_pool
+ # FIXME: what should we do about VG/LV names?
+ # for now auto-create VG name as ovirt_vg_#{@source_volume.id}
+ new_params = { :vg_name => "ovirt_vg_#{@source_volume.id}",
+ :hardware_pool_id => @source_volume.storage_pool.hardware_pool_id}
+ @storage_pool = StoragePool.factory(StoragePool::LVM, new_params)
+ @storage_pool.source_volumes << @source_volume
+ @storage_pool.save!
end
@storage_volume = StorageVolume.factory(@storage_pool.get_type_label,
{ :storage_pool_id =>
--
1.6.0.6
More information about the ovirt-devel
mailing list