module Libvirt::Util
Constants
- UNIT_TO_BYTES
- UUID_STRING_BUFLEN
Attributes
logger[RW]
Public Class Methods
library_path()
click to toggle source
# File lib/libvirt/util.rb, line 35 def library_path %w[libvirt libvirt.so.0] end
log(severity, prog = nil, &block)
click to toggle source
# File lib/libvirt/util.rb, line 29 def log(severity, prog = nil, &block) return if @logger.nil? @logger.public_send(severity, prog, &block) end
parse_enum(enum, value)
click to toggle source
@param enum [FFI::Enum] @param value [Symbol, Integer] @return [Array] event_id, event_id_sym @raise ArgumentError
# File lib/libvirt/util.rb, line 51 def parse_enum(enum, value) if value.is_a?(Symbol) raise ArgumentError, 'invalid enum value' unless enum.symbols.include?(value) return [enum.find(value), value] end raise ArgumentError, 'invalid enum value' unless enum.symbol_map.values.include?(value) [value, enum.symbol_map[value]] end
parse_flags(flags, enum, default: 0x0)
click to toggle source
Bitwise OR integer flags calculation for C language. @param flags [Integer,Symbol,Array<Symbol>,Hash{Symbol=>Boolean},nil] @param enum [FFI::Enum] @param default [Integer] optional (default 0x0) @return [Integer] bitwise OR of keys
@example Usage: parse_flags(nil, enum) parse_flags({MANAGED_SAVE: true, SNAPSHOTS_METADATA: true, NVRAM: false}, enum) parse_flags({managed_save: true, snapshots_metadata: true, keep_nvram: nil}, enum) parse_flags(3, enum) parse_flags([:MANAGED_SAVE, :SNAPSHOTS_METADATA], enum) parse_flags([:managed_save, :snapshots_metadata], enum)
# File lib/libvirt/util.rb, line 76 def parse_flags(flags, enum, default: 0x0) flags = default if flags.nil? flags = enum[flags] if flags.is_a?(Symbol) return flags if flags.is_a?(Integer) result = 0x0 flags = flags.select { |_, v| v }.keys if flags.is_a?(Hash) raise ArgumentError, 'flags must be an Integer or a Hash or an Array' unless flags.is_a?(Array) flags.each do |key| result |= enum[key.to_s.upcase.to_sym] end result end
parse_memory(value, unit)
click to toggle source
@param value [Integer,String] @param unit [String,Symbol] default 'bytes' @return [Integer] memory in bytes
# File lib/libvirt/util.rb, line 96 def parse_memory(value, unit) unit ||= 'bytes' multiplier = UNIT_TO_BYTES.fetch(unit.to_sym) Integer(value) * multiplier end
parse_version(version_number)
click to toggle source
@param [Integer] version_number ulong
# File lib/libvirt/util.rb, line 40 def parse_version(version_number) major = version_number / 1_000_000 minor = (version_number - major * 1_000_000) / 1_000 release = version_number - major * 1_000_000 - minor * 1_000 "#{major}.#{minor}.#{release}" end