Class: QemuToolkit::VnicCollection
- Inherits:
-
Object
- Object
- QemuToolkit::VnicCollection
- 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
- #<<(vnic) ⇒ Object
- #allocate(via, mac_address = nil) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(vnics = []) ⇒ VnicCollection
constructor
A new instance of VnicCollection.
- #map(&block) ⇒ Object
- #normalize_mac_address(mac_address) ⇒ Object
- #unused ⇒ Object
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
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 |
#unused ⇒ Object
23 24 25 |
# File 'lib/qemu-toolkit/vnic_collection.rb', line 23 def unused @vnics - @used end |