---
contrib/ruby/lib/cobbler/image.rb | 41 ++++++++++++++++++++++++++----------
1 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/contrib/ruby/lib/cobbler/image.rb b/contrib/ruby/lib/cobbler/image.rb
index c5a84f7..c5b7367 100644
--- a/contrib/ruby/lib/cobbler/image.rb
+++ b/contrib/ruby/lib/cobbler/image.rb
@@ -26,29 +26,46 @@ module Cobbler
#
class Image < Base
+ ATTRIBUTES = [:name, :owners, :depth, :virt_file_size,
+ :virt_path, :xml_file, :virt_bridge, :file, :parent]
+ #These attributes seem to not exist yet. :virt_ram, :virt_cpus,
+
cobbler_lifecycle :find_all => 'get_images',
:find_one => 'get_image',
:remove => 'remove_image'
- cobbler_field :name
- cobbler_field :owners
- cobbler_field :depth
- cobbler_field :virt_file_size
- cobbler_field :virt_path
- cobbler_field :xml_file
- cobbler_field :virt_bridge
- cobbler_field :virt_ram
- cobbler_field :file
- cobbler_field :virt_cpus
- cobbler_field :parent
+ ATTRIBUTES.each do |attr|
+ puts "Creating field with #{attr}"
+ cobbler_field attr
+ end
def initialize(definitions)
super(definitions)
end
+ # Saves this instance.
+ #
+ def save
+ Base.begin_transaction(true)
+
+ token = Base.login
+
+ raise Exception.new('Update failed prior to saving') unless
Base.make_call('update')
+
+ imgid = Base.make_call('new_image',token)
+
+ ATTRIBUTES.each do |attr|
+ Base.make_call('modify_image',imgid,attr.to_s, self.send(attr),token) if
self.send(attr) != nil
+ end
+
+ Base.make_call('save_image',imgid,token)
+
+ Base.end_transaction
+ end
+
private
- # Creates a new instance of +System+ from a result received from Cobbler.
+ # Creates a new instance of +Image+ from a result received from Cobbler.
#
def self.create(attrs)
Image.new(attrs)
--
1.5.5.2