Class: LoadBalance

Inherits:
Object
  • Object
show all
Defined in:
lib/load_balance/load_balance.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.commandsObject (readonly)

Returns the value of attribute commands.



4
5
6
# File 'lib/load_balance/load_balance.rb', line 4

def commands
  @commands
end

Class Method Details

.build_commands(isps) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/load_balance/load_balance.rb', line 6

def build_commands(isps)
  @commands = []
  alive_isps = []
  isps.each do |isp|
	 alive_isps << isp if is_alive(isp) 
  end
  if alive_isps.size == 1
    @commands << "/sbin/ip route replace default via #{alive_isps[0].gateway} dev #{alive_isps[0].interface}" 
  else
    @commands << "/sbin/ip route replace default scope global "
    alive_isps.each do |isp|
      @commands[0] += " nexthop via #{isp.gateway} dev #{isp.interface} weight #{isp.weight} "  
    end
  end
  return @commands[0]
end

.is_alive(isp) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/load_balance/load_balance.rb', line 23

def is_alive(isp)
  return true if ENV['GEM_ENV']=='test'
  return false unless isp.enabled == 'true'
  result = `/bin/ping -c 3 -I #{isp.ip_address} #{$ip_cluster.sample}`
  if result.match("100% packet loss")
      return false
  else
      return true
  end
end