vagrant-vmware-desktop 0.0.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vagrant-vmware-desktop.rb +190 -0
- data/lib/vagrant-vmware-desktop/action.rb +442 -0
- data/lib/vagrant-vmware-desktop/action/base_mac_to_ip.rb +55 -0
- data/lib/vagrant-vmware-desktop/action/boot.rb +26 -0
- data/lib/vagrant-vmware-desktop/action/check_existing_network.rb +35 -0
- data/lib/vagrant-vmware-desktop/action/check_vmware.rb +28 -0
- data/lib/vagrant-vmware-desktop/action/checkpoint.rb +86 -0
- data/lib/vagrant-vmware-desktop/action/clear_shared_folders.rb +25 -0
- data/lib/vagrant-vmware-desktop/action/common.rb +16 -0
- data/lib/vagrant-vmware-desktop/action/compatibility.rb +36 -0
- data/lib/vagrant-vmware-desktop/action/created.rb +20 -0
- data/lib/vagrant-vmware-desktop/action/destroy.rb +32 -0
- data/lib/vagrant-vmware-desktop/action/discard_suspended_state.rb +32 -0
- data/lib/vagrant-vmware-desktop/action/export.rb +29 -0
- data/lib/vagrant-vmware-desktop/action/fix_old_machine_id.rb +29 -0
- data/lib/vagrant-vmware-desktop/action/forward_ports.rb +110 -0
- data/lib/vagrant-vmware-desktop/action/halt.rb +27 -0
- data/lib/vagrant-vmware-desktop/action/import.rb +138 -0
- data/lib/vagrant-vmware-desktop/action/machine_lock.rb +26 -0
- data/lib/vagrant-vmware-desktop/action/message_already_running.rb +18 -0
- data/lib/vagrant-vmware-desktop/action/message_not_created.rb +18 -0
- data/lib/vagrant-vmware-desktop/action/message_not_running.rb +18 -0
- data/lib/vagrant-vmware-desktop/action/network.rb +339 -0
- data/lib/vagrant-vmware-desktop/action/package_vagrantfile.rb +46 -0
- data/lib/vagrant-vmware-desktop/action/prepare_forwarded_port_collision_params.rb +28 -0
- data/lib/vagrant-vmware-desktop/action/prepare_nfs_settings.rb +43 -0
- data/lib/vagrant-vmware-desktop/action/prepare_synced_folder_cleanup.rb +19 -0
- data/lib/vagrant-vmware-desktop/action/prune_forwarded_ports.rb +30 -0
- data/lib/vagrant-vmware-desktop/action/prune_nfs_exports.rb +22 -0
- data/lib/vagrant-vmware-desktop/action/running.rb +20 -0
- data/lib/vagrant-vmware-desktop/action/set_display_name.rb +37 -0
- data/lib/vagrant-vmware-desktop/action/share_folders.rb +97 -0
- data/lib/vagrant-vmware-desktop/action/snapshot_delete.rb +26 -0
- data/lib/vagrant-vmware-desktop/action/snapshot_restore.rb +26 -0
- data/lib/vagrant-vmware-desktop/action/snapshot_save.rb +26 -0
- data/lib/vagrant-vmware-desktop/action/suspend.rb +26 -0
- data/lib/vagrant-vmware-desktop/action/suspended.rb +24 -0
- data/lib/vagrant-vmware-desktop/action/vmx_modify.rb +39 -0
- data/lib/vagrant-vmware-desktop/action/wait_for_address.rb +31 -0
- data/lib/vagrant-vmware-desktop/action/wait_for_communicator_compat.rb +32 -0
- data/lib/vagrant-vmware-desktop/action/wait_for_vmx_halt.rb +35 -0
- data/lib/vagrant-vmware-desktop/cap/disk.rb +287 -0
- data/lib/vagrant-vmware-desktop/cap/provider.rb +37 -0
- data/lib/vagrant-vmware-desktop/cap/snapshot.rb +41 -0
- data/lib/vagrant-vmware-desktop/checkpoint_client.rb +203 -0
- data/lib/vagrant-vmware-desktop/config.rb +377 -0
- data/lib/vagrant-vmware-desktop/constants.rb +16 -0
- data/lib/vagrant-vmware-desktop/driver.rb +15 -0
- data/lib/vagrant-vmware-desktop/driver/base.rb +1356 -0
- data/lib/vagrant-vmware-desktop/errors.rb +342 -0
- data/lib/vagrant-vmware-desktop/guest_cap/linux/mount_vmware_shared_folder.rb +158 -0
- data/lib/vagrant-vmware-desktop/guest_cap/linux/verify_vmware_hgfs.rb +27 -0
- data/lib/vagrant-vmware-desktop/helper/lock.rb +26 -0
- data/lib/vagrant-vmware-desktop/helper/routing_table.rb +182 -0
- data/lib/vagrant-vmware-desktop/helper/vagrant_utility.rb +185 -0
- data/lib/vagrant-vmware-desktop/plugin.rb +148 -0
- data/lib/vagrant-vmware-desktop/provider.rb +96 -0
- data/lib/vagrant-vmware-desktop/setup_plugin.rb +24 -0
- data/lib/vagrant-vmware-desktop/synced_folder.rb +93 -0
- data/locales/en.yml +634 -0
- metadata +71 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdcfbbb304726e177ac071a8842c567ca35ebac76acb944b8b787b4a3c8b95d6
|
4
|
+
data.tar.gz: b871eaf2ccfdf8fb33384feb5c050e8b4e45daf61557158af7c23f7b57b9bf80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6efa97edc063503dfa6d858160a23d57e0ff73f66cf4f09b9bc16027b9f2fc1000c41536ab9dd16c24e69b417cc9d17c1fec26d6dec6e3ecb37e94af701c64c7
|
7
|
+
data.tar.gz: ae05d94217266dedfb30bdbc392c05ec67a97f1604c17c51810b2cc8df1ae71af1b2e39246b9dcb41373826147b4ef2b286d8d28c4ad00d111ab7ecff588e6b8
|
@@ -0,0 +1,190 @@
|
|
1
|
+
require "rbconfig"
|
2
|
+
require "pathname"
|
3
|
+
require "fileutils"
|
4
|
+
|
5
|
+
require "vagrant-vmware-desktop/constants"
|
6
|
+
require "vagrant-vmware-desktop/plugin"
|
7
|
+
|
8
|
+
module HashiCorp
|
9
|
+
module VagrantVMwareDesktop
|
10
|
+
|
11
|
+
# List of plugins that are incompatible with this plugin. These
|
12
|
+
# are the deprecated versions of the VMware plugin that this
|
13
|
+
# plugin replaces.
|
14
|
+
CONFLICTING_GEMS = [
|
15
|
+
"vagrant-vmware-fusion",
|
16
|
+
"vagrant-vmware-workstation"
|
17
|
+
].map(&:freeze).freeze
|
18
|
+
|
19
|
+
lib_path = Pathname.new(File.expand_path("../vagrant-vmware-desktop", __FILE__))
|
20
|
+
autoload :Action, lib_path.join("action")
|
21
|
+
autoload :Driver, lib_path.join("driver")
|
22
|
+
autoload :Errors, lib_path.join("errors")
|
23
|
+
autoload :SudoHelper, lib_path.join("sudo_helper")
|
24
|
+
|
25
|
+
# This initializes the i18n load path so that the plugin-specific
|
26
|
+
# translations work.
|
27
|
+
def self.init_i18n
|
28
|
+
I18n.load_path << File.expand_path("locales/en.yml", source_root)
|
29
|
+
I18n.reload!
|
30
|
+
end
|
31
|
+
|
32
|
+
# This initializes the logging so that our logs are outputted at
|
33
|
+
# the same level as Vagrant core logs.
|
34
|
+
def self.init_logging
|
35
|
+
# Initialize logging
|
36
|
+
level = nil
|
37
|
+
begin
|
38
|
+
level = Log4r.const_get(ENV["VAGRANT_LOG"].upcase)
|
39
|
+
rescue NameError
|
40
|
+
# This means that the logging constant wasn't found,
|
41
|
+
# which is fine. We just keep `level` as `nil`. But
|
42
|
+
# we tell the user.
|
43
|
+
level = nil
|
44
|
+
end
|
45
|
+
|
46
|
+
# Some constants, such as "true" resolve to booleans, so the
|
47
|
+
# above error checking doesn't catch it. This will check to make
|
48
|
+
# sure that the log level is an integer, as Log4r requires.
|
49
|
+
level = nil if !level.is_a?(Integer)
|
50
|
+
|
51
|
+
# Set the logging level on all "vagrant" namespaced
|
52
|
+
# logs as long as we have a valid level.
|
53
|
+
if level
|
54
|
+
logger = Log4r::Logger.new("hashicorp")
|
55
|
+
logger.outputters = Log4r::Outputter.stderr
|
56
|
+
logger.level = level
|
57
|
+
logger = nil
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# This returns the path to the source of this plugin.
|
62
|
+
#
|
63
|
+
# @return [Pathname]
|
64
|
+
def self.source_root
|
65
|
+
@source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
|
66
|
+
end
|
67
|
+
|
68
|
+
# These WSL methods are wrappers so things work
|
69
|
+
# gracefully on different versions of Vagrant that
|
70
|
+
# may have all, some, or none of the methods available
|
71
|
+
# that we need.
|
72
|
+
|
73
|
+
|
74
|
+
# Detect if inside WSL
|
75
|
+
#
|
76
|
+
# @return [Boolean]
|
77
|
+
def self.wsl?
|
78
|
+
Vagrant::Util::Platform.respond_to?(:wsl?) &&
|
79
|
+
Vagrant::Util::Platform.wsl?
|
80
|
+
end
|
81
|
+
|
82
|
+
# Convert WSL path to a Windows path
|
83
|
+
#
|
84
|
+
# @param [String, Pathname] path
|
85
|
+
# @return [String]
|
86
|
+
def self.wsl_to_windows_path(path)
|
87
|
+
if wsl?
|
88
|
+
oval = ENV["VAGRANT_WSL_ENABLE_WINDOWS_ACCESS"]
|
89
|
+
ENV["VAGRANT_WSL_ENABLE_WINDOWS_ACCESS"] = "1"
|
90
|
+
path = Vagrant::Util::Platform.wsl_to_windows_path(path.to_s)
|
91
|
+
ENV["VAGRANT_WSL_ENABLE_WINDOWS_ACCESS"] = oval
|
92
|
+
return "//?/#{path}".tr("/", 92.chr)
|
93
|
+
end
|
94
|
+
if Vagrant::Util::Platform.windows?
|
95
|
+
path.to_s.tr("/", 92.chr)
|
96
|
+
else
|
97
|
+
path.to_s
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# Convert Windows path to WSL path
|
102
|
+
#
|
103
|
+
# @param [String, Pathname] path
|
104
|
+
# @return [String]
|
105
|
+
def self.windows_to_wsl_path(path)
|
106
|
+
if wsl?
|
107
|
+
if Vagrant::Util::Platform.respond_to?(:windows_to_wsl_path)
|
108
|
+
return Vagrant::Util::Platform.windows_to_wsl_path(path.to_s)
|
109
|
+
elsif path.match(/^[A-Za-z]:/)
|
110
|
+
return "/mnt/#{path[0, 1].downcase}#{path[2..-1].tr(92.chr, '/')}"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
path.to_s
|
114
|
+
end
|
115
|
+
|
116
|
+
# Check if path is located on DrvFs file system
|
117
|
+
#
|
118
|
+
# @param [String, Pathname]
|
119
|
+
# @return [Boolean]
|
120
|
+
def self.wsl_drvfs_path?(path)
|
121
|
+
path = path.to_s
|
122
|
+
if Vagrant::Util::Platform.respond_to?(:wsl_drvfs_path?)
|
123
|
+
return Vagrant::Util::Platform.wsl_drvfs_path?(path)
|
124
|
+
end
|
125
|
+
if wsl?
|
126
|
+
return Vagrant::Util::Platform.wsl_windows_access_bypass?(path)
|
127
|
+
end
|
128
|
+
false
|
129
|
+
end
|
130
|
+
|
131
|
+
# Check if path is case sensitive
|
132
|
+
#
|
133
|
+
# @param [String, Pathname] path to check (must exist)
|
134
|
+
# @return [Boolean]
|
135
|
+
def self.case_sensitive_fs?(path)
|
136
|
+
!case_sensitive_fs(path)
|
137
|
+
end
|
138
|
+
|
139
|
+
# Check if path is case insensitive
|
140
|
+
#
|
141
|
+
# @param [String, Pathname] path to check (must exist)
|
142
|
+
# @return [Boolean]
|
143
|
+
def self.case_insensitive_fs?(path)
|
144
|
+
begin
|
145
|
+
FileUtils.compare_file(path.to_s, path.to_s.downcase)
|
146
|
+
rescue Errno::ENOENT
|
147
|
+
false
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# Checks for a valid installation state. Raises exception if
|
152
|
+
# invalid state detected.
|
153
|
+
#
|
154
|
+
# @return [NilClass]
|
155
|
+
# @raises [StandardError]
|
156
|
+
def self.validate_install!
|
157
|
+
CONFLICTING_GEMS.each do |libname|
|
158
|
+
if !Gem::Specification.find_all_by_name(libname).empty?
|
159
|
+
$stderr.puts <<-EOF
|
160
|
+
ERROR: Vagrant has detected an incompatible plugin installed. Please uninstall
|
161
|
+
the `#{libname}` plugin and run the command again. To uninstall the plugin,
|
162
|
+
run the command shown below:
|
163
|
+
|
164
|
+
vagrant plugin uninstall #{libname}
|
165
|
+
|
166
|
+
EOF
|
167
|
+
raise "Plugin conflict"
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
# Check for any deprecated suid binaries from previous
|
173
|
+
# vmware plugin installations and remove them
|
174
|
+
def self.orphan_artifact_cleanup!
|
175
|
+
if !Vagrant::Util::Platform.windows?
|
176
|
+
glob_path = Vagrant.user_data_path.join("gems", "**", "**", "vagrant-vmware-{workstation,fusion}*").to_s
|
177
|
+
Dir.glob(glob_path).each do |del_path|
|
178
|
+
FileUtils.rm_rf(del_path) if File.directory?(del_path)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
# Validation the installation
|
186
|
+
HashiCorp::VagrantVMwareDesktop.validate_install!
|
187
|
+
|
188
|
+
# Remove any artifacts that may exist from
|
189
|
+
# previous plugin installations
|
190
|
+
HashiCorp::VagrantVMwareDesktop.orphan_artifact_cleanup!
|
@@ -0,0 +1,442 @@
|
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
require "vagrant/action/builder"
|
4
|
+
|
5
|
+
require "vagrant/action/general/package"
|
6
|
+
require "vagrant/action/general/package_setup_folders"
|
7
|
+
require "vagrant/action/general/package_setup_files"
|
8
|
+
|
9
|
+
module HashiCorp
|
10
|
+
module VagrantVMwareDesktop
|
11
|
+
module Action
|
12
|
+
# Include the built-in modules so we can use them as top-level things.
|
13
|
+
include Vagrant::Action::Builtin
|
14
|
+
include Vagrant::Action::General
|
15
|
+
|
16
|
+
autoload :BaseMacToIp, "vagrant-vmware-desktop/action/base_mac_to_ip"
|
17
|
+
autoload :Boot, "vagrant-vmware-desktop/action/boot"
|
18
|
+
autoload :CheckExistingNetwork, "vagrant-vmware-desktop/action/check_existing_network"
|
19
|
+
autoload :CheckVMware, "vagrant-vmware-desktop/action/check_vmware"
|
20
|
+
autoload :ClearSharedFolders, "vagrant-vmware-desktop/action/clear_shared_folders"
|
21
|
+
autoload :Checkpoint, "vagrant-vmware-desktop/action/checkpoint"
|
22
|
+
autoload :Compatibility, "vagrant-vmware-desktop/action/compatibility"
|
23
|
+
autoload :Common, "vagrant-vmware-desktop/action/common"
|
24
|
+
autoload :Created, "vagrant-vmware-desktop/action/created"
|
25
|
+
autoload :Destroy, "vagrant-vmware-desktop/action/destroy"
|
26
|
+
autoload :DiscardSuspendedState, "vagrant-vmware-desktop/action/discard_suspended_state"
|
27
|
+
autoload :Export, "vagrant-vmware-desktop/action/export"
|
28
|
+
autoload :FixOldMachineID, "vagrant-vmware-desktop/action/fix_old_machine_id"
|
29
|
+
autoload :ForwardPorts, "vagrant-vmware-desktop/action/forward_ports"
|
30
|
+
autoload :Halt, "vagrant-vmware-desktop/action/halt"
|
31
|
+
autoload :Import, "vagrant-vmware-desktop/action/import"
|
32
|
+
autoload :MachineLock, "vagrant-vmware-desktop/action/machine_lock"
|
33
|
+
autoload :MessageAlreadyRunning, "vagrant-vmware-desktop/action/message_already_running"
|
34
|
+
autoload :MessageNotCreated, "vagrant-vmware-desktop/action/message_not_created"
|
35
|
+
autoload :MessageNotRunning, "vagrant-vmware-desktop/action/message_not_running"
|
36
|
+
autoload :Network, "vagrant-vmware-desktop/action/network"
|
37
|
+
autoload :PackageVagrantfile, "vagrant-vmware-desktop/action/package_vagrantfile"
|
38
|
+
autoload :PrepareNFSSettings, "vagrant-vmware-desktop/action/prepare_nfs_settings"
|
39
|
+
autoload :PrepareForwardedPortCollisionParams, "vagrant-vmware-desktop/action/prepare_forwarded_port_collision_params"
|
40
|
+
autoload :PrepareSyncedFolderCleanup, "vagrant-vmware-desktop/action/prepare_synced_folder_cleanup"
|
41
|
+
autoload :PruneForwardedPorts, "vagrant-vmware-desktop/action/prune_forwarded_ports"
|
42
|
+
autoload :PruneNFSExports, "vagrant-vmware-desktop/action/prune_nfs_exports"
|
43
|
+
autoload :Running, "vagrant-vmware-desktop/action/running"
|
44
|
+
autoload :SetDisplayName, "vagrant-vmware-desktop/action/set_display_name"
|
45
|
+
autoload :ShareFolders, "vagrant-vmware-desktop/action/share_folders"
|
46
|
+
autoload :SnapshotDelete, "vagrant-vmware-desktop/action/snapshot_delete"
|
47
|
+
autoload :SnapshotRestore, "vagrant-vmware-desktop/action/snapshot_restore"
|
48
|
+
autoload :SnapshotSave, "vagrant-vmware-desktop/action/snapshot_save"
|
49
|
+
autoload :Suspend, "vagrant-vmware-desktop/action/suspend"
|
50
|
+
autoload :Suspended, "vagrant-vmware-desktop/action/suspended"
|
51
|
+
autoload :VMXModify, "vagrant-vmware-desktop/action/vmx_modify"
|
52
|
+
autoload :WaitForAddress, "vagrant-vmware-desktop/action/wait_for_address"
|
53
|
+
autoload :WaitForCommunicator, "vagrant-vmware-desktop/action/wait_for_communicator_compat"
|
54
|
+
autoload :WaitForVMXHalt, "vagrant-vmware-desktop/action/wait_for_vmx_halt"
|
55
|
+
|
56
|
+
# This action is called to destroy a VM.
|
57
|
+
def self.action_destroy
|
58
|
+
Vagrant::Action::Builder.new.tap do |b|
|
59
|
+
b.use Compatibility
|
60
|
+
|
61
|
+
if Vagrant::VERSION < "1.6.0"
|
62
|
+
b.use MachineLock
|
63
|
+
end
|
64
|
+
|
65
|
+
b.use FixOldMachineID
|
66
|
+
b.use Call, Created do |env1, b2|
|
67
|
+
if !env1[:result]
|
68
|
+
b2.use MessageNotCreated
|
69
|
+
next
|
70
|
+
end
|
71
|
+
|
72
|
+
b2.use Call, DestroyConfirm do |env2, b3|
|
73
|
+
if env2[:result]
|
74
|
+
b3.use ConfigValidate
|
75
|
+
b3.use ProvisionerCleanup, :before if defined?(ProvisionerCleanup)
|
76
|
+
b3.use EnvSet, :force_halt => env2.key?(:force_halt) ? env2[:force_halt] : true
|
77
|
+
b3.use action_halt
|
78
|
+
b3.use Destroy
|
79
|
+
b3.use PruneForwardedPorts
|
80
|
+
|
81
|
+
if Vagrant::VERSION < "1.4.0"
|
82
|
+
b3.use PruneNFSExports
|
83
|
+
else
|
84
|
+
b3.use PrepareSyncedFolderCleanup
|
85
|
+
b3.use SyncedFolderCleanup
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
b.use Checkpoint
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# This action is called to stop a running VM.
|
95
|
+
def self.action_halt
|
96
|
+
Vagrant::Action::Builder.new.tap do |b|
|
97
|
+
b.use Compatibility
|
98
|
+
b.use ConfigValidate
|
99
|
+
b.use FixOldMachineID
|
100
|
+
b.use CheckVMware
|
101
|
+
|
102
|
+
if Vagrant::VERSION < "1.6.0"
|
103
|
+
b.use MachineLock
|
104
|
+
end
|
105
|
+
|
106
|
+
b.use Call, Created do |env1, b2|
|
107
|
+
if !env1[:result]
|
108
|
+
b2.use MessageNotCreated
|
109
|
+
next
|
110
|
+
end
|
111
|
+
|
112
|
+
b2.use DiscardSuspendedState
|
113
|
+
b2.use Call, Running do |env2, b3|
|
114
|
+
if env2[:result]
|
115
|
+
b3.use Call, GracefulHalt, :not_running, :running do |env3, b4|
|
116
|
+
if !env3[:result]
|
117
|
+
b4.use DiscardSuspendedState
|
118
|
+
b4.use Halt
|
119
|
+
end
|
120
|
+
|
121
|
+
b4.use WaitForVMXHalt
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
b.use Checkpoint
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# This action is called to package a VM.
|
131
|
+
def self.action_package
|
132
|
+
Vagrant::Action::Builder.new.tap do |b|
|
133
|
+
b.use Compatibility
|
134
|
+
b.use ConfigValidate
|
135
|
+
b.use FixOldMachineID
|
136
|
+
|
137
|
+
b.use Call, Created do |env1, b2|
|
138
|
+
if !env1[:result]
|
139
|
+
b2.use MessageNotCreated
|
140
|
+
next
|
141
|
+
end
|
142
|
+
|
143
|
+
b2.use PackageSetupFolders
|
144
|
+
b2.use PackageSetupFiles
|
145
|
+
b2.use action_halt
|
146
|
+
b2.use PruneForwardedPorts
|
147
|
+
b2.use PrepareSyncedFolderCleanup
|
148
|
+
b2.use SyncedFolderCleanup
|
149
|
+
b2.use Package
|
150
|
+
b2.use Export
|
151
|
+
b2.use PackageVagrantfile
|
152
|
+
end
|
153
|
+
b.use Checkpoint
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
# This action is called to provision a VM.
|
158
|
+
def self.action_provision
|
159
|
+
Vagrant::Action::Builder.new.tap do |b|
|
160
|
+
b.use Compatibility
|
161
|
+
b.use ConfigValidate
|
162
|
+
b.use FixOldMachineID
|
163
|
+
|
164
|
+
b.use Call, Created do |env1, b2|
|
165
|
+
if !env1[:result]
|
166
|
+
b2.use MessageNotCreated
|
167
|
+
next
|
168
|
+
end
|
169
|
+
|
170
|
+
b2.use Call, Running do |env2, b3|
|
171
|
+
if !env2[:result]
|
172
|
+
raise Vagrant::Errors::VMNotRunningError
|
173
|
+
end
|
174
|
+
|
175
|
+
b3.use Provision
|
176
|
+
end
|
177
|
+
end
|
178
|
+
b.use Checkpoint
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# This action is called when the VM is to be stopped then started.
|
183
|
+
def self.action_reload
|
184
|
+
Vagrant::Action::Builder.new.tap do |b|
|
185
|
+
b.use Compatibility
|
186
|
+
b.use FixOldMachineID
|
187
|
+
b.use Call, Created do |env1, b2|
|
188
|
+
if !env1[:result]
|
189
|
+
b2.use MessageNotCreated
|
190
|
+
next
|
191
|
+
end
|
192
|
+
|
193
|
+
b2.use action_halt
|
194
|
+
b2.use action_start
|
195
|
+
end
|
196
|
+
b.use Checkpoint
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
# This action is called when the VM is to be resumed.
|
201
|
+
def self.action_resume
|
202
|
+
Vagrant::Action::Builder.new.tap do |b|
|
203
|
+
b.use Compatibility
|
204
|
+
b.use ConfigValidate
|
205
|
+
b.use FixOldMachineID
|
206
|
+
b.use CheckVMware
|
207
|
+
b.use Call, Created do |env1, b2|
|
208
|
+
if !env1[:result]
|
209
|
+
b2.use MessageNotCreated
|
210
|
+
next
|
211
|
+
end
|
212
|
+
|
213
|
+
b2.use action_start
|
214
|
+
end
|
215
|
+
b.use Checkpoint
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
# This action is called to delete a snapshot.
|
220
|
+
def self.action_snapshot_delete
|
221
|
+
Vagrant::Action::Builder.new.tap do |b|
|
222
|
+
b.use Compatibility
|
223
|
+
b.use ConfigValidate
|
224
|
+
b.use FixOldMachineID
|
225
|
+
b.use CheckVMware
|
226
|
+
|
227
|
+
b.use Call, Created do |env1, b2|
|
228
|
+
if !env1[:result]
|
229
|
+
b2.use MessageNotCreated
|
230
|
+
next
|
231
|
+
end
|
232
|
+
|
233
|
+
b2.use SnapshotDelete
|
234
|
+
end
|
235
|
+
b.use Checkpoint
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
# This action is called to restore a snapshot.
|
240
|
+
def self.action_snapshot_restore
|
241
|
+
Vagrant::Action::Builder.new.tap do |b|
|
242
|
+
b.use Compatibility
|
243
|
+
b.use ConfigValidate
|
244
|
+
b.use FixOldMachineID
|
245
|
+
b.use CheckVMware
|
246
|
+
|
247
|
+
b.use Call, Created do |env1, b2|
|
248
|
+
if !env1[:result]
|
249
|
+
b2.use MessageNotCreated
|
250
|
+
next
|
251
|
+
end
|
252
|
+
|
253
|
+
b2.use SnapshotRestore
|
254
|
+
b2.use action_start
|
255
|
+
end
|
256
|
+
b.use Checkpoint
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
# This action is called to save a snapshot.
|
261
|
+
def self.action_snapshot_save
|
262
|
+
Vagrant::Action::Builder.new.tap do |b|
|
263
|
+
b.use Compatibility
|
264
|
+
b.use ConfigValidate
|
265
|
+
b.use FixOldMachineID
|
266
|
+
b.use CheckVMware
|
267
|
+
|
268
|
+
b.use Call, Created do |env1, b2|
|
269
|
+
if !env1[:result]
|
270
|
+
b2.use MessageNotCreated
|
271
|
+
next
|
272
|
+
end
|
273
|
+
|
274
|
+
b2.use SnapshotSave
|
275
|
+
end
|
276
|
+
b.use Checkpoint
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
# This action is called to SSH into the machine.
|
281
|
+
def self.action_ssh
|
282
|
+
Vagrant::Action::Builder.new.tap do |b|
|
283
|
+
b.use Compatibility
|
284
|
+
b.use ConfigValidate
|
285
|
+
b.use FixOldMachineID
|
286
|
+
b.use CheckVMware
|
287
|
+
b.use SSHExec
|
288
|
+
b.use Checkpoint
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
292
|
+
# This action is called that will run a single SSH command.
|
293
|
+
def self.action_ssh_run
|
294
|
+
Vagrant::Action::Builder.new.tap do |b|
|
295
|
+
b.use Compatibility
|
296
|
+
b.use ConfigValidate
|
297
|
+
b.use FixOldMachineID
|
298
|
+
b.use CheckVMware
|
299
|
+
b.use Call, Created do |env1, b2|
|
300
|
+
if !env1[:result]
|
301
|
+
b2.use MessageNotCreated
|
302
|
+
next
|
303
|
+
end
|
304
|
+
|
305
|
+
b2.use Call, Running do |env2, b3|
|
306
|
+
if !env2[:result]
|
307
|
+
raise Vagrant::Errors::VMNotRunningError
|
308
|
+
end
|
309
|
+
|
310
|
+
b3.use SSHRun
|
311
|
+
end
|
312
|
+
end
|
313
|
+
b.use Checkpoint
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
# This action starts the VM, from whatever state it may be.
|
318
|
+
def self.action_start
|
319
|
+
Vagrant::Action::Builder.new.tap do |b|
|
320
|
+
b.use Compatibility
|
321
|
+
b.use FixOldMachineID
|
322
|
+
|
323
|
+
if Vagrant::VERSION >= "1.5.0"
|
324
|
+
b.use BoxCheckOutdated
|
325
|
+
end
|
326
|
+
|
327
|
+
b.use Call, Running do |env, b2|
|
328
|
+
if env[:result]
|
329
|
+
b2.use MessageAlreadyRunning
|
330
|
+
next
|
331
|
+
end
|
332
|
+
|
333
|
+
b2.use CheckExistingNetwork
|
334
|
+
b2.use PruneForwardedPorts
|
335
|
+
b2.use Call, Suspended do |env2, b3|
|
336
|
+
# If it is suspended then the following have no effect
|
337
|
+
if !env2[:result]
|
338
|
+
if Vagrant::VERSION < "1.6.0"
|
339
|
+
b3.use MachineLock
|
340
|
+
end
|
341
|
+
|
342
|
+
b3.use Provision
|
343
|
+
|
344
|
+
if Vagrant::VERSION < "1.4.0"
|
345
|
+
b3.use PruneNFSExports
|
346
|
+
b3.use NFS
|
347
|
+
b3.use ClearSharedFolders
|
348
|
+
b3.use ShareFolders
|
349
|
+
else
|
350
|
+
b3.use PrepareSyncedFolderCleanup
|
351
|
+
b3.use SyncedFolderCleanup
|
352
|
+
b3.use SyncedFolders
|
353
|
+
end
|
354
|
+
|
355
|
+
b3.use PrepareNFSSettings
|
356
|
+
b3.use Network
|
357
|
+
b3.use BaseMacToIp
|
358
|
+
b3.use SetHostname
|
359
|
+
end
|
360
|
+
|
361
|
+
Vagrant::Util::Experimental.guard_with(:disks) do
|
362
|
+
b3.use CleanupDisks
|
363
|
+
b3.use Disk
|
364
|
+
end
|
365
|
+
b3.use VMXModify
|
366
|
+
b3.use PrepareForwardedPortCollisionParams
|
367
|
+
b3.use HandleForwardedPortCollisions
|
368
|
+
b3.use Boot
|
369
|
+
b3.use WaitForAddress
|
370
|
+
b3.use ForwardPorts
|
371
|
+
|
372
|
+
if Vagrant::VERSION < "1.3.0"
|
373
|
+
b3.use WaitForCommunicatorCompat
|
374
|
+
else
|
375
|
+
b3.use WaitForCommunicator
|
376
|
+
end
|
377
|
+
end
|
378
|
+
end
|
379
|
+
b.use Checkpoint
|
380
|
+
end
|
381
|
+
end
|
382
|
+
|
383
|
+
# This action is called to stop a running VM.
|
384
|
+
def self.action_suspend
|
385
|
+
Vagrant::Action::Builder.new.tap do |b|
|
386
|
+
b.use Compatibility
|
387
|
+
b.use ConfigValidate
|
388
|
+
b.use FixOldMachineID
|
389
|
+
b.use CheckVMware
|
390
|
+
b.use Call, Created do |env1, b2|
|
391
|
+
if !env1[:result]
|
392
|
+
b2.use MessageNotCreated
|
393
|
+
next
|
394
|
+
end
|
395
|
+
|
396
|
+
b2.use Suspend
|
397
|
+
end
|
398
|
+
b.use Checkpoint
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
# This action is called to bring the box up from nothing.
|
403
|
+
def self.action_up
|
404
|
+
Vagrant::Action::Builder.new.tap do |b|
|
405
|
+
b.use Compatibility
|
406
|
+
b.use ConfigValidate
|
407
|
+
b.use FixOldMachineID
|
408
|
+
b.use CheckVMware
|
409
|
+
|
410
|
+
if Vagrant::VERSION < "1.6.0"
|
411
|
+
b.use MachineLock
|
412
|
+
end
|
413
|
+
|
414
|
+
|
415
|
+
b.use Call, Created do |env1, b2|
|
416
|
+
if !env1[:result]
|
417
|
+
# If it is not created, then we need to grab the box,
|
418
|
+
# import it, and so on.
|
419
|
+
if Vagrant::VERSION < "1.5.0"
|
420
|
+
b2.use HandleBoxUrl
|
421
|
+
else
|
422
|
+
b2.use HandleBox
|
423
|
+
end
|
424
|
+
|
425
|
+
# Vagrant 1.8 added config.vm.clone. We do some things
|
426
|
+
# to get ready for it here.
|
427
|
+
if Vagrant::VERSION >= "1.8.0"
|
428
|
+
b2.use PrepareClone
|
429
|
+
end
|
430
|
+
|
431
|
+
b2.use Import
|
432
|
+
b2.use SetDisplayName
|
433
|
+
end
|
434
|
+
|
435
|
+
b2.use action_start
|
436
|
+
end
|
437
|
+
b.use Checkpoint
|
438
|
+
end
|
439
|
+
end
|
440
|
+
end
|
441
|
+
end
|
442
|
+
end
|