vagrantup 0.9.99.1 → 0.9.99.2
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/CHANGELOG.md +10 -0
- data/lib/vagrant/action.rb +1 -0
- data/lib/vagrant/action/builtin.rb +10 -0
- data/lib/vagrant/action/general/check_virtualbox.rb +28 -0
- data/lib/vagrant/action/general/validate.rb +2 -3
- data/lib/vagrant/action/vm/network.rb +10 -9
- data/lib/vagrant/action/vm/nfs.rb +7 -0
- data/lib/vagrant/command/base.rb +8 -2
- data/lib/vagrant/command/destroy.rb +1 -1
- data/lib/vagrant/command/package.rb +1 -1
- data/lib/vagrant/command/ssh.rb +1 -1
- data/lib/vagrant/command/ssh_config.rb +1 -1
- data/lib/vagrant/config/loader.rb +2 -0
- data/lib/vagrant/driver/virtualbox.rb +1 -0
- data/lib/vagrant/driver/virtualbox_4_0.rb +6 -0
- data/lib/vagrant/driver/virtualbox_4_1.rb +6 -0
- data/lib/vagrant/driver/virtualbox_base.rb +6 -0
- data/lib/vagrant/provisioners/chef.rb +3 -1
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +1 -1
- data/templates/locales/en.yml +5 -0
- data/templates/nfs/exports_linux.erb +1 -1
- data/vagrant.gemspec +1 -1
- metadata +16 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47114b7b4c12b0c9ef207c4c034e12c4ef7b3ec2
|
4
|
+
data.tar.gz: 8f5cd01bcb271539e179b0881163c4a22903ec19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9260b2fa40ee1037f5af1a2c19842484d0eb650fb020463585501e675d6d376b8318edb0ee3e9624097517eef7ff5b771cf82419d80e9afe1774abe2de0cfc7a
|
7
|
+
data.tar.gz: a57b9dc7b1c66954755f99863da37e1ac5bd91317b8c4f4fc6114801dd50bd1b7d5e4352a39a0978c0b3ccd792085f59403ce834959fa31936732ae3719fa6ba
|
data/CHANGELOG.md
CHANGED
@@ -17,6 +17,16 @@
|
|
17
17
|
- Unix-style line endings are used properly for guest OS. [GH-727]
|
18
18
|
- Retry certain VirtualBox operations, since they intermittently fail.
|
19
19
|
[GH-726]
|
20
|
+
- Fix issue where Vagrant would sometimes "lose" a VM if an exception
|
21
|
+
occurred. [GH-725]
|
22
|
+
- `vagrant destroy` destroys virtual machines in reverse order. [GH-739]
|
23
|
+
- Add an `fsid` option to Linux NFS exports. [GH-736]
|
24
|
+
- Fix edge case where an exception could be raised in networking code. [GH-742]
|
25
|
+
- Add missing translation for the "guru meditation" state. [GH-745]
|
26
|
+
- Check that VirtualBox exists before certain commands. [GH-746]
|
27
|
+
- NIC type can be defined for host-only network adapters. [GH-750]
|
28
|
+
- Fix issue where re-running chef-client would sometimes cause
|
29
|
+
problems due to file permissions. [GH-748]
|
20
30
|
|
21
31
|
## 0.9.7 (February 9, 2012)
|
22
32
|
|
data/lib/vagrant/action.rb
CHANGED
@@ -20,6 +20,7 @@ module Vagrant
|
|
20
20
|
# provision - Provisions a running VM
|
21
21
|
register(:provision) do
|
22
22
|
Builder.new do
|
23
|
+
use General::CheckVirtualbox
|
23
24
|
use General::Validate
|
24
25
|
use VM::CheckAccessible
|
25
26
|
use VM::Provision
|
@@ -30,6 +31,7 @@ module Vagrant
|
|
30
31
|
# environment.
|
31
32
|
register(:start) do
|
32
33
|
Builder.new do
|
34
|
+
use General::CheckVirtualbox
|
33
35
|
use General::Validate
|
34
36
|
use VM::CheckAccessible
|
35
37
|
use VM::CleanMachineFolder
|
@@ -53,6 +55,7 @@ module Vagrant
|
|
53
55
|
# a restart if fails.
|
54
56
|
register(:halt) do
|
55
57
|
Builder.new do
|
58
|
+
use General::CheckVirtualbox
|
56
59
|
use General::Validate
|
57
60
|
use VM::CheckAccessible
|
58
61
|
use VM::DiscardState
|
@@ -63,6 +66,7 @@ module Vagrant
|
|
63
66
|
# suspend - Suspends the VM
|
64
67
|
register(:suspend) do
|
65
68
|
Builder.new do
|
69
|
+
use General::CheckVirtualbox
|
66
70
|
use General::Validate
|
67
71
|
use VM::CheckAccessible
|
68
72
|
use VM::Suspend
|
@@ -72,6 +76,7 @@ module Vagrant
|
|
72
76
|
# resume - Resume a VM
|
73
77
|
register(:resume) do
|
74
78
|
Builder.new do
|
79
|
+
use General::CheckVirtualbox
|
75
80
|
use General::Validate
|
76
81
|
use VM::CheckAccessible
|
77
82
|
use VM::CheckPortCollisions
|
@@ -82,6 +87,7 @@ module Vagrant
|
|
82
87
|
# reload - Halts then restarts the VM
|
83
88
|
register(:reload) do
|
84
89
|
Builder.new do
|
90
|
+
use General::CheckVirtualbox
|
85
91
|
use General::Validate
|
86
92
|
use VM::CheckAccessible
|
87
93
|
use registry.get(:halt)
|
@@ -92,6 +98,7 @@ module Vagrant
|
|
92
98
|
# up - Imports, prepares, then starts a fresh VM.
|
93
99
|
register(:up) do
|
94
100
|
Builder.new do
|
101
|
+
use General::CheckVirtualbox
|
95
102
|
use General::Validate
|
96
103
|
use VM::CheckAccessible
|
97
104
|
use VM::CheckBox
|
@@ -106,6 +113,7 @@ module Vagrant
|
|
106
113
|
# destroy - Halts, cleans up, and destroys an existing VM
|
107
114
|
register(:destroy) do
|
108
115
|
Builder.new do
|
116
|
+
use General::CheckVirtualbox
|
109
117
|
use General::Validate
|
110
118
|
use VM::CheckAccessible
|
111
119
|
use registry.get(:halt), :force => true
|
@@ -120,6 +128,7 @@ module Vagrant
|
|
120
128
|
# package - Export and package the VM
|
121
129
|
register(:package) do
|
122
130
|
Builder.new do
|
131
|
+
use General::CheckVirtualbox
|
123
132
|
use General::Validate
|
124
133
|
use VM::SetupPackageFiles
|
125
134
|
use VM::CheckAccessible
|
@@ -135,6 +144,7 @@ module Vagrant
|
|
135
144
|
# box_add - Download and add a box.
|
136
145
|
register(:box_add) do
|
137
146
|
Builder.new do
|
147
|
+
use General::CheckVirtualbox
|
138
148
|
use Box::Download
|
139
149
|
use Box::Unpackage
|
140
150
|
use Box::Verify
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Action
|
3
|
+
module General
|
4
|
+
# Checks that virtualbox is installed and ready to be used.
|
5
|
+
class CheckVirtualbox
|
6
|
+
def initialize(app, env)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
# Certain actions may not actually have a VM, and thus no
|
12
|
+
# driver, so we have to be clever about obtaining an instance
|
13
|
+
# of the driver.
|
14
|
+
driver = nil
|
15
|
+
driver = env[:vm].driver if env[:vm]
|
16
|
+
driver = Driver::VirtualBox.new(nil) if !driver
|
17
|
+
|
18
|
+
# Verify that it is ready to go! This will raise an exception
|
19
|
+
# if anything goes wrong.
|
20
|
+
driver.verify!
|
21
|
+
|
22
|
+
# Carry on.
|
23
|
+
@app.call(env)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -6,12 +6,11 @@ module Vagrant
|
|
6
6
|
class Validate
|
7
7
|
def initialize(app, env)
|
8
8
|
@app = app
|
9
|
-
@env = env
|
10
9
|
end
|
11
10
|
|
12
11
|
def call(env)
|
13
|
-
|
14
|
-
@app.call(
|
12
|
+
env[:vm].config.validate!(env[:vm].env) if !env.has_key?("validate") || env["validate"]
|
13
|
+
@app.call(env)
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
@@ -37,12 +37,9 @@ module Vagrant
|
|
37
37
|
adapters << adapter
|
38
38
|
|
39
39
|
# Get the network configuration
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
else
|
44
|
-
@logger.info("Auto config disabled, not configuring: #{type}")
|
45
|
-
end
|
40
|
+
network = send("#{type}_network_config", config)
|
41
|
+
network[:_auto_config] = true if config[:auto_config]
|
42
|
+
networks << network
|
46
43
|
end
|
47
44
|
|
48
45
|
if !adapters.empty?
|
@@ -68,9 +65,11 @@ module Vagrant
|
|
68
65
|
# Determine the interface numbers for the guest.
|
69
66
|
assign_interface_numbers(networks, adapters)
|
70
67
|
|
71
|
-
# Configure all the network interfaces on the guest.
|
68
|
+
# Configure all the network interfaces on the guest. We only
|
69
|
+
# want to configure the networks that have `auto_config` setup.
|
70
|
+
networks_to_configure = networks.select { |n| n[:_auto_config] }
|
72
71
|
env[:ui].info I18n.t("vagrant.actions.vm.network.configuring")
|
73
|
-
env[:vm].guest.configure_networks(
|
72
|
+
env[:vm].guest.configure_networks(networks_to_configure)
|
74
73
|
end
|
75
74
|
end
|
76
75
|
|
@@ -253,7 +252,8 @@ module Vagrant
|
|
253
252
|
:adapter => config[:adapter],
|
254
253
|
:type => :hostonly,
|
255
254
|
:hostonly => interface[:name],
|
256
|
-
:mac_address => config[:mac]
|
255
|
+
:mac_address => config[:mac],
|
256
|
+
:nic_type => config[:nic_type]
|
257
257
|
}
|
258
258
|
end
|
259
259
|
|
@@ -309,6 +309,7 @@ module Vagrant
|
|
309
309
|
|
310
310
|
def bridged_config(args)
|
311
311
|
options = args[0] || {}
|
312
|
+
options = {} if !options.is_a?(Hash)
|
312
313
|
|
313
314
|
return {
|
314
315
|
:adapter => nil,
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'digest/md5'
|
1
2
|
require 'fileutils'
|
2
3
|
require 'pathname'
|
3
4
|
|
@@ -93,6 +94,12 @@ module Vagrant
|
|
93
94
|
opts[:map_gid] = prepare_permission(:gid, opts)
|
94
95
|
opts[:nfs_version] ||= 3
|
95
96
|
|
97
|
+
# The poor man's UUID. An MD5 hash here is sufficient since
|
98
|
+
# we need a 32 character "uuid" to represent the filesystem
|
99
|
+
# of an export. Hashing the host path is safe because two of
|
100
|
+
# the same host path will hash to the same fsid.
|
101
|
+
opts[:uuid] = Digest::MD5.hexdigest(opts[:hostpath])
|
102
|
+
|
96
103
|
acc[key] = opts
|
97
104
|
acc
|
98
105
|
end
|
data/lib/vagrant/command/base.rb
CHANGED
@@ -60,10 +60,13 @@ module Vagrant
|
|
60
60
|
# @param [String] name The name of the VM. Nil if every VM.
|
61
61
|
# @param [Boolean] single_target If true, then an exception will be
|
62
62
|
# raised if more than one target is found.
|
63
|
-
def with_target_vms(name=nil,
|
63
|
+
def with_target_vms(name=nil, options=nil)
|
64
64
|
# Using VMs requires a Vagrant environment to be properly setup
|
65
65
|
raise Errors::NoEnvironmentError if !@env.root_path
|
66
66
|
|
67
|
+
# Setup the options hash
|
68
|
+
options ||= {}
|
69
|
+
|
67
70
|
# First determine the proper array of VMs.
|
68
71
|
vms = []
|
69
72
|
if name
|
@@ -89,7 +92,10 @@ module Vagrant
|
|
89
92
|
end
|
90
93
|
|
91
94
|
# Make sure we're only working with one VM if single target
|
92
|
-
raise Errors::MultiVMTargetRequired if single_target && vms.length != 1
|
95
|
+
raise Errors::MultiVMTargetRequired if options[:single_target] && vms.length != 1
|
96
|
+
|
97
|
+
# If we asked for reversed ordering, then reverse it
|
98
|
+
vms.reverse! if options[:reverse]
|
93
99
|
|
94
100
|
# Go through each VM and yield it!
|
95
101
|
vms.each do |old_vm|
|
@@ -20,7 +20,7 @@ module Vagrant
|
|
20
20
|
return if !argv
|
21
21
|
|
22
22
|
@logger.debug("'Destroy' each target VM...")
|
23
|
-
with_target_vms(argv[0]) do |vm|
|
23
|
+
with_target_vms(argv[0], :reverse => true) do |vm|
|
24
24
|
if vm.created?
|
25
25
|
# Boolean whether we should actually go through with the destroy
|
26
26
|
# or not. This is true only if the "--force" flag is set or if the
|
@@ -51,7 +51,7 @@ module Vagrant
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def package_target(name, options)
|
54
|
-
with_target_vms(name, true) do |vm|
|
54
|
+
with_target_vms(name, :single_target => true) do |vm|
|
55
55
|
raise Errors::VMNotCreatedError if !vm.created?
|
56
56
|
@logger.debug("Packaging VM: #{vm.name}")
|
57
57
|
package_vm(vm, options)
|
data/lib/vagrant/command/ssh.rb
CHANGED
@@ -36,7 +36,7 @@ module Vagrant
|
|
36
36
|
argv = [] if argv == ssh_args
|
37
37
|
|
38
38
|
# Execute the actual SSH
|
39
|
-
with_target_vms(argv[0], true) do |vm|
|
39
|
+
with_target_vms(argv[0], :single_target => true) do |vm|
|
40
40
|
# Basic checks that are required for proper SSH
|
41
41
|
raise Errors::VMNotCreatedError if !vm.created?
|
42
42
|
raise Errors::VMInaccessible if !vm.state == :inaccessible
|
@@ -19,7 +19,7 @@ module Vagrant
|
|
19
19
|
argv = parse_options(opts)
|
20
20
|
return if !argv
|
21
21
|
|
22
|
-
with_target_vms(argv[0], true) do |vm|
|
22
|
+
with_target_vms(argv[0], :single_target => true) do |vm|
|
23
23
|
raise Errors::VMNotCreatedError if !vm.created?
|
24
24
|
raise Errors::VMInaccessible if !vm.state == :inaccessible
|
25
25
|
|
@@ -440,6 +440,12 @@ module Vagrant
|
|
440
440
|
execute("controlvm", @uuid, "savestate")
|
441
441
|
end
|
442
442
|
|
443
|
+
def verify!
|
444
|
+
# This command sometimes fails if kernel drivers aren't properly loaded
|
445
|
+
# so we just run the command and verify that it succeeded.
|
446
|
+
execute("list", "hostonlyifs")
|
447
|
+
end
|
448
|
+
|
443
449
|
def verify_image(path)
|
444
450
|
r = raw("import", path.to_s, "--dry-run")
|
445
451
|
return r.exit_code == 0
|
@@ -440,6 +440,12 @@ module Vagrant
|
|
440
440
|
execute("controlvm", @uuid, "savestate")
|
441
441
|
end
|
442
442
|
|
443
|
+
def verify!
|
444
|
+
# This command sometimes fails if kernel drivers aren't properly loaded
|
445
|
+
# so we just run the command and verify that it succeeded.
|
446
|
+
execute("list", "hostonlyifs")
|
447
|
+
end
|
448
|
+
|
443
449
|
def verify_image(path)
|
444
450
|
r = raw("import", path.to_s, "--dry-run")
|
445
451
|
return r.exit_code == 0
|
@@ -234,6 +234,12 @@ module Vagrant
|
|
234
234
|
def suspend
|
235
235
|
end
|
236
236
|
|
237
|
+
# Verifies that the driver is ready to accept work.
|
238
|
+
#
|
239
|
+
# This should raise a VagrantError if things are not ready.
|
240
|
+
def verify!
|
241
|
+
end
|
242
|
+
|
237
243
|
# Verifies that an image can be imported properly.
|
238
244
|
#
|
239
245
|
# @param [String] path Path to an OVF file.
|
@@ -57,7 +57,9 @@ module Vagrant
|
|
57
57
|
temp.write(config_file)
|
58
58
|
temp.close
|
59
59
|
|
60
|
-
|
60
|
+
remote_file = File.join(config.provisioning_path, filename)
|
61
|
+
env[:vm].channel.sudo("rm #{remote_file}", :error_check => false)
|
62
|
+
env[:vm].channel.upload(temp.path, remote_file)
|
61
63
|
end
|
62
64
|
|
63
65
|
def setup_json
|
data/lib/vagrant/version.rb
CHANGED
data/lib/vagrant/vm.rb
CHANGED
data/templates/locales/en.yml
CHANGED
@@ -255,6 +255,11 @@ en:
|
|
255
255
|
stopped without properly closing the session. Run `vagrant up`
|
256
256
|
to resume this virtual machine. If any problems persist, you may
|
257
257
|
have to destroy and restart the virtual machine.
|
258
|
+
gurumeditation: |-
|
259
|
+
The VM is in the "guru meditation" state. This is a rare case which means
|
260
|
+
that an internal error in VitualBox caused the VM to fail. This is always
|
261
|
+
the sign of a bug in VirtualBox. You can try to bring your VM back online
|
262
|
+
with a `vagrant up`.
|
258
263
|
inaccessible: |-
|
259
264
|
The VM is inaccessible! This is a rare case which means that VirtualBox
|
260
265
|
can't find your VM configuration. This usually happens when upgrading
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# VAGRANT-BEGIN: <%= uuid %>
|
2
2
|
<% folders.each do |name, opts| %>
|
3
|
-
"<%= opts[:hostpath] %>" <%= ip %>(rw,no_subtree_check,all_squash<% if opts[:map_uid] %>,anonuid=<%= opts[:map_uid] %><% end %><% if opts[:map_gid] %>,anongid=<%= opts[:map_gid] %><% end %>)
|
3
|
+
"<%= opts[:hostpath] %>" <%= ip %>(rw,no_subtree_check,all_squash<% if opts[:map_uid] %>,anonuid=<%= opts[:map_uid] %><% end %><% if opts[:map_gid] %>,anongid=<%= opts[:map_gid] %><% end %>,fsid=<%= opts[:uuid] %>)
|
4
4
|
<% end %>
|
5
5
|
# VAGRANT-END: <%= uuid %>
|
data/vagrant.gemspec
CHANGED
@@ -17,11 +17,11 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_dependency "archive-tar-minitar", "= 0.5.2"
|
18
18
|
s.add_dependency "childprocess", "~> 0.3.1"
|
19
19
|
s.add_dependency "erubis", "~> 2.7.0"
|
20
|
+
s.add_dependency "i18n", "~> 0.6.0"
|
20
21
|
s.add_dependency "json", "~> 1.5.1"
|
21
22
|
s.add_dependency "log4r", "~> 1.1.9"
|
22
23
|
s.add_dependency "net-ssh", "~> 2.2.2"
|
23
24
|
s.add_dependency "net-scp", "~> 1.0.4"
|
24
|
-
s.add_dependency "i18n", "~> 0.6.0"
|
25
25
|
|
26
26
|
s.add_development_dependency "rake"
|
27
27
|
s.add_development_dependency "contest", ">= 0.1.2"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrantup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.99.
|
4
|
+
version: 0.9.99.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mitchell Hashimoto
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 2.7.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: i18n
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.6.0
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.6.0
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: json
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,20 +123,6 @@ dependencies:
|
|
109
123
|
- - ~>
|
110
124
|
- !ruby/object:Gem::Version
|
111
125
|
version: 1.0.4
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: i18n
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - ~>
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: 0.6.0
|
119
|
-
type: :runtime
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - ~>
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 0.6.0
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: rake
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -257,6 +257,7 @@ files:
|
|
257
257
|
- lib/vagrant/action/builtin.rb
|
258
258
|
- lib/vagrant/action/env/set.rb
|
259
259
|
- lib/vagrant/action/environment.rb
|
260
|
+
- lib/vagrant/action/general/check_virtualbox.rb
|
260
261
|
- lib/vagrant/action/general/package.rb
|
261
262
|
- lib/vagrant/action/general/validate.rb
|
262
263
|
- lib/vagrant/action/runner.rb
|