vagrantup 0.9.99.2 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47114b7b4c12b0c9ef207c4c034e12c4ef7b3ec2
4
- data.tar.gz: 8f5cd01bcb271539e179b0881163c4a22903ec19
3
+ metadata.gz: 3304b65afaca240d89ee451787ce3866c934ba3c
4
+ data.tar.gz: 1b1626fddeb5369a91de4c1c7ba698c0a2bf280e
5
5
  SHA512:
6
- metadata.gz: 9260b2fa40ee1037f5af1a2c19842484d0eb650fb020463585501e675d6d376b8318edb0ee3e9624097517eef7ff5b771cf82419d80e9afe1774abe2de0cfc7a
7
- data.tar.gz: a57b9dc7b1c66954755f99863da37e1ac5bd91317b8c4f4fc6114801dd50bd1b7d5e4352a39a0978c0b3ccd792085f59403ce834959fa31936732ae3719fa6ba
6
+ metadata.gz: 3387e49f37c3400b4ba9ae9c2dc62ca293f5aa71143225f2e2ea3c7f8af30db37b81494af98587cf890f80869b5857834a0ad2e2fbfeca9ca0a5b745cf6d4a2c
7
+ data.tar.gz: 2b32d38c8879d78f243f4d72b1e3f8600a701d6d3c8b77a7d22fdaec0664f03d2cb5d4e53ad292d5105682fc29bbf0f0401790549e3e9c0d1147e1777293fe13
@@ -1,4 +1,4 @@
1
- ## 1.0.0 (unreleased)
1
+ ## 1.0.0 (March 6, 2012)
2
2
 
3
3
  - `vagrant gem` should now be used to install Vagrant plugins that are
4
4
  gems. This installs the gems to a private gem folder that Vagrant adds
@@ -27,6 +27,17 @@
27
27
  - NIC type can be defined for host-only network adapters. [GH-750]
28
28
  - Fix issue where re-running chef-client would sometimes cause
29
29
  problems due to file permissions. [GH-748]
30
+ - FreeBSD guests can now have their hostnames changed. [GH-757]
31
+ - FreeBSD guests now support host only networking and bridged networking. [GH-762]
32
+ - `VM#run_action` is now public so plugin-devs can hook into it.
33
+ - Fix crashing bug when attempting to run commands on the "primary"
34
+ VM in a multi-VM environment. [GH-761]
35
+ - With puppet you can now specify `:facter` as a dictionary of facts to
36
+ override what is generated by Puppet. [GH-753]
37
+ - Automatically convert all arguments to `customize` to strings.
38
+ - openSUSE host system. [GH-766]
39
+ - Fix subprocess IO deadlock which would occur on Windows. [GH-765]
40
+ - Fedora 16 guest support. [GH-772]
30
41
 
31
42
  ## 0.9.7 (February 9, 2012)
32
43
 
@@ -4,7 +4,6 @@ Vagrant::Config.run do |config|
4
4
  config.vagrant.host = :detect
5
5
 
6
6
  config.ssh.username = "vagrant"
7
- config.ssh.password = "vagrant"
8
7
  config.ssh.host = "127.0.0.1"
9
8
  config.ssh.guest_port = 22
10
9
  config.ssh.max_tries = 100
@@ -1,9 +1,10 @@
1
+ require 'log4r'
2
+
1
3
  # Enable logging if it is requested. We do this before
2
4
  # anything else so that we can setup the output before
3
5
  # any logging occurs.
4
6
  if ENV["VAGRANT_LOG"] && ENV["VAGRANT_LOG"] != ""
5
7
  # Require Log4r and define the levels we'll be using
6
- require 'log4r'
7
8
  require 'log4r/config'
8
9
  Log4r.define_levels(*Log4r::Log4rConfig::LogLevels)
9
10
 
@@ -52,6 +53,7 @@ require 'openssl'
52
53
 
53
54
  # Always make the version available
54
55
  require 'vagrant/version'
56
+ Log4r::Logger.new("vagrant::global").info("Vagrant version: #{Vagrant::VERSION}")
55
57
 
56
58
  module Vagrant
57
59
  autoload :Action, 'vagrant/action'
@@ -163,6 +165,7 @@ Vagrant.config_keys.register(:package) { Vagrant::Config::PackageConfig }
163
165
  Vagrant.hosts.register(:arch) { Vagrant::Hosts::Arch }
164
166
  Vagrant.hosts.register(:bsd) { Vagrant::Hosts::BSD }
165
167
  Vagrant.hosts.register(:fedora) { Vagrant::Hosts::Fedora }
168
+ Vagrant.hosts.register(:opensuse) { Vagrant::Hosts::OpenSUSE }
166
169
  Vagrant.hosts.register(:freebsd) { Vagrant::Hosts::FreeBSD }
167
170
  Vagrant.hosts.register(:gentoo) { Vagrant::Hosts::Gentoo }
168
171
  Vagrant.hosts.register(:linux) { Vagrant::Hosts::Linux }
@@ -171,6 +174,7 @@ Vagrant.hosts.register(:windows) { Vagrant::Hosts::Windows }
171
174
  # Register the built-in guests
172
175
  Vagrant.guests.register(:arch) { Vagrant::Guest::Arch }
173
176
  Vagrant.guests.register(:debian) { Vagrant::Guest::Debian }
177
+ Vagrant.guests.register(:fedora) { Vagrant::Guest::Fedora }
174
178
  Vagrant.guests.register(:freebsd) { Vagrant::Guest::FreeBSD }
175
179
  Vagrant.guests.register(:gentoo) { Vagrant::Guest::Gentoo }
176
180
  Vagrant.guests.register(:linux) { Vagrant::Guest::Linux }
@@ -15,7 +15,7 @@ module Vagrant
15
15
  customizations.each do |command|
16
16
  processed_command = command.collect do |arg|
17
17
  arg = env[:vm].uuid if arg == :id
18
- arg
18
+ arg.to_s
19
19
  end
20
20
 
21
21
  result = env[:vm].driver.execute_command(processed_command)
@@ -13,26 +13,6 @@ module Vagrant
13
13
  attr_accessor :forward_x11
14
14
  attr_accessor :shell
15
15
 
16
- def forwarded_port_key=(value)
17
- raise Errors::DeprecationError, :message => <<-MESSAGE
18
- `config.ssh.forwarded_port_key` is now gone. You must now use
19
- `config.ssh.guest_port` which is expected to be the port on the
20
- guest that SSH is listening on. Vagrant will automatically scan
21
- the forwarded ports to look for a forwarded port from this port
22
- and use it.
23
- MESSAGE
24
- end
25
-
26
- def forwarded_port_destination=(value)
27
- raise Errors::DeprecationError, :message => <<-MESSAGE
28
- `config.ssh.forwarded_port_destination` is now gone. You must now use
29
- `config.ssh.guest_port` which is expected to be the port on the
30
- guest that SSH is listening on. Vagrant will automatically scan
31
- the forwarded ports to look for a forwarded port from this port
32
- and use it.
33
- MESSAGE
34
- end
35
-
36
16
  def validate(env, errors)
37
17
  [:username, :host, :max_tries, :timeout].each do |field|
38
18
  errors.add(I18n.t("vagrant.config.common.error_empty", :field => field)) if !instance_variable_get("@#{field}".to_sym)
@@ -39,28 +39,7 @@ module Vagrant
39
39
  result
40
40
  end
41
41
 
42
- def system=(value)
43
- raise Errors::DeprecationError, :message => <<-MESSAGE
44
- `config.vm.system` has changed to `config.vm.guest` in Vagrant 0.9,
45
- since this is more clear about the use of the configuration key.
46
- Please change all references of `config.vm.system` to `config.vm.guest`.
47
- MESSAGE
48
- end
49
-
50
42
  def forward_port(guestport, hostport, options=nil)
51
- if !guestport.kind_of?(Integer)
52
- raise Errors::DeprecationError, :message => <<-MESSAGE
53
- `config.vm.forward_port` changed in 0.9.0 where the required name
54
- argument is now removed. Vagrant will now automatically generate
55
- a unique name for your forwarded port. For example, to forward
56
- port 80 to port 8080 you now do the following:
57
-
58
- config.vm.forward_port 80, 8080
59
-
60
- Please change your configurations to match this new syntax.
61
- MESSAGE
62
- end
63
-
64
43
  @forwarded_ports << {
65
44
  :name => "#{guestport.to_s(32)}-#{hostport.to_s(32)}",
66
45
  :guestport => guestport,
@@ -85,19 +64,6 @@ Please change your configurations to match this new syntax.
85
64
  end
86
65
 
87
66
  def network(type, *args)
88
- if !type.kind_of?(Symbol)
89
- raise Errors::DeprecationError, :message => <<-MESSAGE
90
- `config.vm.network` changed in 0.9.0 where the first argument is
91
- now the type of network and the remaining arguments are options for
92
- that type. For example, host only networks are now configured like
93
- so:
94
-
95
- config.vm.network :hostonly, "172.24.24.24"
96
-
97
- Please change your configurations to match this new syntax.
98
- MESSAGE
99
- end
100
-
101
67
  @networks << [type, args]
102
68
  end
103
69
 
@@ -109,20 +75,6 @@ Please change your configurations to match this new syntax.
109
75
  # It is only defaulted to nil so that the deprecation error
110
76
  # can be properly shown.
111
77
  def customize(command=nil)
112
- if block_given?
113
- raise Errors::DeprecationError, :message => <<-MESSAGE
114
- `config.vm.customize` now takes an array of arguments to send to
115
- `VBoxManage` instead of having a block which gets a virtual machine
116
- object. Example of the new usage:
117
-
118
- config.vm.customize ["modifyvm", :id, "--memory", "1024"]
119
-
120
- The above will run `VBoxManage modifyvm 1234 --memory 1024` where
121
- "1234" is the ID of your current virtual machine. Anything you could
122
- do before is certainly still possible with `VBoxManage` as well.
123
- MESSAGE
124
- end
125
-
126
78
  @customizations << command if command
127
79
  end
128
80
 
@@ -21,25 +21,34 @@ module Vagrant
21
21
 
22
22
  def initialize(file_path)
23
23
  @logger = Log4r::Logger.new("vagrant::datastore")
24
- @logger.info("Created: #{file_path}")
25
24
 
26
- @file_path = Pathname.new(file_path)
25
+ if file_path
26
+ @logger.info("Created: #{file_path}")
27
27
 
28
- if @file_path.exist?
29
- raise Errors::DotfileIsDirectory if @file_path.directory?
28
+ @file_path = Pathname.new(file_path)
29
+ if @file_path.exist?
30
+ raise Errors::DotfileIsDirectory if @file_path.directory?
30
31
 
31
- begin
32
- merge!(JSON.parse(@file_path.read))
33
- rescue JSON::ParserError
34
- # Ignore if the data is invalid in the file.
35
- @logger.error("Data store contained invalid JSON. Ignoring.")
32
+ begin
33
+ merge!(JSON.parse(@file_path.read))
34
+ rescue JSON::ParserError
35
+ # Ignore if the data is invalid in the file.
36
+ @logger.error("Data store contained invalid JSON. Ignoring.")
37
+ end
36
38
  end
39
+ else
40
+ @logger.info("No file path. In-memory data store.")
41
+ @file_path = nil
37
42
  end
38
43
  end
39
44
 
40
45
  # Commits any changes to the data to disk. Even if the data
41
46
  # hasn't changed, it will be reserialized and written to disk.
42
47
  def commit
48
+ if !@file_path
49
+ raise StandardError, "In-memory data stores can't be committed."
50
+ end
51
+
43
52
  clean_nil_and_empties
44
53
 
45
54
  if empty?
@@ -138,7 +138,7 @@ module Vagrant
138
138
  def primary_vm
139
139
  return vms.values.first if !multivm?
140
140
 
141
- config.vm.defined_vms.each do |name, subvm|
141
+ config.global.vm.defined_vms.each do |name, subvm|
142
142
  return vms[name] if subvm.options[:primary]
143
143
  end
144
144
 
@@ -5,6 +5,7 @@ module Vagrant
5
5
  # Specific guests
6
6
  autoload :Arch, 'vagrant/guest/arch'
7
7
  autoload :Debian, 'vagrant/guest/debian'
8
+ autoload :Fedora, 'vagrant/guest/fedora'
8
9
  autoload :FreeBSD, 'vagrant/guest/freebsd'
9
10
  autoload :Gentoo, 'vagrant/guest/gentoo'
10
11
  autoload :Linux, 'vagrant/guest/linux'
@@ -0,0 +1,66 @@
1
+ require 'set'
2
+ require 'tempfile'
3
+
4
+ require 'vagrant/util/template_renderer'
5
+
6
+ module Vagrant
7
+ module Guest
8
+ class Fedora < Linux
9
+ # Make the TemplateRenderer top-level
10
+ include Vagrant::Util
11
+
12
+ def configure_networks(networks)
13
+ # Accumulate the configurations to add to the interfaces file as well
14
+ # as what interfaces we're actually configuring since we use that later.
15
+ interfaces = Set.new
16
+ networks.each do |network|
17
+ interfaces.add(network[:interface])
18
+
19
+ # Remove any previous vagrant configuration in this network
20
+ # interface's configuration files.
21
+ vm.channel.sudo("touch #{network_scripts_dir}/ifcfg-p7p#{network[:interface]}")
22
+ vm.channel.sudo("sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' #{network_scripts_dir}/ifcfg-p7p#{network[:interface]} > /tmp/vagrant-ifcfg-p7p#{network[:interface]}")
23
+ vm.channel.sudo("cat /tmp/vagrant-ifcfg-p7p#{network[:interface]} > #{network_scripts_dir}/ifcfg-p7p#{network[:interface]}")
24
+
25
+ # Render and upload the network entry file to a deterministic
26
+ # temporary location.
27
+ entry = TemplateRenderer.render("guests/fedora/network_#{network[:type]}",
28
+ :options => network)
29
+
30
+ temp = Tempfile.new("vagrant")
31
+ temp.binmode
32
+ temp.write(entry)
33
+ temp.close
34
+
35
+ vm.channel.upload(temp.path, "/tmp/vagrant-network-entry_#{network[:interface]}")
36
+ end
37
+
38
+ # Bring down all the interfaces we're reconfiguring. By bringing down
39
+ # each specifically, we avoid reconfiguring p7p (the NAT interface) so
40
+ # SSH never dies.
41
+ interfaces.each do |interface|
42
+ vm.channel.sudo("/sbin/ifdown p7p#{interface} 2> /dev/null", :error_check => false)
43
+ vm.channel.sudo("cat /tmp/vagrant-network-entry_#{interface} >> #{network_scripts_dir}/ifcfg-p7p#{interface}")
44
+ vm.channel.sudo("/sbin/ifup p7p#{interface} 2> /dev/null")
45
+ end
46
+ end
47
+
48
+ # The path to the directory with the network configuration scripts.
49
+ # This is pulled out into its own directory since there are other
50
+ # operating systems (SuSE) which behave similarly but with a different
51
+ # path to the network scripts.
52
+ def network_scripts_dir
53
+ '/etc/sysconfig/network-scripts'
54
+ end
55
+
56
+ def change_host_name(name)
57
+ # Only do this if the hostname is not already set
58
+ if !vm.channel.test("sudo hostname | grep '#{name}'")
59
+ vm.channel.sudo("sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/sysconfig/network")
60
+ vm.channel.sudo("hostname #{name}")
61
+ vm.channel.sudo("sed -i 's@^\\(127[.]0[.]0[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,3 +1,5 @@
1
+ require 'vagrant/util/template_renderer'
2
+
1
3
  module Vagrant
2
4
  module Guest
3
5
  # A general Vagrant system implementation for "freebsd".
@@ -57,19 +59,28 @@ module Vagrant
57
59
  end
58
60
 
59
61
  def configure_networks(networks)
60
- # Remove any previous host only network additions to the
61
- # interface file.
62
- vm.channel.sudo("sed -e '/^#VAGRANT-BEGIN-HOSTONLY/,/^#VAGRANT-END-HOSTONLY/ d' /etc/rc.conf > /tmp/rc.conf")
63
- vm.channel.sudo("mv /tmp/rc.conf /etc/rc.conf")
62
+ # Remove any previous network additions to the configuration file.
63
+ vm.channel.sudo("sed -i '' -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/rc.conf")
64
64
 
65
65
  networks.each do |network|
66
- entry = "#VAGRANT-BEGIN-HOSTONLY\nifconfig_em#{network[:interface]}=\"inet #{network[:ip]} netmask #{network[:netmask]}\"\n#VAGRANT-END-HOSTONLY\n"
66
+ entry = TemplateRenderer.render("guests/freebsd/network_#{network[:type]}",
67
+ :options => network)
67
68
  vm.channel.upload(StringIO.new(entry), "/tmp/vagrant-network-entry")
68
-
69
69
  vm.channel.sudo("su -m root -c 'cat /tmp/vagrant-network-entry >> /etc/rc.conf'")
70
- vm.channel.sudo("ifconfig em#{network[:interface]} inet #{network[:ip]} netmask #{network[:netmask]}")
70
+ if network[:type].to_sym == :static
71
+ vm.channel.sudo("ifconfig em#{network[:interface]} inet #{network[:ip]} netmask #{network[:netmask]}")
72
+ elsif network[:type].to_sym == :dhcp
73
+ vm.channel.sudo("dhclient em#{network[:interface]}")
74
+ end
71
75
  end
72
76
  end
77
+
78
+ def change_host_name(name)
79
+ if !vm.channel.test("hostname -f | grep '^#{name}$' || hostname -s | grep '^#{name}$'")
80
+ vm.channel.sudo("sed -i '' 's/^hostname=.*$/hostname=#{name}/' /etc/rc.conf")
81
+ vm.channel.sudo("hostname #{name}")
82
+ end
83
+ end
73
84
  end
74
85
  end
75
86
  end
@@ -19,6 +19,7 @@ module Vagrant
19
19
  end
20
20
 
21
21
  return :gentoo if @vm.channel.test("cat /etc/gentoo-release")
22
+ return :fedora if @vm.channel.test("grep 'Fedora release 16' /etc/redhat-release")
22
23
  return :redhat if @vm.channel.test("cat /etc/redhat-release")
23
24
  return :suse if @vm.channel.test("cat /etc/SuSE-release")
24
25
  return :arch if @vm.channel.test("cat /etc/arch-release")
@@ -7,6 +7,7 @@ module Vagrant
7
7
  autoload :BSD, 'vagrant/hosts/bsd'
8
8
  autoload :FreeBSD, 'vagrant/hosts/freebsd'
9
9
  autoload :Fedora, 'vagrant/hosts/fedora'
10
+ autoload :OpenSUSE, 'vagrant/hosts/opensuse'
10
11
  autoload :Gentoo, 'vagrant/hosts/gentoo'
11
12
  autoload :Linux, 'vagrant/hosts/linux'
12
13
  autoload :Windows, 'vagrant/hosts/windows'
@@ -0,0 +1,30 @@
1
+ require 'pathname'
2
+
3
+ module Vagrant
4
+ module Hosts
5
+ class OpenSUSE < Linux
6
+ def self.match?
7
+ release_file = Pathname.new("/etc/SuSE-release")
8
+
9
+ if release_file.exist?
10
+ release_file.open("r") do |f|
11
+ return true if f.gets =~ /^openSUSE/
12
+ end
13
+ end
14
+
15
+ false
16
+ end
17
+
18
+ # Normal, mid-range precedence.
19
+ def self.precedence
20
+ 5
21
+ end
22
+
23
+ def initialize(*args)
24
+ super
25
+
26
+ @nfs_server_binary = "/etc/init.d/nfsserver"
27
+ end
28
+ end
29
+ end
30
+ end
@@ -13,11 +13,13 @@ module Vagrant
13
13
  attr_accessor :module_path
14
14
  attr_accessor :pp_path
15
15
  attr_accessor :options
16
+ attr_accessor :facter
16
17
 
17
18
  def manifest_file; @manifest_file || "default.pp"; end
18
19
  def manifests_path; @manifests_path || "manifests"; end
19
20
  def pp_path; @pp_path || "/tmp/vagrant-puppet"; end
20
21
  def options; @options ||= []; end
22
+ def facter; @facter ||= {}; end
21
23
 
22
24
  # Returns the manifests path expanded relative to the root path of the
23
25
  # environment.
@@ -138,7 +140,18 @@ module Vagrant
138
140
  options << @manifest_file
139
141
  options = options.join(" ")
140
142
 
141
- command = "cd #{manifests_guest_path} && puppet apply #{options}"
143
+ # Build up the custom facts if we have any
144
+ facter = ""
145
+ if !config.facter.empty?
146
+ facts = []
147
+ config.facter.each do |key, value|
148
+ facts << "FACTER_#{key}='#{value}'"
149
+ end
150
+
151
+ facter = "#{facts.join(" ")} "
152
+ end
153
+
154
+ command = "cd #{manifests_guest_path} && #{facter}puppet apply #{options}"
142
155
 
143
156
  env[:ui].info I18n.t("vagrant.provisioners.puppet.running_puppet",
144
157
  :manifest => @manifest_file)
@@ -171,6 +171,15 @@ module Vagrant
171
171
  # Windows doesn't support non-blocking reads on
172
172
  # file descriptors or pipes so we have to get
173
173
  # a bit more creative.
174
+
175
+ # Check if data is actually ready on this IO device.
176
+ # We have to do this since `readpartial` will actually block
177
+ # until data is available, which can cause blocking forever
178
+ # in some cases.
179
+ results = IO.select([io], nil, nil, 1)
180
+ break if !results || results[0].empty?
181
+
182
+ # Read!
174
183
  data << io.readpartial(READ_CHUNK_SIZE)
175
184
  else
176
185
  # Do a simple non-blocking read on the IO object
@@ -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.9.99.2"
5
+ VERSION = "1.0.0"
6
6
  end
@@ -128,10 +128,12 @@ module Vagrant
128
128
  begin
129
129
  @driver = Driver::VirtualBox.new(@uuid)
130
130
  rescue Driver::VirtualBox::VMNotFound
131
- # Clear the UUID since this VM doesn't exist. Note that this calls
132
- # back into `reload!` but shouldn't ever result in infinite
133
- # recursion since `@uuid` will be nil.
131
+ # Clear the UUID since this VM doesn't exist.
134
132
  @uuid = nil
133
+
134
+ # Reset the driver. This shouldn't raise a VMNotFound since we won't
135
+ # feed it a UUID.
136
+ @driver = Driver::VirtualBox.new
135
137
  end
136
138
  end
137
139
 
@@ -181,8 +183,6 @@ module Vagrant
181
183
  @_ui
182
184
  end
183
185
 
184
- protected
185
-
186
186
  def run_action(name, options=nil)
187
187
  options = {
188
188
  :vm => self,
@@ -0,0 +1,6 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ BOOTPROTO=dhcp
4
+ ONBOOT=yes
5
+ DEVICE=p7p<%= options[:interface] %>
6
+ #VAGRANT-END
@@ -0,0 +1,13 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ NM_CONTROLLED=no
4
+ BOOTPROTO=static
5
+ ONBOOT=yes
6
+ IPADDR=<%= options[:ip] %>
7
+ NETMASK=<%= options[:netmask] %>
8
+ DEVICE=p7p<%= options[:interface] %>
9
+ <%= options[:gateway] ? "GATEWAY=#{options[:gateway]}" : '' %>
10
+ <%= options[:mac_address] ? "HWADDR=#{options[:mac_address]}" : '' %>
11
+ <%= options[:dns1] ? "DNS1=#{options[:dns1]}" : 'DNS1=8.8.4.4' %>
12
+ <%= options[:dns2] ? "DNS2=#{options[:dns2]}" : 'DNS1=8.8.8.8' %>
13
+ #VAGRANT-END
@@ -0,0 +1,3 @@
1
+ #VAGRANT-BEGIN
2
+ ifconfig_em<%= options[:interface] %>="DHCP"
3
+ #VAGRANT-END
@@ -0,0 +1,3 @@
1
+ #VAGRANT-BEGIN
2
+ ifconfig_em<%= options[:interface] %>="inet <%= options[:ip] %> netmask <%= options[:netmask] %>"
3
+ #VAGRANT-END
@@ -64,4 +64,16 @@ describe Vagrant::DataStore do
64
64
  # The file should no longer exist
65
65
  db_file.should_not be_exist
66
66
  end
67
+
68
+ it "works if the DB file is nil" do
69
+ store = described_class.new(nil)
70
+ store[:foo] = "bar"
71
+ store[:foo].should == "bar"
72
+ end
73
+
74
+ it "throws an exception if attempting to commit a data store with no file" do
75
+ store = described_class.new(nil)
76
+ expect { store.commit }.
77
+ to raise_error(StandardError)
78
+ end
67
79
  end
@@ -86,6 +86,26 @@ describe Vagrant::Environment do
86
86
  end
87
87
  end
88
88
 
89
+ describe "primary VM" do
90
+ it "should be the only VM if not a multi-VM environment" do
91
+ instance.primary_vm.should == instance.vms.values.first
92
+ end
93
+
94
+ it "should be the VM marked as the primary" do
95
+ environment = isolated_environment do |env|
96
+ env.vagrantfile(<<-VF)
97
+ Vagrant::Config.run do |config|
98
+ config.vm.define :foo
99
+ config.vm.define :bar, :primary => true
100
+ end
101
+ VF
102
+ end
103
+
104
+ env = environment.create_vagrant_env
105
+ env.primary_vm.should == env.vms[:bar]
106
+ end
107
+ end
108
+
89
109
  describe "loading configuration" do
90
110
  it "should load global configuration" do
91
111
  environment = isolated_environment do |env|
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.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitchell Hashimoto
@@ -348,6 +348,7 @@ files:
348
348
  - lib/vagrant/guest/arch.rb
349
349
  - lib/vagrant/guest/base.rb
350
350
  - lib/vagrant/guest/debian.rb
351
+ - lib/vagrant/guest/fedora.rb
351
352
  - lib/vagrant/guest/freebsd.rb
352
353
  - lib/vagrant/guest/gentoo.rb
353
354
  - lib/vagrant/guest/linux.rb
@@ -365,6 +366,7 @@ files:
365
366
  - lib/vagrant/hosts/freebsd.rb
366
367
  - lib/vagrant/hosts/gentoo.rb
367
368
  - lib/vagrant/hosts/linux.rb
369
+ - lib/vagrant/hosts/opensuse.rb
368
370
  - lib/vagrant/hosts/windows.rb
369
371
  - lib/vagrant/plugin.rb
370
372
  - lib/vagrant/provisioners.rb
@@ -406,6 +408,10 @@ files:
406
408
  - templates/guests/arch/network_static.erb
407
409
  - templates/guests/debian/network_dhcp.erb
408
410
  - templates/guests/debian/network_static.erb
411
+ - templates/guests/fedora/network_dhcp.erb
412
+ - templates/guests/fedora/network_static.erb
413
+ - templates/guests/freebsd/network_dhcp.erb
414
+ - templates/guests/freebsd/network_static.erb
409
415
  - templates/guests/gentoo/network_dhcp.erb
410
416
  - templates/guests/gentoo/network_static.erb
411
417
  - templates/guests/redhat/network_dhcp.erb