vagrant 0.2.0 → 0.3.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.
Files changed (149) hide show
  1. data/Gemfile +4 -4
  2. data/Rakefile +3 -3
  3. data/VERSION +1 -1
  4. data/bin/vagrant +5 -13
  5. data/config/default.rb +1 -0
  6. data/keys/README.md +8 -1
  7. data/keys/vagrant.ppk +26 -0
  8. data/lib/vagrant.rb +3 -3
  9. data/lib/vagrant/actions/base.rb +15 -4
  10. data/lib/vagrant/actions/box/add.rb +1 -1
  11. data/lib/vagrant/actions/box/download.rb +72 -66
  12. data/lib/vagrant/actions/box/unpackage.rb +1 -4
  13. data/lib/vagrant/actions/runner.rb +1 -1
  14. data/lib/vagrant/actions/vm/boot.rb +5 -7
  15. data/lib/vagrant/actions/vm/customize.rb +2 -2
  16. data/lib/vagrant/actions/vm/destroy.rb +2 -2
  17. data/lib/vagrant/actions/vm/down.rb +7 -0
  18. data/lib/vagrant/actions/vm/export.rb +10 -4
  19. data/lib/vagrant/actions/vm/forward_ports.rb +5 -15
  20. data/lib/vagrant/actions/vm/halt.rb +5 -3
  21. data/lib/vagrant/actions/vm/import.rb +10 -3
  22. data/lib/vagrant/actions/vm/move_hard_drive.rb +1 -3
  23. data/lib/vagrant/actions/vm/package.rb +33 -10
  24. data/lib/vagrant/actions/vm/provision.rb +4 -4
  25. data/lib/vagrant/actions/vm/reload.rb +1 -1
  26. data/lib/vagrant/actions/vm/resume.rb +1 -1
  27. data/lib/vagrant/actions/vm/shared_folders.rb +7 -7
  28. data/lib/vagrant/actions/vm/start.rb +3 -2
  29. data/lib/vagrant/actions/vm/suspend.rb +2 -2
  30. data/lib/vagrant/actions/vm/up.rb +7 -17
  31. data/lib/vagrant/active_list.rb +52 -45
  32. data/lib/vagrant/box.rb +18 -11
  33. data/lib/vagrant/busy.rb +7 -0
  34. data/lib/vagrant/command.rb +27 -0
  35. data/lib/vagrant/commands/base.rb +163 -0
  36. data/lib/vagrant/commands/box.rb +16 -0
  37. data/lib/vagrant/commands/box/add.rb +24 -0
  38. data/lib/vagrant/commands/box/list.rb +30 -0
  39. data/lib/vagrant/commands/box/remove.rb +31 -0
  40. data/lib/vagrant/commands/destroy.rb +23 -0
  41. data/lib/vagrant/commands/down.rb +16 -0
  42. data/lib/vagrant/commands/halt.rb +23 -0
  43. data/lib/vagrant/commands/init.rb +32 -0
  44. data/lib/vagrant/commands/package.rb +46 -0
  45. data/lib/vagrant/commands/reload.rb +22 -0
  46. data/lib/vagrant/commands/resume.rb +22 -0
  47. data/lib/vagrant/commands/ssh.rb +22 -0
  48. data/lib/vagrant/commands/ssh_config.rb +30 -0
  49. data/lib/vagrant/commands/status.rb +58 -0
  50. data/lib/vagrant/commands/suspend.rb +23 -0
  51. data/lib/vagrant/commands/up.rb +26 -0
  52. data/lib/vagrant/config.rb +21 -11
  53. data/lib/vagrant/downloaders/file.rb +5 -5
  54. data/lib/vagrant/downloaders/http.rb +10 -15
  55. data/lib/vagrant/environment.rb +259 -0
  56. data/lib/vagrant/provisioners/base.rb +7 -0
  57. data/lib/vagrant/provisioners/chef.rb +24 -9
  58. data/lib/vagrant/provisioners/chef_server.rb +23 -48
  59. data/lib/vagrant/provisioners/chef_solo.rb +48 -22
  60. data/lib/vagrant/ssh.rb +95 -46
  61. data/lib/vagrant/util.rb +2 -2
  62. data/lib/vagrant/util/errors.rb +36 -0
  63. data/lib/vagrant/util/platform.rb +12 -0
  64. data/lib/vagrant/util/progress_meter.rb +33 -0
  65. data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
  66. data/lib/vagrant/util/template_renderer.rb +83 -0
  67. data/lib/vagrant/vm.rb +1 -0
  68. data/templates/{Vagrantfile → Vagrantfile.erb} +2 -2
  69. data/templates/chef_server_client.erb +16 -0
  70. data/templates/chef_solo_solo.erb +4 -0
  71. data/templates/errors.yml +157 -0
  72. data/templates/package_Vagrantfile.erb +11 -0
  73. data/templates/ssh_config.erb +7 -0
  74. data/test/test_helper.rb +12 -15
  75. data/test/vagrant/actions/box/add_test.rb +1 -2
  76. data/test/vagrant/actions/box/destroy_test.rb +0 -1
  77. data/test/vagrant/actions/box/download_test.rb +40 -15
  78. data/test/vagrant/actions/box/unpackage_test.rb +2 -3
  79. data/test/vagrant/actions/collection_test.rb +8 -5
  80. data/test/vagrant/actions/runner_test.rb +8 -6
  81. data/test/vagrant/actions/vm/boot_test.rb +12 -11
  82. data/test/vagrant/actions/vm/customize_test.rb +2 -3
  83. data/test/vagrant/actions/vm/destroy_test.rb +2 -3
  84. data/test/vagrant/actions/vm/down_test.rb +16 -3
  85. data/test/vagrant/actions/vm/export_test.rb +4 -5
  86. data/test/vagrant/actions/vm/forward_ports_test.rb +6 -5
  87. data/test/vagrant/actions/vm/halt_test.rb +8 -2
  88. data/test/vagrant/actions/vm/import_test.rb +5 -5
  89. data/test/vagrant/actions/vm/move_hard_drive_test.rb +4 -6
  90. data/test/vagrant/actions/vm/package_test.rb +60 -22
  91. data/test/vagrant/actions/vm/provision_test.rb +7 -16
  92. data/test/vagrant/actions/vm/reload_test.rb +3 -2
  93. data/test/vagrant/actions/vm/resume_test.rb +0 -1
  94. data/test/vagrant/actions/vm/shared_folders_test.rb +17 -12
  95. data/test/vagrant/actions/vm/start_test.rb +10 -3
  96. data/test/vagrant/actions/vm/suspend_test.rb +1 -2
  97. data/test/vagrant/actions/vm/up_test.rb +19 -11
  98. data/test/vagrant/active_list_test.rb +148 -129
  99. data/test/vagrant/box_test.rb +26 -14
  100. data/test/vagrant/busy_test.rb +15 -6
  101. data/test/vagrant/command_test.rb +53 -0
  102. data/test/vagrant/commands/base_test.rb +118 -0
  103. data/test/vagrant/commands/box/add_test.rb +34 -0
  104. data/test/vagrant/commands/box/list_test.rb +32 -0
  105. data/test/vagrant/commands/box/remove_test.rb +41 -0
  106. data/test/vagrant/commands/destroy_test.rb +32 -0
  107. data/test/vagrant/commands/down_test.rb +17 -0
  108. data/test/vagrant/commands/halt_test.rb +28 -0
  109. data/test/vagrant/commands/init_test.rb +55 -0
  110. data/test/vagrant/commands/package_test.rb +84 -0
  111. data/test/vagrant/commands/reload_test.rb +28 -0
  112. data/test/vagrant/commands/resume_test.rb +33 -0
  113. data/test/vagrant/commands/ssh_config_test.rb +54 -0
  114. data/test/vagrant/commands/ssh_test.rb +32 -0
  115. data/test/vagrant/commands/status_test.rb +20 -0
  116. data/test/vagrant/commands/suspend_test.rb +33 -0
  117. data/test/vagrant/commands/up_test.rb +41 -0
  118. data/test/vagrant/config_test.rb +42 -17
  119. data/test/vagrant/downloaders/file_test.rb +7 -0
  120. data/test/vagrant/downloaders/http_test.rb +12 -0
  121. data/test/vagrant/environment_test.rb +595 -0
  122. data/test/vagrant/provisioners/base_test.rb +7 -1
  123. data/test/vagrant/provisioners/chef_server_test.rb +41 -51
  124. data/test/vagrant/provisioners/chef_solo_test.rb +93 -62
  125. data/test/vagrant/provisioners/chef_test.rb +61 -15
  126. data/test/vagrant/ssh_test.rb +166 -38
  127. data/test/vagrant/util/errors_test.rb +57 -0
  128. data/test/vagrant/util/progress_meter_test.rb +33 -0
  129. data/test/vagrant/{stacked_proc_runner_test.rb → util/stacked_proc_runner_test.rb} +3 -3
  130. data/test/vagrant/util/template_renderer_test.rb +138 -0
  131. data/test/vagrant/vm_test.rb +3 -2
  132. data/vagrant.gemspec +88 -33
  133. metadata +94 -51
  134. data/bin/vagrant-box +0 -34
  135. data/bin/vagrant-down +0 -27
  136. data/bin/vagrant-halt +0 -28
  137. data/bin/vagrant-init +0 -27
  138. data/bin/vagrant-package +0 -29
  139. data/bin/vagrant-reload +0 -29
  140. data/bin/vagrant-resume +0 -27
  141. data/bin/vagrant-ssh +0 -27
  142. data/bin/vagrant-status +0 -29
  143. data/bin/vagrant-suspend +0 -27
  144. data/bin/vagrant-up +0 -29
  145. data/lib/vagrant/commands.rb +0 -234
  146. data/lib/vagrant/env.rb +0 -189
  147. data/lib/vagrant/stacked_proc_runner.rb +0 -33
  148. data/test/vagrant/commands_test.rb +0 -269
  149. data/test/vagrant/env_test.rb +0 -418
@@ -7,19 +7,9 @@ module Vagrant
7
7
  next if !vm.running? || vm.uuid == @runner.uuid
8
8
 
9
9
  vm.forwarded_ports.each do |fp|
10
- Vagrant.config.vm.forwarded_ports.each do |name, options|
10
+ @runner.env.config.vm.forwarded_ports.each do |name, options|
11
11
  if fp.hostport.to_s == options[:hostport].to_s
12
- raise ActionException.new(<<-msg)
13
- Vagrant cannot forward the specified ports on this VM, since they
14
- would collide with another VirtualBox virtual machine's forwarded
15
- ports! The "#{name}" forwarded port (#{fp.hostport}) is already in use on the host
16
- machine.
17
-
18
- To fix this, modify your current projects Vagrantfile to use another
19
- port. Example, where '1234' would be replaced by a unique host port:
20
-
21
- config.vm.forward_port("#{name}", #{options[:guestport]}, 1234)
22
- msg
12
+ raise ActionException.new(:vm_port_collision, :name => name, :hostport => fp.hostport.to_s, :guestport => options[:guestport].to_s)
23
13
  end
24
14
  end
25
15
  end
@@ -33,13 +23,13 @@ msg
33
23
 
34
24
  def clear
35
25
  logger.info "Deleting any previously set forwarded ports..."
36
- @runner.vm.forwarded_ports.collect { |p| p.destroy(true) }
26
+ @runner.vm.forwarded_ports.collect { |p| p.destroy }
37
27
  end
38
28
 
39
29
  def forward_ports
40
30
  logger.info "Forwarding ports..."
41
31
 
42
- Vagrant.config.vm.forwarded_ports.each do |name, options|
32
+ @runner.env.config.vm.forwarded_ports.each do |name, options|
43
33
  logger.info "Forwarding \"#{name}\": #{options[:guestport]} => #{options[:hostport]}"
44
34
  port = VirtualBox::ForwardedPort.new
45
35
  port.name = name
@@ -48,7 +38,7 @@ msg
48
38
  @runner.vm.forwarded_ports << port
49
39
  end
50
40
 
51
- @runner.vm.save(true)
41
+ @runner.vm.save
52
42
  end
53
43
  end
54
44
  end
@@ -3,10 +3,12 @@ module Vagrant
3
3
  module VM
4
4
  class Halt < Base
5
5
  def execute!
6
- raise ActionException.new("VM is not running! Nothing to shut down!") unless @runner.vm.running?
6
+ raise ActionException.new(:vm_not_running) unless @runner.vm.running?
7
7
 
8
- logger.info "Forcing shutdown of VM..."
9
- @runner.vm.stop(true)
8
+ @runner.invoke_around_callback(:halt) do
9
+ logger.info "Forcing shutdown of VM..."
10
+ @runner.vm.stop
11
+ end
10
12
  end
11
13
  end
12
14
  end
@@ -2,13 +2,20 @@ module Vagrant
2
2
  module Actions
3
3
  module VM
4
4
  class Import < Base
5
+ include Util::ProgressMeter
6
+
5
7
  def execute!
6
8
  @runner.invoke_around_callback(:import) do
7
9
  Busy.busy do
8
- logger.info "Importing base VM (#{Vagrant::Env.box.ovf_file})..."
10
+ logger.info "Importing base VM (#{@runner.env.box.ovf_file})..."
9
11
  # Use the first argument passed to the action
10
- @runner.vm = VirtualBox::VM.import(Vagrant::Env.box.ovf_file)
11
- raise ActionException.new("The VM import failed! Try running `VBoxManage import` on the box file manually for more verbose error output.") unless @runner.vm
12
+ @runner.vm = VirtualBox::VM.import(@runner.env.box.ovf_file) do |progress|
13
+ update_progress(progress, 100, false)
14
+ end
15
+
16
+ complete_progress
17
+
18
+ raise ActionException.new(:virtualbox_import_failure) unless @runner.vm
12
19
  end
13
20
  end
14
21
  end
@@ -4,9 +4,7 @@ module Vagrant
4
4
  class MoveHardDrive < Base
5
5
  def execute!
6
6
  unless @runner.powered_off?
7
- error_and_exit(<<-error)
8
- The virtual machine must be powered off to move its disk.
9
- error
7
+ error_and_exit(:vm_power_off_to_move_hd)
10
8
  return
11
9
  end
12
10
 
@@ -16,12 +16,12 @@ module Vagrant
16
16
  def prepare
17
17
  # Verify the existance of all the additional files, if any
18
18
  @include_files.each do |file|
19
- raise ActionException.new("#{file} does not exist") unless File.exists?(file)
19
+ raise ActionException.new(:package_include_file_doesnt_exist, :filename => file) unless File.exists?(file)
20
20
  end
21
21
 
22
22
  # Get the export action and store a reference to it
23
23
  @export_action = @runner.find_action(Export)
24
- raise ActionException.new("Package must be used in conjunction with export.") unless @export_action
24
+ raise ActionException.new(:packaged_requires_export) unless @export_action
25
25
  end
26
26
 
27
27
  def execute!
@@ -29,28 +29,51 @@ module Vagrant
29
29
  end
30
30
 
31
31
  def tar_path
32
- File.join(FileUtils.pwd, "#{out_path}#{Vagrant.config.package.extension}")
32
+ File.join(FileUtils.pwd, "#{out_path}#{@runner.env.config.package.extension}")
33
33
  end
34
34
 
35
35
  def temp_path
36
36
  export_action.temp_dir
37
37
  end
38
38
 
39
+ # This method copies the include files (passed in via command line)
40
+ # to the temporary directory so they are included in a sub-folder within
41
+ # the actual box
42
+ def copy_include_files
43
+ if include_files.length > 0
44
+ include_dir = File.join(temp_path, "include")
45
+ FileUtils.mkdir_p(include_dir)
46
+
47
+ include_files.each do |f|
48
+ logger.info "Packaging additional file: #{f}"
49
+ FileUtils.cp(f, include_dir)
50
+ end
51
+ end
52
+ end
53
+
54
+ # This method creates the auto-generated Vagrantfile at the root of the
55
+ # box. This Vagrantfile contains the MAC address so that the user doesn't
56
+ # have to worry about it.
57
+ def create_vagrantfile
58
+ File.open(File.join(temp_path, "Vagrantfile"), "w") do |f|
59
+ f.write(TemplateRenderer.render("package_Vagrantfile", {
60
+ :base_mac => @runner.vm.network_adapters.first.mac_address
61
+ }))
62
+ end
63
+ end
64
+
39
65
  def compress
40
- logger.info "Packaging VM into #{tar_path} ..."
66
+ logger.info "Packaging VM into #{tar_path}..."
41
67
  File.open(tar_path, File::CREAT | File::WRONLY, 0644) do |tar|
42
68
  Archive::Tar::Minitar::Output.open(tar) do |output|
43
69
  begin
44
70
  current_dir = FileUtils.pwd
45
71
 
46
- include_files.each do |f|
47
- logger.info "Packaging additional file: #{f}"
48
- Archive::Tar::Minitar.pack_file(f, output)
49
- end
72
+ copy_include_files
73
+ create_vagrantfile
50
74
 
51
75
  FileUtils.cd(temp_path)
52
-
53
- Dir.glob(File.join(".", "*")).each do |entry|
76
+ Dir.glob(File.join(".", "**", "*")).each do |entry|
54
77
  Archive::Tar::Minitar.pack_file(entry, output)
55
78
  end
56
79
  ensure
@@ -19,8 +19,8 @@ module Vagrant
19
19
  end
20
20
 
21
21
  if provisioner.is_a?(Class)
22
- @provisioner = provisioner.new
23
- raise ActionException.new("Provisioners must be an instance of Vagrant::Provisioners::Base") unless @provisioner.is_a?(Provisioners::Base)
22
+ @provisioner = provisioner.new(@runner.env)
23
+ raise ActionException.new(:provisioner_invalid_class) unless @provisioner.is_a?(Provisioners::Base)
24
24
  elsif provisioner.is_a?(Symbol)
25
25
  # We have a few hard coded provisioners for built-ins
26
26
  mapping = {
@@ -29,8 +29,8 @@ module Vagrant
29
29
  }
30
30
 
31
31
  provisioner_klass = mapping[provisioner]
32
- raise ActionException.new("Unknown provisioner type: #{provisioner}") if provisioner_klass.nil?
33
- @provisioner = provisioner_klass.new
32
+ raise ActionException.new(:provisioner_unknown_type, :provisioner => provisioner.to_s) if provisioner_klass.nil?
33
+ @provisioner = provisioner_klass.new(@runner.env)
34
34
  end
35
35
 
36
36
  logger.info "Provisioning enabled with #{@provisioner.class}"
@@ -5,7 +5,7 @@ module Vagrant
5
5
  def prepare
6
6
  steps = [Customize, ForwardPorts, SharedFolders, Boot]
7
7
  steps.unshift(Halt) if @runner.vm.running?
8
- steps << Provision if !Vagrant.config.vm.provisioner.nil?
8
+ steps << Provision if !@runner.env.config.vm.provisioner.nil?
9
9
 
10
10
  steps.each do |action_klass|
11
11
  @runner.add_action(action_klass)
@@ -4,7 +4,7 @@ module Vagrant
4
4
  class Resume < Base
5
5
  def execute!
6
6
  if !@runner.vm.saved?
7
- raise ActionException.new("The vagrant virtual environment you are trying to resume is not in a suspended state.")
7
+ raise ActionException.new(:vm_not_suspended)
8
8
  end
9
9
 
10
10
  logger.info "Resuming suspended VM..."
@@ -3,7 +3,7 @@ module Vagrant
3
3
  module VM
4
4
  class SharedFolders < Base
5
5
  def shared_folders
6
- Vagrant.config.vm.shared_folders.inject([]) do |acc, data|
6
+ @runner.env.config.vm.shared_folders.inject([]) do |acc, data|
7
7
  name, value = data
8
8
  acc << [name, File.expand_path(value[:hostpath]), value[:guestpath]]
9
9
  end
@@ -17,7 +17,7 @@ module Vagrant
17
17
  def after_boot
18
18
  logger.info "Mounting shared folders..."
19
19
 
20
- Vagrant::SSH.execute do |ssh|
20
+ @runner.env.ssh.execute do |ssh|
21
21
  shared_folders.each do |name, hostpath, guestpath|
22
22
  logger.info "-- #{name}: #{guestpath}"
23
23
  ssh.exec!("sudo mkdir -p #{guestpath}")
@@ -43,11 +43,11 @@ module Vagrant
43
43
  shared_folders.each do |name, hostpath, guestpath|
44
44
  folder = VirtualBox::SharedFolder.new
45
45
  folder.name = name
46
- folder.hostpath = hostpath
46
+ folder.host_path = hostpath
47
47
  @runner.vm.shared_folders << folder
48
48
  end
49
49
 
50
- @runner.vm.save(true)
50
+ @runner.vm.save
51
51
  end
52
52
 
53
53
  def mount_folder(ssh, name, guestpath, sleeptime=5)
@@ -57,8 +57,8 @@ module Vagrant
57
57
 
58
58
  # Determine the permission string to attach to the mount command
59
59
  perms = []
60
- perms << "uid=#{Vagrant.config.vm.shared_folder_uid}"
61
- perms << "gid=#{Vagrant.config.vm.shared_folder_gid}"
60
+ perms << "uid=#{@runner.env.config.vm.shared_folder_uid}"
61
+ perms << "gid=#{@runner.env.config.vm.shared_folder_gid}"
62
62
  perms = " -o #{perms.join(",")}" if !perms.empty?
63
63
 
64
64
  attempts = 0
@@ -71,7 +71,7 @@ module Vagrant
71
71
  break unless result
72
72
 
73
73
  attempts += 1
74
- raise ActionException.new("Failed to mount shared folders. vboxsf was not available.") if attempts >= 10
74
+ raise ActionException.new(:vm_mount_fail) if attempts >= 10
75
75
  sleep sleeptime
76
76
  end
77
77
  end
@@ -5,9 +5,10 @@ module Vagrant
5
5
  def prepare
6
6
  # Start is a "meta-action" so it really just queues up a bunch
7
7
  # of other actions in its place:
8
- steps = [ForwardPorts, SharedFolders, Boot]
8
+ steps = [Boot]
9
+ steps.unshift([Customize, ForwardPorts, SharedFolders]) unless @runner.vm.saved?
9
10
 
10
- steps.each do |action_klass|
11
+ steps.flatten.each do |action_klass|
11
12
  @runner.add_action(action_klass)
12
13
  end
13
14
  end
@@ -4,11 +4,11 @@ module Vagrant
4
4
  class Suspend < Base
5
5
  def execute!
6
6
  if !@runner.vm.running?
7
- raise ActionException.new("The vagrant virtual environment you are trying to suspend must be running to be suspended.")
7
+ raise ActionException.new(:vm_not_running_for_suspend)
8
8
  end
9
9
 
10
10
  logger.info "Saving VM state and suspending execution..."
11
- @runner.vm.save_state(true)
11
+ @runner.vm.save_state
12
12
  end
13
13
  end
14
14
  end
@@ -4,25 +4,15 @@ module Vagrant
4
4
  class Up < Base
5
5
  def prepare
6
6
  # If the dotfile is not a file, raise error
7
- if File.exist?(Env.dotfile_path) && !File.file?(Env.dotfile_path)
8
- raise ActionException.new(<<-msg)
9
- The dotfile which Vagrant uses to store the UUID of the project's
10
- virtual machine already exists and is not a file! The dotfile is
11
- currently configured to be `#{Env.dotfile_path}`
12
-
13
- To change this value, please see `config.vagrant.dotfile_name`
14
-
15
- This often exists if you're trying to create a Vagrant virtual
16
- environment from your home directory. To resolve this, you can either
17
- modify the configuration a bit, or simply use a different directory.
18
- msg
7
+ if File.exist?(@runner.env.dotfile_path) && !File.file?(@runner.env.dotfile_path)
8
+ raise ActionException.new(:dotfile_error, :env => @runner.env)
19
9
  end
20
10
 
21
11
  # Up is a "meta-action" so it really just queues up a bunch
22
12
  # of other actions in its place:
23
13
  steps = [Import, Customize, ForwardPorts, SharedFolders, Boot]
24
- steps << Provision if !Vagrant.config.vm.provisioner.nil?
25
- steps.insert(0, MoveHardDrive) if Vagrant.config.vm.hd_location
14
+ steps << Provision if !@runner.env.config.vm.provisioner.nil?
15
+ steps.insert(0, MoveHardDrive) if @runner.env.config.vm.hd_location
26
16
 
27
17
  steps.each do |action_klass|
28
18
  @runner.add_action(action_klass)
@@ -36,13 +26,13 @@ msg
36
26
 
37
27
  def persist
38
28
  logger.info "Persisting the VM UUID (#{@runner.uuid})..."
39
- Env.persist_vm(@runner)
29
+ @runner.env.persist_vm
40
30
  end
41
31
 
42
32
  def setup_mac_address
43
33
  logger.info "Matching MAC addresses..."
44
- @runner.vm.nics.first.macaddress = Vagrant.config[:vm][:base_mac]
45
- @runner.vm.save(true)
34
+ @runner.vm.network_adapters.first.mac_address = @runner.env.config.vm.base_mac
35
+ @runner.vm.save
46
36
  end
47
37
  end
48
38
  end
@@ -6,61 +6,68 @@ module Vagrant
6
6
 
7
7
  @@list = nil
8
8
 
9
- class <<self
10
- # Parses and returns the list of UUIDs from the active VM
11
- # JSON file. This will cache the result, which can be reloaded
12
- # by setting the `reload` parameter to true.
13
- #
14
- # @return [Array<String>]
15
- def list(reload = false)
16
- return @@list unless @@list.nil? || reload
9
+ # The environment this active list belongs to
10
+ attr_accessor :env
17
11
 
18
- @@list ||= []
19
- return @@list unless File.file?(path)
20
- File.open(path, "r") do |f|
21
- @@list = JSON.parse(f.read)
22
- end
12
+ # Creates the instance of the ActiveList, with the given environment
13
+ # if specified
14
+ def initialize(env=nil)
15
+ @env = env
16
+ end
23
17
 
24
- @@list
25
- end
18
+ # Parses and returns the list of UUIDs from the active VM
19
+ # JSON file. This will cache the result, which can be reloaded
20
+ # by setting the `reload` parameter to true.
21
+ #
22
+ # @return [Array<String>]
23
+ def list(reload=false)
24
+ return @list unless @list.nil? || reload
26
25
 
27
- # Returns an array of {Vagrant::VM} objects which are currently
28
- # active.
29
- def vms
30
- list.collect { |uuid| Vagrant::VM.find(uuid) }.compact
26
+ @list ||= []
27
+ return @list unless File.file?(path)
28
+ File.open(path, "r") do |f|
29
+ @list = JSON.parse(f.read)
31
30
  end
32
31
 
33
- # Returns an array of UUIDs filtered so each is verified to exist.
34
- def filtered_list
35
- vms.collect { |vm| vm.uuid }
36
- end
32
+ @list
33
+ end
37
34
 
38
- # Adds a virtual environment to the list of active virtual machines
39
- def add(vm)
40
- list << vm.uuid
41
- list.uniq!
42
- save
43
- end
35
+ # Returns an array of {Vagrant::VM} objects which are currently
36
+ # active.
37
+ def vms
38
+ list.collect { |uuid| Vagrant::VM.find(uuid) }.compact
39
+ end
44
40
 
45
- # Remove a virtual environment from the list of active virtual machines
46
- def remove(vm)
47
- vm = vm.uuid if vm.is_a?(Vagrant::VM)
48
- list.delete(vm)
49
- save
50
- end
41
+ # Returns an array of UUIDs filtered so each is verified to exist.
42
+ def filtered_list
43
+ vms.collect { |vm| vm.uuid }
44
+ end
51
45
 
52
- # Persists the list down to the JSON file.
53
- def save
54
- File.open(path, "w+") do |f|
55
- f.write(filtered_list.to_json)
56
- end
57
- end
46
+ # Adds a virtual environment to the list of active virtual machines
47
+ def add(vm)
48
+ list << vm.uuid
49
+ list.uniq!
50
+ save
51
+ end
58
52
 
59
- # Returns the path to the JSON file which holds the UUIDs of the
60
- # active virtual machines managed by Vagrant.
61
- def path
62
- File.join(Env.home_path, FILENAME)
53
+ # Remove a virtual environment from the list of active virtual machines
54
+ def remove(vm)
55
+ vm = vm.uuid if vm.is_a?(Vagrant::VM)
56
+ list.delete(vm)
57
+ save
58
+ end
59
+
60
+ # Persists the list down to the JSON file.
61
+ def save
62
+ File.open(path, "w+") do |f|
63
+ f.write(filtered_list.to_json)
63
64
  end
64
65
  end
66
+
67
+ # Returns the path to the JSON file which holds the UUIDs of the
68
+ # active virtual machines managed by Vagrant.
69
+ def path
70
+ File.join(env.home_path, FILENAME)
71
+ end
65
72
  end
66
73
  end