vagrantup 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/README.md +2 -2
  4. data/Rakefile +1 -1
  5. data/VERSION +1 -1
  6. data/config/default.rb +13 -3
  7. data/lib/vagrant.rb +10 -13
  8. data/lib/vagrant/actions/base.rb +14 -2
  9. data/lib/vagrant/actions/box/download.rb +2 -7
  10. data/lib/vagrant/actions/box/verify.rb +1 -1
  11. data/lib/vagrant/actions/runner.rb +0 -1
  12. data/lib/vagrant/actions/vm/boot.rb +2 -6
  13. data/lib/vagrant/actions/vm/customize.rb +7 -5
  14. data/lib/vagrant/actions/vm/destroy.rb +4 -3
  15. data/lib/vagrant/actions/vm/down.rb +6 -3
  16. data/lib/vagrant/actions/vm/export.rb +2 -4
  17. data/lib/vagrant/actions/vm/forward_ports.rb +77 -16
  18. data/lib/vagrant/actions/vm/halt.rb +10 -2
  19. data/lib/vagrant/actions/vm/import.rb +2 -4
  20. data/lib/vagrant/actions/vm/move_hard_drive.rb +2 -2
  21. data/lib/vagrant/actions/vm/network.rb +120 -0
  22. data/lib/vagrant/actions/vm/package.rb +11 -7
  23. data/lib/vagrant/actions/vm/provision.rb +3 -3
  24. data/lib/vagrant/actions/vm/reload.rb +2 -9
  25. data/lib/vagrant/actions/vm/shared_folders.rb +19 -39
  26. data/lib/vagrant/actions/vm/start.rb +10 -2
  27. data/lib/vagrant/actions/vm/up.rb +5 -6
  28. data/lib/vagrant/active_list.rb +23 -13
  29. data/lib/vagrant/box.rb +2 -2
  30. data/lib/vagrant/busy.rb +3 -3
  31. data/lib/vagrant/command.rb +2 -2
  32. data/lib/vagrant/commands/base.rb +40 -20
  33. data/lib/vagrant/commands/destroy.rb +17 -3
  34. data/lib/vagrant/commands/halt.rb +23 -3
  35. data/lib/vagrant/commands/package.rb +54 -14
  36. data/lib/vagrant/commands/provision.rb +31 -0
  37. data/lib/vagrant/commands/reload.rb +16 -3
  38. data/lib/vagrant/commands/resume.rb +16 -3
  39. data/lib/vagrant/commands/ssh.rb +25 -3
  40. data/lib/vagrant/commands/ssh_config.rb +20 -5
  41. data/lib/vagrant/commands/status.rb +107 -40
  42. data/lib/vagrant/commands/suspend.rb +16 -3
  43. data/lib/vagrant/commands/up.rb +26 -7
  44. data/lib/vagrant/config.rb +82 -12
  45. data/lib/vagrant/downloaders/base.rb +8 -1
  46. data/lib/vagrant/downloaders/http.rb +31 -19
  47. data/lib/vagrant/environment.rb +146 -49
  48. data/lib/vagrant/provisioners/base.rb +19 -5
  49. data/lib/vagrant/provisioners/chef.rb +12 -4
  50. data/lib/vagrant/provisioners/chef_server.rb +13 -6
  51. data/lib/vagrant/provisioners/chef_solo.rb +7 -3
  52. data/lib/vagrant/resource_logger.rb +126 -0
  53. data/lib/vagrant/ssh.rb +109 -8
  54. data/lib/vagrant/systems/base.rb +70 -0
  55. data/lib/vagrant/systems/linux.rb +137 -0
  56. data/lib/vagrant/util.rb +1 -45
  57. data/lib/vagrant/util/error_helper.rb +13 -0
  58. data/lib/vagrant/util/glob_loader.rb +22 -0
  59. data/lib/vagrant/util/output_helper.rb +9 -0
  60. data/lib/vagrant/util/plain_logger.rb +12 -0
  61. data/lib/vagrant/util/platform.rb +7 -2
  62. data/lib/vagrant/util/template_renderer.rb +2 -2
  63. data/lib/vagrant/util/translator.rb +35 -0
  64. data/lib/vagrant/vm.rb +91 -10
  65. data/templates/crontab_entry.erb +1 -0
  66. data/templates/network_entry.erb +8 -0
  67. data/templates/ssh_config.erb +1 -0
  68. data/templates/{errors.yml → strings.yml} +111 -3
  69. data/templates/sync.erb +14 -0
  70. data/test/test_helper.rb +46 -3
  71. data/test/vagrant/actions/box/download_test.rb +0 -17
  72. data/test/vagrant/actions/vm/boot_test.rb +3 -10
  73. data/test/vagrant/actions/vm/customize_test.rb +6 -0
  74. data/test/vagrant/actions/vm/destroy_test.rb +6 -5
  75. data/test/vagrant/actions/vm/down_test.rb +5 -11
  76. data/test/vagrant/actions/vm/export_test.rb +1 -0
  77. data/test/vagrant/actions/vm/forward_ports_test.rb +92 -15
  78. data/test/vagrant/actions/vm/halt_test.rb +36 -4
  79. data/test/vagrant/actions/vm/import_test.rb +2 -0
  80. data/test/vagrant/actions/vm/network_test.rb +237 -0
  81. data/test/vagrant/actions/vm/package_test.rb +35 -5
  82. data/test/vagrant/actions/vm/provision_test.rb +3 -3
  83. data/test/vagrant/actions/vm/reload_test.rb +1 -1
  84. data/test/vagrant/actions/vm/shared_folders_test.rb +41 -74
  85. data/test/vagrant/actions/vm/start_test.rb +41 -3
  86. data/test/vagrant/actions/vm/up_test.rb +10 -21
  87. data/test/vagrant/active_list_test.rb +28 -43
  88. data/test/vagrant/commands/base_test.rb +25 -4
  89. data/test/vagrant/commands/destroy_test.rb +24 -12
  90. data/test/vagrant/commands/halt_test.rb +33 -11
  91. data/test/vagrant/commands/package_test.rb +77 -57
  92. data/test/vagrant/commands/provision_test.rb +50 -0
  93. data/test/vagrant/commands/reload_test.rb +27 -11
  94. data/test/vagrant/commands/resume_test.rb +25 -14
  95. data/test/vagrant/commands/ssh_config_test.rb +40 -17
  96. data/test/vagrant/commands/ssh_test.rb +52 -13
  97. data/test/vagrant/commands/status_test.rb +21 -1
  98. data/test/vagrant/commands/suspend_test.rb +25 -14
  99. data/test/vagrant/commands/up_test.rb +25 -19
  100. data/test/vagrant/config_test.rb +74 -18
  101. data/test/vagrant/downloaders/base_test.rb +2 -1
  102. data/test/vagrant/downloaders/http_test.rb +18 -8
  103. data/test/vagrant/environment_test.rb +245 -77
  104. data/test/vagrant/provisioners/base_test.rb +4 -4
  105. data/test/vagrant/provisioners/chef_server_test.rb +18 -7
  106. data/test/vagrant/provisioners/chef_solo_test.rb +17 -7
  107. data/test/vagrant/provisioners/chef_test.rb +22 -9
  108. data/test/vagrant/resource_logger_test.rb +144 -0
  109. data/test/vagrant/ssh_session_test.rb +46 -0
  110. data/test/vagrant/ssh_test.rb +42 -2
  111. data/test/vagrant/systems/linux_test.rb +174 -0
  112. data/test/vagrant/util/error_helper_test.rb +5 -0
  113. data/test/vagrant/util/output_helper_test.rb +5 -0
  114. data/test/vagrant/util/plain_logger_test.rb +17 -0
  115. data/test/vagrant/util/platform_test.rb +18 -0
  116. data/test/vagrant/util/{errors_test.rb → translator_test.rb} +25 -21
  117. data/test/vagrant/util_test.rb +12 -49
  118. data/test/vagrant/vm_test.rb +133 -11
  119. data/vagrant.gemspec +39 -15
  120. metadata +38 -14
  121. data/lib/vagrant/commands/down.rb +0 -16
  122. data/lib/vagrant/util/errors.rb +0 -36
  123. data/lib/vagrant/util/progress_meter.rb +0 -33
  124. data/test/vagrant/commands/down_test.rb +0 -17
  125. data/test/vagrant/util/progress_meter_test.rb +0 -33
data/lib/vagrant/util.rb CHANGED
@@ -1,51 +1,7 @@
1
1
  module Vagrant
2
2
  module Util
3
3
  def self.included(base)
4
- base.extend Vagrant::Util
5
- end
6
-
7
- def wrap_output
8
- puts "====================================================================="
9
- yield
10
- puts "====================================================================="
11
- end
12
-
13
- def error_and_exit(key, data = {})
14
- abort <<-error
15
- =====================================================================
16
- Vagrant experienced an error!
17
-
18
- #{Errors.error_string(key, data).chomp}
19
- =====================================================================
20
- error
21
- end
22
-
23
- def logger
24
- Logger.singleton_logger
25
- end
26
- end
27
-
28
- class Logger < ::Logger
29
- @@singleton_logger = nil
30
-
31
- class << self
32
- def singleton_logger
33
- # TODO: Buffer messages until config is loaded, then output them?
34
- if Vagrant.config.loaded?
35
- @@singleton_logger ||= Vagrant::Logger.new(Vagrant.config.vagrant.log_output)
36
- else
37
- Vagrant::Logger.new(nil)
38
- end
39
- end
40
-
41
- def reset_logger!
42
- @@singleton_logger = nil
43
- end
44
- end
45
-
46
- def format_message(level, time, progname, msg)
47
- "[#{level} #{time.strftime('%m-%d-%Y %X')}] Vagrant: #{msg}\n"
4
+ base.extend(self)
48
5
  end
49
6
  end
50
7
  end
51
-
@@ -0,0 +1,13 @@
1
+ module Vagrant
2
+ module Util
3
+ def error_and_exit(key, data = {})
4
+ abort <<-error
5
+ =====================================================================
6
+ Vagrant experienced an error!
7
+
8
+ #{Translator.t(key, data).chomp}
9
+ =====================================================================
10
+ error
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ module Vagrant
2
+ # Eases the processes of loading specific files then globbing
3
+ # the rest from a specified directory.
4
+ module GlobLoader
5
+ # Glob requires all ruby files in a directory, optionally loading select
6
+ # files initially (since others may depend on them).
7
+ #
8
+ # @param [String] dir The directory to glob
9
+ # @param [Array<String>] initial_files Initial files (relative to `dir`)
10
+ # to load
11
+ def self.glob_require(dir, initial_files=[])
12
+ initial_files.each do |file|
13
+ require File.expand_path(file, dir)
14
+ end
15
+
16
+ # Glob require the rest
17
+ Dir[File.join(dir, "**", "*.rb")].each do |f|
18
+ require File.expand_path(f)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ module Vagrant
2
+ module Util
3
+ def wrap_output
4
+ puts "====================================================================="
5
+ yield
6
+ puts "====================================================================="
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Vagrant
2
+ module Util
3
+ # Subclass of the standard library logger which has no format on
4
+ # its own. The message sent to the logger is outputted as-is.
5
+ class PlainLogger < ::Logger
6
+ def format_message(level, time, progname, msg)
7
+ # We do no formatting, its up to the user
8
+ "#{msg}\n"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -2,11 +2,16 @@ module Vagrant
2
2
  module Util
3
3
  # This class just contains some platform checking code.
4
4
  class Platform
5
- class <<self
5
+ class << self
6
6
  def leopard?
7
7
  RUBY_PLATFORM.downcase.include?("darwin9")
8
8
  end
9
+
10
+ def tar_file_options
11
+ # create, write only, fail if the file exists, binary if windows
12
+ File::WRONLY|File::EXCL|File::CREAT|(Mario::Platform.windows? ? File::BINARY : 0)
13
+ end
9
14
  end
10
15
  end
11
16
  end
12
- end
17
+ end
@@ -6,7 +6,7 @@ module Vagrant
6
6
  # This class is used to render the ERB templates in the
7
7
  # `GEM_ROOT/templates` directory.
8
8
  class TemplateRenderer < OpenStruct
9
- class <<self
9
+ class << self
10
10
  # Render a given template and return the result. This method optionally
11
11
  # takes a block which will be passed the renderer prior to rendering, which
12
12
  # allows the caller to set any view variables within the renderer itself.
@@ -80,4 +80,4 @@ module Vagrant
80
80
  end
81
81
  end
82
82
  end
83
- end
83
+ end
@@ -0,0 +1,35 @@
1
+ require 'yaml'
2
+
3
+ module Vagrant
4
+ module Util
5
+ # This class is responsible for reading static messages from the strings.yml file.
6
+ class Translator
7
+ @@strings = nil
8
+
9
+ class <<self
10
+ # Resets the internal strings hash to nil, forcing a reload on the next
11
+ # access of {strings}.
12
+ def reset!
13
+ @@strings = nil
14
+ end
15
+
16
+ # Returns the hash of strings from the error YML files. This only loads once,
17
+ # then returns a cached value until {reset!} is called.
18
+ #
19
+ # @return [Hash]
20
+ def strings
21
+ @@strings ||= YAML.load_file(File.join(PROJECT_ROOT, "templates", "strings.yml"))
22
+ end
23
+
24
+ # Renders the string with the given key and data parameters and returns
25
+ # the rendered result.
26
+ #
27
+ # @return [String]
28
+ def t(key, data = {})
29
+ template = strings[key] || "Unknown strings key: #{key}"
30
+ TemplateRenderer.render_string(template, data)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
data/lib/vagrant/vm.rb CHANGED
@@ -2,22 +2,87 @@ module Vagrant
2
2
  class VM < Actions::Runner
3
3
  include Vagrant::Util
4
4
 
5
- attr_accessor :env
5
+ attr_reader :env
6
+ attr_reader :system
7
+ attr_reader :name
6
8
  attr_accessor :vm
7
- attr_accessor :from
8
9
 
9
10
  class << self
10
11
  # Finds a virtual machine by a given UUID and either returns
11
12
  # a Vagrant::VM object or returns nil.
12
- def find(uuid)
13
+ def find(uuid, env=nil, vm_name=nil)
13
14
  vm = VirtualBox::VM.find(uuid)
14
- return nil if vm.nil?
15
- new(vm)
15
+ new(:vm => vm, :env => env, :vm_name => vm_name)
16
16
  end
17
17
  end
18
18
 
19
- def initialize(vm=nil)
20
- @vm = vm
19
+ def initialize(opts=nil)
20
+ defaults = {
21
+ :vm => nil,
22
+ :env => nil,
23
+ :vm_name => nil
24
+ }
25
+
26
+ opts = defaults.merge(opts || {})
27
+
28
+ @vm = opts[:vm]
29
+ @name = opts[:vm_name]
30
+
31
+ if !opts[:env].nil?
32
+ # We have an environment, so we create a new child environment
33
+ # specifically for this VM. This step will load any custom
34
+ # config and such.
35
+ @env = Vagrant::Environment.new({
36
+ :cwd => opts[:env].cwd,
37
+ :parent => opts[:env],
38
+ :vm_name => opts[:vm_name],
39
+ :vm => self
40
+ }).load!
41
+
42
+ # Load the associated system.
43
+ load_system!
44
+ end
45
+ end
46
+
47
+ # Loads the system associated with the VM. The system class is
48
+ # responsible for OS-specific functionality. More information
49
+ # can be found by reading the documentation on {Vagrant::Systems::Base}.
50
+ #
51
+ # **This method should never be called manually.**
52
+ def load_system!
53
+ system = env.config.vm.system
54
+
55
+ if system.is_a?(Class)
56
+ @system = system.new(self)
57
+ error_and_exit(:system_invalid_class, :system => system.to_s) unless @system.is_a?(Systems::Base)
58
+ elsif system.is_a?(Symbol)
59
+ # Hard-coded internal systems
60
+ mapping = { :linux => Systems::Linux }
61
+
62
+ if !mapping.has_key?(system)
63
+ error_and_exit(:system_unknown_type, :system => system.to_s)
64
+ return # for tests
65
+ end
66
+
67
+ @system = mapping[system].new(self)
68
+ else
69
+ error_and_exit(:system_unspecified)
70
+ end
71
+ end
72
+
73
+ # Access the {Vagrant::SSH} object associated with this VM.
74
+ # On the initial call, this will initialize the object. On
75
+ # subsequent calls it will reuse the existing object.
76
+ def ssh
77
+ @ssh ||= SSH.new(env)
78
+ end
79
+
80
+ # Returns a boolean true if the VM has been created, otherwise
81
+ # returns false.
82
+ #
83
+ # @return [Boolean]
84
+ def created?
85
+ !vm.nil?
21
86
  end
22
87
 
23
88
  def uuid
@@ -28,18 +93,34 @@ module Vagrant
28
93
  @vm = VirtualBox::VM.find(@vm.uuid)
29
94
  end
30
95
 
31
- def package(out_path, include_files=[])
32
- add_action(Actions::VM::Export)
33
- add_action(Actions::VM::Package, out_path, include_files)
96
+ def package(options=nil)
97
+ add_action(Actions::VM::Export, options)
98
+ add_action(Actions::VM::Package, options)
34
99
  execute!
35
100
  end
36
101
 
102
+ def up(options=nil)
103
+ execute!(Actions::VM::Up, options)
104
+ end
105
+
37
106
  def start
38
107
  return if @vm.running?
39
108
 
40
109
  execute!(Actions::VM::Start)
41
110
  end
42
111
 
112
+ def halt(options=nil)
113
+ execute!(Actions::VM::Halt, options)
114
+ end
115
+
116
+ def reload
117
+ execute!(Actions::VM::Reload)
118
+ end
119
+
120
+ def provision
121
+ execute!(Actions::VM::Provision)
122
+ end
123
+
43
124
  def destroy
44
125
  execute!(Actions::VM::Down)
45
126
  end
@@ -0,0 +1 @@
1
+ * * * * * <%= scriptname %> '<%= syncopts %>' '<%= guestpath %>' '<%= syncpath %>' '-prefer <%= guestpath %>'
@@ -0,0 +1,8 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant.
3
+ # Please do not modify any of these contents.
4
+ auto eth<%= net_options[:adapter] %>
5
+ iface eth<%= net_options[:adapter] %> inet static
6
+ address <%= net_options[:ip] %>
7
+ netmask <%= net_options[:netmask] %>
8
+ #VAGRANT-END
@@ -4,4 +4,5 @@ Host <%= host_key %>
4
4
  Port <%= ssh_port %>
5
5
  UserKnownHostsFile /dev/null
6
6
  StrictHostKeyChecking no
7
+ PasswordAuthentication no
7
8
  IdentityFile <%= private_key_path %>
@@ -3,6 +3,46 @@
3
3
  # In short, | means keep new lines, trim whitespace left and right
4
4
  # The |- does the above, but trims the new line at the end of all text
5
5
 
6
+ #---------------------------------------------------------------------
7
+ # CATEGORY: Status Messages
8
+ #---------------------------------------------------------------------
9
+ :status_listing: |-
10
+ This environment represents multiple VMs. The VMs will be listed
11
+ below with a short status. For more detailed information about a
12
+ VM, run `vagrant status NAME`.
13
+ :status_no_environment: |-
14
+ No vagrant environment detected. Run `vagrant init` to setup a Vagrantfile
15
+ in the current directory to get started with Vagrant.
16
+ :status_not_created: |-
17
+ The environment has not yet been created. Run `vagrant up` to create the
18
+ environment.
19
+ :status_created: |-
20
+ The environment has been created. The status of the current environment's
21
+ virtual machine is: "<%= vm_state %>"
22
+
23
+ <%= additional_message %>
24
+ :status_created_running: |-
25
+ To stop this VM, you can run `vagrant halt` to shut it down forcefully,
26
+ or you can run `vagrant suspend` to simply suspend the virtual machine.
27
+ In either case, to restart it again, simply run a `vagrant up`.
28
+ :status_created_saved: |-
29
+ To resume this VM, simply run `vagrant up`.
30
+ :status_created_powered_off: |-
31
+ To restart this VM, simply run `vagrant up`.
32
+ :status_global: |-
33
+ Below is a list of virtual machines which are currently created and were
34
+ created by a Vagrant environment. The path listed was the "last known path"
35
+ of the environment (it may have moved).
36
+
37
+ <%= entries.join("\n\n") %>
38
+ :status_global_entry: |-
39
+ Name: <%= vm.vm.name %>
40
+ Path: <%= data["path"] %>
41
+ Created at: <%= Time.at(data["created_at"]) %>
42
+
43
+ #---------------------------------------------------------------------
44
+ # CATEGORY: Error Messages
45
+ #---------------------------------------------------------------------
6
46
  :box_already_exists: |-
7
47
  This box appears to already exist! Please call `vagrant box remove <%= box_name %>`
8
48
  and then try to add it again.
@@ -38,6 +78,11 @@
38
78
  The validation key set for `config.chef.validation_key_path` does not exist! This
39
79
  file needs to exist so it can be uploaded to the virtual machine. It is
40
80
  currently set to "<%= Vagrant.config.chef.validation_key_path %>"
81
+ :chef_not_detected: |-
82
+ The `<%= binary %>` binary appears to not be in the PATH of the guest. This
83
+ could be because the PATH is not properly setup or perhaps chef is not
84
+ installed on this guest. Chef provisioning can not continue without
85
+ chef properly installed.
41
86
  :command_box_invalid: |-
42
87
  Please specify a valid action to take on the boxes, either
43
88
  `add` or `remove`. Examples:
@@ -45,9 +90,6 @@
45
90
  vagrant box add name uri
46
91
  vagrant box remove name
47
92
  vagrant box list
48
- :command_deprecation_down: |-
49
- `vagrant down` is now `vagrant destroy`. Please use that command instead. This
50
- warning will be removed in future versions.
51
93
  :dotfile_error: |-
52
94
  The dotfile which Vagrant uses to store the UUID of the project's
53
95
  virtual machine already exists and is not a file! The dotfile is
@@ -69,8 +111,18 @@
69
111
  already be created, but unfortunately this vagrant still appears to
70
112
  have no box! You can setup the environment by setting up your
71
113
  <%= Vagrant::Environment::ROOTFILE_NAME %> and running `vagrant up`
114
+ :network_not_found: |-
115
+ The specified host network could not be found: <%= name %>.
116
+ If the name specification is removed, Vagrant will create a new
117
+ host only network for you. Alternatively, please create the
118
+ specified network manually.
72
119
  :package_include_file_doesnt_exist: |-
73
120
  File specified to include: '<%= filename %>' does not exist!
121
+ :package_multivm: |-
122
+ Because this Vagrant environment represents multiple VMs, a
123
+ specific VM must be specified. This can be done by calling
124
+ `vagrant package NAME` where NAME is a valid VM represented by
125
+ your Vagrantfile.
74
126
  :package_requires_export: |-
75
127
  Package must be used in conjunction with export.
76
128
  :provisioner_invalid_class: |-
@@ -92,6 +144,11 @@
92
144
  permissions on the following file to 0600 and then try running this command again:
93
145
 
94
146
  <%= key_path %>
147
+ :ssh_bad_exit_status: |-
148
+ The following SSH command responded with a non-zero exit status.
149
+ Vagrant assumes that this means the command failed!
150
+
151
+ <%= command %>
95
152
  :ssh_unavailable_windows: |-
96
153
  `vagrant ssh` isn't available on the Windows platform. The
97
154
  vagrant.ppk file is available at
@@ -106,7 +163,37 @@
106
163
  For a more detailed guide please consult:
107
164
 
108
165
  http://vagrantup.com/docs/getting-started/windows.html
166
+ :ssh_multivm: |-
167
+ Because this Vagrant environment represents multiple VMs, a
168
+ specific VM must be specified. This can be done by calling
169
+ `vagrant ssh NAME` where NAME is a valid VM represented by
170
+ your Vagrantfile.
171
+
172
+ Alternatively, if you mark one of your VMs as 'primary,'
173
+ then Vagrant will default to that VM. This can be done by
174
+ specifying `:primary => true` when defining the VM. Example:
109
175
 
176
+ config.vm.define(:foo, :primary => true) do |config|
177
+ ...
178
+ end
179
+ :ssh_config_multivm: |-
180
+ Because this Vagrant environment represents multiple VMs, a
181
+ specific VM must be specified. This can be done by calling
182
+ `vagrant ssh-config NAME` where NAME is a valid VM represented by
183
+ your Vagrantfile.
184
+ :system_invalid_class: |-
185
+ The specified system does not inherit from `Vagrant::Systems::Base`. The
186
+ specified system class must inherit from this class.
187
+
188
+ The specified system class was: <%= system %>
189
+ :system_unknown_type: |-
190
+ The specified system type is unknown: <%= system %>. Please change this
191
+ to a proper value.
192
+ :system_unspecified: |-
193
+ A VM system type must be specified! This is done via the `config.vm.system`
194
+ configuration value. Please read the documentation online for more information.
195
+ :unknown_vm: |-
196
+ The specified VM could not be found: <%= vm %>
110
197
  :virtualbox_import_failure: |-
111
198
  The VM import failed! Try running `VBoxManage import` on the box file
112
199
  manually for more verbose error output.
@@ -133,6 +220,13 @@
133
220
  The vagrant virtual environment you are trying to suspend must be running to be suspended.
134
221
  :vm_not_suspended: |-
135
222
  The vagrant virtual environment you are trying to resume is not in a suspended state.
223
+ :vm_port_auto_empty: |-
224
+ Vagrant found a port collision for the specified port and virtual machine.
225
+ While this port was marked to be auto-corrected, the ports in the
226
+ auto-correction range are all also used.
227
+
228
+ VM: <%= vm_name %>
229
+ Forwarded port: <%= name %> (<%= options[:guestport] %> => <%= options[:hostport] %>)
136
230
  :vm_port_collision: |-
137
231
  Vagrant cannot forward the specified ports on this VM, since they
138
232
  would collide with another VirtualBox virtual machine's forwarded
@@ -163,3 +257,17 @@
163
257
 
164
258
  If the box was built for 0.2.x and contains a custom public key, perhaps
165
259
  the path to the private key is incorrect. Check your `config.ssh.private_key_path`.
260
+
261
+ #---------------------------------------------------------------------
262
+ # CATEGORY: Error Messages for Linux System
263
+ #---------------------------------------------------------------------
264
+ :network_not_debian: |-
265
+ Host only networking is only supported for Debian/Ubuntu by the built-in
266
+ "Linux" system. If you're using some other distro and want to implement
267
+ host only networking, please subclass the `Vagrant::Systems::Linux` class
268
+ and implement the `prepare_host_only_network` and `enable_host_only_network`
269
+ methods.
270
+
271
+ Otherwise, please report your distro and how to modify network interfaces
272
+ to the Vagrant mailing list or IRC and we'll probably be glad to add it
273
+ to the internal systems.