module LoomExt::CoreMods::VM::Virtualbox::Actions
Public Instance Methods
check_exists(vm)
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 11 def check_exists(vm) loom.test "vboxmanage showvminfo #{vm}".split end
check_running(vm)
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 15 def check_running(vm) loom.test "vboxmanage list runningvms".split, :pipe_to => [ "grep \"#{vm}\"".split ] end
clone(src_vm, dst_vm, options: :link, snapshot: nil, take_snapshot: true)
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 47 def clone(src_vm, dst_vm, options: :link, snapshot: nil, take_snapshot: true) raise DuplicateVMImport, "VM already exists => #{dst_vm}" if check_exists(dst_vm) raise UnknownVM, src_vm unless check_exists(src_vm) cmd = ["vboxmanage clonevm #{src_vm}"] cmd << "--snapshot #{snapshot}" if snapshot cmd << "--options #{options}" if options cmd << "--name #{dst_vm}" cmd << "--register" cmd = cmd.join " " loom << cmd.split if take_snapshot snapshot dst_vm, action: :take, snapshot_name: "#{dst_vm}:clone" end end
down(vm)
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 73 def down(vm) if check_running(vm) loom << "vboxmanage controlvm #{vm} acpipowerbutton".split else Loom.log.warn "VM #{vm} not running, nothing to do" end end
import(ova_file, vm, disk, take_snapshot: true)
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 35 def import(ova_file, vm, disk, take_snapshot: true) raise DuplicateVMImport, vm if check_exists(vm) loom << "vboxmanage import #{ova_file} \ --vsys 0 --vmname #{vm} \ --vsys 0 --unit 12 --disk '#{disk}'".split if take_snapshot snapshot vm, action: :take, snapshot_name: "#{vm}:import" end end
list()
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 21 def list loom << "vboxmanage list vms".split end
snapshot(vm, action: :take, snapshot_name: nil)
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 25 def snapshot(vm, action: :take, snapshot_name: nil) raise UnknownVM, vm unless check_exists(vm) cmd = ["vboxmanage snapshot #{vm} #{action}"] cmd << snapshot_name if snapshot_name cmd = cmd.join " " loom << cmd.split end
up(vm)
click to toggle source
# File lib/loomext/coremods/vm/vbox.rb, line 65 def up(vm) unless check_running(vm) loom << "vboxmanage startvm #{vm} --type headless".split else Loom.log.warn "VM #{vm} already running, nothing to do" end end