aboutsummaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/.gitkeep0
-rw-r--r--app/models/image_info.rb6
-rw-r--r--app/models/image_upload.rb10
-rw-r--r--app/models/libvirt_extensions.rb15
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