Improved logging and such around SSH
This commit is contained in:
parent
bc7237130d
commit
a72cfdbc00
|
@ -1,3 +1,5 @@
|
|||
require "log4r"
|
||||
|
||||
module Vagrant
|
||||
module Util
|
||||
module Retryable
|
||||
|
@ -8,12 +10,16 @@ module Vagrant
|
|||
# This code is adapted slightly from the following blog post:
|
||||
# http://blog.codefront.net/2008/01/14/retrying-code-blocks-in-ruby-on-exceptions-whatever/
|
||||
def retryable(opts=nil)
|
||||
logger = nil
|
||||
opts = { :tries => 1, :on => Exception }.merge(opts || {})
|
||||
|
||||
begin
|
||||
return yield
|
||||
rescue *opts[:on]
|
||||
rescue *opts[:on] => e
|
||||
if (opts[:tries] -= 1) > 0
|
||||
logger = Log4r::Logger.new("vagrant::util::retryable")
|
||||
logger.info("Retryable exception raised: #{e.inspect}")
|
||||
|
||||
sleep opts[:sleep].to_f if opts[:sleep]
|
||||
retry
|
||||
end
|
||||
|
|
|
@ -163,8 +163,12 @@ module VagrantPlugins
|
|||
Timeout::Error
|
||||
]
|
||||
|
||||
connection = retryable(:tries => @machine.config.ssh.max_tries, :on => exceptions) do
|
||||
Timeout.timeout(@machine.config.ssh.timeout) do
|
||||
retries = @machine.config.ssh.max_tries
|
||||
timeout = @machine.config.ssh.timeout
|
||||
|
||||
@logger.info("Attempting SSH. Retries: #{retries}. Timeout: #{timeout}")
|
||||
connection = retryable(:tries => retries, :on => exceptions) do
|
||||
Timeout.timeout(timeout) do
|
||||
@logger.info("Attempting to connect to SSH: #{ssh_info[:host]}:#{ssh_info[:port]}")
|
||||
Net::SSH.start(ssh_info[:host], ssh_info[:username], opts)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue