Class: HAProxyCluster::Backend

Inherits:
StatsContainer show all
Defined in:
lib/haproxy_cluster/backend.rb

Constant Summary collapse

TYPE_ID =
1

Instance Attribute Summary collapse

Attributes inherited from StatsContainer

#stats

Instance Method Summary collapse

Methods inherited from StatsContainer

#method_missing, #monitor

Constructor Details

#initialize(stats, member = nil) ⇒ Backend

Returns a new instance of Backend.



8
9
10
11
12
# File 'lib/haproxy_cluster/backend.rb', line 8

def initialize(stats,member = nil)
  @member = member
  @servers = Hash.new { |h,k| h[k] = Server.new({},@member) }
  super stats
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class HAProxyCluster::StatsContainer

Instance Attribute Details

#memberObject (readonly)

Returns the value of attribute member.



15
16
17
# File 'lib/haproxy_cluster/backend.rb', line 15

def member
  @member
end

#serversObject

Returns the value of attribute servers.



14
15
16
# File 'lib/haproxy_cluster/backend.rb', line 14

def servers
  @servers
end

Instance Method Details

#nameObject



17
18
19
# File 'lib/haproxy_cluster/backend.rb', line 17

def name
  self.pxname
end

#rolling_restartable?(enough = 80) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/haproxy_cluster/backend.rb', line 21

def rolling_restartable? (enough = 80)
  up_servers = @servers.map{ |name,server| s.ok? }.count
  if up_servers == 0
    @member.log.warn { "All servers are down; can't hurt!" }
    return true
  elsif Rational(up_servers,@servers.count) >= Rational(enough,100)
    @member.log.info { "#{up_servers}/#{@servers.count} is at least #{enough}%!" }
    return true
  else
    @member.log.warn { "Insufficient capacity to handle a rolling restart at this time." }
    return false
  end
end