Class: QemuToolkit::VnicCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/qemu-toolkit/vnic_collection.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(vnics = []) ⇒ VnicCollection

Returns a new instance of VnicCollection.



10
11
12
13
# File 'lib/qemu-toolkit/vnic_collection.rb', line 10

def initialize(vnics=[])
  @vnics = Set.new(vnics)
  @used = Set.new
end

Instance Method Details

#<<(vnic) ⇒ Object



15
16
17
# File 'lib/qemu-toolkit/vnic_collection.rb', line 15

def << vnic
  @vnics << vnic
end

#allocate(via, mac_address = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
# 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?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/qemu-toolkit/vnic_collection.rb', line 37

def empty?
  @used.size == @vnics.size
end

#map(&block) ⇒ Object



19
20
21
# File 'lib/qemu-toolkit/vnic_collection.rb', line 19

def map &block
  unused.map(&block)
end

#normalize_mac_address(mac_address) ⇒ Object



41
42
43
# File 'lib/qemu-toolkit/vnic_collection.rb', line 41

def normalize_mac_address mac_address
  Network::MacAddress.new(mac_address)
end

#unusedObject



23
24
25
# File 'lib/qemu-toolkit/vnic_collection.rb', line 23

def unused
  @vnics - @used
end