vagrant 0.6.9 → 0.7.0.beta
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 +11 -0
- data/README.md +5 -0
- data/lib/vagrant/action/builtin.rb +1 -2
- data/lib/vagrant/action/vm/clean_machine_folder.rb +1 -1
- data/lib/vagrant/action/vm/destroy.rb +1 -1
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +7 -12
- data/lib/vagrant/environment.rb +1 -1
- data/lib/vagrant/version.rb +1 -1
- data/templates/locales/en.yml +6 -1
- data/test/vagrant/action/vm/clean_machine_folder_test.rb +6 -4
- data/test/vagrant/action/vm/destroy_test.rb +1 -1
- data/test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +10 -7
- data/vagrant.gemspec +1 -1
- metadata +10 -11
- data/lib/vagrant/action/vm/disable_networks.rb +0 -34
- data/test/vagrant/action/vm/disable_networks_test.rb +0 -48
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## 0.7.0.beta (December 24, 2010)
|
2
|
+
|
3
|
+
- VirtualBox 4.0 support. Support for VirtualBox 3.2 is _dropped_, since
|
4
|
+
the API is so different. Stay with the 0.6.x series if you have VirtualBox
|
5
|
+
3.2.x.
|
6
|
+
- Changed the unused host only network destroy mechanism to check for
|
7
|
+
uselessness after the VM is destroyed. This should result in more accurate
|
8
|
+
checks.
|
9
|
+
- Networks are no longer disabled upon halt/destroy. With the above
|
10
|
+
change, its unnecessary.
|
11
|
+
|
1
12
|
## 0.6.9 (December 21, 2010)
|
2
13
|
|
3
14
|
- Puppet provisioner. [GH-223]
|
data/README.md
CHANGED
@@ -54,3 +54,8 @@ be installed with a simple `gem install bundler --pre`. Afterwords, do the follo
|
|
54
54
|
rake
|
55
55
|
|
56
56
|
This will run the test suite, which should come back all green! Then you're good to go!
|
57
|
+
|
58
|
+
If you want to run Vagrant without having to install the gem, you may use `bundle exec`,
|
59
|
+
like so:
|
60
|
+
|
61
|
+
bundle exec bin/vagrant help
|
@@ -30,7 +30,6 @@ module Vagrant
|
|
30
30
|
register(:halt, Builder.new do
|
31
31
|
use VM::DiscardState
|
32
32
|
use VM::Halt
|
33
|
-
use VM::DisableNetworks
|
34
33
|
end)
|
35
34
|
|
36
35
|
# suspend - Suspends the VM
|
@@ -62,9 +61,9 @@ module Vagrant
|
|
62
61
|
register(:destroy, Builder.new do
|
63
62
|
use Action[:halt], :force => true
|
64
63
|
use VM::ClearNFSExports
|
65
|
-
use VM::DestroyUnusedNetworkInterfaces
|
66
64
|
use VM::Destroy
|
67
65
|
use VM::CleanMachineFolder
|
66
|
+
use VM::DestroyUnusedNetworkInterfaces
|
68
67
|
end)
|
69
68
|
|
70
69
|
# package - Export and package the VM
|
@@ -31,7 +31,7 @@ module Vagrant
|
|
31
31
|
keep = Dir["#{f}/**/*"].find do |d|
|
32
32
|
# Find a file that doesn't have ".xml-prev" as the suffix,
|
33
33
|
# which signals that we want to keep this folder
|
34
|
-
File.file?(d) && !(File.basename(d) =~ /\.
|
34
|
+
File.file?(d) && !(File.basename(d) =~ /\.vbox-prev$/)
|
35
35
|
end
|
36
36
|
|
37
37
|
FileUtils.rm_rf(f) if !keep
|
@@ -9,20 +9,15 @@ module Vagrant
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def call(env)
|
12
|
-
#
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
interfaces = env["vm"].vm.network_adapters.collect do |adapter|
|
17
|
-
adapter.host_interface_object
|
18
|
-
end
|
12
|
+
# Destroy all the host only network adapters which are empty.
|
13
|
+
VirtualBox::Global.global(true).host.network_interfaces.each do |iface|
|
14
|
+
# We only care about host only interfaces
|
15
|
+
next if iface.interface_type != :host_only
|
19
16
|
|
20
|
-
|
21
|
-
|
22
|
-
# attached VM (which must be this VM)
|
23
|
-
if interface.attached_vms.length == 1
|
17
|
+
# Destroy it if there is nothing attached
|
18
|
+
if iface.attached_vms.empty?
|
24
19
|
env.ui.info I18n.t("vagrant.actions.vm.destroy_network.destroying")
|
25
|
-
|
20
|
+
iface.destroy
|
26
21
|
end
|
27
22
|
end
|
28
23
|
|
data/lib/vagrant/environment.rb
CHANGED
@@ -32,7 +32,7 @@ module Vagrant
|
|
32
32
|
def check_virtualbox!
|
33
33
|
version = VirtualBox.version
|
34
34
|
raise Errors::VirtualBoxNotDetected if version.nil?
|
35
|
-
raise Errors::VirtualBoxInvalidVersion, :version => version.to_s if version.to_f <
|
35
|
+
raise Errors::VirtualBoxInvalidVersion, :version => version.to_s if version.to_f < 4.0
|
36
36
|
raise Errors::VirtualBoxInvalidOSE, :version => version.to_s if version.to_s.downcase.include?("ose")
|
37
37
|
rescue Errors::VirtualBoxNotDetected
|
38
38
|
# On 64-bit Windows, show a special error. This error is a subclass
|
data/lib/vagrant/version.rb
CHANGED
data/templates/locales/en.yml
CHANGED
@@ -96,8 +96,13 @@ en:
|
|
96
96
|
to continue.
|
97
97
|
virtualbox_invalid_version: |-
|
98
98
|
Vagrant has detected that you have VirtualBox version %{version} installed!
|
99
|
-
Vagrant requires that you use at least VirtualBox version
|
99
|
+
Vagrant requires that you use at least VirtualBox version 4.0. Please install
|
100
100
|
a more recent version of VirtualBox to continue.
|
101
|
+
|
102
|
+
The Vagrant 0.6.x series supports VirtualBox 3.2, so if you're stuck with that
|
103
|
+
version, then please use the 0.6.x series of Vagrant.
|
104
|
+
|
105
|
+
Any earlier versions of VirtualBox are completely unsupported. Please upgrade.
|
101
106
|
virtualbox_not_detected: |-
|
102
107
|
Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.
|
103
108
|
If VirtualBox is installed, it may be an incorrect version. Vagrant currently
|
@@ -37,10 +37,10 @@ class CleanMachineFolderVMActionTest < Test::Unit::TestCase
|
|
37
37
|
@instance.clean_machine_folder
|
38
38
|
end
|
39
39
|
|
40
|
-
should "delete directories with only .
|
40
|
+
should "delete directories with only .vbox-prev files" do
|
41
41
|
folders = {
|
42
|
-
"sfoo" => %W[foo bar baz.
|
43
|
-
"sbar" => %W[foo.
|
42
|
+
"sfoo" => %W[foo bar baz.vbox-prev],
|
43
|
+
"sbar" => %W[foo.vbox-prev]
|
44
44
|
}
|
45
45
|
|
46
46
|
Dir.expects(:[]).with(@folder).returns(folders.keys)
|
@@ -57,7 +57,7 @@ class CleanMachineFolderVMActionTest < Test::Unit::TestCase
|
|
57
57
|
should "delete directories with only subdirectories" do
|
58
58
|
folders = {
|
59
59
|
"sfoo" => %W[foo bar],
|
60
|
-
"sbar" => %W[foo.
|
60
|
+
"sbar" => %W[foo.vbox-prev]
|
61
61
|
}
|
62
62
|
|
63
63
|
File.stubs(:file?).returns(false)
|
@@ -77,6 +77,8 @@ class CleanMachineFolderVMActionTest < Test::Unit::TestCase
|
|
77
77
|
should "do nothing if folder is < 10 characters" do
|
78
78
|
VirtualBox::Global.global.system_properties.stubs(:default_machine_folder).returns("foo")
|
79
79
|
Dir.expects(:[]).never
|
80
|
+
|
81
|
+
@instance.clean_machine_folder
|
80
82
|
end
|
81
83
|
end
|
82
84
|
end
|
@@ -16,7 +16,7 @@ class DestroyVMActionTest < Test::Unit::TestCase
|
|
16
16
|
|
17
17
|
context "destroying the VM" do
|
18
18
|
should "destroy VM and attached images" do
|
19
|
-
@internal_vm.expects(:destroy).
|
19
|
+
@internal_vm.expects(:destroy).once
|
20
20
|
@env["vm"].expects(:vm=).with(nil).once
|
21
21
|
@app.expects(:call).with(@env).once
|
22
22
|
@instance.call(@env)
|
@@ -16,24 +16,27 @@ class DestroyUnusedNetworkInterfacesVMActionTest < Test::Unit::TestCase
|
|
16
16
|
|
17
17
|
context "calling" do
|
18
18
|
setup do
|
19
|
-
@
|
20
|
-
|
19
|
+
@interfaces = []
|
20
|
+
global = mock("global")
|
21
|
+
host = mock("host")
|
22
|
+
VirtualBox::Global.stubs(:global).returns(global)
|
23
|
+
global.stubs(:host).returns(host)
|
24
|
+
host.stubs(:network_interfaces).returns(@interfaces)
|
21
25
|
end
|
22
26
|
|
23
|
-
def stub_interface(length=5)
|
27
|
+
def stub_interface(length=5, type=:host_only)
|
24
28
|
interface = mock("interface")
|
25
|
-
|
26
|
-
adapter.stubs(:host_interface_object).returns(interface)
|
29
|
+
interface.stubs(:interface_type).returns(type)
|
27
30
|
interface.stubs(:attached_vms).returns(Array.new(length))
|
28
31
|
|
29
|
-
@
|
32
|
+
@interfaces << interface
|
30
33
|
interface
|
31
34
|
end
|
32
35
|
|
33
36
|
should "destroy only the unused network interfaces" do
|
34
37
|
stub_interface(5)
|
35
38
|
stub_interface(7)
|
36
|
-
results = [stub_interface(
|
39
|
+
results = [stub_interface(0), stub_interface(0)]
|
37
40
|
|
38
41
|
results.each do |result|
|
39
42
|
result.expects(:destroy).once
|
data/vagrant.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency "net-scp", "~> 1.0.3"
|
22
22
|
s.add_dependency "i18n", "~> 0.4.1"
|
23
23
|
s.add_dependency "thor", "~> 0.14.2"
|
24
|
-
s.add_dependency "virtualbox", "~> 0.
|
24
|
+
s.add_dependency "virtualbox", "~> 0.8.0"
|
25
25
|
|
26
26
|
s.add_development_dependency "rake"
|
27
27
|
s.add_development_dependency "contest", ">= 0.1.2"
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: true
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
|
7
|
+
- 7
|
8
|
+
- 0
|
9
|
+
- beta
|
10
|
+
version: 0.7.0.beta
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Mitchell Hashimoto
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-12-
|
19
|
+
date: 2010-12-24 00:00:00 -08:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
@@ -147,9 +148,9 @@ dependencies:
|
|
147
148
|
- !ruby/object:Gem::Version
|
148
149
|
segments:
|
149
150
|
- 0
|
150
|
-
-
|
151
|
-
-
|
152
|
-
version: 0.
|
151
|
+
- 8
|
152
|
+
- 0
|
153
|
+
version: 0.8.0
|
153
154
|
type: :runtime
|
154
155
|
prerelease: false
|
155
156
|
version_requirements: *id009
|
@@ -254,7 +255,6 @@ files:
|
|
254
255
|
- lib/vagrant/action/vm/customize.rb
|
255
256
|
- lib/vagrant/action/vm/destroy.rb
|
256
257
|
- lib/vagrant/action/vm/destroy_unused_network_interfaces.rb
|
257
|
-
- lib/vagrant/action/vm/disable_networks.rb
|
258
258
|
- lib/vagrant/action/vm/discard_state.rb
|
259
259
|
- lib/vagrant/action/vm/export.rb
|
260
260
|
- lib/vagrant/action/vm/forward_ports.rb
|
@@ -367,7 +367,6 @@ files:
|
|
367
367
|
- test/vagrant/action/vm/customize_test.rb
|
368
368
|
- test/vagrant/action/vm/destroy_test.rb
|
369
369
|
- test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb
|
370
|
-
- test/vagrant/action/vm/disable_networks_test.rb
|
371
370
|
- test/vagrant/action/vm/discard_state_test.rb
|
372
371
|
- test/vagrant/action/vm/export_test.rb
|
373
372
|
- test/vagrant/action/vm/forward_ports_helpers_test.rb
|
@@ -442,7 +441,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
442
441
|
requirements:
|
443
442
|
- - ">="
|
444
443
|
- !ruby/object:Gem::Version
|
445
|
-
hash:
|
444
|
+
hash: 1825032801895729631
|
446
445
|
segments:
|
447
446
|
- 0
|
448
447
|
version: "0"
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Vagrant
|
2
|
-
class Action
|
3
|
-
module VM
|
4
|
-
# Middleware to disable all host only networks on the
|
5
|
-
# VM
|
6
|
-
class DisableNetworks
|
7
|
-
def initialize(app, env)
|
8
|
-
@app = app
|
9
|
-
@env = env
|
10
|
-
end
|
11
|
-
|
12
|
-
def call(env)
|
13
|
-
if env["vm"].created?
|
14
|
-
logged = false
|
15
|
-
|
16
|
-
env["vm"].vm.network_adapters.each do |adapter|
|
17
|
-
next if adapter.attachment_type != :host_only
|
18
|
-
|
19
|
-
if !logged
|
20
|
-
env.ui.info I18n.t("vagrant.actions.vm.disable_networks.disabling")
|
21
|
-
logged = true
|
22
|
-
end
|
23
|
-
|
24
|
-
adapter.enabled = false
|
25
|
-
adapter.save
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
@app.call(env)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class DisableNetworksVMActionTest < Test::Unit::TestCase
|
4
|
-
setup do
|
5
|
-
@klass = Vagrant::Action::VM::DisableNetworks
|
6
|
-
@app, @env = action_env
|
7
|
-
|
8
|
-
@vm = mock("vm")
|
9
|
-
@env.env.stubs(:vm).returns(@vm)
|
10
|
-
|
11
|
-
@internal_vm = mock("internal")
|
12
|
-
@vm.stubs(:created?).returns(true)
|
13
|
-
@vm.stubs(:vm).returns(@internal_vm)
|
14
|
-
@internal_vm.stubs(:network_adapters).returns([])
|
15
|
-
|
16
|
-
@instance = @klass.new(@app, @env)
|
17
|
-
end
|
18
|
-
|
19
|
-
def mock_adapter(type)
|
20
|
-
adapter = mock("adapter")
|
21
|
-
adapter.stubs(:attachment_type).returns(type)
|
22
|
-
|
23
|
-
if type == :host_only
|
24
|
-
adapter.expects(:enabled=).with(false)
|
25
|
-
adapter.expects(:save)
|
26
|
-
end
|
27
|
-
|
28
|
-
@internal_vm.network_adapters << adapter
|
29
|
-
end
|
30
|
-
|
31
|
-
should "do nothing if VM is not created" do
|
32
|
-
@vm.stubs(:created?).returns(false)
|
33
|
-
@vm.expects(:vm).never
|
34
|
-
|
35
|
-
@app.expects(:call).with(@env).once
|
36
|
-
@instance.call(@env)
|
37
|
-
end
|
38
|
-
|
39
|
-
should "remove all network adapters and continue chain" do
|
40
|
-
mock_adapter(:bridged)
|
41
|
-
mock_adapter(:host_only)
|
42
|
-
mock_adapter(:host_only)
|
43
|
-
|
44
|
-
@app.expects(:call).with(@env).once
|
45
|
-
|
46
|
-
@instance.call(@env)
|
47
|
-
end
|
48
|
-
end
|