vagrantup 0.4.3.dev → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|