vagrant 0.8.10 → 0.9.0
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/CHANGELOG.md +77 -1
- data/Gemfile +0 -14
- data/LICENSE +1 -1
- data/bin/vagrant +47 -20
- data/config/default.rb +6 -14
- data/lib/vagrant.rb +132 -5
- data/lib/vagrant/action.rb +45 -123
- data/lib/vagrant/action/box/destroy.rb +7 -3
- data/lib/vagrant/action/box/download.rb +8 -8
- data/lib/vagrant/action/box/package.rb +2 -2
- data/lib/vagrant/action/box/unpackage.rb +13 -7
- data/lib/vagrant/action/box/verify.rb +5 -5
- data/lib/vagrant/action/builder.rb +23 -19
- data/lib/vagrant/action/builtin.rb +117 -79
- data/lib/vagrant/action/env/set.rb +7 -4
- data/lib/vagrant/action/environment.rb +3 -41
- data/lib/vagrant/action/general/package.rb +14 -29
- data/lib/vagrant/action/general/validate.rb +2 -2
- data/lib/vagrant/action/runner.rb +53 -0
- data/lib/vagrant/action/vm/boot.rb +9 -9
- data/lib/vagrant/action/vm/check_accessible.rb +2 -2
- data/lib/vagrant/action/vm/check_box.rb +10 -12
- data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
- data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
- data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
- data/lib/vagrant/action/vm/customize.rb +19 -9
- data/lib/vagrant/action/vm/destroy.rb +4 -4
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
- data/lib/vagrant/action/vm/discard_state.rb +4 -4
- data/lib/vagrant/action/vm/export.rb +13 -8
- data/lib/vagrant/action/vm/forward_ports.rb +55 -102
- data/lib/vagrant/action/vm/halt.rb +9 -6
- data/lib/vagrant/action/vm/host_name.rb +4 -4
- data/lib/vagrant/action/vm/import.rb +19 -10
- data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
- data/lib/vagrant/action/vm/network.rb +300 -94
- data/lib/vagrant/action/vm/nfs.rb +41 -26
- data/lib/vagrant/action/vm/package.rb +1 -1
- data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
- data/lib/vagrant/action/vm/provision.rb +42 -13
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
- data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
- data/lib/vagrant/action/vm/resume.rb +4 -4
- data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
- data/lib/vagrant/action/vm/share_folders.rb +63 -39
- data/lib/vagrant/action/vm/suspend.rb +4 -4
- data/lib/vagrant/action/warden.rb +13 -6
- data/lib/vagrant/box.rb +9 -55
- data/lib/vagrant/box_collection.rb +22 -17
- data/lib/vagrant/cli.rb +62 -47
- data/lib/vagrant/command.rb +18 -20
- data/lib/vagrant/command/base.rb +135 -90
- data/lib/vagrant/command/box.rb +46 -21
- data/lib/vagrant/command/box_add.rb +33 -0
- data/lib/vagrant/command/box_list.rb +25 -0
- data/lib/vagrant/command/box_remove.rb +23 -0
- data/lib/vagrant/command/box_repackage.rb +23 -0
- data/lib/vagrant/command/destroy.rb +16 -5
- data/lib/vagrant/command/halt.rb +25 -7
- data/lib/vagrant/command/init.rb +30 -7
- data/lib/vagrant/command/package.rb +49 -18
- data/lib/vagrant/command/provision.rb +22 -9
- data/lib/vagrant/command/reload.rb +18 -5
- data/lib/vagrant/command/resume.rb +18 -5
- data/lib/vagrant/command/ssh.rb +69 -31
- data/lib/vagrant/command/ssh_config.rb +37 -22
- data/lib/vagrant/command/status.rb +22 -20
- data/lib/vagrant/command/suspend.rb +18 -5
- data/lib/vagrant/command/up.rb +41 -8
- data/lib/vagrant/communication.rb +7 -0
- data/lib/vagrant/communication/base.rb +56 -0
- data/lib/vagrant/communication/ssh.rb +200 -0
- data/lib/vagrant/config.rb +29 -103
- data/lib/vagrant/config/base.rb +18 -26
- data/lib/vagrant/config/container.rb +37 -0
- data/lib/vagrant/config/error_recorder.rb +1 -1
- data/lib/vagrant/config/loader.rb +125 -0
- data/lib/vagrant/config/nfs.rb +1 -3
- data/lib/vagrant/config/package.rb +1 -3
- data/lib/vagrant/config/ssh.rb +31 -16
- data/lib/vagrant/config/top.rb +36 -25
- data/lib/vagrant/config/vagrant.rb +2 -5
- data/lib/vagrant/config/vm.rb +115 -56
- data/lib/vagrant/config/vm/provisioner.rb +16 -20
- data/lib/vagrant/config/vm/sub_vm.rb +1 -1
- data/lib/vagrant/data_store.rb +23 -15
- data/lib/vagrant/downloaders/base.rb +7 -5
- data/lib/vagrant/downloaders/file.rb +4 -4
- data/lib/vagrant/downloaders/http.rb +4 -5
- data/lib/vagrant/driver.rb +7 -0
- data/lib/vagrant/driver/virtualbox.rb +121 -0
- data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
- data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
- data/lib/vagrant/driver/virtualbox_base.rb +284 -0
- data/lib/vagrant/environment.rb +221 -240
- data/lib/vagrant/errors.rb +74 -25
- data/lib/vagrant/guest.rb +16 -0
- data/lib/vagrant/guest/arch.rb +48 -0
- data/lib/vagrant/{systems → guest}/base.rb +30 -18
- data/lib/vagrant/guest/debian.rb +61 -0
- data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
- data/lib/vagrant/guest/gentoo.rb +32 -0
- data/lib/vagrant/guest/linux.rb +78 -0
- data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
- data/lib/vagrant/guest/linux/error.rb +9 -0
- data/lib/vagrant/guest/redhat.rb +66 -0
- data/lib/vagrant/guest/solaris.rb +114 -0
- data/lib/vagrant/{systems → guest}/suse.rb +2 -2
- data/lib/vagrant/guest/ubuntu.rb +23 -0
- data/lib/vagrant/hosts.rb +23 -6
- data/lib/vagrant/hosts/arch.rb +7 -3
- data/lib/vagrant/hosts/base.rb +36 -46
- data/lib/vagrant/hosts/bsd.rb +53 -16
- data/lib/vagrant/hosts/fedora.rb +14 -0
- data/lib/vagrant/hosts/freebsd.rb +6 -36
- data/lib/vagrant/hosts/linux.rb +45 -20
- data/lib/vagrant/hosts/windows.rb +16 -0
- data/lib/vagrant/provisioners.rb +10 -7
- data/lib/vagrant/provisioners/base.rb +11 -34
- data/lib/vagrant/provisioners/chef.rb +30 -26
- data/lib/vagrant/provisioners/chef_client.rb +37 -23
- data/lib/vagrant/provisioners/chef_solo.rb +61 -16
- data/lib/vagrant/provisioners/puppet.rb +70 -38
- data/lib/vagrant/provisioners/puppet_server.rb +12 -13
- data/lib/vagrant/provisioners/shell.rb +24 -24
- data/lib/vagrant/registry.rb +49 -0
- data/lib/vagrant/ssh.rb +82 -153
- data/lib/vagrant/ui.rb +118 -50
- data/lib/vagrant/util/busy.rb +1 -1
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +1 -0
- data/lib/vagrant/util/subprocess.rb +227 -0
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +111 -97
- data/tasks/acceptance.rake +3 -3
- data/tasks/test.rake +7 -2
- data/templates/commands/init/Vagrantfile.erb +11 -4
- data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
- data/templates/guests/arch/network_dhcp.erb +7 -0
- data/templates/guests/arch/network_static.erb +7 -0
- data/templates/guests/debian/network_dhcp.erb +6 -0
- data/templates/guests/debian/network_static.erb +7 -0
- data/templates/guests/gentoo/network_dhcp.erb +4 -0
- data/templates/guests/gentoo/network_static.erb +4 -0
- data/templates/guests/redhat/network_dhcp.erb +6 -0
- data/templates/guests/redhat/network_static.erb +7 -0
- data/templates/locales/en.yml +241 -122
- data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
- data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
- data/test/acceptance/base.rb +10 -10
- data/test/acceptance/box_test.rb +28 -6
- data/test/acceptance/destroy_test.rb +1 -1
- data/test/acceptance/halt_test.rb +4 -4
- data/test/acceptance/init_test.rb +3 -3
- data/test/acceptance/networking/host_only_test.rb +37 -0
- data/test/acceptance/networking/port_forward_test.rb +125 -0
- data/test/acceptance/package_test.rb +46 -0
- data/test/acceptance/provisioning/basic_test.rb +61 -0
- data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
- data/test/acceptance/provisioning/shell_test.rb +53 -0
- data/test/acceptance/resume_test.rb +1 -1
- data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
- data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
- data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/ssh_test.rb +7 -2
- data/test/acceptance/support/config.rb +1 -1
- data/test/acceptance/support/isolated_environment.rb +41 -150
- data/test/acceptance/support/matchers/match_output.rb +1 -1
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +9 -1
- data/test/acceptance/support/shared/base_context.rb +16 -9
- data/test/acceptance/support/shared/command_examples.rb +4 -4
- data/test/acceptance/suspend_test.rb +1 -1
- data/test/acceptance/up_basic_test.rb +26 -7
- data/test/acceptance/up_with_box_url.rb +1 -1
- data/test/acceptance/vagrant_test.rb +1 -1
- data/test/acceptance/version_test.rb +0 -5
- data/test/support/isolated_environment.rb +46 -0
- data/test/{acceptance/support → support}/tempdir.rb +0 -0
- data/test/unit/base.rb +21 -0
- data/test/unit/support/isolated_environment.rb +39 -0
- data/test/unit/support/shared/base_context.rb +30 -0
- data/test/unit/vagrant/action/builder_test.rb +126 -177
- data/test/unit/vagrant/action/environment_test.rb +10 -21
- data/test/unit/vagrant/action/runner_test.rb +65 -0
- data/test/unit/vagrant/action/warden_test.rb +64 -97
- data/test/unit/vagrant/box_collection_test.rb +44 -33
- data/test/unit/vagrant/box_test.rb +25 -65
- data/test/unit/vagrant/command/base_test.rb +141 -14
- data/test/unit/vagrant/config/base_test.rb +16 -43
- data/test/unit/vagrant/config/loader_test.rb +79 -0
- data/test/unit/vagrant/config/top_test.rb +69 -0
- data/test/unit/vagrant/config/vm_test.rb +62 -47
- data/test/unit/vagrant/config_test.rb +16 -151
- data/test/unit/vagrant/data_store_test.rb +43 -61
- data/test/unit/vagrant/downloaders/base_test.rb +12 -22
- data/test/unit/vagrant/downloaders/file_test.rb +58 -31
- data/test/unit/vagrant/downloaders/http_test.rb +12 -86
- data/test/unit/vagrant/environment_test.rb +107 -536
- data/test/unit/vagrant/hosts_test.rb +36 -0
- data/test/unit/vagrant/registry_test.rb +56 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +90 -34
- data/test/unit/vagrant_test.rb +27 -0
- data/test/{unit → unit_legacy}/locales/en.yml +0 -0
- data/test/{unit → unit_legacy}/test_helper.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
- data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
- data/test/unit_legacy/vagrant/box_test.rb +74 -0
- data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
- data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
- data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
- data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
- data/test/unit_legacy/vagrant/config_test.rb +148 -0
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
- data/test/unit_legacy/vagrant/environment_test.rb +539 -0
- data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
- data/vagrant.gemspec +7 -9
- metadata +214 -216
- data/keys/vagrant.ppk +0 -26
- data/lib/vagrant/action/box.rb +0 -11
- data/lib/vagrant/action/env.rb +0 -7
- data/lib/vagrant/action/general.rb +0 -8
- data/lib/vagrant/action/vm.rb +0 -34
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
- data/lib/vagrant/action/vm/modify.rb +0 -37
- data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
- data/lib/vagrant/command/group_base.rb +0 -107
- data/lib/vagrant/command/helpers.rb +0 -33
- data/lib/vagrant/command/named_base.rb +0 -14
- data/lib/vagrant/command/upgrade_to_060.rb +0 -45
- data/lib/vagrant/command/version.rb +0 -13
- data/lib/vagrant/ssh/session.rb +0 -136
- data/lib/vagrant/systems.rb +0 -13
- data/lib/vagrant/systems/arch.rb +0 -34
- data/lib/vagrant/systems/debian.rb +0 -36
- data/lib/vagrant/systems/gentoo.rb +0 -27
- data/lib/vagrant/systems/linux.rb +0 -82
- data/lib/vagrant/systems/linux/error.rb +0 -9
- data/lib/vagrant/systems/redhat.rb +0 -48
- data/lib/vagrant/systems/solaris.rb +0 -113
- data/lib/vagrant/systems/ubuntu.rb +0 -17
- data/templates/network_entry_arch.erb +0 -9
- data/templates/network_entry_debian.erb +0 -8
- data/templates/network_entry_gentoo.erb +0 -5
- data/templates/network_entry_redhat.erb +0 -9
- data/test/unit/vagrant/ui_test.rb +0 -29
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
|
3
3
|
module Vagrant
|
4
|
-
|
4
|
+
module Action
|
5
5
|
module Box
|
6
6
|
class Destroy
|
7
7
|
def initialize(app, env)
|
@@ -10,8 +10,12 @@ module Vagrant
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def call(env)
|
13
|
-
|
14
|
-
|
13
|
+
# Delete the existing box
|
14
|
+
env[:ui].info I18n.t("vagrant.actions.box.destroy.destroying", :name => env[:box_name])
|
15
|
+
FileUtils.rm_rf(env[:box_directory])
|
16
|
+
|
17
|
+
# Reload the box collection
|
18
|
+
env[:box_collection].reload!
|
15
19
|
|
16
20
|
@app.call(env)
|
17
21
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Vagrant
|
2
|
-
|
2
|
+
module Action
|
3
3
|
module Box
|
4
4
|
class Download
|
5
5
|
BASENAME = "box"
|
@@ -36,9 +36,9 @@ module Vagrant
|
|
36
36
|
|
37
37
|
# Use the class if it matches the given URI or if this
|
38
38
|
# is the last class...
|
39
|
-
if classes.length == (i + 1) || klass.match?(@env["
|
40
|
-
@env
|
41
|
-
@downloader = klass.new(@env)
|
39
|
+
if classes.length == (i + 1) || klass.match?(@env["box_url"])
|
40
|
+
@env[:ui].info I18n.t("vagrant.actions.box.download.with", :class => klass.to_s)
|
41
|
+
@downloader = klass.new(@env[:ui])
|
42
42
|
break
|
43
43
|
end
|
44
44
|
end
|
@@ -47,7 +47,7 @@ module Vagrant
|
|
47
47
|
# just in case for now.
|
48
48
|
raise Errors::BoxDownloadUnknownType if !@downloader
|
49
49
|
|
50
|
-
@downloader.prepare(@env["
|
50
|
+
@downloader.prepare(@env["box_url"])
|
51
51
|
true
|
52
52
|
end
|
53
53
|
|
@@ -60,7 +60,7 @@ module Vagrant
|
|
60
60
|
|
61
61
|
def recover(env)
|
62
62
|
if temp_path && File.exist?(temp_path)
|
63
|
-
env
|
63
|
+
env[:ui].info I18n.t("vagrant.actions.box.download.cleaning")
|
64
64
|
File.unlink(temp_path)
|
65
65
|
end
|
66
66
|
end
|
@@ -72,11 +72,11 @@ module Vagrant
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def box_temp_path
|
75
|
-
@env
|
75
|
+
@env[:tmp_path].join(BASENAME + Time.now.to_i.to_s)
|
76
76
|
end
|
77
77
|
|
78
78
|
def download_to(f)
|
79
|
-
@downloader.download!(@env["
|
79
|
+
@downloader.download!(@env["box_url"], f)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'vagrant/action/general/package'
|
2
2
|
|
3
3
|
module Vagrant
|
4
|
-
|
4
|
+
module Action
|
5
5
|
module Box
|
6
6
|
# Packages a box which has already been unpackaged (such as
|
7
7
|
# for the `vagrant box repackage` command) by leveraging the
|
@@ -10,7 +10,7 @@ module Vagrant
|
|
10
10
|
# Alias instead of calling super for testability
|
11
11
|
alias_method :general_call, :call
|
12
12
|
def call(env)
|
13
|
-
env["package.directory"] = env["
|
13
|
+
env["package.directory"] = env["box_directory"]
|
14
14
|
general_call(env)
|
15
15
|
end
|
16
16
|
end
|
@@ -2,7 +2,7 @@ require 'fileutils'
|
|
2
2
|
require 'archive/tar/minitar'
|
3
3
|
|
4
4
|
module Vagrant
|
5
|
-
|
5
|
+
module Action
|
6
6
|
module Box
|
7
7
|
# Unpackages a downloaded box to a given directory with a given
|
8
8
|
# name.
|
@@ -37,16 +37,22 @@ module Vagrant
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def setup_box_directory
|
40
|
-
|
40
|
+
if File.directory?(@env["box_directory"])
|
41
|
+
raise Errors::BoxAlreadyExists, :name => @env["box_name"]
|
42
|
+
end
|
41
43
|
|
42
|
-
FileUtils.mkdir_p(@env["
|
43
|
-
@box_directory = @env["
|
44
|
+
FileUtils.mkdir_p(@env["box_directory"])
|
45
|
+
@box_directory = @env["box_directory"]
|
44
46
|
end
|
45
47
|
|
46
48
|
def decompress
|
47
|
-
Dir.chdir(@env["
|
48
|
-
@env
|
49
|
-
|
49
|
+
Dir.chdir(@env["box_directory"]) do
|
50
|
+
@env[:ui].info I18n.t("vagrant.actions.box.unpackage.extracting")
|
51
|
+
begin
|
52
|
+
Archive::Tar::Minitar.unpack(@env["download.temp_path"], @env["box_directory"].to_s)
|
53
|
+
rescue SystemCallError
|
54
|
+
raise Errors::BoxUnpackageFailure
|
55
|
+
end
|
50
56
|
end
|
51
57
|
end
|
52
58
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Vagrant
|
2
|
-
|
2
|
+
module Action
|
3
3
|
module Box
|
4
4
|
class Verify
|
5
5
|
def initialize(app, env)
|
@@ -8,10 +8,10 @@ module Vagrant
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def call(env)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
@env[:ui].info I18n.t("vagrant.actions.box.verify.verifying")
|
12
|
+
|
13
|
+
driver = Driver::VirtualBox.new(nil)
|
14
|
+
if !driver.verify_image(env["box_directory"].join("box.ovf").to_s)
|
15
15
|
raise Errors::BoxVerificationFailed
|
16
16
|
end
|
17
17
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Vagrant
|
2
|
-
|
2
|
+
module Action
|
3
3
|
# Action builder which provides a nice DSL for building up
|
4
4
|
# a middleware sequence for Vagrant actions. This code is based
|
5
5
|
# heavily off of `Rack::Builder` and `ActionDispatch::MiddlewareStack`
|
@@ -23,14 +23,6 @@ module Vagrant
|
|
23
23
|
instance_eval(&block) if block_given?
|
24
24
|
end
|
25
25
|
|
26
|
-
# Returns the current stack of middlewares. You probably won't
|
27
|
-
# need to use this directly, and it's recommended that you don't.
|
28
|
-
#
|
29
|
-
# @return [Array]
|
30
|
-
def stack
|
31
|
-
@stack ||= []
|
32
|
-
end
|
33
|
-
|
34
26
|
# Returns a mergeable version of the builder. If `use` is called with
|
35
27
|
# the return value of this method, then the stack will merge, instead
|
36
28
|
# of being treated as a separate single middleware.
|
@@ -46,10 +38,12 @@ module Vagrant
|
|
46
38
|
#
|
47
39
|
# @param [Class] middleware The middleware class
|
48
40
|
def use(middleware, *args, &block)
|
49
|
-
if
|
50
|
-
|
51
|
-
self.use(Env::Set,
|
41
|
+
# Prepend with a environment setter if args are given
|
42
|
+
if !args.empty? && args.first.is_a?(Hash) && middleware != Env::Set
|
43
|
+
self.use(Env::Set, args.shift, &block)
|
44
|
+
end
|
52
45
|
|
46
|
+
if middleware.kind_of?(Builder)
|
53
47
|
# Merge in the other builder's stack into our own
|
54
48
|
self.stack.concat(middleware.stack)
|
55
49
|
else
|
@@ -75,9 +69,9 @@ module Vagrant
|
|
75
69
|
insert(index + 1, middleware, *args, &block)
|
76
70
|
end
|
77
71
|
|
78
|
-
#
|
72
|
+
# Replaces the given middlware object or index with the new
|
79
73
|
# middleware.
|
80
|
-
def
|
74
|
+
def replace(index, middleware, *args, &block)
|
81
75
|
if index.is_a?(Integer)
|
82
76
|
delete(index)
|
83
77
|
insert(index, middleware, *args, &block)
|
@@ -93,6 +87,13 @@ module Vagrant
|
|
93
87
|
stack.delete_at(index)
|
94
88
|
end
|
95
89
|
|
90
|
+
# Runs the builder stack with the given environment.
|
91
|
+
def call(env)
|
92
|
+
to_app(env).call(env)
|
93
|
+
end
|
94
|
+
|
95
|
+
protected
|
96
|
+
|
96
97
|
# Returns the numeric index for the given middleware object.
|
97
98
|
#
|
98
99
|
# @param [Object] object The item to find the index for
|
@@ -105,6 +106,14 @@ module Vagrant
|
|
105
106
|
nil
|
106
107
|
end
|
107
108
|
|
109
|
+
# Returns the current stack of middlewares. You probably won't
|
110
|
+
# need to use this directly, and it's recommended that you don't.
|
111
|
+
#
|
112
|
+
# @return [Array]
|
113
|
+
def stack
|
114
|
+
@stack ||= []
|
115
|
+
end
|
116
|
+
|
108
117
|
# Converts the builder stack to a runnable action sequence.
|
109
118
|
#
|
110
119
|
# @param [Vagrant::Action::Environment] env The action environment
|
@@ -114,11 +123,6 @@ module Vagrant
|
|
114
123
|
# and predictable behavior upon exceptions.
|
115
124
|
Warden.new(stack.dup, env)
|
116
125
|
end
|
117
|
-
|
118
|
-
# Runs the builder stack with the given environment.
|
119
|
-
def call(env)
|
120
|
-
to_app(env).call(env)
|
121
|
-
end
|
122
126
|
end
|
123
127
|
end
|
124
128
|
end
|
@@ -1,108 +1,146 @@
|
|
1
1
|
module Vagrant
|
2
|
-
|
3
|
-
# Registers the builtin actions
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
def self.builtin!
|
2
|
+
module Action
|
3
|
+
# Registers the builtin actions with a specific registry.
|
4
|
+
#
|
5
|
+
# These are the pre-built action sequences that are shipped with
|
6
|
+
# Vagrant itself.
|
7
|
+
def self.builtin!(registry)
|
8
8
|
# provision - Provisions a running VM
|
9
|
-
register(:provision
|
10
|
-
|
11
|
-
|
9
|
+
registry.register(:provision) do
|
10
|
+
Builder.new do
|
11
|
+
use General::Validate
|
12
|
+
use VM::CheckAccessible
|
13
|
+
use VM::Provision
|
14
|
+
end
|
15
|
+
end
|
12
16
|
|
13
17
|
# start - Starts a VM, assuming it already exists on the
|
14
18
|
# environment.
|
15
|
-
register(:start
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
19
|
+
registry.register(:start) do
|
20
|
+
Builder.new do
|
21
|
+
use General::Validate
|
22
|
+
use VM::CheckAccessible
|
23
|
+
use VM::CleanMachineFolder
|
24
|
+
use VM::ClearForwardedPorts
|
25
|
+
use VM::CheckPortCollisions, :port_collision_handler => :correct
|
26
|
+
use VM::ForwardPorts
|
27
|
+
use VM::Provision
|
28
|
+
use VM::PruneNFSExports
|
29
|
+
use VM::NFS
|
30
|
+
use VM::ClearSharedFolders
|
31
|
+
use VM::ShareFolders
|
32
|
+
use VM::HostName
|
33
|
+
use VM::ClearNetworkInterfaces
|
34
|
+
use VM::Network
|
35
|
+
use VM::Customize
|
36
|
+
use VM::Boot
|
37
|
+
end
|
38
|
+
end
|
29
39
|
|
30
40
|
# halt - Halts the VM, attempting gracefully but then forcing
|
31
41
|
# a restart if fails.
|
32
|
-
register(:halt
|
33
|
-
|
34
|
-
|
35
|
-
|
42
|
+
registry.register(:halt) do
|
43
|
+
Builder.new do
|
44
|
+
use General::Validate
|
45
|
+
use VM::CheckAccessible
|
46
|
+
use VM::DiscardState
|
47
|
+
use VM::Halt
|
48
|
+
end
|
49
|
+
end
|
36
50
|
|
37
51
|
# suspend - Suspends the VM
|
38
|
-
register(:suspend
|
39
|
-
|
40
|
-
|
52
|
+
registry.register(:suspend) do
|
53
|
+
Builder.new do
|
54
|
+
use General::Validate
|
55
|
+
use VM::CheckAccessible
|
56
|
+
use VM::Suspend
|
57
|
+
end
|
58
|
+
end
|
41
59
|
|
42
60
|
# resume - Resume a VM
|
43
|
-
register(:resume
|
44
|
-
|
45
|
-
|
61
|
+
registry.register(:resume) do
|
62
|
+
Builder.new do
|
63
|
+
use General::Validate
|
64
|
+
use VM::CheckAccessible
|
65
|
+
use VM::CheckPortCollisions
|
66
|
+
use VM::Resume
|
67
|
+
end
|
68
|
+
end
|
46
69
|
|
47
70
|
# reload - Halts then restarts the VM
|
48
|
-
register(:reload
|
49
|
-
|
50
|
-
|
51
|
-
|
71
|
+
registry.register(:reload) do
|
72
|
+
Builder.new do
|
73
|
+
use General::Validate
|
74
|
+
use VM::CheckAccessible
|
75
|
+
use registry.get(:halt)
|
76
|
+
use registry.get(:start)
|
77
|
+
end
|
78
|
+
end
|
52
79
|
|
53
80
|
# up - Imports, prepares, then starts a fresh VM.
|
54
|
-
register(:up
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
81
|
+
registry.register(:up) do
|
82
|
+
Builder.new do
|
83
|
+
use General::Validate
|
84
|
+
use VM::CheckAccessible
|
85
|
+
use VM::CheckBox
|
86
|
+
use VM::Import
|
87
|
+
use VM::CheckGuestAdditions
|
88
|
+
use VM::MatchMACAddress
|
89
|
+
use registry.get(:start)
|
90
|
+
end
|
91
|
+
end
|
61
92
|
|
62
93
|
# destroy - Halts, cleans up, and destroys an existing VM
|
63
|
-
register(:destroy
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
94
|
+
registry.register(:destroy) do
|
95
|
+
Builder.new do
|
96
|
+
use General::Validate
|
97
|
+
use VM::CheckAccessible
|
98
|
+
use registry.get(:halt), :force => true
|
99
|
+
use VM::ProvisionerCleanup
|
100
|
+
use VM::PruneNFSExports
|
101
|
+
use VM::Destroy
|
102
|
+
use VM::CleanMachineFolder
|
103
|
+
use VM::DestroyUnusedNetworkInterfaces
|
104
|
+
end
|
105
|
+
end
|
71
106
|
|
72
107
|
# package - Export and package the VM
|
73
|
-
register(:package
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
108
|
+
registry.register(:package) do
|
109
|
+
Builder.new do
|
110
|
+
use General::Validate
|
111
|
+
use VM::SetupPackageFiles
|
112
|
+
use VM::CheckAccessible
|
113
|
+
use registry.get(:halt)
|
114
|
+
use VM::ClearForwardedPorts
|
115
|
+
use VM::ClearSharedFolders
|
116
|
+
use VM::Export
|
117
|
+
use VM::PackageVagrantfile
|
118
|
+
use VM::Package
|
119
|
+
end
|
120
|
+
end
|
82
121
|
|
83
122
|
# box_add - Download and add a box.
|
84
|
-
register(:box_add
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
123
|
+
registry.register(:box_add) do
|
124
|
+
Builder.new do
|
125
|
+
use Box::Download
|
126
|
+
use Box::Unpackage
|
127
|
+
use Box::Verify
|
128
|
+
end
|
129
|
+
end
|
89
130
|
|
90
131
|
# box_remove - Removes/deletes a box.
|
91
|
-
register(:box_remove
|
92
|
-
|
93
|
-
|
132
|
+
registry.register(:box_remove) do
|
133
|
+
Builder.new do
|
134
|
+
use Box::Destroy
|
135
|
+
end
|
136
|
+
end
|
94
137
|
|
95
138
|
# box_repackage - Repackages a box.
|
96
|
-
register(:box_repackage
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
# now, these are limited to what are needed internally.
|
102
|
-
register(:before_action_run, Builder.new do
|
103
|
-
use General::Validate
|
104
|
-
use VM::CheckAccessible
|
105
|
-
end)
|
139
|
+
registry.register(:box_repackage) do
|
140
|
+
Builder.new do
|
141
|
+
use Box::Package
|
142
|
+
end
|
143
|
+
end
|
106
144
|
end
|
107
145
|
end
|
108
146
|
end
|