Class: QemuToolkit::LocalDiskSet
- Inherits:
-
Object
- Object
- QemuToolkit::LocalDiskSet
- Defined in:
- lib/qemu-toolkit/local_disk_set.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #each_disk ⇒ Object
-
#initialize(name, disks) ⇒ LocalDiskSet
constructor
A new instance of LocalDiskSet.
Constructor Details
#initialize(name, disks) ⇒ LocalDiskSet
Returns a new instance of LocalDiskSet.
26 27 28 29 |
# File 'lib/qemu-toolkit/local_disk_set.rb', line 26 def initialize(name, disks) @name = name @disks = disks end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
31 32 33 |
# File 'lib/qemu-toolkit/local_disk_set.rb', line 31 def name @name end |
Class Method Details
.for(name, backend) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/qemu-toolkit/local_disk_set.rb', line 4 def self.for(name, backend) output = backend.zfs :list, "-oname,#{QemuToolkit::EXPORT_TAG} -H" candidates = output.lines.map { |l| l.chomp.strip.split } candidates.reject! { |n,_| ! n } # Finds all qemu-toolkit storage spaces that end in '/name': # Output from this step are only the spaces that match storage_spaces = candidates. select { |cand_name, flag| %w(true false).include?(flag) && cand_name.end_with?('/'+name) } # Finds all disks for each of the candidate exports: # Output from this step should be <name, disks> tuples storage_spaces. map { |base_name, _| new( base_name, candidates.map(&:first). select { |name| name.match(/#{Regexp.escape(base_name)}\/disk\d+/) } ) } end |
Instance Method Details
#each_disk ⇒ Object
33 34 35 36 37 |
# File 'lib/qemu-toolkit/local_disk_set.rb', line 33 def each_disk @disks.sort.each do |path| yield "/dev/zvol/rdsk/#{path}" end end |