KentaaNL/capistrano-asg-rolling

View on GitHub
lib/capistrano/asg/rolling/ssh.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Capistrano
  module ASG
    module Rolling
      # SSH availability test.
      module SSH
        module_function

        def test?(ip_address, user, ssh_options)
          options = ssh_options || {}
          options[:timeout] = 10

          ::Net::SSH.start(ip_address, user, options) do |ssh|
            ssh.exec!('echo hello')
          end

          true
        rescue ::Net::SSH::ConnectionTimeout, ::Net::SSH::Proxy::ConnectError, Errno::ECONNREFUSED, Errno::ETIMEDOUT
          false
        end
      end
    end
  end
end