vagrantup 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile +4 -2
- data/lib/vagrant/action/vm/network.rb +2 -1
- data/lib/vagrant/config/ssh.rb +5 -0
- data/lib/vagrant/config/vm.rb +1 -0
- data/lib/vagrant/data_store.rb +6 -6
- data/lib/vagrant/hosts/bsd.rb +1 -0
- data/lib/vagrant/ssh.rb +1 -1
- data/lib/vagrant/ssh/session.rb +13 -8
- data/lib/vagrant/systems/debian.rb +1 -0
- data/lib/vagrant/systems/linux.rb +1 -1
- data/lib/vagrant/version.rb +1 -1
- data/templates/locales/en.yml +4 -0
- data/templates/nfs/exports.erb +1 -1
- data/templates/nfs/exports_linux.erb +1 -1
- data/test/vagrant/action/vm/network_test.rb +30 -9
- data/test/vagrant/ssh/session_test.rb +2 -1
- data/vagrant.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d141d5cc631baefb68f687fa58d80ea23ce02eb8
|
4
|
+
data.tar.gz: 6728e47dee0afb290b4af6454573177f5b730752
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1641fb390cea4223932a2d19c1f65877b63803569cc17e9bbf904d9063d855e0907ee801ebb2b72904f433ab5331e54aa592cfec70a212f5f3cfbe3db9154c1e
|
7
|
+
data.tar.gz: 407d67d12bf887a4c35fc57fda51303ab43b0459a8bb87f5068df7cbf94974b37d141da355f359659f93d71c4d66da74ac1bcc19a9aa4f78598fe8fa3a4e4f2d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## 0.7.2 (February 8, 2011)
|
2
|
+
|
3
|
+
- Update JSON dependency to 1.5.1, which works with Ruby 1.9 on
|
4
|
+
Windows.
|
5
|
+
- Fix sudo issues on sudo < 1.7.0 (again).
|
6
|
+
- Fix race condition in SSH, which specifically manifested itself in
|
7
|
+
the chef server provisioner. [GH-295]
|
8
|
+
- Change sudo shell to use `bash` (configurable). [GH-301]
|
9
|
+
- Can now set mac address of host only network. [GH-294]
|
10
|
+
- NFS shared folders with spaces now work properly. [GH-293]
|
11
|
+
- Failed SSH commands now show output in error message. [GH-285]
|
12
|
+
|
1
13
|
## 0.7.1 (January 28, 2011)
|
2
14
|
|
3
15
|
- Change error output with references to VirtualBox 3.2 to 4.0.
|
data/Gemfile
CHANGED
@@ -8,7 +8,7 @@ module Vagrant
|
|
8
8
|
@app = app
|
9
9
|
@env = env
|
10
10
|
|
11
|
-
if enable_network? && Util::Platform.windows?
|
11
|
+
if enable_network? && Util::Platform.windows? && Util::Platform.bit64?
|
12
12
|
raise Errors::NetworkNotImplemented
|
13
13
|
end
|
14
14
|
|
@@ -65,6 +65,7 @@ module Vagrant
|
|
65
65
|
adapter.enabled = true
|
66
66
|
adapter.attachment_type = :host_only
|
67
67
|
adapter.host_interface = network_name(network_options)
|
68
|
+
adapter.mac_address = network_options[:mac].gsub(':', '') if network_options[:mac]
|
68
69
|
adapter.save
|
69
70
|
end
|
70
71
|
end
|
data/lib/vagrant/config/ssh.rb
CHANGED
@@ -11,6 +11,11 @@ module Vagrant
|
|
11
11
|
attr_writer :private_key_path
|
12
12
|
attr_accessor :forward_agent
|
13
13
|
attr_accessor :forward_x11
|
14
|
+
attr_accessor :sudo_shell
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@sudo_shell = "bash"
|
18
|
+
end
|
14
19
|
|
15
20
|
def private_key_path
|
16
21
|
File.expand_path(@private_key_path, env.root_path)
|
data/lib/vagrant/config/vm.rb
CHANGED
data/lib/vagrant/data_store.rb
CHANGED
@@ -19,13 +19,13 @@ module Vagrant
|
|
19
19
|
@file_path = file_path
|
20
20
|
return if !file_path
|
21
21
|
|
22
|
-
File.
|
23
|
-
|
22
|
+
raise Errors::DotfileIsDirectory if File.directory?(file_path)
|
23
|
+
|
24
|
+
if File.exist?(file_path)
|
25
|
+
File.open(file_path, "r") do |f|
|
26
|
+
merge!(JSON.parse(f.read))
|
27
|
+
end
|
24
28
|
end
|
25
|
-
rescue Errno::ENOENT
|
26
|
-
clear
|
27
|
-
rescue Errno::EISDIR
|
28
|
-
raise Errors::DotfileIsDirectory
|
29
29
|
end
|
30
30
|
|
31
31
|
# Commits any changes to the data to disk. Even if the data
|
data/lib/vagrant/hosts/bsd.rb
CHANGED
@@ -25,6 +25,7 @@ module Vagrant
|
|
25
25
|
output.split("\n").each do |line|
|
26
26
|
# This should only ask for administrative permission once, even
|
27
27
|
# though its executed in multiple subshells.
|
28
|
+
line = line.gsub('"', '\"')
|
28
29
|
system(%Q[sudo su root -c "echo '#{line}' >> /etc/exports"])
|
29
30
|
end
|
30
31
|
|
data/lib/vagrant/ssh.rb
CHANGED
data/lib/vagrant/ssh/session.rb
CHANGED
@@ -7,9 +7,11 @@ module Vagrant
|
|
7
7
|
include Util::Retryable
|
8
8
|
|
9
9
|
attr_reader :session
|
10
|
+
attr_reader :env
|
10
11
|
|
11
|
-
def initialize(session)
|
12
|
+
def initialize(session, env)
|
12
13
|
@session = session
|
14
|
+
@env = env
|
13
15
|
end
|
14
16
|
|
15
17
|
# Executes a given command and simply returns true/false if the
|
@@ -31,8 +33,8 @@ module Vagrant
|
|
31
33
|
# this command is tailor-made to be compliant with older versions
|
32
34
|
# of `sudo`.
|
33
35
|
def sudo!(commands, options=nil, &block)
|
34
|
-
session.open_channel do |ch|
|
35
|
-
ch.exec("sudo -
|
36
|
+
channel = session.open_channel do |ch|
|
37
|
+
ch.exec("sudo #{env.config.ssh.sudo_shell} -l") do |ch2, success|
|
36
38
|
# Output each command as if they were entered on the command line
|
37
39
|
[commands].flatten.each do |command|
|
38
40
|
ch2.send_data "#{command}\n"
|
@@ -45,9 +47,10 @@ module Vagrant
|
|
45
47
|
# stdout/stderr and error checking goodies
|
46
48
|
setup_channel_callbacks(ch2, commands, options, block)
|
47
49
|
end
|
48
|
-
|
49
|
-
ch.wait
|
50
50
|
end
|
51
|
+
|
52
|
+
channel.wait
|
53
|
+
channel[:result]
|
51
54
|
end
|
52
55
|
|
53
56
|
# Executes a given command on the SSH session and blocks until
|
@@ -74,7 +77,7 @@ module Vagrant
|
|
74
77
|
options = { :error_check => true }.merge(options || {})
|
75
78
|
|
76
79
|
block ||= Proc.new do |ch, type, data|
|
77
|
-
check_exit_status(data, command, options) if type == :exit_status && options[:error_check]
|
80
|
+
check_exit_status(data, command, options, ch[:result]) if type == :exit_status && options[:error_check]
|
78
81
|
|
79
82
|
ch[:result] ||= ""
|
80
83
|
ch[:result] << data if [:stdout, :stderr].include?(type)
|
@@ -98,12 +101,14 @@ module Vagrant
|
|
98
101
|
|
99
102
|
# Checks for an erroroneous exit status and raises an exception
|
100
103
|
# if so.
|
101
|
-
def check_exit_status(exit_status, commands, options=nil)
|
104
|
+
def check_exit_status(exit_status, commands, options=nil, output=nil)
|
102
105
|
if exit_status != 0
|
106
|
+
output ||= '[no output]'
|
103
107
|
options = {
|
104
108
|
:_error_class => Errors::VagrantError,
|
105
109
|
:_key => :ssh_bad_exit_status,
|
106
|
-
:command => [commands].flatten.join("\n")
|
110
|
+
:command => [commands].flatten.join("\n"),
|
111
|
+
:output => output
|
107
112
|
}.merge(options || {})
|
108
113
|
|
109
114
|
raise options[:_error_class], options
|
@@ -26,6 +26,7 @@ module Vagrant
|
|
26
26
|
vm.ssh.execute do |ssh|
|
27
27
|
if !ssh.test?("sudo hostname | grep '#{name}'")
|
28
28
|
ssh.exec!("sudo sed -i 's/.*$/#{name}/' /etc/hostname")
|
29
|
+
ssh.exec!("sudo sed -i 's@^\\(127[.]0[.]1[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
|
29
30
|
ssh.exec!("sudo service hostname start")
|
30
31
|
end
|
31
32
|
end
|
@@ -45,7 +45,7 @@ module Vagrant
|
|
45
45
|
folders.each do |name, opts|
|
46
46
|
vm.ssh.execute do |ssh|
|
47
47
|
ssh.exec!("sudo mkdir -p #{opts[:guestpath]}")
|
48
|
-
ssh.exec!("sudo mount #{ip}
|
48
|
+
ssh.exec!("sudo mount #{ip}:'#{opts[:hostpath]}' #{opts[:guestpath]}", :_error_class => LinuxError, :_key => :mount_nfs_fail)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
data/lib/vagrant/version.rb
CHANGED
data/templates/locales/en.yml
CHANGED
@@ -70,6 +70,10 @@ en:
|
|
70
70
|
Vagrant assumes that this means the command failed!
|
71
71
|
|
72
72
|
%{command}
|
73
|
+
|
74
|
+
The output of the command prior to failing is outputted below:
|
75
|
+
|
76
|
+
%{output}
|
73
77
|
ssh_connection_refused: |-
|
74
78
|
SSH connection was refused! This usually happens if the VM failed to
|
75
79
|
boot properly. Some steps to try to fix this: First, try reloading your
|
data/templates/nfs/exports.erb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# VAGRANT-BEGIN: <%= uuid %>
|
2
2
|
<% folders.each do |name, opts| %>
|
3
|
-
<%= opts[:hostpath] %> <%= ip %><% if opts[:map_uid] -%> -mapall=<%= [opts[:map_uid],opts[:map_gid]].compact.join(":") %><% end -%>
|
3
|
+
"<%= opts[:hostpath] %>" <%= ip %><% if opts[:map_uid] -%> -mapall=<%= [opts[:map_uid],opts[:map_gid]].compact.join(":") %><% end -%>
|
4
4
|
<% end %>
|
5
5
|
# VAGRANT-END: <%= uuid %>
|
@@ -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 %>)
|
4
4
|
<% end %>
|
5
5
|
# VAGRANT-END: <%= uuid %>
|
@@ -16,8 +16,9 @@ class NetworkVMActionTest < Test::Unit::TestCase
|
|
16
16
|
end
|
17
17
|
|
18
18
|
context "initializing" do
|
19
|
-
should "raise an error if on windows and networking is enabled" do
|
19
|
+
should "raise an error if on windows x64 and networking is enabled" do
|
20
20
|
Vagrant::Util::Platform.stubs(:windows?).returns(true)
|
21
|
+
Vagrant::Util::Platform.stubs(:bit64?).returns(true)
|
21
22
|
@env.env.config.vm.network("foo")
|
22
23
|
|
23
24
|
assert_raises(Vagrant::Errors::NetworkNotImplemented) {
|
@@ -115,24 +116,44 @@ class NetworkVMActionTest < Test::Unit::TestCase
|
|
115
116
|
|
116
117
|
@network_adapters = []
|
117
118
|
@internal_vm.stubs(:network_adapters).returns(@network_adapters)
|
119
|
+
end
|
118
120
|
|
119
|
-
|
121
|
+
def expect_adapter_setup(options=nil)
|
122
|
+
options = {
|
120
123
|
:ip => "foo",
|
121
124
|
:adapter => 7
|
122
|
-
}
|
125
|
+
}.merge(options || {})
|
123
126
|
|
124
|
-
@env
|
125
|
-
end
|
127
|
+
@env["config"].vm.network(options[:ip], options)
|
126
128
|
|
127
|
-
|
128
|
-
adapter = mock("adapter")
|
129
|
-
@network_adapters[@options[:adapter]] = adapter
|
129
|
+
@env["vm"].vm.network_adapters.clear
|
130
|
+
@env["vm"].vm.network_adapters[options[:adapter]] = adapter = mock("adapter")
|
130
131
|
|
131
|
-
adapter.expects(:enabled=).with(true)
|
132
|
+
adapter.expects(:enabled=).with(true)
|
132
133
|
adapter.expects(:attachment_type=).with(:host_only).once
|
133
134
|
adapter.expects(:host_interface=).with(@network_name).once
|
135
|
+
|
136
|
+
if options[:mac]
|
137
|
+
adapter.expects(:mac_address=).with(options[:mac].gsub(':', '')).once
|
138
|
+
else
|
139
|
+
adapter.expects(:mac_address=).never
|
140
|
+
end
|
141
|
+
|
134
142
|
adapter.expects(:save).once
|
143
|
+
end
|
144
|
+
|
145
|
+
should "setup the specified network adapter" do
|
146
|
+
expect_adapter_setup
|
147
|
+
@instance.assign_network
|
148
|
+
end
|
149
|
+
|
150
|
+
should "setup the specified network adapter's mac address if specified" do
|
151
|
+
expect_adapter_setup(:mac => "foo")
|
152
|
+
@instance.assign_network
|
153
|
+
end
|
135
154
|
|
155
|
+
should "properly remove : from mac address" do
|
156
|
+
expect_adapter_setup(:mac => "foo:bar")
|
136
157
|
@instance.assign_network
|
137
158
|
end
|
138
159
|
end
|
@@ -3,9 +3,10 @@ require "test_helper"
|
|
3
3
|
class SshSessionTest < Test::Unit::TestCase
|
4
4
|
setup do
|
5
5
|
@session = mock("session")
|
6
|
+
@env = vagrant_env
|
6
7
|
|
7
8
|
@klass = Vagrant::SSH::Session
|
8
|
-
@instance = @klass.new(@session)
|
9
|
+
@instance = @klass.new(@session, @env)
|
9
10
|
end
|
10
11
|
|
11
12
|
context "exec!" do
|
data/vagrant.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
s.add_dependency "archive-tar-minitar", "= 0.5.2"
|
18
18
|
s.add_dependency "erubis", "~> 2.6.6"
|
19
|
-
s.add_dependency "json", "~> 1.
|
19
|
+
s.add_dependency "json", "~> 1.5.1"
|
20
20
|
s.add_dependency "mario", "~> 0.0.6"
|
21
21
|
s.add_dependency "net-ssh", "~> 2.1.0"
|
22
22
|
s.add_dependency "net-scp", "~> 1.0.4"
|
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.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mitchell Hashimoto
|
@@ -45,14 +45,14 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ~>
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 1.
|
48
|
+
version: 1.5.1
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.
|
55
|
+
version: 1.5.1
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: mario
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|