vagrant 0.3.4 → 0.4.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/Gemfile +2 -2
- data/README.md +2 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/config/default.rb +13 -3
- data/lib/vagrant.rb +10 -13
- data/lib/vagrant/actions/base.rb +14 -2
- data/lib/vagrant/actions/box/download.rb +2 -7
- data/lib/vagrant/actions/box/verify.rb +1 -1
- data/lib/vagrant/actions/runner.rb +0 -1
- data/lib/vagrant/actions/vm/boot.rb +2 -6
- data/lib/vagrant/actions/vm/customize.rb +7 -5
- data/lib/vagrant/actions/vm/destroy.rb +4 -3
- data/lib/vagrant/actions/vm/down.rb +6 -3
- data/lib/vagrant/actions/vm/export.rb +2 -4
- data/lib/vagrant/actions/vm/forward_ports.rb +77 -16
- data/lib/vagrant/actions/vm/halt.rb +10 -2
- data/lib/vagrant/actions/vm/import.rb +2 -4
- data/lib/vagrant/actions/vm/move_hard_drive.rb +2 -2
- data/lib/vagrant/actions/vm/network.rb +120 -0
- data/lib/vagrant/actions/vm/package.rb +11 -7
- data/lib/vagrant/actions/vm/provision.rb +3 -3
- data/lib/vagrant/actions/vm/reload.rb +2 -9
- data/lib/vagrant/actions/vm/shared_folders.rb +19 -39
- data/lib/vagrant/actions/vm/start.rb +10 -2
- data/lib/vagrant/actions/vm/up.rb +5 -6
- data/lib/vagrant/active_list.rb +23 -13
- data/lib/vagrant/box.rb +2 -2
- data/lib/vagrant/busy.rb +3 -3
- data/lib/vagrant/command.rb +2 -2
- data/lib/vagrant/commands/base.rb +40 -20
- data/lib/vagrant/commands/destroy.rb +17 -3
- data/lib/vagrant/commands/halt.rb +23 -3
- data/lib/vagrant/commands/package.rb +54 -14
- data/lib/vagrant/commands/provision.rb +31 -0
- data/lib/vagrant/commands/reload.rb +16 -3
- data/lib/vagrant/commands/resume.rb +16 -3
- data/lib/vagrant/commands/ssh.rb +25 -3
- data/lib/vagrant/commands/ssh_config.rb +20 -5
- data/lib/vagrant/commands/status.rb +107 -40
- data/lib/vagrant/commands/suspend.rb +16 -3
- data/lib/vagrant/commands/up.rb +26 -7
- data/lib/vagrant/config.rb +82 -12
- data/lib/vagrant/downloaders/base.rb +8 -1
- data/lib/vagrant/downloaders/http.rb +31 -19
- data/lib/vagrant/environment.rb +146 -49
- data/lib/vagrant/provisioners/base.rb +19 -5
- data/lib/vagrant/provisioners/chef.rb +12 -4
- data/lib/vagrant/provisioners/chef_server.rb +13 -6
- data/lib/vagrant/provisioners/chef_solo.rb +7 -3
- data/lib/vagrant/resource_logger.rb +126 -0
- data/lib/vagrant/ssh.rb +109 -8
- data/lib/vagrant/systems/base.rb +70 -0
- data/lib/vagrant/systems/linux.rb +137 -0
- data/lib/vagrant/util.rb +1 -45
- data/lib/vagrant/util/error_helper.rb +13 -0
- data/lib/vagrant/util/glob_loader.rb +22 -0
- data/lib/vagrant/util/output_helper.rb +9 -0
- data/lib/vagrant/util/plain_logger.rb +12 -0
- data/lib/vagrant/util/platform.rb +7 -2
- data/lib/vagrant/util/template_renderer.rb +2 -2
- data/lib/vagrant/util/translator.rb +35 -0
- data/lib/vagrant/vm.rb +91 -10
- data/templates/crontab_entry.erb +1 -0
- data/templates/network_entry.erb +8 -0
- data/templates/ssh_config.erb +1 -0
- data/templates/{errors.yml → strings.yml} +111 -3
- data/templates/sync.erb +14 -0
- data/test/test_helper.rb +46 -3
- data/test/vagrant/actions/box/download_test.rb +0 -17
- data/test/vagrant/actions/vm/boot_test.rb +3 -10
- data/test/vagrant/actions/vm/customize_test.rb +6 -0
- data/test/vagrant/actions/vm/destroy_test.rb +6 -5
- data/test/vagrant/actions/vm/down_test.rb +5 -11
- data/test/vagrant/actions/vm/export_test.rb +1 -0
- data/test/vagrant/actions/vm/forward_ports_test.rb +92 -15
- data/test/vagrant/actions/vm/halt_test.rb +36 -4
- data/test/vagrant/actions/vm/import_test.rb +2 -0
- data/test/vagrant/actions/vm/network_test.rb +237 -0
- data/test/vagrant/actions/vm/package_test.rb +35 -5
- data/test/vagrant/actions/vm/provision_test.rb +3 -3
- data/test/vagrant/actions/vm/reload_test.rb +1 -1
- data/test/vagrant/actions/vm/shared_folders_test.rb +41 -74
- data/test/vagrant/actions/vm/start_test.rb +41 -3
- data/test/vagrant/actions/vm/up_test.rb +10 -21
- data/test/vagrant/active_list_test.rb +28 -43
- data/test/vagrant/commands/base_test.rb +25 -4
- data/test/vagrant/commands/destroy_test.rb +24 -12
- data/test/vagrant/commands/halt_test.rb +33 -11
- data/test/vagrant/commands/package_test.rb +77 -57
- data/test/vagrant/commands/provision_test.rb +50 -0
- data/test/vagrant/commands/reload_test.rb +27 -11
- data/test/vagrant/commands/resume_test.rb +25 -14
- data/test/vagrant/commands/ssh_config_test.rb +40 -17
- data/test/vagrant/commands/ssh_test.rb +52 -13
- data/test/vagrant/commands/status_test.rb +21 -1
- data/test/vagrant/commands/suspend_test.rb +25 -14
- data/test/vagrant/commands/up_test.rb +25 -19
- data/test/vagrant/config_test.rb +74 -18
- data/test/vagrant/downloaders/base_test.rb +2 -1
- data/test/vagrant/downloaders/http_test.rb +18 -8
- data/test/vagrant/environment_test.rb +245 -77
- data/test/vagrant/provisioners/base_test.rb +4 -4
- data/test/vagrant/provisioners/chef_server_test.rb +18 -7
- data/test/vagrant/provisioners/chef_solo_test.rb +17 -7
- data/test/vagrant/provisioners/chef_test.rb +22 -9
- data/test/vagrant/resource_logger_test.rb +144 -0
- data/test/vagrant/ssh_session_test.rb +46 -0
- data/test/vagrant/ssh_test.rb +42 -2
- data/test/vagrant/systems/linux_test.rb +174 -0
- data/test/vagrant/util/error_helper_test.rb +5 -0
- data/test/vagrant/util/output_helper_test.rb +5 -0
- data/test/vagrant/util/plain_logger_test.rb +17 -0
- data/test/vagrant/util/platform_test.rb +18 -0
- data/test/vagrant/util/{errors_test.rb → translator_test.rb} +25 -21
- data/test/vagrant/util_test.rb +12 -49
- data/test/vagrant/vm_test.rb +133 -11
- data/vagrant.gemspec +39 -15
- metadata +64 -40
- data/lib/vagrant/commands/down.rb +0 -16
- data/lib/vagrant/util/errors.rb +0 -36
- data/lib/vagrant/util/progress_meter.rb +0 -33
- data/test/vagrant/commands/down_test.rb +0 -17
- data/test/vagrant/util/progress_meter_test.rb +0 -33
@@ -9,12 +9,27 @@ module Vagrant
|
|
9
9
|
def execute(args=[])
|
10
10
|
env.require_root_path
|
11
11
|
|
12
|
-
parse_options(args)
|
12
|
+
args = parse_options(args)
|
13
|
+
show_single(args[0])
|
14
|
+
end
|
15
|
+
|
16
|
+
def show_single(name)
|
17
|
+
if name.nil? && env.multivm?
|
18
|
+
error_and_exit(:ssh_config_multivm)
|
19
|
+
return # for tests
|
20
|
+
end
|
21
|
+
|
22
|
+
vm = name.nil? ? env.vms.values.first : env.vms[name.to_sym]
|
23
|
+
if vm.nil?
|
24
|
+
error_and_exit(:unknown_vm, :vm => name)
|
25
|
+
return # for tests
|
26
|
+
end
|
27
|
+
|
13
28
|
puts TemplateRenderer.render("ssh_config", {
|
14
29
|
:host_key => options[:host] || "vagrant",
|
15
|
-
:ssh_user => env.config.ssh.username,
|
16
|
-
:ssh_port =>
|
17
|
-
:private_key_path => env.config.ssh.private_key_path
|
30
|
+
:ssh_user => vm.env.config.ssh.username,
|
31
|
+
:ssh_port => vm.ssh.port,
|
32
|
+
:private_key_path => vm.env.config.ssh.private_key_path
|
18
33
|
})
|
19
34
|
end
|
20
35
|
|
@@ -27,4 +42,4 @@ module Vagrant
|
|
27
42
|
end
|
28
43
|
end
|
29
44
|
end
|
30
|
-
end
|
45
|
+
end
|
@@ -5,54 +5,121 @@ module Vagrant
|
|
5
5
|
# and if its running, suspended, etc.
|
6
6
|
class Status < Base
|
7
7
|
Base.subcommand "status", self
|
8
|
-
description "Shows the status of the
|
8
|
+
description "Shows the status of the Vagrant environment."
|
9
9
|
|
10
10
|
def execute(args=[])
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
11
|
+
args = parse_options(args)
|
12
|
+
if args.length > 1
|
13
|
+
# There should never be more than 1 arg
|
14
|
+
show_help
|
15
|
+
return
|
16
|
+
end
|
17
|
+
|
18
|
+
if !options[:global]
|
19
|
+
show_local_status(*args)
|
20
|
+
else
|
21
|
+
show_global_status
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Shows the status of the CURRENT environment (the current working
|
26
|
+
# directory). If a specific VM was given, it will print out
|
27
|
+
# detailed information regarding that VM. If no single VM was
|
28
|
+
# specified and it is a multi-VM environment, it will simply
|
29
|
+
# show a listing of all the VMs and their short one word
|
30
|
+
# statuses.
|
31
|
+
def show_local_status(vm=nil)
|
32
|
+
if !env.root_path
|
33
|
+
wrap_output { puts Translator.t(:status_no_environment) }
|
34
|
+
return
|
35
|
+
end
|
36
|
+
|
37
|
+
if vm.nil?
|
38
|
+
if env.multivm?
|
39
|
+
# No specific VM was specified in a multi-vm environment,
|
40
|
+
# so show short info for each VM
|
41
|
+
show_list
|
42
|
+
return
|
22
43
|
else
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
puts <<-msg
|
46
|
-
The environment has been created. The status of the current environment's
|
47
|
-
virtual machine is: "#{env.vm.vm.state}."#{additional_msg}
|
48
|
-
msg
|
44
|
+
# Set the VM to just be the root VM
|
45
|
+
vm = env.vms.values.first
|
46
|
+
end
|
47
|
+
else
|
48
|
+
# Try to get the vm based on the name. If the specified VM
|
49
|
+
# doesn't exist, then error saying so
|
50
|
+
vm = env.vms[vm.to_sym] || error_and_exit(:unknown_vm, :vm => vm)
|
51
|
+
end
|
52
|
+
|
53
|
+
show_single(vm)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Lists the available VMs and brief statuses about each.
|
57
|
+
def show_list
|
58
|
+
wrap_output do
|
59
|
+
puts Translator.t(:status_listing)
|
60
|
+
puts ""
|
61
|
+
|
62
|
+
env.vms.each do |name, vm|
|
63
|
+
state = vm.created? ? vm.vm.state : "not created"
|
64
|
+
puts "#{name.to_s.ljust(30)}#{state}"
|
49
65
|
end
|
50
66
|
end
|
51
67
|
end
|
52
68
|
|
69
|
+
# Shows a paragraph of information based on the current state of
|
70
|
+
# a single, specified VM.
|
71
|
+
def show_single(vm)
|
72
|
+
string_key = nil
|
73
|
+
|
74
|
+
if !vm.created?
|
75
|
+
string_key = :status_not_created
|
76
|
+
else
|
77
|
+
additional_key = nil
|
78
|
+
if vm.vm.running?
|
79
|
+
additional_key = :status_created_running
|
80
|
+
elsif vm.vm.saved?
|
81
|
+
additional_key = :status_created_saved
|
82
|
+
elsif vm.vm.powered_off?
|
83
|
+
additional_key = :status_created_powered_off
|
84
|
+
end
|
85
|
+
|
86
|
+
string_key = [:status_created, {
|
87
|
+
:vm_state => vm.vm.state,
|
88
|
+
:additional_message => additional_key ? Translator.t(additional_key) : ""
|
89
|
+
}]
|
90
|
+
end
|
91
|
+
|
92
|
+
wrap_output { puts Translator.t(*string_key) }
|
93
|
+
end
|
94
|
+
|
95
|
+
# Shows the status of the GLOBAL Vagrant environment. This prints out
|
96
|
+
# a listing of the virtual machines which Vagrant manages (running or
|
97
|
+
# not).
|
98
|
+
def show_global_status
|
99
|
+
entries = []
|
100
|
+
|
101
|
+
env.active_list.list.each do |uuid, data|
|
102
|
+
vm = Vagrant::VM.find(uuid, env)
|
103
|
+
entries << Translator.t(:status_global_entry, {
|
104
|
+
:vm => vm,
|
105
|
+
:data => data
|
106
|
+
})
|
107
|
+
end
|
108
|
+
|
109
|
+
wrap_output { puts Translator.t(:status_global, :entries => entries) }
|
110
|
+
end
|
111
|
+
|
53
112
|
def options_spec(opts)
|
54
|
-
opts.banner = "Usage: vagrant status"
|
113
|
+
opts.banner = "Usage: vagrant status [--global]"
|
114
|
+
|
115
|
+
# Defaults
|
116
|
+
options[:global] = false
|
117
|
+
options[:vm] = nil
|
118
|
+
|
119
|
+
opts.on("-g", "--global", "Show global status of Vagrant (running VMs managed by Vagrant)") do |v|
|
120
|
+
options[:global] = true
|
121
|
+
end
|
55
122
|
end
|
56
123
|
end
|
57
124
|
end
|
58
|
-
end
|
125
|
+
end
|
@@ -11,8 +11,21 @@ module Vagrant
|
|
11
11
|
description "Suspends the currently running vagrant environment"
|
12
12
|
|
13
13
|
def execute(args=[])
|
14
|
-
|
15
|
-
|
14
|
+
all_or_single(args, :suspend)
|
15
|
+
end
|
16
|
+
|
17
|
+
def suspend_single(name)
|
18
|
+
vm = env.vms[name.to_sym]
|
19
|
+
if vm.nil?
|
20
|
+
error_and_exit(:unknown_vm, :vm => name)
|
21
|
+
return # for tests
|
22
|
+
end
|
23
|
+
|
24
|
+
if vm.created?
|
25
|
+
vm.suspend
|
26
|
+
else
|
27
|
+
vm.env.logger.info "VM '#{name}' not created. Ignoring."
|
28
|
+
end
|
16
29
|
end
|
17
30
|
|
18
31
|
def options_spec(opts)
|
@@ -20,4 +33,4 @@ module Vagrant
|
|
20
33
|
end
|
21
34
|
end
|
22
35
|
end
|
23
|
-
end
|
36
|
+
end
|
data/lib/vagrant/commands/up.rb
CHANGED
@@ -9,18 +9,37 @@ module Vagrant
|
|
9
9
|
description "Creates the vagrant environment"
|
10
10
|
|
11
11
|
def execute(args=[])
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
all_or_single(args, :up)
|
13
|
+
end
|
14
|
+
|
15
|
+
def up_single(name)
|
16
|
+
vm = env.vms[name.to_sym]
|
17
|
+
if vm.nil?
|
18
|
+
error_and_exit(:unknown_vm, :vm => name)
|
19
|
+
return # for tests
|
20
|
+
end
|
21
|
+
|
22
|
+
if vm.created?
|
23
|
+
vm.env.logger.info "VM '#{name}' already created. Booting if its not already running..."
|
24
|
+
vm.start
|
15
25
|
else
|
16
|
-
env.require_box
|
17
|
-
|
26
|
+
vm.env.require_box
|
27
|
+
|
28
|
+
vm.env.logger.info "Creating VM '#{name}'"
|
29
|
+
vm.up
|
18
30
|
end
|
19
31
|
end
|
20
32
|
|
21
33
|
def options_spec(opts)
|
22
|
-
opts.banner = "Usage: vagrant up"
|
34
|
+
opts.banner = "Usage: vagrant up [--no-provision]"
|
35
|
+
|
36
|
+
# Defaults
|
37
|
+
options[:provision] = true
|
38
|
+
|
39
|
+
opts.on("--no-provision", "Do not provision during this up.") do |v|
|
40
|
+
options[:provision] = false
|
41
|
+
end
|
23
42
|
end
|
24
43
|
end
|
25
44
|
end
|
26
|
-
end
|
45
|
+
end
|
data/lib/vagrant/config.rb
CHANGED
@@ -29,10 +29,12 @@ module Vagrant
|
|
29
29
|
push_proc(&block)
|
30
30
|
end
|
31
31
|
|
32
|
-
def execute!
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
def execute!(config_object=nil)
|
33
|
+
config_object ||= config
|
34
|
+
|
35
|
+
run_procs!(config_object)
|
36
|
+
config_object.loaded!
|
37
|
+
config_object
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
@@ -59,13 +61,17 @@ module Vagrant
|
|
59
61
|
|
60
62
|
class SSHConfig < Base
|
61
63
|
attr_accessor :username
|
62
|
-
attr_accessor :password
|
63
64
|
attr_accessor :host
|
65
|
+
attr_accessor :port
|
64
66
|
attr_accessor :forwarded_port_key
|
65
67
|
attr_accessor :max_tries
|
66
68
|
attr_accessor :timeout
|
67
69
|
attr_accessor :private_key_path
|
68
70
|
|
71
|
+
# The attribute(s) below do nothing. They are just kept here to
|
72
|
+
# prevent syntax errors for backwards compat.
|
73
|
+
attr_accessor :password
|
74
|
+
|
69
75
|
def private_key_path
|
70
76
|
File.expand_path(@private_key_path, env.root_path)
|
71
77
|
end
|
@@ -74,40 +80,80 @@ module Vagrant
|
|
74
80
|
class VMConfig < Base
|
75
81
|
include Util::StackedProcRunner
|
76
82
|
|
83
|
+
attr_accessor :auto_port_range
|
77
84
|
attr_accessor :box
|
78
85
|
attr_accessor :box_ovf
|
79
86
|
attr_accessor :base_mac
|
80
87
|
attr_accessor :boot_mode
|
81
|
-
attr_accessor :
|
88
|
+
attr_accessor :sync_opts
|
89
|
+
attr_accessor :sync_script
|
90
|
+
attr_accessor :sync_crontab_entry_file
|
91
|
+
attr_reader :sync_required
|
82
92
|
attr_reader :forwarded_ports
|
83
93
|
attr_reader :shared_folders
|
94
|
+
attr_reader :network_options
|
84
95
|
attr_accessor :hd_location
|
85
96
|
attr_accessor :disk_image_format
|
86
97
|
attr_accessor :provisioner
|
87
98
|
attr_accessor :shared_folder_uid
|
88
99
|
attr_accessor :shared_folder_gid
|
100
|
+
attr_accessor :system
|
101
|
+
|
102
|
+
# Represents a SubVM. This class is only used here in the VMs
|
103
|
+
# hash.
|
104
|
+
class SubVM
|
105
|
+
include Util::StackedProcRunner
|
106
|
+
|
107
|
+
def options
|
108
|
+
@options ||= {}
|
109
|
+
end
|
110
|
+
end
|
89
111
|
|
90
112
|
def initialize
|
91
113
|
@forwarded_ports = {}
|
92
114
|
@shared_folders = {}
|
93
115
|
@provisioner = nil
|
116
|
+
@network_options = []
|
94
117
|
end
|
95
118
|
|
96
|
-
def forward_port(name, guestport, hostport,
|
97
|
-
|
119
|
+
def forward_port(name, guestport, hostport, options=nil)
|
120
|
+
options = {
|
98
121
|
:guestport => guestport,
|
99
122
|
:hostport => hostport,
|
100
|
-
:protocol =>
|
101
|
-
|
123
|
+
:protocol => "TCP",
|
124
|
+
:adapter => 0,
|
125
|
+
:auto => false
|
126
|
+
}.merge(options || {})
|
127
|
+
|
128
|
+
forwarded_ports[name] = options
|
102
129
|
end
|
103
130
|
|
104
|
-
def share_folder(name, guestpath, hostpath)
|
131
|
+
def share_folder(name, guestpath, hostpath = nil, opts = {})
|
132
|
+
guestpath, opts[:sync] = shift(guestpath, opts[:sync])
|
133
|
+
|
134
|
+
# TODO if both are nil the exception information will be unusable
|
135
|
+
if opts[:sync] == guestpath
|
136
|
+
raise Exception.new("The sync directory #{opts[:sync]} is identical to the shifted shared folder mount point #{guestpath}")
|
137
|
+
end
|
138
|
+
|
105
139
|
@shared_folders[name] = {
|
140
|
+
:syncpath => opts[:sync],
|
106
141
|
:guestpath => guestpath,
|
107
142
|
:hostpath => hostpath
|
108
143
|
}
|
109
144
|
end
|
110
145
|
|
146
|
+
def network(ip, options=nil)
|
147
|
+
options = {
|
148
|
+
:ip => ip,
|
149
|
+
:netmask => "255.255.255.0",
|
150
|
+
:adapter => 1,
|
151
|
+
:name => nil
|
152
|
+
}.merge(options || {})
|
153
|
+
|
154
|
+
@network_options[options[:adapter]] = options
|
155
|
+
end
|
156
|
+
|
111
157
|
def hd_location=(val)
|
112
158
|
raise Exception.new("disk_storage must be set to a directory") unless File.directory?(val)
|
113
159
|
@hd_location=val
|
@@ -124,6 +170,30 @@ module Vagrant
|
|
124
170
|
def customize(&block)
|
125
171
|
push_proc(&block)
|
126
172
|
end
|
173
|
+
|
174
|
+
def has_multi_vms?
|
175
|
+
!defined_vms.empty?
|
176
|
+
end
|
177
|
+
|
178
|
+
def defined_vms
|
179
|
+
@defined_vms ||= {}
|
180
|
+
end
|
181
|
+
|
182
|
+
def define(name, options=nil, &block)
|
183
|
+
options ||= {}
|
184
|
+
defined_vms[name.to_sym] ||= SubVM.new
|
185
|
+
defined_vms[name.to_sym].options.merge!(options)
|
186
|
+
defined_vms[name.to_sym].push_proc(&block)
|
187
|
+
end
|
188
|
+
|
189
|
+
def shift(orig, sync)
|
190
|
+
if sync
|
191
|
+
@sync_required = true
|
192
|
+
[orig + '-sync', sync == true ? orig : sync]
|
193
|
+
else
|
194
|
+
[orig, sync]
|
195
|
+
end
|
196
|
+
end
|
127
197
|
end
|
128
198
|
|
129
199
|
class PackageConfig < Base
|
@@ -144,7 +214,7 @@ module Vagrant
|
|
144
214
|
class Top < Base
|
145
215
|
@@configures = []
|
146
216
|
|
147
|
-
class <<self
|
217
|
+
class << self
|
148
218
|
def configures_list
|
149
219
|
@@configures ||= []
|
150
220
|
end
|
@@ -5,6 +5,13 @@ module Vagrant
|
|
5
5
|
class Base
|
6
6
|
include Vagrant::Util
|
7
7
|
|
8
|
+
# The environment which this downloader is operating.
|
9
|
+
attr_reader :env
|
10
|
+
|
11
|
+
def initialize(env)
|
12
|
+
@env = env
|
13
|
+
end
|
14
|
+
|
8
15
|
# Called prior to execution so any error checks can be done
|
9
16
|
def prepare(source_url); end
|
10
17
|
|
@@ -13,4 +20,4 @@ module Vagrant
|
|
13
20
|
def download!(source_url, destination_file); end
|
14
21
|
end
|
15
22
|
end
|
16
|
-
end
|
23
|
+
end
|