diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/.gitkeep | 0 | ||||
-rw-r--r-- | app/models/image_info.rb | 6 | ||||
-rw-r--r-- | app/models/image_upload.rb | 10 | ||||
-rw-r--r-- | app/models/libvirt_extensions.rb | 15 |
4 files changed, 31 insertions, 0 deletions
diff --git a/app/models/.gitkeep b/app/models/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/app/models/.gitkeep diff --git a/app/models/image_info.rb b/app/models/image_info.rb new file mode 100644 index 0000000..9f84379 --- /dev/null +++ b/app/models/image_info.rb @@ -0,0 +1,6 @@ +class ImageInfo + include ActiveModel::Model + attr_accessor :source + # Libvirt specific + attr_accessor :pool_name, :volume_name +end diff --git a/app/models/image_upload.rb b/app/models/image_upload.rb new file mode 100644 index 0000000..22a8381 --- /dev/null +++ b/app/models/image_upload.rb @@ -0,0 +1,10 @@ +class ImageUpload + + def initialize(opts = {}) + @compute = opts[:compute] + end + + private + attr_reader :compute + +end diff --git a/app/models/libvirt_extensions.rb b/app/models/libvirt_extensions.rb new file mode 100644 index 0000000..b9b55c9 --- /dev/null +++ b/app/models/libvirt_extensions.rb @@ -0,0 +1,15 @@ +module LibvirtExtensions + extend ActiveSupport::Concern + + def upload_image source, pool_name, volume_name + begin + vol = new_volume(:name => volume_name, + :pool_name => pool_name, + :capacity => "#{File.size(source)}b") + vol.save + vol.upload_image source + rescue Libvirt::Error => e + raise Foreman::Exception.new("Cannot upload image '#{volume_name}' to '#{pool_name}': #{e}") + end + end +end |