Sha256: 8ac491ae383550d1cfe970a2a04e1b2500ce09c29f7884192f6785bbb70fef2a
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
module VBOX class VM attr_accessor :name, :uuid, :memory_size, :dir_size, :state, :all_vars def initialize @all_vars = {} end %w'start pause resume reset poweroff savestate acpipowerbutton acpisleepbutton destroy'.each do |action| define_method "#{action}!" do VBOX.api.send( action, uuid || name ) end end def clone! params raise "argument must be a Hash" unless params.is_a?(Hash) raise "no :snapshot key" unless params[:snapshot] r = VBOX.api.clone self.name, params case r when Array if r.first.is_a?(VM) r else r.map{ |name| VM.find(name) } end when String VM.find(r) when nil nil else r end end def dir_size @dir_size ||= begin VBOX.api.get_vm_details(self) unless @all_vars['CfgFile'] return nil unless v=@all_vars['CfgFile'] dir = File.dirname(v.tr('"','')) `du -sm "#{dir}"`.split("\t").first.tr("M","").to_i end end class << self def all VBOX.api.list_vms end def first all.first end def find name_or_uuid VBOX.api.get_vm_details name_or_uuid end alias :[] :find end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
vbox-ng-0.1.3 | lib/vbox/vm.rb |
vbox-ng-0.1.2 | lib/vbox/vm.rb |