class ChefApply::TargetHost::ConnectionFailure
Public Class Methods
new(original_exception, connection_opts)
click to toggle source
TODO: Currently this only handles sudo-related errors; we should also look at e.cause for underlying connection errors which are presently only visible in log files.
Calls superclass method
ChefApply::ErrorNoLogs::new
# File lib/chef_apply/target_host.rb, line 311 def initialize(original_exception, connection_opts) sudo_command = connection_opts[:sudo_command] init_params = # Comments below show the original_exception.reason values to check for instead of strings, # after train 1.4.12 is consumable. case original_exception.message # original_exception.reason when /Sudo requires a password/ # :sudo_password_required "CHEFTRN003" when /Wrong sudo password/ # :bad_sudo_password "CHEFTRN004" when /Can't find sudo command/, /No such file/, /command not found/ # :sudo_command_not_found # NOTE: In the /No such file/ case, reason will be nil - we still have # to check message text. (Or PR to train to handle this case) ["CHEFTRN005", sudo_command] # :sudo_command_not_found when /Sudo requires a TTY.*/ # :sudo_no_tty "CHEFTRN006" when /has no keys added/ "CHEFTRN007" else ["CHEFTRN999", original_exception.message] end super(*(Array(init_params).flatten)) end