vagrant 0.7.8 → 0.8.1

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.
Files changed (79) hide show
  1. data/CHANGELOG.md +39 -0
  2. data/Gemfile +1 -7
  3. data/Rakefile +0 -11
  4. data/bin/vagrant +4 -0
  5. data/config/default.rb +1 -2
  6. data/lib/vagrant.rb +7 -5
  7. data/lib/vagrant/action.rb +5 -1
  8. data/lib/vagrant/action/builtin.rb +4 -1
  9. data/lib/vagrant/action/general/package.rb +6 -2
  10. data/lib/vagrant/action/vm.rb +2 -0
  11. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +9 -22
  12. data/lib/vagrant/action/vm/clear_shared_folders.rb +9 -14
  13. data/lib/vagrant/action/vm/customize.rb +9 -4
  14. data/lib/vagrant/action/vm/forward_ports.rb +10 -11
  15. data/lib/vagrant/action/vm/match_mac_address.rb +8 -3
  16. data/lib/vagrant/action/vm/modify.rb +37 -0
  17. data/lib/vagrant/action/vm/network.rb +9 -2
  18. data/lib/vagrant/action/vm/provision.rb +10 -17
  19. data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
  20. data/lib/vagrant/action/vm/share_folders.rb +16 -8
  21. data/lib/vagrant/action/warden.rb +8 -2
  22. data/lib/vagrant/command/ssh.rb +4 -4
  23. data/lib/vagrant/command/ssh_config.rb +4 -2
  24. data/lib/vagrant/config/ssh.rb +3 -0
  25. data/lib/vagrant/config/vm.rb +16 -12
  26. data/lib/vagrant/downloaders/http.rb +2 -0
  27. data/lib/vagrant/environment.rb +136 -12
  28. data/lib/vagrant/errors.rb +15 -0
  29. data/lib/vagrant/provisioners.rb +1 -1
  30. data/lib/vagrant/provisioners/base.rb +4 -0
  31. data/lib/vagrant/provisioners/chef.rb +13 -11
  32. data/lib/vagrant/provisioners/{chef_server.rb → chef_client.rb} +5 -5
  33. data/lib/vagrant/provisioners/chef_solo.rb +48 -89
  34. data/lib/vagrant/provisioners/shell.rb +47 -12
  35. data/lib/vagrant/ssh.rb +61 -27
  36. data/lib/vagrant/systems.rb +1 -0
  37. data/lib/vagrant/systems/base.rb +1 -1
  38. data/lib/vagrant/systems/linux.rb +7 -9
  39. data/lib/vagrant/systems/redhat.rb +12 -4
  40. data/lib/vagrant/systems/solaris.rb +9 -4
  41. data/lib/vagrant/systems/suse.rb +9 -0
  42. data/lib/vagrant/ui.rb +12 -5
  43. data/lib/vagrant/util.rb +2 -2
  44. data/lib/vagrant/util/counter.rb +22 -0
  45. data/lib/vagrant/util/platform.rb +1 -2
  46. data/lib/vagrant/util/safe_exec.rb +28 -0
  47. data/lib/vagrant/version.rb +1 -1
  48. data/lib/vagrant/vm.rb +2 -0
  49. data/templates/chef_solo_solo.erb +4 -4
  50. data/templates/commands/init/Vagrantfile.erb +4 -0
  51. data/templates/locales/en.yml +31 -8
  52. data/templates/ssh_config.erb +6 -0
  53. data/test/test_helper.rb +5 -3
  54. data/test/vagrant/action/builder_test.rb +4 -0
  55. data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +18 -38
  56. data/test/vagrant/action/vm/clear_shared_folders_test.rb +7 -16
  57. data/test/vagrant/action/vm/customize_test.rb +12 -5
  58. data/test/vagrant/action/vm/forward_ports_test.rb +12 -7
  59. data/test/vagrant/action/vm/match_mac_address_test.rb +5 -1
  60. data/test/vagrant/action/vm/modify_test.rb +38 -0
  61. data/test/vagrant/action/vm/provision_test.rb +13 -38
  62. data/test/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
  63. data/test/vagrant/action/vm/share_folders_test.rb +10 -5
  64. data/test/vagrant/action/warden_test.rb +13 -7
  65. data/test/vagrant/config/vm_test.rb +0 -22
  66. data/test/vagrant/downloaders/http_test.rb +2 -0
  67. data/test/vagrant/environment_test.rb +110 -20
  68. data/test/vagrant/provisioners/{chef_server_test.rb → chef_client_test.rb} +2 -2
  69. data/test/vagrant/provisioners/chef_solo_test.rb +16 -173
  70. data/test/vagrant/ssh_test.rb +8 -43
  71. data/test/vagrant/systems/linux_test.rb +9 -19
  72. data/test/vagrant/util/counter_test.rb +29 -0
  73. data/test/vagrant/util/platform_test.rb +2 -2
  74. data/vagrant.gemspec +1 -2
  75. metadata +114 -84
  76. data/lib/vagrant/util/plain_logger.rb +0 -25
  77. data/lib/vagrant/util/resource_logger.rb +0 -63
  78. data/test/vagrant/util/plain_logger_test.rb +0 -17
  79. data/test/vagrant/util/resource_logger_test.rb +0 -78
@@ -1,3 +1,42 @@
1
+ ## 0.8.1 (unreleased)
2
+
3
+ - Repush of 0.8.0 to fix a Ruby 1.9.2 RubyGems issue.
4
+
5
+ ## 0.8.0 (July 20, 2011)
6
+
7
+ - VirtualBox 4.1 support _only_. Previous versions of VirtualBox
8
+ are supported by earlier versions of Vagrant.
9
+ - Performance optimizations in `virtualbox` gem. Huge speed gains.
10
+ - `:chef_server` provisioner is now `:chef_client`. [GH-359]
11
+ - SSH connection is now cached after first access internally,
12
+ speeding up `vagrant up`, `reload`, etc. quite a bit.
13
+ - Actions which modify the VM now occur much more quickly,
14
+ greatly speeding up `vagrant up`, `reload`, etc.
15
+ - SUSE host only networking support. [GH-369]
16
+ - Show nice error message for invalid HTTP responses for HTTP
17
+ downloader. [GH-403]
18
+ - New `:inline` option for shell provisioner to provide inline
19
+ scripts as a string. [GH-395]
20
+ - Host only network now properly works on multiple adapters. [GH-365]
21
+ - Can now specify owner/group for regular shared folders. [GH-350]
22
+ - `ssh_config` host name will use VM name if given. [GH-332]
23
+ - `ssh` `-e` flag changed to `-c` to align with `ssh` standard
24
+ behavior. [GH-323]
25
+ - Forward agent and forward X11 settings properly appear in
26
+ `ssh_config` output. [GH-105]
27
+ - Chef JSON can now be set with `chef.json =` instead of the old
28
+ `merge` technique. [GH-314]
29
+ - Provisioner configuration is no longer cleared when the box
30
+ needs to be downloaded during an `up`. [GH-308]
31
+ - Multiple Chef provisioners no longer overwrite cookbook folders. [GH-407]
32
+ - `package` won't delete previously existing file. [GH-408]
33
+ - Vagrantfile can be lowercase now. [GH-399]
34
+ - Only one copy of Vagrant may be running at any given time. [GH-364]
35
+ - Default home directory for Vagrant moved to `~/.vagrant.d` [GH-333]
36
+ - Specify a `forwarded_port_destination` for SSH configuration and
37
+ SSH port searching will fall back to that if it can't find any
38
+ other port. [GH-375]
39
+
1
40
  ## 0.7.8 (July 19, 2011)
2
41
 
3
42
  - Make sure VirtualBox version check verifies that it is 4.0.x.
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ gem "vagrant", :path => '.'
4
4
 
5
5
  # Use the following gems straight from git, since Vagrant dev
6
6
  # typically coincides with it
7
- gem "virtualbox", :git => "git://github.com/mitchellh/virtualbox.git", :ref => "038729cd89a15111106404726b75a1d463edc892"
7
+ gem "virtualbox", :git => "git://github.com/mitchellh/virtualbox.git"
8
8
 
9
9
  # Gems required for testing only. To install run
10
10
  # gem bundle test
@@ -12,10 +12,4 @@ group :test do
12
12
  gem "rake"
13
13
  gem "contest", ">= 0.1.2"
14
14
  gem "mocha"
15
-
16
- # For documentation
17
- platforms :ruby do
18
- gem "yard", "~> 0.6.1"
19
- gem "bluecloth"
20
- end
21
15
  end
data/Rakefile CHANGED
@@ -9,14 +9,3 @@ Rake::TestTask.new do |t|
9
9
  t.libs << "test"
10
10
  t.pattern = 'test/**/*_test.rb'
11
11
  end
12
-
13
- begin
14
- require 'yard'
15
- YARD::Rake::YardocTask.new do |t|
16
- t.options = ['--main', 'README.md', '--markup', 'markdown']
17
- t.options += ['--title', 'Vagrant Developer Documentation']
18
- end
19
- rescue LoadError
20
- puts "Yard not available. Install it with: gem install yard"
21
- puts "if you wish to be able to generate developer documentation."
22
- end
@@ -5,6 +5,10 @@ require 'vagrant/cli'
5
5
  env = Vagrant::Environment.new
6
6
 
7
7
  begin
8
+ # Begin logging early here
9
+ env.logger.info("vagrant") { "`vagrant` invoked: #{ARGV.inspect}" }
10
+
11
+ # Disable color if the proper argument was passed
8
12
  shell = ARGV.include?("--no-color") ? Thor::Shell::Basic.new : Thor::Base.shell.new
9
13
 
10
14
  # Set the UI early in case any errors are raised, and load
@@ -6,6 +6,7 @@ Vagrant::Config.run do |config|
6
6
  config.ssh.username = "vagrant"
7
7
  config.ssh.host = "127.0.0.1"
8
8
  config.ssh.forwarded_port_key = "ssh"
9
+ config.ssh.forwarded_port_destination = 22
9
10
  config.ssh.max_tries = 10
10
11
  config.ssh.timeout = 30
11
12
  config.ssh.private_key_path = File.expand_path("keys/vagrant", Vagrant.source_root)
@@ -18,8 +19,6 @@ Vagrant::Config.run do |config|
18
19
  config.vm.base_mac = nil
19
20
  config.vm.forward_port("ssh", 22, 2222, :auto => true)
20
21
  config.vm.disk_image_format = 'VMDK'
21
- config.vm.shared_folder_uid = nil
22
- config.vm.shared_folder_gid = nil
23
22
  config.vm.boot_mode = "vrdp"
24
23
  config.vm.system = :linux
25
24
 
@@ -3,6 +3,10 @@ require 'json'
3
3
  require 'i18n'
4
4
  require 'virtualbox'
5
5
 
6
+ # OpenSSL must be loaded here since when it is loaded via `autoload`
7
+ # there are issues with ciphers not being properly loaded.
8
+ require 'openssl'
9
+
6
10
  module Vagrant
7
11
  autoload :Action, 'vagrant/action'
8
12
  autoload :Box, 'vagrant/box'
@@ -15,6 +19,7 @@ module Vagrant
15
19
  autoload :Errors, 'vagrant/errors'
16
20
  autoload :Hosts, 'vagrant/hosts'
17
21
  autoload :Plugin, 'vagrant/plugin'
22
+ autoload :SSH, 'vagrant/ssh'
18
23
  autoload :TestHelpers, 'vagrant/test_helpers'
19
24
  autoload :UI, 'vagrant/ui'
20
25
  autoload :Util, 'vagrant/util'
@@ -27,16 +32,13 @@ module Vagrant
27
32
  end
28
33
  end
29
34
 
30
- # Default I18n to load the en locale
35
+ # # Default I18n to load the en locale
31
36
  I18n.load_path << File.expand_path("templates/locales/en.yml", Vagrant.source_root)
32
37
 
33
- # Load the things which must be loaded before anything else. Note that
34
- # I'm not sure why 'vagrant/ssh' must be loaded. But if I don't, I get
35
- # a very scary "unsupported cipher" error from net-ssh for no apparent reason.
38
+ # Load the things which must be loaded before anything else.
36
39
  require 'vagrant/command'
37
40
  require 'vagrant/provisioners'
38
41
  require 'vagrant/systems'
39
- require 'vagrant/ssh'
40
42
  require 'vagrant/version'
41
43
  Vagrant::Action.builtin!
42
44
  Vagrant::Plugin.load!
@@ -128,7 +128,11 @@ module Vagrant
128
128
  @@reported_interrupt = true
129
129
  end
130
130
 
131
- Busy.busy(int_callback) { callable.call(action_environment) }
131
+ # We place a process lock around every action that is called
132
+ env.logger.info "Running action: #{callable_id}"
133
+ env.lock do
134
+ Busy.busy(int_callback) { callable.call(action_environment) }
135
+ end
132
136
  end
133
137
  end
134
138
  end
@@ -14,7 +14,6 @@ module Vagrant
14
14
  # environment.
15
15
  register(:start, Builder.new do
16
16
  use VM::CleanMachineFolder
17
- use VM::Customize
18
17
  use VM::ClearForwardedPorts
19
18
  use VM::ForwardPorts
20
19
  use VM::Provision
@@ -23,6 +22,8 @@ module Vagrant
23
22
  use VM::ShareFolders
24
23
  use VM::HostName
25
24
  use VM::Network
25
+ use VM::Customize
26
+ use VM::Modify
26
27
  use VM::Boot
27
28
  end)
28
29
 
@@ -61,6 +62,7 @@ module Vagrant
61
62
  # destroy - Halts, cleans up, and destroys an existing VM
62
63
  register(:destroy, Builder.new do
63
64
  use Action[:halt], :force => true
65
+ use VM::ProvisionerCleanup
64
66
  use VM::ClearNFSExports
65
67
  use VM::Destroy
66
68
  use VM::CleanMachineFolder
@@ -72,6 +74,7 @@ module Vagrant
72
74
  use Action[:halt]
73
75
  use VM::ClearForwardedPorts
74
76
  use VM::ClearSharedFolders
77
+ use VM::Modify
75
78
  use VM::Export
76
79
  use VM::PackageVagrantfile
77
80
  use VM::Package
@@ -38,8 +38,12 @@ module Vagrant
38
38
  end
39
39
 
40
40
  def recover(env)
41
- # Cleanup any packaged files if the packaging failed at some point.
42
- File.delete(tar_path) if File.exist?(tar_path)
41
+ # Don't delete the tar_path if the error is that the output already
42
+ # exists, since this will nuke the user's previous file.
43
+ if !env["vagrant.error"].is_a?(Errors::PackageOutputExists)
44
+ # Cleanup any packaged files if the packaging failed at some point.
45
+ File.delete(tar_path) if File.exist?(tar_path)
46
+ end
43
47
  end
44
48
 
45
49
  def files_to_copy
@@ -18,11 +18,13 @@ module Vagrant
18
18
  autoload :HostName, 'vagrant/action/vm/host_name'
19
19
  autoload :Import, 'vagrant/action/vm/import'
20
20
  autoload :MatchMACAddress, 'vagrant/action/vm/match_mac_address'
21
+ autoload :Modify, 'vagrant/action/vm/modify'
21
22
  autoload :Network, 'vagrant/action/vm/network'
22
23
  autoload :NFS, 'vagrant/action/vm/nfs'
23
24
  autoload :Package, 'vagrant/action/vm/package'
24
25
  autoload :PackageVagrantfile, 'vagrant/action/vm/package_vagrantfile'
25
26
  autoload :Provision, 'vagrant/action/vm/provision'
27
+ autoload :ProvisionerCleanup, 'vagrant/action/vm/provisioner_cleanup'
26
28
  autoload :Resume, 'vagrant/action/vm/resume'
27
29
  autoload :ShareFolders, 'vagrant/action/vm/share_folders'
28
30
  autoload :Suspend, 'vagrant/action/vm/suspend'
@@ -1,37 +1,24 @@
1
- require File.expand_path("../forward_ports_helpers", __FILE__)
2
-
3
1
  module Vagrant
4
2
  class Action
5
3
  module VM
6
4
  class ClearForwardedPorts
7
- include ForwardPortsHelpers
8
-
9
5
  def initialize(app, env)
10
6
  @app = app
11
- @env = env
12
7
  end
13
8
 
14
9
  def call(env)
15
- @env = env
16
- clear
17
- @app.call(env)
18
- end
10
+ proc = lambda do |vm|
11
+ env.ui.info I18n.t("vagrant.actions.vm.clear_forward_ports.deleting")
19
12
 
20
- def clear
21
- if used_ports.length > 0
22
- @env.ui.info I18n.t("vagrant.actions.vm.clear_forward_ports.deleting")
23
- clear_ports
24
- @env["vm"].reload!
25
- end
26
- end
27
-
28
- # Deletes existing forwarded ports.
29
- def clear_ports
30
- @env["vm"].vm.network_adapters.each do |na|
31
- na.nat_driver.forwarded_ports.dup.each do |fp|
32
- fp.destroy
13
+ vm.network_adapters.each do |na|
14
+ na.nat_driver.forwarded_ports.dup.each do |fp|
15
+ fp.destroy
16
+ end
33
17
  end
34
18
  end
19
+
20
+ env["vm.modify"].call(proc)
21
+ @app.call(env)
35
22
  end
36
23
  end
37
24
  end
@@ -8,23 +8,18 @@ module Vagrant
8
8
  end
9
9
 
10
10
  def call(env)
11
- @env = env
12
-
13
- clear_shared_folders
14
- @app.call(env)
15
- end
11
+ proc = lambda do |vm|
12
+ if vm.shared_folders.length > 0
13
+ env.ui.info I18n.t("vagrant.actions.vm.clear_shared_folders.deleting")
16
14
 
17
- def clear_shared_folders
18
- if @env["vm"].vm.shared_folders.length > 0
19
- @env.ui.info I18n.t("vagrant.actions.vm.clear_shared_folders.deleting")
20
-
21
- folders = @env["vm"].vm.shared_folders.dup
22
- folders.each do |shared_folder|
23
- shared_folder.destroy
15
+ vm.shared_folders.dup.each do |shared_folder|
16
+ shared_folder.destroy
17
+ end
24
18
  end
25
-
26
- @env["vm"].reload!
27
19
  end
20
+
21
+ env["vm.modify"].call(proc)
22
+ @app.call(env)
28
23
  end
29
24
  end
30
25
  end
@@ -7,10 +7,15 @@ module Vagrant
7
7
  end
8
8
 
9
9
  def call(env)
10
- if !env.env.config.vm.proc_stack.empty?
11
- env.ui.info I18n.t("vagrant.actions.vm.customize.running")
12
- env.env.config.vm.run_procs!(env["vm"].vm)
13
- env["vm"].vm.save
10
+ if !env["config"].vm.proc_stack.empty?
11
+ # Create the proc which runs all of our procs
12
+ proc = lambda do |vm|
13
+ env.ui.info I18n.t("vagrant.actions.vm.customize.running")
14
+ env["config"].vm.run_procs!(vm)
15
+ end
16
+
17
+ # Add it to modify sequence
18
+ env["vm.modify"].call(proc)
14
19
  end
15
20
 
16
21
  @app.call(env)
@@ -83,14 +83,16 @@ module Vagrant
83
83
  def call(env)
84
84
  @env = env
85
85
 
86
- forward_ports
86
+ proc = lambda do |vm|
87
+ env.ui.info I18n.t("vagrant.actions.vm.forward_ports.forwarding")
88
+ forward_ports(vm)
89
+ end
87
90
 
91
+ env["vm.modify"].call(proc)
88
92
  @app.call(env)
89
93
  end
90
94
 
91
- def forward_ports
92
- @env.ui.info I18n.t("vagrant.actions.vm.forward_ports.forwarding")
93
-
95
+ def forward_ports(vm)
94
96
  @env.env.config.vm.forwarded_ports.each do |name, options|
95
97
  adapter = options[:adapter]
96
98
  message_attributes = {
@@ -103,16 +105,13 @@ module Vagrant
103
105
  # Assuming the only reason to establish port forwarding is because the VM is using Virtualbox NAT networking.
104
106
  # Host-only or Bridged networking don't require port-forwarding and establishing forwarded ports on these
105
107
  # attachment types has uncertain behaviour.
106
- if @env["vm"].vm.network_adapters[adapter].attachment_type == :nat
108
+ if vm.network_adapters[adapter].attachment_type == :nat
107
109
  @env.ui.info(I18n.t("vagrant.actions.vm.forward_ports.forwarding_entry", message_attributes))
108
- forward_port(name, options)
110
+ forward_port(vm, name, options)
109
111
  else
110
112
  @env.ui.info(I18n.t("vagrant.actions.vm.forward_ports.non_nat", message_attributes))
111
113
  end
112
114
  end
113
-
114
- @env["vm"].vm.save
115
- @env["vm"].reload!
116
115
  end
117
116
 
118
117
  #--------------------------------------------------------------
@@ -120,13 +119,13 @@ module Vagrant
120
119
  #--------------------------------------------------------------
121
120
 
122
121
  # Forwards a port.
123
- def forward_port(name, options)
122
+ def forward_port(vm, name, options)
124
123
  port = VirtualBox::NATForwardedPort.new
125
124
  port.name = name
126
125
  port.guestport = options[:guestport]
127
126
  port.hostport = options[:hostport]
128
127
  port.protocol = options[:protocol] || :tcp
129
- @env["vm"].vm.network_adapters[options[:adapter]].nat_driver.forwarded_ports << port
128
+ vm.network_adapters[options[:adapter]].nat_driver.forwarded_ports << port
130
129
  end
131
130
  end
132
131
  end
@@ -9,9 +9,14 @@ module Vagrant
9
9
  def call(env)
10
10
  raise Errors::VMBaseMacNotSpecified if !env.env.config.vm.base_mac
11
11
 
12
- env.ui.info I18n.t("vagrant.actions.vm.match_mac.matching")
13
- env["vm"].vm.network_adapters.first.mac_address = env.env.config.vm.base_mac
14
- env["vm"].vm.save
12
+ # Create the proc which we want to use to modify the virtual machine
13
+ proc = lambda do |vm|
14
+ env.ui.info I18n.t("vagrant.actions.vm.match_mac.matching")
15
+ vm.network_adapters.first.mac_address = env["config"].vm.base_mac
16
+ end
17
+
18
+ # Add the proc to the modification chain
19
+ env["vm.modify"].call(proc)
15
20
 
16
21
  @app.call(env)
17
22
  end
@@ -0,0 +1,37 @@
1
+ module Vagrant
2
+ class Action
3
+ module VM
4
+ # This class allows other actions on the virtual machine object
5
+ # to be consolidated under a single write lock. This vastly speeds
6
+ # up modification of virtual machines. This should be used whereever
7
+ # possible when dealing with virtual machine modifications.
8
+ class Modify
9
+ include Util::StackedProcRunner
10
+
11
+ def initialize(app, env)
12
+ @app = app
13
+
14
+ # Initialize the proc_stack, which should already be empty
15
+ # but just making sure here.
16
+ proc_stack.clear
17
+
18
+ # Create the lambda in the environment which is to be called
19
+ # to add new procs to the modification sequence.
20
+ env["vm.modify"] = lambda do |*procs|
21
+ procs.each { |p| push_proc(&p) }
22
+ end
23
+ end
24
+
25
+ def call(env)
26
+ # Run the procs we have saved up, save the machine, and reload
27
+ # to verify we get the new settings
28
+ run_procs!(env["vm"].vm)
29
+ env["vm"].vm.save
30
+ env["vm"].reload!
31
+
32
+ @app.call(env)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -25,8 +25,15 @@ module Vagrant
25
25
 
26
26
  if enable_network?
27
27
  @env.ui.info I18n.t("vagrant.actions.vm.network.enabling")
28
- @env.env.config.vm.network_options.compact.each do |network_options|
28
+
29
+ # Prepare for new networks...
30
+ options = @env.env.config.vm.network_options.compact
31
+ options.each do |network_options|
29
32
  @env["vm"].system.prepare_host_only_network(network_options)
33
+ end
34
+
35
+ # Then enable the networks...
36
+ options.each do |network_options|
30
37
  @env["vm"].system.enable_host_only_network(network_options)
31
38
  end
32
39
  end
@@ -64,7 +71,7 @@ module Vagrant
64
71
  adapter = @env["vm"].vm.network_adapters[network_options[:adapter]]
65
72
  adapter.enabled = true
66
73
  adapter.attachment_type = :host_only
67
- adapter.host_interface = network_name(network_options)
74
+ adapter.host_only_interface = network_name(network_options)
68
75
  adapter.mac_address = network_options[:mac].gsub(':', '') if network_options[:mac]
69
76
  adapter.save
70
77
  end