Class: LoadBalance
- Inherits:
-
Object
- Object
- LoadBalance
- Defined in:
- lib/load_balance/load_balance.rb
Class Attribute Summary collapse
-
.commands ⇒ Object
readonly
Returns the value of attribute commands.
Class Method Summary collapse
Class Attribute Details
.commands ⇒ Object (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 |