Class: Indocker::ServerPools::BuildServerPool

Inherits:
Object
  • Object
show all
Defined in:
lib/indocker/server_pools/build_server_pool.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration:, logger:) ⇒ BuildServerPool

Returns a new instance of BuildServerPool.



2
3
4
5
6
7
8
9
10
11
12
13
# File 'lib/indocker/server_pools/build_server_pool.rb', line 2

def initialize(configuration:, logger:)
  @logger = logger
  @configuration = configuration

  @connections = configuration.build_servers.map do |build_server|
    Indocker::ServerPools::BuildServerConnection.new(
      logger: @logger,
      configuration: configuration,
      server: build_server,
    )
  end
end

Instance Method Details

#close_sessionsObject



35
36
37
38
39
# File 'lib/indocker/server_pools/build_server_pool.rb', line 35

def close_sessions
  @connections.each(&:close_session)
rescue => e
  @logger.error("error during session close: #{e.inspect}")
end

#create_sessions!Object



15
16
17
# File 'lib/indocker/server_pools/build_server_pool.rb', line 15

def create_sessions!
  @connections.each(&:create_session!)
end

#each(&proc) ⇒ Object



31
32
33
# File 'lib/indocker/server_pools/build_server_pool.rb', line 31

def each(&proc)
  @connections.each(&proc)
end

#getObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/indocker/server_pools/build_server_pool.rb', line 19

def get
  context = nil

  loop do
    context = @connections.detect {|c| !c.busy?}
    sleep(0.1)
    break if context
  end

  context
end