Sha256: d33ebf461c6323a6d6e4b3401a3b702f8d4743e6a18cd32c6667476d78700d66

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

module OVIRT

  class Interface < BaseObject
    attr_reader :name, :mac, :interface, :network, :vm

    def initialize(client=nil, xml={})
      if xml.is_a?(Hash)
        super(client, xml[:id], xml[:href], xml[:name])
        @network = xml[:network]
        @persisted = xml[:persisted]
      else
        super(client, xml[:id], xml[:href], (xml/'name').first.text)
        parse_xml_attributes!(xml)
      end
      self
    end

    def self.to_xml(opts={})
      builder = Nokogiri::XML::Builder.new do
        nic{
          name_(opts[:name] || "nic-#{Time.now.to_i}")
          if opts[:network]
            network :id => opts[:network]
          else
            network{ name_(opts[:network_name] || 'ovirtmgmt') }
          end
        }
      end
      Nokogiri::XML(builder.to_xml).root.to_s
    end

    def persisted?
      @persisted || !!id
    end

    def parse_xml_attributes!(xml)
     @mac = (xml/'mac').first[:address] rescue nil #template interfaces doesn't have MAC address.
     @interface = (xml/'interface').first.text
     @network = ((xml/'network').first[:id] rescue nil)
     @vm = Link::new(@client, (xml/'vm').first[:id], (xml/'vm').first[:href]) if (xml/'vm') rescue nil
     @template = Link::new(@client, (xml/'template').first[:id], (xml/'template').first[:href]) rescue nil
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rbovirt-0.0.24 lib/ovirt/interface.rb
rbovirt-0.0.23 lib/ovirt/interface.rb