Class: VagrantPlugins::VBoxSnapshot::Command::Go
- Inherits:
-
Object
- Object
- VagrantPlugins::VBoxSnapshot::Command::Go
- Includes:
- CheckRunnable, MultiVmArgs
- Defined in:
- lib/vagrant-vbox-snapshot/commands/go.rb
Instance Method Summary collapse
- #after_restore(machine) ⇒ Object
- #before_restore(machine) ⇒ Object
- #execute ⇒ Object
- #get_shared_folders(machine) ⇒ Object
Methods included from CheckRunnable
Methods included from MultiVmArgs
#parse_vm_and_snapshot_options
Instance Method Details
#after_restore(machine) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/vagrant-vbox-snapshot/commands/go.rb', line 26 def after_restore(machine) @shared_folders_after = get_shared_folders(machine) if @shared_folders_before != @shared_folders_after @env.ui.warn("Synced folders have changed after restoring snapshot. Consider running 'vagrant reload'.") @env.ui.warn(" Before restore: #{@shared_folders_before}") @env.ui.warn(" After restore: #{@shared_folders_after}") end end |
#before_restore(machine) ⇒ Object
22 23 24 |
# File 'lib/vagrant-vbox-snapshot/commands/go.rb', line 22 def before_restore(machine) @shared_folders_before = get_shared_folders(machine) end |
#execute ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/vagrant-vbox-snapshot/commands/go.rb', line 35 def execute = {} [:reload] = false opts = OptionParser.new do |opts| opts. = "Go to specified snapshot" opts.separator "" opts.separator "Usage: vagrant snapshot go [vm-name] <SNAPSHOT_NAME>" opts.on("-r", "--reload", "Runs 'vagrant reload --no-provision' after restoring snapshot to ensure Vagrantfile config is applied.") do |reload| [:reload] = reload end end # Parse the options argv = (opts) return if !argv vm_name, snapshot_name = (argv, opts) return if !snapshot_name with_target_vms(vm_name, single_target: true) do |machine| check_runnable_on(machine) vm_id = machine.id before_restore(machine) if machine.state.id != :poweroff and machine.state.id != :saved and machine.state.id != :aborted @env.ui.info("Powering off machine #{vm_id}") machine.provider.driver.execute("controlvm", machine.id, "poweroff") end machine.provider.driver.execute("snapshot", machine.id, "restore", snapshot_name) do |type, data| machine.env.ui.info(data, :color => type == :stderr ? :red : :white, :new_line => false) end if [:reload] @env.ui.info("Reloading VM, since --reload passed") machine.action(:reload, :provision_enabled => false) else @env.ui.info("Starting restored VM") machine.action(:up, :provision_enabled => false) end after_restore(machine) end end |
#get_shared_folders(machine) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/vagrant-vbox-snapshot/commands/go.rb', line 11 def get_shared_folders(machine) shared_folders = [] info = machine.provider.driver.execute("showvminfo", machine.id, "--machinereadable") info.split("\n").each do |line| if line =~ /^SharedFolderNameMachineMapping\d+="(.+?)"$/ shared_folders << $1.to_s end end return shared_folders end |