vagrant 0.7.2 → 0.7.3

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.
@@ -1,3 +1,12 @@
1
+ ## 0.7.3 (April 19, 2011)
2
+
3
+ - Retry all SSH on Net::SSH::Disconnect in case SSH is just restarting. [GH-313]
4
+ - Add NFS shared folder support for Arch linux. [GH-346]
5
+ - Fix issue with unknown terminal type output for sudo commands.
6
+ - Forwarded port protocol can now be set as UDP. [GH-311]
7
+ - Chef server file cache path and file backup path can be configured. [GH-310]
8
+ - Setting hostname should work on Debian now. [GH-307]
9
+
1
10
  ## 0.7.2 (February 8, 2011)
2
11
 
3
12
  - Update JSON dependency to 1.5.1, which works with Ruby 1.9 on
@@ -125,6 +125,7 @@ module Vagrant
125
125
  port.name = name
126
126
  port.guestport = options[:guestport]
127
127
  port.hostport = options[:hostport]
128
+ port.protocol = options[:protocol] || :tcp
128
129
  @env["vm"].vm.network_adapters[options[:adapter]].nat_driver.forwarded_ports << port
129
130
  end
130
131
  end
@@ -35,7 +35,7 @@ module Vagrant
35
35
  options = {
36
36
  :guestport => guestport,
37
37
  :hostport => hostport,
38
- :protocol => "TCP",
38
+ :protocol => :tcp,
39
39
  :adapter => 0,
40
40
  :auto => false
41
41
  }.merge(options || {})
@@ -3,5 +3,6 @@ module Vagrant
3
3
  autoload :Base, 'vagrant/hosts/base'
4
4
  autoload :BSD, 'vagrant/hosts/bsd'
5
5
  autoload :Linux, 'vagrant/hosts/linux'
6
+ autoload :Arch, 'vagrant/hosts/arch'
6
7
  end
7
8
  end
@@ -0,0 +1,27 @@
1
+ module Vagrant
2
+ module Hosts
3
+ class Arch < Linux
4
+ def nfs_export(ip, folders)
5
+ output = TemplateRenderer.render('nfs/exports_linux',
6
+ :uuid => env.vm.uuid,
7
+ :ip => ip,
8
+ :folders => folders)
9
+
10
+ env.ui.info I18n.t("vagrant.hosts.arch.nfs_export.prepare")
11
+ sleep 0.5
12
+
13
+ output.split("\n").each do |line|
14
+ # This should only ask for administrative permission once, even
15
+ # though its executed in multiple subshells.
16
+ system(%Q[sudo su root -c "echo '#{line}' >> /etc/exports"])
17
+ end
18
+
19
+ # We run restart here instead of "update" just in case nfsd
20
+ # is not starting
21
+ system("sudo /etc/rc.d/rpcbind restart")
22
+ system("sudo /etc/rc.d/nfs-common restart")
23
+ system("sudo /etc/rc.d/nfs-server restart")
24
+ end
25
+ end
26
+ end
27
+ end
@@ -31,6 +31,7 @@ module Vagrant
31
31
  classes = {
32
32
  :darwin => BSD,
33
33
  :bsd => BSD,
34
+ :arch => Arch,
34
35
  :linux => Linux
35
36
  }
36
37
 
@@ -12,12 +12,16 @@ module Vagrant
12
12
  attr_accessor :validation_key_path
13
13
  attr_accessor :validation_client_name
14
14
  attr_accessor :client_key_path
15
+ attr_accessor :file_cache_path
16
+ attr_accessor :file_backup_path
15
17
 
16
18
  def initialize
17
19
  super
18
20
 
19
21
  @validation_client_name = "chef-validator"
20
22
  @client_key_path = "/etc/chef/client.pem"
23
+ @file_cache_path = "/srv/chef/file_store"
24
+ @file_backup_path = "/srv/chef/cache"
21
25
  end
22
26
 
23
27
  def validate(errors)
@@ -65,7 +69,9 @@ module Vagrant
65
69
  :chef_server_url => config.chef_server_url,
66
70
  :validation_client_name => config.validation_client_name,
67
71
  :validation_key => guest_validation_key_path,
68
- :client_key => config.client_key_path
72
+ :client_key => config.client_key_path,
73
+ :file_cache_path => config.file_cache_path,
74
+ :file_backup_path => config.file_backup_path
69
75
  })
70
76
  end
71
77
 
@@ -65,8 +65,11 @@ module Vagrant
65
65
  env.ui.info I18n.t("vagrant.provisioners.chef.running_solo")
66
66
  vm.ssh.execute do |ssh|
67
67
  ssh.sudo!(commands) do |channel, type, data|
68
- ssh.check_exit_status(data, commands) if type == :exit_status
69
- env.ui.info("#{data}: #{type}") if type != :exit_status
68
+ if type == :exit_status
69
+ ssh.check_exit_status(data, commands)
70
+ else
71
+ env.ui.info("#{data}: #{type}")
72
+ end
70
73
  end
71
74
  end
72
75
  end
@@ -35,6 +35,9 @@ module Vagrant
35
35
  def sudo!(commands, options=nil, &block)
36
36
  channel = session.open_channel do |ch|
37
37
  ch.exec("sudo #{env.config.ssh.sudo_shell} -l") do |ch2, success|
38
+ # Set the terminal
39
+ ch2.send_data "export TERM=vt100\n"
40
+
38
41
  # Output each command as if they were entered on the command line
39
42
  [commands].flatten.each do |command|
40
43
  ch2.send_data "#{command}\n"
@@ -58,7 +61,7 @@ module Vagrant
58
61
  # the actual `exec!` implementation, except that this
59
62
  # implementation also reports `:exit_status` to the block if given.
60
63
  def exec!(command, options=nil, &block)
61
- retryable(:tries => 5, :on => IOError, :sleep => 0.5) do
64
+ retryable(:tries => 5, :on => [IOError, Net::SSH::Disconnect], :sleep => 1.0) do
62
65
  metach = session.open_channel do |channel|
63
66
  channel.exec(command) do |ch, success|
64
67
  raise "could not execute command: #{command.inspect}" unless success
@@ -85,6 +88,9 @@ module Vagrant
85
88
 
86
89
  # Output stdout data to the block
87
90
  channel.on_data do |ch2, data|
91
+ # This clears the screen, we want to filter it out.
92
+ data.gsub!("\e[H", "")
93
+
88
94
  block.call(ch2, :stdout, data)
89
95
  end
90
96
 
@@ -8,3 +8,4 @@ require 'vagrant/systems/solaris'
8
8
  require 'vagrant/systems/debian'
9
9
  require 'vagrant/systems/gentoo'
10
10
  require 'vagrant/systems/redhat'
11
+ require 'vagrant/systems/ubuntu'
@@ -25,9 +25,9 @@ module Vagrant
25
25
  def change_host_name(name)
26
26
  vm.ssh.execute do |ssh|
27
27
  if !ssh.test?("sudo hostname | grep '#{name}'")
28
- ssh.exec!("sudo sed -i 's/.*$/#{name}/' /etc/hostname")
29
28
  ssh.exec!("sudo sed -i 's@^\\(127[.]0[.]1[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
30
- ssh.exec!("sudo service hostname start")
29
+ ssh.exec!("sudo sed -i 's/.*$/#{name}/' /etc/hostname")
30
+ ssh.exec!("sudo hostname -F /etc/hostname")
31
31
  end
32
32
  end
33
33
  end
@@ -6,7 +6,11 @@ module Vagrant
6
6
  class Linux < Base
7
7
  def distro_dispatch
8
8
  vm.ssh.execute do |ssh|
9
- return :debian if ssh.test?("cat /etc/debian_version")
9
+ if ssh.test?("cat /etc/debian_version")
10
+ return :debian if ssh.test?("cat /proc/version | grep 'Debian'")
11
+ return :ubuntu if ssh.test?("cat /proc/version | grep 'Ubuntu'")
12
+ end
13
+
10
14
  return :gentoo if ssh.test?("cat /etc/gentoo-release")
11
15
  return :redhat if ssh.test?("cat /etc/redhat-release")
12
16
  end
@@ -0,0 +1,17 @@
1
+ require 'vagrant/systems/debian'
2
+
3
+ module Vagrant
4
+ module Systems
5
+ class Ubuntu < Debian
6
+ def change_host_name(name)
7
+ vm.ssh.execute do |ssh|
8
+ if !ssh.test?("sudo hostname | grep '#{name}'")
9
+ ssh.exec!("sudo sed -i 's/.*$/#{name}/' /etc/hostname")
10
+ ssh.exec!("sudo sed -i 's@^\\(127[.]0[.]1[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
11
+ ssh.exec!("sudo service hostname start")
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -28,6 +28,13 @@ module Vagrant
28
28
  false
29
29
  end
30
30
 
31
+ def arch?
32
+ linux? &&
33
+ File.exist?('/etc/rc.conf') &&
34
+ File.exist?('/etc/pacman.conf') &&
35
+ File.exist?('/etc/rc.d/')
36
+ end
37
+
31
38
  # Returns boolean noting whether this is a 64-bit CPU. This
32
39
  # is not 100% accurate and there could easily be false negatives.
33
40
  #
@@ -12,7 +12,7 @@ module Vagrant
12
12
 
13
13
  begin
14
14
  return yield
15
- rescue opts[:on]
15
+ rescue *opts[:on]
16
16
  if (opts[:tries] -= 1) > 0
17
17
  sleep opts[:sleep].to_f if opts[:sleep]
18
18
  retry
@@ -2,5 +2,5 @@ module Vagrant
2
2
  # This will always be up to date with the current version of Vagrant,
3
3
  # since it is used to generate the gemspec and is also the source of
4
4
  # the version for `vagrant -v`
5
- VERSION = "0.7.2"
5
+ VERSION = "0.7.3"
6
6
  end
@@ -59,6 +59,7 @@ module Vagrant
59
59
  # Hard-coded internal systems
60
60
  mapping = {
61
61
  :debian => Systems::Debian,
62
+ :ubuntu => Systems::Ubuntu,
62
63
  :freebsd => Systems::FreeBSD,
63
64
  :gentoo => Systems::Gentoo,
64
65
  :redhat => Systems::Redhat,
@@ -10,8 +10,8 @@ validation_client_name "<%= validation_client_name %>"
10
10
  validation_key "<%= validation_key %>"
11
11
  client_key "<%= client_key %>"
12
12
 
13
- file_store_path "/srv/chef/file_store"
14
- file_cache_path "/srv/chef/cache"
13
+ file_cache_path "<%= file_cache_path %>"
14
+ file_backup_path "<%= file_backup_path %>"
15
15
 
16
16
  pid_file "/var/run/chef/chef-client.pid"
17
17
 
@@ -26,6 +26,25 @@ Vagrant::Config.run do |config|
26
26
  # folder, and the third is the path on the host to the actual folder.
27
27
  # config.vm.share_folder "v-data", "/vagrant_data", "../data"
28
28
 
29
+ # Enable provisioning with Puppet stand alone. Puppet manifests
30
+ # are contained in a directory path relative to this Vagrantfile.
31
+ # You will need to create the manifests directory and a manifest in
32
+ # the file <%= box_name %>.pp in the manifests_path directory.
33
+ #
34
+ # An example Puppet manifest to provision the message of the day:
35
+ #
36
+ # # File { owner => 0, group => 0, mode => 0644 }
37
+ # #
38
+ # # file { '/etc/motd':
39
+ # # content => "Welcome to your Vagrant-built virtual machine!
40
+ # # Managed by Puppet.\n"
41
+ # # }
42
+ #
43
+ # config.vm.provision :puppet do |puppet|
44
+ # puppet.manifests_path = "manifests"
45
+ # puppet.manifest_file = "<%= box_name %>.pp"
46
+ # end
47
+
29
48
  # Enable provisioning with chef solo, specifying a cookbooks path (relative
30
49
  # to this Vagrantfile), and adding some recipes and/or roles.
31
50
  #
@@ -35,7 +54,7 @@ Vagrant::Config.run do |config|
35
54
  # chef.add_role "web"
36
55
  #
37
56
  # # You may also specify custom JSON attributes:
38
- # chef.json = { :mysql_password => "foo" }
57
+ # chef.json.merge!({ :mysql_password => "foo" })
39
58
  # end
40
59
 
41
60
  # Enable provisioning with chef server, specifying the chef server URL,
@@ -451,6 +451,10 @@ en:
451
451
  nfs_export:
452
452
  prepare: "Preparing to edit /etc/exports. Administrator privileges will be required..."
453
453
 
454
+ arch:
455
+ nfs_export:
456
+ prepare: "Preparing to edit /etc/exports. Administrator privileges will be required..."
457
+
454
458
  provisioners:
455
459
  chef:
456
460
  json: "Generating chef JSON and uploading..."
@@ -3,5 +3,3 @@
3
3
  # Please do not modify any of these contents.
4
4
  config_eth<%= net_options[:adapter] %>=("<%= net_options[:ip] %> netmask <%= net_options[:netmask] %>")
5
5
  #VAGRANT-END
6
- ~
7
-
@@ -159,7 +159,9 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
159
159
  :chef_server_url => @config.chef_server_url,
160
160
  :validation_client_name => @config.validation_client_name,
161
161
  :validation_key => @action.guest_validation_key_path,
162
- :client_key => @config.client_key_path
162
+ :client_key => @config.client_key_path,
163
+ :file_cache_path => @config.file_cache_path,
164
+ :file_backup_path => @config.file_backup_path
163
165
  })
164
166
 
165
167
  @action.setup_server_config
@@ -31,6 +31,18 @@ class RetryableUtilTest < Test::Unit::TestCase
31
31
  }
32
32
  end
33
33
 
34
+ should "retry on multiple exceptions given" do
35
+ proc = mock("proc")
36
+ proc.expects(:call).twice
37
+
38
+ assert_raises(StandardError) {
39
+ @klass.retryable(:tries => 2, :on => [StandardError, RuntimeError]) do
40
+ proc.call
41
+ raise StandardError
42
+ end
43
+ }
44
+ end
45
+
34
46
  should "return the value of the block" do
35
47
  result = @klass.retryable { 7 }
36
48
  assert_equal 7, result
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: vagrant
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.2
5
+ version: 0.7.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mitchell Hashimoto
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-02-08 00:00:00 -08:00
14
+ date: 2011-04-19 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -271,6 +271,7 @@ files:
271
271
  - lib/vagrant/environment.rb
272
272
  - lib/vagrant/errors.rb
273
273
  - lib/vagrant/hosts.rb
274
+ - lib/vagrant/hosts/arch.rb
274
275
  - lib/vagrant/hosts/base.rb
275
276
  - lib/vagrant/hosts/bsd.rb
276
277
  - lib/vagrant/hosts/linux.rb
@@ -295,6 +296,7 @@ files:
295
296
  - lib/vagrant/systems/linux/error.rb
296
297
  - lib/vagrant/systems/redhat.rb
297
298
  - lib/vagrant/systems/solaris.rb
299
+ - lib/vagrant/systems/ubuntu.rb
298
300
  - lib/vagrant/test_helpers.rb
299
301
  - lib/vagrant/ui.rb
300
302
  - lib/vagrant/util.rb
@@ -421,7 +423,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
421
423
  requirements:
422
424
  - - ">="
423
425
  - !ruby/object:Gem::Version
424
- hash: -3903323204405395882
426
+ hash: 1249069631573573223
425
427
  segments:
426
428
  - 0
427
429
  version: "0"