class Knj::Kvm

This class and subclasses holds various functionality to view status for Kvm-instances.

Public Class Methods

list() { |machine| ... } click to toggle source

Lists all running Kvm-instances on this machine.

Examples

Knj::Kvm.list do |kvm|
  print kvm.pid
end
# File lib/knj/kvm.rb, line 8
def self.list
  list = []
  
  Knj::Unix_proc.list("grep" => "kvm") do |proc_obj|
    next if !proc_obj["cmd"].match(/^\/usr\/bin\/kvm\s+/)
    
    args = {
      :pid => proc_obj["pid"]
    }
    
    if mac_match = proc_obj["cmd"].match(/mac=(.+?)(,|\s+|$)/)
      args[:mac] = mac_match[1]
    end
    
    if name_match = proc_obj["cmd"].match(/\-name\s+(.+?)(,|\s+|$)/)
      args[:name] = name_match[1]
    end
    
    if args.length > 0 and args[:name].to_s.length > 0
      machine = Knj::Kvm::Machine.new(args)
      if block_given?
        yield(machine)
      else
        list << machine
      end
    end
  end
  
  if block_given?
    return nil
  else
    return list
  end
end