vagrantup 0.4.3.dev → 0.5.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.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/config/default.rb +6 -6
- data/lib/vagrant.rb +6 -3
- data/lib/vagrant/action.rb +77 -0
- data/lib/vagrant/action/action_exception.rb +16 -0
- data/lib/vagrant/action/box/destroy.rb +19 -0
- data/lib/vagrant/action/box/download.rb +78 -0
- data/lib/vagrant/action/box/unpackage.rb +58 -0
- data/lib/vagrant/action/box/verify.rb +23 -0
- data/lib/vagrant/action/builder.rb +151 -0
- data/lib/vagrant/action/builtin.rb +114 -0
- data/lib/vagrant/action/env/error_halt.rb +16 -0
- data/lib/vagrant/action/env/set.rb +18 -0
- data/lib/vagrant/action/environment.rb +98 -0
- data/lib/vagrant/action/exception_catcher.rb +14 -0
- data/lib/vagrant/action/vm/boot.rb +54 -0
- data/lib/vagrant/action/vm/check_box.rb +27 -0
- data/lib/vagrant/action/vm/check_guest_additions.rb +32 -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 +20 -0
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +35 -0
- data/lib/vagrant/action/vm/disable_networks.rb +26 -0
- data/lib/vagrant/action/vm/export.rb +53 -0
- data/lib/vagrant/action/vm/forward_ports.rb +121 -0
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +28 -0
- data/lib/vagrant/action/vm/halt.rb +34 -0
- data/lib/vagrant/action/vm/import.rb +33 -0
- data/lib/vagrant/action/vm/match_mac_address.rb +19 -0
- data/lib/vagrant/{actions → action}/vm/network.rb +47 -55
- data/lib/vagrant/action/vm/nfs.rb +161 -0
- data/lib/vagrant/action/vm/nfs_helpers.rb +11 -0
- data/lib/vagrant/action/vm/package.rb +99 -0
- data/lib/vagrant/action/vm/persist.rb +22 -0
- data/lib/vagrant/action/vm/provision.rb +50 -0
- data/lib/vagrant/action/vm/resume.rb +20 -0
- data/lib/vagrant/{actions/vm/shared_folders.rb → action/vm/share_folders.rb} +48 -45
- data/lib/vagrant/action/vm/suspend.rb +20 -0
- data/lib/vagrant/box.rb +3 -7
- data/lib/vagrant/commands/base.rb +1 -3
- data/lib/vagrant/commands/package.rb +4 -9
- data/lib/vagrant/commands/up.rb +0 -2
- data/lib/vagrant/config.rb +15 -1
- data/lib/vagrant/downloaders/file.rb +1 -1
- data/lib/vagrant/downloaders/http.rb +2 -1
- data/lib/vagrant/environment.rb +18 -14
- data/lib/vagrant/hosts/base.rb +77 -0
- data/lib/vagrant/hosts/bsd.rb +53 -0
- data/lib/vagrant/hosts/linux.rb +52 -0
- data/lib/vagrant/provisioners/base.rb +17 -9
- data/lib/vagrant/provisioners/chef.rb +1 -1
- data/lib/vagrant/provisioners/chef_server.rb +4 -8
- data/lib/vagrant/provisioners/chef_solo.rb +1 -2
- data/lib/vagrant/ssh.rb +12 -4
- data/lib/vagrant/systems/base.rb +4 -0
- data/lib/vagrant/systems/linux.rb +12 -1
- data/lib/vagrant/util.rb +16 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/plain_logger.rb +11 -0
- data/lib/vagrant/util/platform.rb +18 -0
- data/lib/vagrant/util/resource_logger.rb +128 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant/vm.rb +10 -12
- data/templates/chef_solo_solo.erb +2 -1
- data/templates/nfs/exports.erb +3 -0
- data/templates/nfs/exports_linux.erb +3 -0
- data/templates/strings.yml +23 -3
- metadata +121 -196
- data/.gitignore +0 -11
- data/Gemfile +0 -18
- data/Rakefile +0 -41
- data/VERSION +0 -1
- data/bin/.gitignore +0 -0
- data/lib/vagrant/actions/base.rb +0 -130
- data/lib/vagrant/actions/box/add.rb +0 -23
- data/lib/vagrant/actions/box/destroy.rb +0 -14
- data/lib/vagrant/actions/box/download.rb +0 -67
- data/lib/vagrant/actions/box/unpackage.rb +0 -42
- data/lib/vagrant/actions/box/verify.rb +0 -32
- data/lib/vagrant/actions/collection.rb +0 -36
- data/lib/vagrant/actions/runner.rb +0 -131
- data/lib/vagrant/actions/vm/boot.rb +0 -43
- data/lib/vagrant/actions/vm/customize.rb +0 -19
- data/lib/vagrant/actions/vm/destroy.rb +0 -24
- data/lib/vagrant/actions/vm/down.rb +0 -22
- data/lib/vagrant/actions/vm/export.rb +0 -45
- data/lib/vagrant/actions/vm/forward_ports.rb +0 -134
- data/lib/vagrant/actions/vm/halt.rb +0 -24
- data/lib/vagrant/actions/vm/import.rb +0 -23
- data/lib/vagrant/actions/vm/move_hard_drive.rb +0 -51
- data/lib/vagrant/actions/vm/package.rb +0 -94
- data/lib/vagrant/actions/vm/provision.rb +0 -49
- data/lib/vagrant/actions/vm/reload.rb +0 -17
- data/lib/vagrant/actions/vm/resume.rb +0 -16
- data/lib/vagrant/actions/vm/start.rb +0 -26
- data/lib/vagrant/actions/vm/suspend.rb +0 -16
- data/lib/vagrant/actions/vm/up.rb +0 -53
- data/lib/vagrant/busy.rb +0 -79
- data/lib/vagrant/resource_logger.rb +0 -126
- data/lib/vagrant/util/error_helper.rb +0 -13
- data/lib/vagrant/util/output_helper.rb +0 -9
- data/test/test_helper.rb +0 -149
- data/test/vagrant/actions/base_test.rb +0 -32
- data/test/vagrant/actions/box/add_test.rb +0 -36
- data/test/vagrant/actions/box/destroy_test.rb +0 -17
- data/test/vagrant/actions/box/download_test.rb +0 -137
- data/test/vagrant/actions/box/unpackage_test.rb +0 -99
- data/test/vagrant/actions/box/verify_test.rb +0 -44
- data/test/vagrant/actions/collection_test.rb +0 -113
- data/test/vagrant/actions/runner_test.rb +0 -268
- data/test/vagrant/actions/vm/boot_test.rb +0 -49
- data/test/vagrant/actions/vm/customize_test.rb +0 -21
- data/test/vagrant/actions/vm/destroy_test.rb +0 -37
- data/test/vagrant/actions/vm/down_test.rb +0 -39
- data/test/vagrant/actions/vm/export_test.rb +0 -88
- data/test/vagrant/actions/vm/forward_ports_test.rb +0 -253
- data/test/vagrant/actions/vm/halt_test.rb +0 -65
- data/test/vagrant/actions/vm/import_test.rb +0 -45
- data/test/vagrant/actions/vm/move_hard_drive_test.rb +0 -106
- data/test/vagrant/actions/vm/network_test.rb +0 -291
- data/test/vagrant/actions/vm/package_test.rb +0 -254
- data/test/vagrant/actions/vm/provision_test.rb +0 -99
- data/test/vagrant/actions/vm/reload_test.rb +0 -46
- data/test/vagrant/actions/vm/resume_test.rb +0 -26
- data/test/vagrant/actions/vm/shared_folders_test.rb +0 -211
- data/test/vagrant/actions/vm/start_test.rb +0 -73
- data/test/vagrant/actions/vm/suspend_test.rb +0 -26
- data/test/vagrant/actions/vm/up_test.rb +0 -96
- data/test/vagrant/active_list_test.rb +0 -173
- data/test/vagrant/box_test.rb +0 -154
- data/test/vagrant/busy_test.rb +0 -78
- data/test/vagrant/command_test.rb +0 -53
- data/test/vagrant/commands/base_test.rb +0 -139
- data/test/vagrant/commands/box/add_test.rb +0 -34
- data/test/vagrant/commands/box/list_test.rb +0 -32
- data/test/vagrant/commands/box/remove_test.rb +0 -41
- data/test/vagrant/commands/destroy_test.rb +0 -44
- data/test/vagrant/commands/halt_test.rb +0 -50
- data/test/vagrant/commands/init_test.rb +0 -55
- data/test/vagrant/commands/package_test.rb +0 -104
- data/test/vagrant/commands/provision_test.rb +0 -60
- data/test/vagrant/commands/reload_test.rb +0 -44
- data/test/vagrant/commands/resume_test.rb +0 -44
- data/test/vagrant/commands/ssh_config_test.rb +0 -77
- data/test/vagrant/commands/ssh_test.rb +0 -129
- data/test/vagrant/commands/status_test.rb +0 -40
- data/test/vagrant/commands/suspend_test.rb +0 -44
- data/test/vagrant/commands/up_test.rb +0 -47
- data/test/vagrant/config_test.rb +0 -287
- data/test/vagrant/downloaders/base_test.rb +0 -28
- data/test/vagrant/downloaders/file_test.rb +0 -33
- data/test/vagrant/downloaders/http_test.rb +0 -62
- data/test/vagrant/environment_test.rb +0 -770
- data/test/vagrant/provisioners/base_test.rb +0 -33
- data/test/vagrant/provisioners/chef_server_test.rb +0 -176
- data/test/vagrant/provisioners/chef_solo_test.rb +0 -183
- data/test/vagrant/provisioners/chef_test.rb +0 -175
- data/test/vagrant/resource_logger_test.rb +0 -145
- data/test/vagrant/ssh_session_test.rb +0 -46
- data/test/vagrant/ssh_test.rb +0 -296
- data/test/vagrant/systems/linux_test.rb +0 -179
- data/test/vagrant/util/error_helper_test.rb +0 -5
- data/test/vagrant/util/output_helper_test.rb +0 -5
- data/test/vagrant/util/plain_logger_test.rb +0 -17
- data/test/vagrant/util/platform_test.rb +0 -18
- data/test/vagrant/util/stacked_proc_runner_test.rb +0 -43
- data/test/vagrant/util/template_renderer_test.rb +0 -144
- data/test/vagrant/util/translator_test.rb +0 -61
- data/test/vagrant/util_test.rb +0 -27
- data/test/vagrant/vm_test.rb +0 -235
- data/vagrant.gemspec +0 -291
@@ -0,0 +1,20 @@
|
|
1
|
+
module Vagrant
|
2
|
+
class Action
|
3
|
+
module VM
|
4
|
+
class Resume
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
if env["vm"].vm.saved?
|
11
|
+
env.logger.info "Resuming suspended VM..."
|
12
|
+
env["actions"].run(:start)
|
13
|
+
end
|
14
|
+
|
15
|
+
@app.call(env)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,13 +1,39 @@
|
|
1
1
|
module Vagrant
|
2
|
-
|
2
|
+
class Action
|
3
3
|
module VM
|
4
|
-
class
|
4
|
+
class ShareFolders
|
5
|
+
include ExceptionCatcher
|
6
|
+
|
7
|
+
def initialize(app, env)
|
8
|
+
@app = app
|
9
|
+
@env = env
|
10
|
+
end
|
11
|
+
|
12
|
+
def call(env)
|
13
|
+
@env = env
|
14
|
+
|
15
|
+
create_metadata
|
16
|
+
|
17
|
+
@app.call(env)
|
18
|
+
|
19
|
+
if !env.error?
|
20
|
+
catch_action_exception(env) do
|
21
|
+
# Only mount and setup shared folders in the absense of an
|
22
|
+
# error
|
23
|
+
mount_shared_folders
|
24
|
+
setup_unison
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
5
29
|
# This method returns an actual list of VirtualBox shared
|
6
30
|
# folders to create and their proper path.
|
7
31
|
def shared_folders
|
8
|
-
|
32
|
+
@env.env.config.vm.shared_folders.inject({}) do |acc, data|
|
9
33
|
key, value = data
|
10
34
|
|
35
|
+
next acc if value[:disabled]
|
36
|
+
|
11
37
|
# This to prevent overwriting the actual shared folders data
|
12
38
|
value = value.dup
|
13
39
|
|
@@ -15,7 +41,7 @@ module Vagrant
|
|
15
41
|
# Syncing this folder. Change the guestpath to reflect
|
16
42
|
# what we're actually mounting.
|
17
43
|
value[:original] = value.dup
|
18
|
-
value[:guestpath] = "#{value[:guestpath]}#{
|
44
|
+
value[:guestpath] = "#{value[:guestpath]}#{@env.env.config.unison.folder_suffix}"
|
19
45
|
end
|
20
46
|
|
21
47
|
acc[key] = value
|
@@ -33,23 +59,26 @@ module Vagrant
|
|
33
59
|
end
|
34
60
|
end
|
35
61
|
|
36
|
-
def
|
37
|
-
|
38
|
-
create_metadata
|
39
|
-
end
|
62
|
+
def create_metadata
|
63
|
+
@env.logger.info "Creating shared folders metadata..."
|
40
64
|
|
41
|
-
|
42
|
-
|
43
|
-
|
65
|
+
shared_folders.each do |name, data|
|
66
|
+
folder = VirtualBox::SharedFolder.new
|
67
|
+
folder.name = name
|
68
|
+
folder.host_path = File.expand_path(data[:hostpath], @env.env.root_path)
|
69
|
+
@env["vm"].vm.shared_folders << folder
|
70
|
+
end
|
71
|
+
|
72
|
+
@env["vm"].vm.save
|
44
73
|
end
|
45
74
|
|
46
75
|
def mount_shared_folders
|
47
|
-
logger.info "Mounting shared folders..."
|
76
|
+
@env.logger.info "Mounting shared folders..."
|
48
77
|
|
49
|
-
@
|
78
|
+
@env["vm"].ssh.execute do |ssh|
|
50
79
|
shared_folders.each do |name, data|
|
51
|
-
logger.info "-- #{name}: #{data[:guestpath]}"
|
52
|
-
@
|
80
|
+
@env.logger.info "-- #{name}: #{data[:guestpath]}"
|
81
|
+
@env["vm"].system.mount_shared_folder(ssh, name, data[:guestpath])
|
53
82
|
end
|
54
83
|
end
|
55
84
|
end
|
@@ -57,41 +86,15 @@ module Vagrant
|
|
57
86
|
def setup_unison
|
58
87
|
return if unison_folders.empty?
|
59
88
|
|
60
|
-
|
61
|
-
|
89
|
+
@env["vm"].ssh.execute do |ssh|
|
90
|
+
@env["vm"].system.prepare_unison(ssh)
|
62
91
|
|
63
|
-
logger.info "Creating unison crontab entries..."
|
92
|
+
@env.logger.info "Creating unison crontab entries..."
|
64
93
|
unison_folders.each do |name, data|
|
65
|
-
|
94
|
+
@env["vm"].system.create_unison(ssh, data)
|
66
95
|
end
|
67
96
|
end
|
68
97
|
end
|
69
|
-
|
70
|
-
def clear_shared_folders
|
71
|
-
if runner.vm.shared_folders.length > 0
|
72
|
-
logger.info "Clearing previously set shared folders..."
|
73
|
-
|
74
|
-
folders = @runner.vm.shared_folders.dup
|
75
|
-
folders.each do |shared_folder|
|
76
|
-
shared_folder.destroy
|
77
|
-
end
|
78
|
-
|
79
|
-
@runner.reload!
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def create_metadata
|
84
|
-
logger.info "Creating shared folders metadata..."
|
85
|
-
|
86
|
-
shared_folders.each do |name, data|
|
87
|
-
folder = VirtualBox::SharedFolder.new
|
88
|
-
folder.name = name
|
89
|
-
folder.host_path = File.expand_path(data[:hostpath], runner.env.root_path)
|
90
|
-
@runner.vm.shared_folders << folder
|
91
|
-
end
|
92
|
-
|
93
|
-
@runner.vm.save
|
94
|
-
end
|
95
98
|
end
|
96
99
|
end
|
97
100
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Vagrant
|
2
|
+
class Action
|
3
|
+
module VM
|
4
|
+
class Suspend
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
if env["vm"].vm.running?
|
11
|
+
env.logger.info "Saving VM state and suspending execution..."
|
12
|
+
env["vm"].vm.save_state
|
13
|
+
end
|
14
|
+
|
15
|
+
@app.call(env)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/vagrant/box.rb
CHANGED
@@ -40,17 +40,13 @@ module Vagrant
|
|
40
40
|
# box = Vagrant::Box.find("foo")
|
41
41
|
# box.destroy
|
42
42
|
#
|
43
|
-
class Box
|
43
|
+
class Box
|
44
44
|
# The name of the box.
|
45
45
|
attr_accessor :name
|
46
46
|
|
47
47
|
# The URI for a new box. This is not available for existing boxes.
|
48
48
|
attr_accessor :uri
|
49
49
|
|
50
|
-
# The temporary path to the downloaded or copied box. This should
|
51
|
-
# only be used internally.
|
52
|
-
attr_accessor :temp_path
|
53
|
-
|
54
50
|
# The environment which this box belongs to. Although this could
|
55
51
|
# actually be many environments, this points to the environment
|
56
52
|
# of a specific instance.
|
@@ -133,12 +129,12 @@ module Vagrant
|
|
133
129
|
# method requires that `name` and `uri` be set. The logic of this method
|
134
130
|
# is kicked out to the {Actions::Box::Add add box} action.
|
135
131
|
def add
|
136
|
-
|
132
|
+
env.actions.run(:box_add, { "box" => self })
|
137
133
|
end
|
138
134
|
|
139
135
|
# Beings the process of destroying this box.
|
140
136
|
def destroy
|
141
|
-
|
137
|
+
env.actions.run(:box_remove, { "box" => self })
|
142
138
|
end
|
143
139
|
|
144
140
|
# Returns the directory to the location of this boxes content in the local
|
@@ -113,9 +113,7 @@ module Vagrant
|
|
113
113
|
|
114
114
|
# Shows the version
|
115
115
|
def puts_version
|
116
|
-
|
117
|
-
puts f.read
|
118
|
-
end
|
116
|
+
puts VERSION
|
119
117
|
end
|
120
118
|
|
121
119
|
# Returns the `OptionParser` instance to be used with this subcommand,
|
@@ -53,11 +53,6 @@ module Vagrant
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def package_vm(vm)
|
56
|
-
if !vm.powered_off?
|
57
|
-
error_and_exit(:vm_power_off_to_package)
|
58
|
-
return # for tests
|
59
|
-
end
|
60
|
-
|
61
56
|
vm.package(options)
|
62
57
|
end
|
63
58
|
|
@@ -65,20 +60,20 @@ module Vagrant
|
|
65
60
|
opts.banner = "Usage: vagrant package [--base BASE] [--include FILES]"
|
66
61
|
|
67
62
|
# Defaults
|
68
|
-
options[:include] = []
|
69
63
|
options[:base] = nil
|
70
|
-
options[
|
64
|
+
options["package.output"] = nil
|
65
|
+
options["package.include"] = []
|
71
66
|
|
72
67
|
opts.on("--base BASE", "Name or UUID of VM to create a base box from") do |v|
|
73
68
|
options[:base] = v
|
74
69
|
end
|
75
70
|
|
76
71
|
opts.on("--include x,y,z", Array, "List of files to include in the package") do |v|
|
77
|
-
options[
|
72
|
+
options["package.include"] = v
|
78
73
|
end
|
79
74
|
|
80
75
|
opts.on("-o", "--output FILE", "File to save the package as.") do |v|
|
81
|
-
options[
|
76
|
+
options["package.output"] = v
|
82
77
|
end
|
83
78
|
end
|
84
79
|
end
|
data/lib/vagrant/commands/up.rb
CHANGED
data/lib/vagrant/config.rb
CHANGED
@@ -67,6 +67,7 @@ module Vagrant
|
|
67
67
|
attr_accessor :max_tries
|
68
68
|
attr_accessor :timeout
|
69
69
|
attr_accessor :private_key_path
|
70
|
+
attr_accessor :forward_agent
|
70
71
|
|
71
72
|
# The attribute(s) below do nothing. They are just kept here to
|
72
73
|
# prevent syntax errors for backwards compat.
|
@@ -85,11 +86,17 @@ module Vagrant
|
|
85
86
|
attr_accessor :log_file
|
86
87
|
end
|
87
88
|
|
89
|
+
class NFSConfig < Base
|
90
|
+
attr_accessor :map_uid
|
91
|
+
attr_accessor :map_gid
|
92
|
+
end
|
93
|
+
|
88
94
|
class VMConfig < Base
|
89
95
|
include Util::StackedProcRunner
|
90
96
|
|
91
97
|
attr_accessor :auto_port_range
|
92
98
|
attr_accessor :box
|
99
|
+
attr_accessor :box_url
|
93
100
|
attr_accessor :box_ovf
|
94
101
|
attr_accessor :base_mac
|
95
102
|
attr_accessor :boot_mode
|
@@ -185,13 +192,13 @@ module Vagrant
|
|
185
192
|
|
186
193
|
class PackageConfig < Base
|
187
194
|
attr_accessor :name
|
188
|
-
attr_accessor :extension
|
189
195
|
end
|
190
196
|
|
191
197
|
class VagrantConfig < Base
|
192
198
|
attr_accessor :dotfile_name
|
193
199
|
attr_accessor :log_output
|
194
200
|
attr_accessor :home
|
201
|
+
attr_accessor :host
|
195
202
|
|
196
203
|
def home
|
197
204
|
@home ? File.expand_path(@home) : nil
|
@@ -214,6 +221,7 @@ module Vagrant
|
|
214
221
|
|
215
222
|
# Setup default configures
|
216
223
|
configures :package, PackageConfig
|
224
|
+
configures :nfs, NFSConfig
|
217
225
|
configures :ssh, SSHConfig
|
218
226
|
configures :unison, UnisonConfig
|
219
227
|
configures :vm, VMConfig
|
@@ -237,6 +245,12 @@ module Vagrant
|
|
237
245
|
def loaded!
|
238
246
|
@loaded = true
|
239
247
|
end
|
248
|
+
|
249
|
+
# Deep clones the entire configuration tree using the marshalling
|
250
|
+
# trick. All subclasses must be able to marshal properly.
|
251
|
+
def deep_clone
|
252
|
+
Marshal.load(Marshal.dump(self))
|
253
|
+
end
|
240
254
|
end
|
241
255
|
end
|
242
256
|
end
|
@@ -9,7 +9,7 @@ module Vagrant
|
|
9
9
|
|
10
10
|
def prepare(source_url)
|
11
11
|
if !::File.file?(source_url)
|
12
|
-
|
12
|
+
return env.error!(:downloader_file_doesnt_exist, :source_url => source_url)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -10,7 +10,6 @@ module Vagrant
|
|
10
10
|
class HTTP < Base
|
11
11
|
def self.match?(uri)
|
12
12
|
# URI.parse barfs on '<drive letter>:\\files \on\ windows'
|
13
|
-
# TODO temprorary
|
14
13
|
extracted = URI.extract(uri).first
|
15
14
|
extracted && extracted.include?(uri)
|
16
15
|
end
|
@@ -48,6 +47,8 @@ module Vagrant
|
|
48
47
|
end
|
49
48
|
|
50
49
|
env.logger.clear_progress
|
50
|
+
rescue SocketError
|
51
|
+
env.error!(:box_download_http_socket_error, :box_url => source_url)
|
51
52
|
end
|
52
53
|
end
|
53
54
|
end
|
data/lib/vagrant/environment.rb
CHANGED
@@ -15,12 +15,14 @@ module Vagrant
|
|
15
15
|
attr_accessor :cwd
|
16
16
|
attr_reader :root_path
|
17
17
|
attr_reader :config
|
18
|
+
attr_reader :host
|
18
19
|
attr_reader :box
|
19
20
|
attr_accessor :vm
|
20
21
|
attr_reader :vms
|
21
22
|
attr_reader :active_list
|
22
23
|
attr_reader :commands
|
23
24
|
attr_reader :logger
|
25
|
+
attr_reader :actions
|
24
26
|
|
25
27
|
#---------------------------------------------------------------
|
26
28
|
# Class Methods
|
@@ -136,12 +138,14 @@ module Vagrant
|
|
136
138
|
load_root_path!
|
137
139
|
load_config!
|
138
140
|
load_home_directory!
|
141
|
+
load_host!
|
139
142
|
load_box!
|
140
143
|
load_config!
|
141
144
|
self.class.check_virtualbox!
|
142
145
|
load_vm!
|
143
146
|
load_active_list!
|
144
147
|
load_commands!
|
148
|
+
load_actions!
|
145
149
|
self
|
146
150
|
end
|
147
151
|
|
@@ -216,7 +220,7 @@ module Vagrant
|
|
216
220
|
# the logger will just send the log data to a black hole.
|
217
221
|
def load_logger!
|
218
222
|
resource = vm_name || "vagrant"
|
219
|
-
@logger = ResourceLogger.new(resource, self)
|
223
|
+
@logger = Util::ResourceLogger.new(resource, self)
|
220
224
|
end
|
221
225
|
|
222
226
|
# Loads the home directory path and creates the necessary subdirectories
|
@@ -235,6 +239,11 @@ module Vagrant
|
|
235
239
|
end
|
236
240
|
end
|
237
241
|
|
242
|
+
# Loads the host class for this environment.
|
243
|
+
def load_host!
|
244
|
+
@host = Hosts::Base.load(self, config.vagrant.host)
|
245
|
+
end
|
246
|
+
|
238
247
|
# Loads the specified box for this environment.
|
239
248
|
def load_box!
|
240
249
|
return unless root_path
|
@@ -301,6 +310,13 @@ module Vagrant
|
|
301
310
|
@commands = Command.new(self)
|
302
311
|
end
|
303
312
|
|
313
|
+
# Loads the instance of {Action} for this environment. This allows
|
314
|
+
# users of the instance to run action sequences in the context of
|
315
|
+
# this environment.
|
316
|
+
def load_actions!
|
317
|
+
@actions = Action.new(self)
|
318
|
+
end
|
319
|
+
|
304
320
|
#---------------------------------------------------------------
|
305
321
|
# Methods to manage VM
|
306
322
|
#---------------------------------------------------------------
|
@@ -318,7 +334,7 @@ module Vagrant
|
|
318
334
|
end
|
319
335
|
|
320
336
|
if data.empty?
|
321
|
-
File.delete(dotfile_path)
|
337
|
+
File.delete(dotfile_path) if File.exist?(dotfile_path)
|
322
338
|
else
|
323
339
|
File.open(dotfile_path, 'w+') do |f|
|
324
340
|
f.write(data.to_json)
|
@@ -337,18 +353,6 @@ module Vagrant
|
|
337
353
|
error_and_exit(:rootfile_not_found) if !root_path
|
338
354
|
end
|
339
355
|
|
340
|
-
def require_box
|
341
|
-
require_root_path
|
342
|
-
|
343
|
-
if !box
|
344
|
-
if !config.vm.box
|
345
|
-
error_and_exit(:box_not_specified)
|
346
|
-
else
|
347
|
-
error_and_exit(:box_specified_doesnt_exist, :box_name => config.vm.box)
|
348
|
-
end
|
349
|
-
end
|
350
|
-
end
|
351
|
-
|
352
356
|
def require_persisted_vm
|
353
357
|
require_root_path
|
354
358
|
|