Sha256: 822191cf745ca2544e8a2dbce607501ebf06899bfaecb2a2227039b312b273ab

Contents?: true

Size: 1.71 KB

Versions: 23

Compression:

Stored size: 1.71 KB

Contents

module OVIRT

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

    def initialize(client=nil, xml={})
      if xml.is_a?(Hash)
        super(client, xml[:id], xml[:href], xml[:name])
        @network = xml[:network]
        @persisted = xml[:persisted]
        @interface = xml[:interface]
        @plugged = xml[:plugged]
        @linked = xml[:linked]
      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
          interface_(opts[:interface]) if opts[:interface]
          plugged_(opts[:plugged]) if opts[:plugged]
          linked_(opts[:linked]) if opts[:linked]
        }
      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)
     @plugged = (xml/'plugged').first.text if (xml/'plugged').first
     @linked = (xml/'linked').first.text if (xml/'linked').first
     @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

23 entries across 21 versions & 2 rubygems

Version Path
rbovirt-0.1.7 lib/ovirt/interface.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/rbovirt-0.1.6/lib/ovirt/interface.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/rbovirt-0.1.6/lib/ovirt/interface.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/rbovirt-0.1.6/lib/ovirt/interface.rb
rbovirt-0.1.6 lib/ovirt/interface.rb
rbovirt-0.1.5 lib/ovirt/interface.rb
rbovirt-0.1.4 lib/ovirt/interface.rb
rbovirt-0.1.3 lib/ovirt/interface.rb
rbovirt-0.1.2 lib/ovirt/interface.rb
rbovirt-0.0.38 lib/ovirt/interface.rb
rbovirt-0.1.1 lib/ovirt/interface.rb
rbovirt-0.0.37 lib/ovirt/interface.rb
rbovirt-0.0.36 lib/ovirt/interface.rb
rbovirt-0.1.0 lib/ovirt/interface.rb
rbovirt-0.0.35 lib/ovirt/interface.rb
rbovirt-0.0.34 lib/ovirt/interface.rb
rbovirt-0.0.33 lib/ovirt/interface.rb
rbovirt-0.0.32 lib/ovirt/interface.rb
rbovirt-0.0.31 lib/ovirt/interface.rb
rbovirt-0.0.30 lib/ovirt/interface.rb