fixed-vagrant 0.7.4.dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +15 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +272 -0
- data/Gemfile +21 -0
- data/LICENSE +21 -0
- data/README.md +75 -0
- data/Rakefile +22 -0
- data/bin/vagrant +22 -0
- data/config/default.rb +39 -0
- data/contrib/README.md +12 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/keys/README.md +17 -0
- data/keys/vagrant +27 -0
- data/keys/vagrant.ppk +26 -0
- data/keys/vagrant.pub +1 -0
- data/lib/vagrant.rb +42 -0
- data/lib/vagrant/action.rb +134 -0
- data/lib/vagrant/action/box.rb +11 -0
- data/lib/vagrant/action/box/destroy.rb +21 -0
- data/lib/vagrant/action/box/download.rb +72 -0
- data/lib/vagrant/action/box/package.rb +19 -0
- data/lib/vagrant/action/box/unpackage.rb +55 -0
- data/lib/vagrant/action/box/verify.rb +23 -0
- data/lib/vagrant/action/builder.rb +124 -0
- data/lib/vagrant/action/builtin.rb +104 -0
- data/lib/vagrant/action/env.rb +7 -0
- data/lib/vagrant/action/env/set.rb +18 -0
- data/lib/vagrant/action/environment.rb +50 -0
- data/lib/vagrant/action/general.rb +8 -0
- data/lib/vagrant/action/general/package.rb +109 -0
- data/lib/vagrant/action/general/validate.rb +19 -0
- data/lib/vagrant/action/vm.rb +31 -0
- data/lib/vagrant/action/vm/boot.rb +48 -0
- data/lib/vagrant/action/vm/check_box.rb +28 -0
- data/lib/vagrant/action/vm/check_guest_additions.rb +30 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +39 -0
- data/lib/vagrant/action/vm/clear_nfs_exports.rb +20 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +32 -0
- data/lib/vagrant/action/vm/customize.rb +21 -0
- data/lib/vagrant/action/vm/destroy.rb +19 -0
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +30 -0
- data/lib/vagrant/action/vm/discard_state.rb +22 -0
- data/lib/vagrant/action/vm/export.rb +52 -0
- data/lib/vagrant/action/vm/forward_ports.rb +134 -0
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +28 -0
- data/lib/vagrant/action/vm/halt.rb +29 -0
- data/lib/vagrant/action/vm/host_name.rb +21 -0
- data/lib/vagrant/action/vm/import.rb +35 -0
- data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
- data/lib/vagrant/action/vm/network.rb +139 -0
- data/lib/vagrant/action/vm/nfs.rb +159 -0
- data/lib/vagrant/action/vm/nfs_helpers.rb +11 -0
- data/lib/vagrant/action/vm/package.rb +23 -0
- data/lib/vagrant/action/vm/package_vagrantfile.rb +33 -0
- data/lib/vagrant/action/vm/provision.rb +41 -0
- data/lib/vagrant/action/vm/resume.rb +20 -0
- data/lib/vagrant/action/vm/share_folders.rb +70 -0
- data/lib/vagrant/action/vm/suspend.rb +20 -0
- data/lib/vagrant/action/warden.rb +79 -0
- data/lib/vagrant/box.rb +90 -0
- data/lib/vagrant/box_collection.rb +53 -0
- data/lib/vagrant/cli.rb +55 -0
- data/lib/vagrant/command.rb +25 -0
- data/lib/vagrant/command/base.rb +106 -0
- data/lib/vagrant/command/box.rb +33 -0
- data/lib/vagrant/command/destroy.rb +17 -0
- data/lib/vagrant/command/group_base.rb +107 -0
- data/lib/vagrant/command/halt.rb +18 -0
- data/lib/vagrant/command/helpers.rb +33 -0
- data/lib/vagrant/command/init.rb +14 -0
- data/lib/vagrant/command/named_base.rb +14 -0
- data/lib/vagrant/command/package.rb +41 -0
- data/lib/vagrant/command/provision.rb +17 -0
- data/lib/vagrant/command/reload.rb +17 -0
- data/lib/vagrant/command/resume.rb +17 -0
- data/lib/vagrant/command/ssh.rb +42 -0
- data/lib/vagrant/command/ssh_config.rb +26 -0
- data/lib/vagrant/command/status.rb +22 -0
- data/lib/vagrant/command/suspend.rb +17 -0
- data/lib/vagrant/command/up.rb +19 -0
- data/lib/vagrant/command/upgrade_to_060.rb +45 -0
- data/lib/vagrant/command/version.rb +13 -0
- data/lib/vagrant/config.rb +123 -0
- data/lib/vagrant/config/base.rb +85 -0
- data/lib/vagrant/config/error_recorder.rb +19 -0
- data/lib/vagrant/config/nfs.rb +10 -0
- data/lib/vagrant/config/package.rb +9 -0
- data/lib/vagrant/config/ssh.rb +33 -0
- data/lib/vagrant/config/top.rb +61 -0
- data/lib/vagrant/config/vagrant.rb +16 -0
- data/lib/vagrant/config/vm.rb +137 -0
- data/lib/vagrant/config/vm/provisioner.rb +56 -0
- data/lib/vagrant/config/vm/sub_vm.rb +17 -0
- data/lib/vagrant/data_store.rb +70 -0
- data/lib/vagrant/downloaders.rb +7 -0
- data/lib/vagrant/downloaders/base.rb +23 -0
- data/lib/vagrant/downloaders/file.rb +22 -0
- data/lib/vagrant/downloaders/http.rb +64 -0
- data/lib/vagrant/environment.rb +392 -0
- data/lib/vagrant/errors.rb +332 -0
- data/lib/vagrant/hosts.rb +8 -0
- data/lib/vagrant/hosts/arch.rb +27 -0
- data/lib/vagrant/hosts/base.rb +78 -0
- data/lib/vagrant/hosts/bsd.rb +52 -0
- data/lib/vagrant/hosts/linux.rb +47 -0
- data/lib/vagrant/plugin.rb +57 -0
- data/lib/vagrant/provisioners.rb +9 -0
- data/lib/vagrant/provisioners/base.rb +63 -0
- data/lib/vagrant/provisioners/chef.rb +130 -0
- data/lib/vagrant/provisioners/chef_server.rb +103 -0
- data/lib/vagrant/provisioners/chef_solo.rb +142 -0
- data/lib/vagrant/provisioners/puppet.rb +137 -0
- data/lib/vagrant/provisioners/puppet_server.rb +55 -0
- data/lib/vagrant/provisioners/shell.rb +52 -0
- data/lib/vagrant/ssh.rb +173 -0
- data/lib/vagrant/ssh/session.rb +125 -0
- data/lib/vagrant/systems.rb +11 -0
- data/lib/vagrant/systems/base.rb +87 -0
- data/lib/vagrant/systems/debian.rb +36 -0
- data/lib/vagrant/systems/freebsd.rb +84 -0
- data/lib/vagrant/systems/gentoo.rb +27 -0
- data/lib/vagrant/systems/linux.rb +83 -0
- data/lib/vagrant/systems/linux/config.rb +21 -0
- data/lib/vagrant/systems/linux/error.rb +9 -0
- data/lib/vagrant/systems/redhat.rb +39 -0
- data/lib/vagrant/systems/solaris.rb +62 -0
- data/lib/vagrant/systems/ubuntu.rb +17 -0
- data/lib/vagrant/test_helpers.rb +128 -0
- data/lib/vagrant/ui.rb +69 -0
- data/lib/vagrant/util.rb +13 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/plain_logger.rb +25 -0
- data/lib/vagrant/util/platform.rb +65 -0
- data/lib/vagrant/util/resource_logger.rb +63 -0
- data/lib/vagrant/util/retryable.rb +25 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant/vm.rb +177 -0
- data/templates/chef_server_client.erb +18 -0
- data/templates/chef_solo_solo.erb +19 -0
- data/templates/commands/init/Vagrantfile.erb +82 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/locales/en.yml +535 -0
- data/templates/network_entry_debian.erb +8 -0
- data/templates/network_entry_gentoo.erb +5 -0
- data/templates/network_entry_redhat.erb +8 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_linux.erb +5 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/ssh_config.erb +9 -0
- data/test/locales/en.yml +8 -0
- data/test/test_helper.rb +26 -0
- data/test/vagrant/action/box/destroy_test.rb +18 -0
- data/test/vagrant/action/box/download_test.rb +125 -0
- data/test/vagrant/action/box/package_test.rb +25 -0
- data/test/vagrant/action/box/unpackage_test.rb +84 -0
- data/test/vagrant/action/box/verify_test.rb +30 -0
- data/test/vagrant/action/builder_test.rb +203 -0
- data/test/vagrant/action/env/set_test.rb +24 -0
- data/test/vagrant/action/environment_test.rb +27 -0
- data/test/vagrant/action/general/package_test.rb +268 -0
- data/test/vagrant/action/general/validate_test.rb +31 -0
- data/test/vagrant/action/vm/boot_test.rb +66 -0
- data/test/vagrant/action/vm/check_box_test.rb +56 -0
- data/test/vagrant/action/vm/check_guest_additions_test.rb +9 -0
- data/test/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
- data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +72 -0
- data/test/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
- data/test/vagrant/action/vm/clear_shared_folders_test.rb +49 -0
- data/test/vagrant/action/vm/customize_test.rb +30 -0
- data/test/vagrant/action/vm/destroy_test.rb +25 -0
- data/test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
- data/test/vagrant/action/vm/discard_state_test.rb +45 -0
- data/test/vagrant/action/vm/export_test.rb +107 -0
- data/test/vagrant/action/vm/forward_ports_helpers_test.rb +70 -0
- data/test/vagrant/action/vm/forward_ports_test.rb +194 -0
- data/test/vagrant/action/vm/halt_test.rb +79 -0
- data/test/vagrant/action/vm/host_name_test.rb +36 -0
- data/test/vagrant/action/vm/import_test.rb +66 -0
- data/test/vagrant/action/vm/match_mac_address_test.rb +36 -0
- data/test/vagrant/action/vm/network_test.rb +286 -0
- data/test/vagrant/action/vm/nfs_helpers_test.rb +26 -0
- data/test/vagrant/action/vm/nfs_test.rb +260 -0
- data/test/vagrant/action/vm/package_test.rb +25 -0
- data/test/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
- data/test/vagrant/action/vm/provision_test.rb +90 -0
- data/test/vagrant/action/vm/resume_test.rb +35 -0
- data/test/vagrant/action/vm/share_folders_test.rb +139 -0
- data/test/vagrant/action/vm/suspend_test.rb +35 -0
- data/test/vagrant/action/warden_test.rb +119 -0
- data/test/vagrant/action_test.rb +89 -0
- data/test/vagrant/box_collection_test.rb +45 -0
- data/test/vagrant/box_test.rb +74 -0
- data/test/vagrant/cli_test.rb +35 -0
- data/test/vagrant/command/base_test.rb +23 -0
- data/test/vagrant/command/group_base_test.rb +15 -0
- data/test/vagrant/command/helpers_test.rb +88 -0
- data/test/vagrant/command/package_test.rb +27 -0
- data/test/vagrant/config/base_test.rb +52 -0
- data/test/vagrant/config/error_recorder_test.rb +18 -0
- data/test/vagrant/config/ssh_test.rb +12 -0
- data/test/vagrant/config/vagrant_test.rb +35 -0
- data/test/vagrant/config/vm/provisioner_test.rb +92 -0
- data/test/vagrant/config/vm_test.rb +86 -0
- data/test/vagrant/config_test.rb +162 -0
- data/test/vagrant/data_store_test.rb +77 -0
- data/test/vagrant/downloaders/base_test.rb +28 -0
- data/test/vagrant/downloaders/file_test.rb +48 -0
- data/test/vagrant/downloaders/http_test.rb +80 -0
- data/test/vagrant/environment_test.rb +508 -0
- data/test/vagrant/errors_test.rb +42 -0
- data/test/vagrant/hosts/base_test.rb +46 -0
- data/test/vagrant/hosts/bsd_test.rb +53 -0
- data/test/vagrant/hosts/linux_test.rb +54 -0
- data/test/vagrant/plugin_test.rb +9 -0
- data/test/vagrant/provisioners/base_test.rb +63 -0
- data/test/vagrant/provisioners/chef_server_test.rb +188 -0
- data/test/vagrant/provisioners/chef_solo_test.rb +219 -0
- data/test/vagrant/provisioners/chef_test.rb +179 -0
- data/test/vagrant/provisioners/puppet_server_test.rb +68 -0
- data/test/vagrant/provisioners/puppet_test.rb +182 -0
- data/test/vagrant/provisioners/shell_test.rb +68 -0
- data/test/vagrant/ssh/session_test.rb +40 -0
- data/test/vagrant/ssh_test.rb +342 -0
- data/test/vagrant/systems/base_test.rb +18 -0
- data/test/vagrant/systems/linux_test.rb +114 -0
- data/test/vagrant/ui_test.rb +29 -0
- data/test/vagrant/util/busy_test.rb +106 -0
- data/test/vagrant/util/hash_with_indifferent_access_test.rb +39 -0
- data/test/vagrant/util/plain_logger_test.rb +17 -0
- data/test/vagrant/util/platform_test.rb +18 -0
- data/test/vagrant/util/resource_logger_test.rb +78 -0
- data/test/vagrant/util/retryable_test.rb +50 -0
- data/test/vagrant/util/stacked_proc_runner_test.rb +43 -0
- data/test/vagrant/util/template_renderer_test.rb +145 -0
- data/test/vagrant/vm_test.rb +291 -0
- data/vagrant.gemspec +36 -0
- metadata +514 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module General
|
|
4
|
+
# Simply validates the configuration of the current Vagrant
|
|
5
|
+
# environment.
|
|
6
|
+
class Validate
|
|
7
|
+
def initialize(app, env)
|
|
8
|
+
@app = app
|
|
9
|
+
@env = env
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def call(env)
|
|
13
|
+
@env["config"].validate! if !@env.has_key?("validate") || @env["validate"]
|
|
14
|
+
@app.call(@env)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
autoload :Boot, 'vagrant/action/vm/boot'
|
|
5
|
+
autoload :CheckBox, 'vagrant/action/vm/check_box'
|
|
6
|
+
autoload :CheckGuestAdditions, 'vagrant/action/vm/check_guest_additions'
|
|
7
|
+
autoload :CleanMachineFolder, 'vagrant/action/vm/clean_machine_folder'
|
|
8
|
+
autoload :ClearForwardedPorts, 'vagrant/action/vm/clear_forwarded_ports'
|
|
9
|
+
autoload :ClearNFSExports, 'vagrant/action/vm/clear_nfs_exports'
|
|
10
|
+
autoload :ClearSharedFolders, 'vagrant/action/vm/clear_shared_folders'
|
|
11
|
+
autoload :Customize, 'vagrant/action/vm/customize'
|
|
12
|
+
autoload :Destroy, 'vagrant/action/vm/destroy'
|
|
13
|
+
autoload :DestroyUnusedNetworkInterfaces, 'vagrant/action/vm/destroy_unused_network_interfaces'
|
|
14
|
+
autoload :DiscardState, 'vagrant/action/vm/discard_state'
|
|
15
|
+
autoload :Export, 'vagrant/action/vm/export'
|
|
16
|
+
autoload :ForwardPorts, 'vagrant/action/vm/forward_ports'
|
|
17
|
+
autoload :Halt, 'vagrant/action/vm/halt'
|
|
18
|
+
autoload :HostName, 'vagrant/action/vm/host_name'
|
|
19
|
+
autoload :Import, 'vagrant/action/vm/import'
|
|
20
|
+
autoload :MatchMACAddress, 'vagrant/action/vm/match_mac_address'
|
|
21
|
+
autoload :Network, 'vagrant/action/vm/network'
|
|
22
|
+
autoload :NFS, 'vagrant/action/vm/nfs'
|
|
23
|
+
autoload :Package, 'vagrant/action/vm/package'
|
|
24
|
+
autoload :PackageVagrantfile, 'vagrant/action/vm/package_vagrantfile'
|
|
25
|
+
autoload :Provision, 'vagrant/action/vm/provision'
|
|
26
|
+
autoload :Resume, 'vagrant/action/vm/resume'
|
|
27
|
+
autoload :ShareFolders, 'vagrant/action/vm/share_folders'
|
|
28
|
+
autoload :Suspend, 'vagrant/action/vm/suspend'
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
class Boot
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
@env = env
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call(env)
|
|
11
|
+
@env = env
|
|
12
|
+
|
|
13
|
+
# Start up the VM and wait for it to boot.
|
|
14
|
+
boot
|
|
15
|
+
raise Errors::VMFailedToBoot if !wait_for_boot
|
|
16
|
+
|
|
17
|
+
@app.call(env)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def boot
|
|
21
|
+
@env.ui.info I18n.t("vagrant.actions.vm.boot.booting")
|
|
22
|
+
@env["vm"].vm.start(@env.env.config.vm.boot_mode)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def wait_for_boot
|
|
26
|
+
@env.ui.info I18n.t("vagrant.actions.vm.boot.waiting")
|
|
27
|
+
|
|
28
|
+
@env["config"].ssh.max_tries.to_i.times do |i|
|
|
29
|
+
if @env["vm"].ssh.up?
|
|
30
|
+
@env.ui.info I18n.t("vagrant.actions.vm.boot.ready")
|
|
31
|
+
return true
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Return true so that the vm_failed_to_boot error doesn't
|
|
35
|
+
# get shown
|
|
36
|
+
return true if @env.interrupted?
|
|
37
|
+
|
|
38
|
+
sleep 2 if !@env["vagrant.test"]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
@env.ui.error I18n.t("vagrant.actions.vm.boot.failed")
|
|
42
|
+
false
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
class CheckBox
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
box_name = env["config"].vm.box
|
|
11
|
+
raise Errors::BoxNotSpecified if !box_name
|
|
12
|
+
|
|
13
|
+
if !env.env.boxes.find(box_name)
|
|
14
|
+
box_url = env["config"].vm.box_url
|
|
15
|
+
raise Errors::BoxSpecifiedDoesntExist, :name => box_name if !box_url
|
|
16
|
+
|
|
17
|
+
env.ui.info I18n.t("vagrant.actions.vm.check_box.not_found", :name => box_name)
|
|
18
|
+
Vagrant::Box.add(env.env, box_name, box_url)
|
|
19
|
+
env["boxes"].reload!
|
|
20
|
+
env.env.reload_config!
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
@app.call(env)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
# Middleware which verifies that the VM has the proper guest additions
|
|
5
|
+
# installed and prints a warning if they're not detected or if the
|
|
6
|
+
# version does not match the installed VirtualBox version.
|
|
7
|
+
class CheckGuestAdditions
|
|
8
|
+
def initialize(app, env)
|
|
9
|
+
@app = app
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def call(env)
|
|
13
|
+
# Use the raw interface for now, while the virtualbox gem
|
|
14
|
+
# doesn't support guest properties (due to cross platform issues)
|
|
15
|
+
version = env["vm"].vm.interface.get_guest_property_value("/VirtualBox/GuestAdd/Version")
|
|
16
|
+
if version.empty?
|
|
17
|
+
env.ui.warn I18n.t("vagrant.actions.vm.check_guest_additions.not_detected")
|
|
18
|
+
elsif version != VirtualBox.version
|
|
19
|
+
env.ui.warn(I18n.t("vagrant.actions.vm.check_guest_additions.version_mismatch",
|
|
20
|
+
:guest_version => version,
|
|
21
|
+
:virtualbox_version => VirtualBox.version))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Continue
|
|
25
|
+
@app.call(env)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
class Action
|
|
5
|
+
module VM
|
|
6
|
+
# Cleans up the VirtualBox machine folder for any ".xml-prev"
|
|
7
|
+
# files which VirtualBox may have left over. This is a bug in
|
|
8
|
+
# VirtualBox. As soon as this is fixed, this middleware can and
|
|
9
|
+
# will be removed.
|
|
10
|
+
class CleanMachineFolder
|
|
11
|
+
def initialize(app, env)
|
|
12
|
+
@app = app
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def call(env)
|
|
16
|
+
clean_machine_folder
|
|
17
|
+
@app.call(env)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def clean_machine_folder
|
|
21
|
+
folder = File.join(VirtualBox::Global.global.system_properties.default_machine_folder, "*")
|
|
22
|
+
|
|
23
|
+
# Small safeguard against potentially unwanted rm-rf, since the default
|
|
24
|
+
# machine folder will typically always be greater than 10 characters long.
|
|
25
|
+
# For users with it < 10, out of luck?
|
|
26
|
+
return if folder.length < 10
|
|
27
|
+
|
|
28
|
+
Dir[folder].each do |f|
|
|
29
|
+
next unless File.directory?(f)
|
|
30
|
+
|
|
31
|
+
keep = Dir["#{f}/**/*"].find do |d|
|
|
32
|
+
# Find a file that doesn't have ".xml-prev" as the suffix,
|
|
33
|
+
# which signals that we want to keep this folder
|
|
34
|
+
File.file?(d) && !(File.basename(d) =~ /\.vbox-prev$/)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
FileUtils.rm_rf(f) if !keep
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require File.expand_path("../forward_ports_helpers", __FILE__)
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
class Action
|
|
5
|
+
module VM
|
|
6
|
+
class ClearForwardedPorts
|
|
7
|
+
include ForwardPortsHelpers
|
|
8
|
+
|
|
9
|
+
def initialize(app, env)
|
|
10
|
+
@app = app
|
|
11
|
+
@env = env
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def call(env)
|
|
15
|
+
@env = env
|
|
16
|
+
clear
|
|
17
|
+
@app.call(env)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def clear
|
|
21
|
+
if used_ports.length > 0
|
|
22
|
+
@env.ui.info I18n.t("vagrant.actions.vm.clear_forward_ports.deleting")
|
|
23
|
+
clear_ports
|
|
24
|
+
@env["vm"].reload!
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Deletes existing forwarded ports.
|
|
29
|
+
def clear_ports
|
|
30
|
+
@env["vm"].vm.network_adapters.each do |na|
|
|
31
|
+
na.nat_driver.forwarded_ports.dup.each do |fp|
|
|
32
|
+
fp.destroy
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require File.expand_path("../nfs_helpers", __FILE__)
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
class Action
|
|
5
|
+
module VM
|
|
6
|
+
class ClearNFSExports
|
|
7
|
+
include NFSHelpers
|
|
8
|
+
|
|
9
|
+
def initialize(app, env)
|
|
10
|
+
@app = app
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def call(env)
|
|
14
|
+
clear_nfs_exports(env)
|
|
15
|
+
@app.call(env)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
class ClearSharedFolders
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
@env = env
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call(env)
|
|
11
|
+
@env = env
|
|
12
|
+
|
|
13
|
+
clear_shared_folders
|
|
14
|
+
@app.call(env)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def clear_shared_folders
|
|
18
|
+
if @env["vm"].vm.shared_folders.length > 0
|
|
19
|
+
@env.ui.info I18n.t("vagrant.actions.vm.clear_shared_folders.deleting")
|
|
20
|
+
|
|
21
|
+
folders = @env["vm"].vm.shared_folders.dup
|
|
22
|
+
folders.each do |shared_folder|
|
|
23
|
+
shared_folder.destroy
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
@env["vm"].reload!
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
class Customize
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
if !env.env.config.vm.proc_stack.empty?
|
|
11
|
+
env.ui.info I18n.t("vagrant.actions.vm.customize.running")
|
|
12
|
+
env.env.config.vm.run_procs!(env["vm"].vm)
|
|
13
|
+
env["vm"].vm.save
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
@app.call(env)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
class Destroy
|
|
5
|
+
def initialize(app, env)
|
|
6
|
+
@app = app
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def call(env)
|
|
10
|
+
env.ui.info I18n.t("vagrant.actions.vm.destroy.destroying")
|
|
11
|
+
env["vm"].vm.destroy
|
|
12
|
+
env["vm"].vm = nil
|
|
13
|
+
|
|
14
|
+
@app.call(env)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
# Destroys the unused host only interfaces. This middleware cleans
|
|
5
|
+
# up any created host only networks.
|
|
6
|
+
class DestroyUnusedNetworkInterfaces
|
|
7
|
+
def initialize(app, env)
|
|
8
|
+
@app = app
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def call(env)
|
|
12
|
+
# Destroy all the host only network adapters which are empty.
|
|
13
|
+
VirtualBox::Global.global(true).host.network_interfaces.each do |iface|
|
|
14
|
+
# We only care about host only interfaces
|
|
15
|
+
next if iface.interface_type != :host_only
|
|
16
|
+
|
|
17
|
+
# Destroy it if there is nothing attached
|
|
18
|
+
if iface.attached_vms.empty?
|
|
19
|
+
env.ui.info I18n.t("vagrant.actions.vm.destroy_network.destroying")
|
|
20
|
+
iface.destroy
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Continue along
|
|
25
|
+
@app.call(env)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Vagrant
|
|
2
|
+
class Action
|
|
3
|
+
module VM
|
|
4
|
+
# Discards the saved state of the VM if its saved. If its
|
|
5
|
+
# not saved, does nothing.
|
|
6
|
+
class DiscardState
|
|
7
|
+
def initialize(app, env)
|
|
8
|
+
@app = app
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def call(env)
|
|
12
|
+
if env["vm"].created? && env["vm"].vm.saved?
|
|
13
|
+
env.ui.info I18n.t("vagrant.actions.vm.discard_state.discarding")
|
|
14
|
+
env["vm"].vm.discard_state
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@app.call(env)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module Vagrant
|
|
4
|
+
class Action
|
|
5
|
+
module VM
|
|
6
|
+
class Export
|
|
7
|
+
attr_reader :temp_dir
|
|
8
|
+
|
|
9
|
+
def initialize(app, env)
|
|
10
|
+
@app = app
|
|
11
|
+
@env = env
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def call(env)
|
|
15
|
+
@env = env
|
|
16
|
+
|
|
17
|
+
raise Errors::VMPowerOffToPackage if !@env["vm"].vm.powered_off?
|
|
18
|
+
|
|
19
|
+
setup_temp_dir
|
|
20
|
+
export
|
|
21
|
+
|
|
22
|
+
@app.call(env)
|
|
23
|
+
|
|
24
|
+
recover(env) # called to cleanup temp directory
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def recover(env)
|
|
28
|
+
if temp_dir && File.exist?(temp_dir)
|
|
29
|
+
FileUtils.rm_rf(temp_dir)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def setup_temp_dir
|
|
34
|
+
@env.ui.info I18n.t("vagrant.actions.vm.export.create_dir")
|
|
35
|
+
@temp_dir = @env["export.temp_dir"] = @env.env.tmp_path.join(Time.now.to_i.to_s)
|
|
36
|
+
FileUtils.mkpath(@env["export.temp_dir"])
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def export
|
|
40
|
+
@env.ui.info I18n.t("vagrant.actions.vm.export.exporting")
|
|
41
|
+
@env["vm"].vm.export(ovf_path) do |progress|
|
|
42
|
+
@env.ui.report_progress(progress.percent, 100, false)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def ovf_path
|
|
47
|
+
File.join(@env["export.temp_dir"], @env.env.config.vm.box_ovf)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|