vagrantup 0.9.99.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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