Scope SSH errors to proper exception classes
This commit is contained in:
parent
e7f06d7fb7
commit
ae6e42dbbc
|
@ -12,7 +12,7 @@ module Vagrant
|
||||||
vm.ssh.execute do |ssh|
|
vm.ssh.execute do |ssh|
|
||||||
# Checks for the existence of chef binary and error if it
|
# Checks for the existence of chef binary and error if it
|
||||||
# doesn't exist.
|
# doesn't exist.
|
||||||
ssh.exec!("which #{binary}", :error_key => :chef_not_detected, :error_data => {:binary => binary})
|
ssh.exec!("which #{binary}", :error_class => ChefError, :_key => :chef_not_detected, :binary => binary)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ module Vagrant
|
||||||
# interface file.
|
# interface file.
|
||||||
vm.ssh.execute do |ssh|
|
vm.ssh.execute do |ssh|
|
||||||
# Verify debian/ubuntu
|
# Verify debian/ubuntu
|
||||||
ssh.exec!("cat /etc/debian_version", :error_key => :network_not_debian)
|
ssh.exec!("cat /etc/debian_version", :error_class => LinuxError, :_key => :network_not_debian)
|
||||||
|
|
||||||
# Clear out any previous entries
|
# Clear out any previous entries
|
||||||
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces")
|
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces")
|
||||||
|
|
|
@ -308,6 +308,11 @@ en:
|
||||||
running_client: "Running chef-client..."
|
running_client: "Running chef-client..."
|
||||||
running_solo: "Running chef-solo..."
|
running_solo: "Running chef-solo..."
|
||||||
invalid_provisioner: "Vagrant::Provisioners::Chef is not a valid provisioner! Use ChefSolo or ChefServer instead."
|
invalid_provisioner: "Vagrant::Provisioners::Chef is not a valid provisioner! Use ChefSolo or ChefServer instead."
|
||||||
|
not_detected: |-
|
||||||
|
The `%{binary}` binary appears to not be in the PATH of the guest. This
|
||||||
|
could be because the PATH is not properly setup or perhaps chef is not
|
||||||
|
installed on this guest. Chef provisioning can not continue without
|
||||||
|
chef properly installed.
|
||||||
server_url_required: |-
|
server_url_required: |-
|
||||||
Chef server provisioning requires that the `config.chef.chef_server_url` be set to the
|
Chef server provisioning requires that the `config.chef.chef_server_url` be set to the
|
||||||
URL of your chef server. Examples include "http://12.12.12.12:4000" and
|
URL of your chef server. Examples include "http://12.12.12.12:4000" and
|
||||||
|
@ -324,3 +329,13 @@ en:
|
||||||
linux:
|
linux:
|
||||||
attempting_halt: "Attempting graceful shutdown of linux..."
|
attempting_halt: "Attempting graceful shutdown of linux..."
|
||||||
mount_fail: "Failed to mount shared folders. `vboxsf` was not available."
|
mount_fail: "Failed to mount shared folders. `vboxsf` was not available."
|
||||||
|
network_not_debian: |-
|
||||||
|
Host only networking is only supported for Debian/Ubuntu by the built-in
|
||||||
|
"Linux" system. If you're using some other distro and want to implement
|
||||||
|
host only networking, please subclass the `Vagrant::Systems::Linux` class
|
||||||
|
and implement the `prepare_host_only_network` and `enable_host_only_network`
|
||||||
|
methods.
|
||||||
|
|
||||||
|
Otherwise, please report your distro and how to modify network interfaces
|
||||||
|
to the Vagrant mailing list or IRC and we'll probably be glad to add it
|
||||||
|
to the internal systems.
|
||||||
|
|
|
@ -7,33 +7,6 @@
|
||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
# CATEGORY: Error Messages
|
# CATEGORY: Error Messages
|
||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
:box_file_exists: |-
|
|
||||||
The specified output file for packaging already exists. Please move
|
|
||||||
the file or modify the output filename parameter then try to package
|
|
||||||
again.
|
|
||||||
|
|
||||||
Specified output file: <%= output_file %>
|
|
||||||
:box_remove_doesnt_exist: |-
|
|
||||||
The box you're attempting to remove does not exist!
|
|
||||||
:box_repackage_doesnt_exist: |-
|
|
||||||
The box you're attempting to repackage does not exist. Please check the
|
|
||||||
name you specified and try again. As a reminder, the repackage
|
|
||||||
command is for repackaging boxes which have been added through `vagrant box add`
|
|
||||||
but the box has been lost.
|
|
||||||
:chef_not_detected: |-
|
|
||||||
The `<%= binary %>` binary appears to not be in the PATH of the guest. This
|
|
||||||
could be because the PATH is not properly setup or perhaps chef is not
|
|
||||||
installed on this guest. Chef provisioning can not continue without
|
|
||||||
chef properly installed.
|
|
||||||
:command_box_invalid: |-
|
|
||||||
Please specify a valid action to take on the boxes, either
|
|
||||||
`add` or `remove`. Examples:
|
|
||||||
|
|
||||||
vagrant box add name uri
|
|
||||||
vagrant box remove name
|
|
||||||
vagrant box list
|
|
||||||
:package_requires_export: |-
|
|
||||||
Package must be used in conjunction with export.
|
|
||||||
:system_invalid_class: |-
|
:system_invalid_class: |-
|
||||||
The specified system does not inherit from `Vagrant::Systems::Base`. The
|
The specified system does not inherit from `Vagrant::Systems::Base`. The
|
||||||
specified system class must inherit from this class.
|
specified system class must inherit from this class.
|
||||||
|
@ -45,16 +18,3 @@
|
||||||
:system_unspecified: |-
|
:system_unspecified: |-
|
||||||
A VM system type must be specified! This is done via the `config.vm.system`
|
A VM system type must be specified! This is done via the `config.vm.system`
|
||||||
configuration value. Please read the documentation online for more information.
|
configuration value. Please read the documentation online for more information.
|
||||||
#---------------------------------------------------------------------
|
|
||||||
# CATEGORY: Error Messages for Linux System
|
|
||||||
#---------------------------------------------------------------------
|
|
||||||
:network_not_debian: |-
|
|
||||||
Host only networking is only supported for Debian/Ubuntu by the built-in
|
|
||||||
"Linux" system. If you're using some other distro and want to implement
|
|
||||||
host only networking, please subclass the `Vagrant::Systems::Linux` class
|
|
||||||
and implement the `prepare_host_only_network` and `enable_host_only_network`
|
|
||||||
methods.
|
|
||||||
|
|
||||||
Otherwise, please report your distro and how to modify network interfaces
|
|
||||||
to the Vagrant mailing list or IRC and we'll probably be glad to add it
|
|
||||||
to the internal systems.
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
||||||
|
|
||||||
should "verify binary exists" do
|
should "verify binary exists" do
|
||||||
binary = "foo"
|
binary = "foo"
|
||||||
@ssh.expects(:exec!).with("which #{binary}", :error_key => :chef_not_detected, :error_data => { :binary => binary }).once
|
@ssh.expects(:exec!).with("which #{binary}", anything)
|
||||||
@action.verify_binary(binary)
|
@action.verify_binary(binary)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue