Sha256: a793936c96cecf04ae05093f5da474a8acd7f9993d822449b8a0dddca038b7f7

Contents?: true

Size: 1.6 KB

Versions: 19

Compression:

Stored size: 1.6 KB

Contents

module OVIRT
  class Template < BaseObject
    attr_reader :description, :status, :cluster, :creation_time, :os, :storage, :display, :profile, :memory

    def initialize(client, xml)
      super(client, xml[:id], xml[:href], (xml/'name').first.text)
      parse_xml_attributes!(xml)
      self
    end

    def self.to_xml(opts={})
      builder = Nokogiri::XML::Builder.new do
        template_ {
          name_ opts[:name] || "t-#{Time.now.to_i}"
          description opts[:description] || ''
          vm(:id => opts[:vm])
        }
      end
      Nokogiri::XML(builder.to_xml).root.to_s
    end

    def interfaces
      @interfaces ||= @client.template_interfaces(id)
    end

    def volumes
      @volumes ||= @client.send(:volumes, "/templates/%s/disks" % id)
    end

    private
    def parse_xml_attributes!(xml)
      @description = ((xml/'description').first.text rescue '')
      @status = ((xml/'status').first.text rescue 'unknown')
      @memory = (xml/'memory').first.text
      @profile = (xml/'type').first.text
      @cluster = Link::new(@client, (xml/'cluster').first[:id], (xml/'cluster').first[:href])
      @display = {
        :type => (xml/'display/type').first.text,
        :monitors => (xml/'display/monitors').first.text
      }
      @cores = ((xml/'cpu/topology').first[:cores].to_i * (xml/'cpu/topology').first[:sockets].to_i rescue nil)
      @storage = ((xml/'disks/disk/size').first.text rescue nil)
      @creation_time = (xml/'creation_time').text
      @os = {
          :type => (xml/'os').first[:type],
          :boot => (xml/'os/boot').collect {|boot| boot[:dev] }
      }
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
rbovirt-0.0.31 lib/ovirt/template.rb
rbovirt-0.0.30 lib/ovirt/template.rb
rbovirt-0.0.29 lib/ovirt/template.rb
rbovirt-0.0.28 lib/ovirt/template.rb
rbovirt-0.0.27 lib/ovirt/template.rb
rbovirt-0.0.26 lib/ovirt/template.rb
rbovirt-0.0.25 lib/ovirt/template.rb
rbovirt-0.0.24 lib/ovirt/template.rb
rbovirt-0.0.23 lib/ovirt/template.rb
rbovirt-0.0.22 lib/ovirt/template.rb
rbovirt-0.0.21 lib/ovirt/template.rb
rbovirt-0.0.20 lib/ovirt/template.rb
rbovirt-0.0.19 lib/ovirt/template.rb
rbovirt-0.0.18 lib/ovirt/template.rb
rbovirt-0.0.17 lib/ovirt/template.rb
rbovirt-0.0.16 lib/ovirt/template.rb
rbovirt-0.0.15 lib/ovirt/template.rb
rbovirt-0.0.14 lib/ovirt/template.rb
rbovirt-0.0.13 lib/ovirt/template.rb