Chris Roberts c999e7c3d4 Update behavior of snapshot restore and snapshot pop
Both of these commands failed to default the options disabling
the provisioning from ignoring the sentinel file. This resulted
in different behavior than what was seen with the `up` and
`resume` commands which would only provision items with run set
to "always". This defaults the options to proper match the behavior
of `up` and `resume` to be consistent.

This also adds an extra `--no-start` flag to allow users to restore
a snapshot but not start the restored guest immediately.

Fixes #6752
2018-12-07 16:17:44 -08:00

50 lines
1.4 KiB
Ruby

require 'json'
require 'optparse'
require 'vagrant'
require Vagrant.source_root.join("plugins/commands/up/start_mixins")
require_relative "push_shared"
module VagrantPlugins
module CommandSnapshot
module Command
class Pop < Vagrant.plugin("2", :command)
include PushShared
include VagrantPlugins::CommandUp::StartMixins
def execute
options = {}
options[:snapshot_delete] = true
options[:provision_ignore_sentinel] = false
options[:snapshot_start] = true
opts = OptionParser.new do |o|
o.banner = "Usage: vagrant snapshot pop [options] [vm-name]"
o.separator ""
build_start_options(o, options)
o.separator "Restore state that was pushed with `vagrant snapshot push`."
o.on("--no-delete", "Don't delete the snapshot after the restore") do
options[:snapshot_delete] = false
end
o.on("--no-start", "Don't start the snapshot after the restore") do
options[:snapshot_start] = false
end
end
# Parse the options
argv = parse_options(opts)
return if !argv
# Validate the provisioners
validate_provisioner_flags!(options, argv)
return shared_exec(argv, method(:pop), options)
end
end
end
end
end