class DiskID::Inspector
Public Class Methods
new(file, qemu_img_bin='qemu-img-bleeding')
click to toggle source
# File lib/diskid.rb, line 62 def initialize(file, qemu_img_bin='qemu-img-bleeding') @qemu_img_bin = (qemu_img_bin || '').strip.chomp if not @qemu_img_bin =~ /^\// @qemu_img_bin = `sh -c 'command -v #{@qemu_img_bin}'`.strip.chomp end raise ArgumentError.new("qemu-img command not found: #{@qemu_img_bin}") if @qemu_img_bin.empty? @file = file end
Public Instance Methods
identify()
click to toggle source
# File lib/diskid.rb, line 72 def identify out = `#{@qemu_img_bin} info #{@file}` raise Exception.new("Error getting info from #{@file}") if $? != 0 md = /image:(.*)$\nfile format:(.*)$\nvirtual size:(.*)$\ndisk size:(.*)\n/.match out @file_name,@format,@virtual_size,@disk_size = [md[1], md[2], md[3], md[4]].map { |e| e.strip.chomp } @virtual_size = @virtual_size.split()[0] variant = '' if @format == 'vmdk' variant = read_variant @file end DiskInfo.new({ 'file_name' => @file_name, 'format' => @format, 'virtual_size' => @virtual_size, 'disk_size' => @disk_size, 'variant' => variant }) end
Private Instance Methods
read_variant(file)
click to toggle source
# File lib/diskid.rb, line 93 def read_variant(file) IO.read(file, 20000).each_line do |l| return $1 if l =~ /createType="(.*?)"/ end '' end