class Indocker::ServerPools::DeployServerPool

Public Class Methods

new(configuration:, logger:) click to toggle source
# File lib/indocker/server_pools/deploy_server_pool.rb, line 2
def initialize(configuration:, logger:)
  @logger = logger
  @configuration = configuration
  @connections = []
  @semaphore = Mutex.new
end

Public Instance Methods

close_sessions() click to toggle source
# File lib/indocker/server_pools/deploy_server_pool.rb, line 38
def close_sessions
  @connections.each(&:close_session)
end
create_connection!(server) click to toggle source
# File lib/indocker/server_pools/deploy_server_pool.rb, line 9
def create_connection!(server)
  connection = Indocker::ServerPools::DeployServerConnection.new(
    logger: @logger,
    configuration: @configuration,
    server: server,
  )
  connection.create_session!
  connection
end
each(&proc) click to toggle source
# File lib/indocker/server_pools/deploy_server_pool.rb, line 34
def each(&proc)
  @connections.each(&proc)
end
find_or_create_connection!(server) click to toggle source
# File lib/indocker/server_pools/deploy_server_pool.rb, line 19
def find_or_create_connection!(server)
  @semaphore.synchronize do
    connection = @connections.detect do |connection|
      connection.server.host == server.host &&
      connection.server.port == server.port &&
      connection.server.user == server.user
    end
    if connection.nil?
      connection = create_connection!(server)
      @connections.push(connection)
    end
    connection
  end
end