class QemuToolkit::VnicCollection

A collection of vnics. This class keeps track of vnic allocations to devices, so that no vnic will be used twice.

Public Class Methods

new(vnics=[]) click to toggle source
# File lib/qemu-toolkit/vnic_collection.rb, line 10
def initialize(vnics=[])
  @vnics = Set.new(vnics)
  @used = Set.new
end

Public Instance Methods

<<(vnic) click to toggle source
# File lib/qemu-toolkit/vnic_collection.rb, line 15
def << vnic
  @vnics << vnic
end
allocate(via, mac_address=nil) click to toggle source
# File lib/qemu-toolkit/vnic_collection.rb, line 27
def allocate(via, mac_address=nil)
  vnic=unused.find { |vnic| 
    (!mac_address || 
      (normalize_mac_address(mac_address) == vnic.macaddr)) && 
    via == vnic.over }

  @used << vnic
  vnic
end
empty?() click to toggle source
# File lib/qemu-toolkit/vnic_collection.rb, line 37
def empty?
  @used.size == @vnics.size
end
map(&block) click to toggle source
# File lib/qemu-toolkit/vnic_collection.rb, line 19
def map &block
  unused.map(&block)
end
normalize_mac_address(mac_address) click to toggle source
# File lib/qemu-toolkit/vnic_collection.rb, line 41
def normalize_mac_address mac_address
  Network::MacAddress.new(mac_address)
end
unused() click to toggle source
# File lib/qemu-toolkit/vnic_collection.rb, line 23
def unused
  @vnics - @used
end