Module: LoomExt::CoreMods::VM::Virtualbox::Actions
- Defined in:
- lib/loomext/coremods/vm/vbox.rb
Instance Method Summary collapse
- #check_exists(vm) ⇒ Object
- #check_running(vm) ⇒ Object
- #clone(src_vm, dst_vm, options: :link, snapshot: nil, take_snapshot: true) ⇒ Object
- #down(vm) ⇒ Object
- #import(ova_file, vm, disk, take_snapshot: true) ⇒ Object
- #list ⇒ Object
- #snapshot(vm, action: :take, snapshot_name: nil) ⇒ Object
- #up(vm) ⇒ Object
Instance Method Details
#check_exists(vm) ⇒ Object
11 12 13 |
# File 'lib/loomext/coremods/vm/vbox.rb', line 11 def check_exists(vm) loom.test "vboxmanage showvminfo #{vm}".split end |
#check_running(vm) ⇒ Object
15 16 17 18 19 |
# 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) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 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 #{}" if 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) ⇒ Object
73 74 75 76 77 78 79 |
# 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) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# 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 ⇒ Object
21 22 23 |
# File 'lib/loomext/coremods/vm/vbox.rb', line 21 def list loom << "vboxmanage list vms".split end |
#snapshot(vm, action: :take, snapshot_name: nil) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# 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 |