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