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 22 23 24 25 26 27 28 |
# File 'lib/load_balance/load_balance.rb', line 6 def build_commands(isps) @commands = [] alive_isps = [] isps.each do |isp| if is_alive(isp) alive_isps << isp IspUnityLog.info("#{isp.name} is online") else IspUnityLog.info("#{isp.name} is offline") end end if alive_isps.size == 1 IspUnityLog.info("Only 1 isp is alive") @commands << "/sbin/ip route replace default via #{alive_isps[0].gateway} dev #{alive_isps[0].interface}" else IspUnityLog.info("Multiple isps are alive") @commands << "/sbin/ip route replace equalize default " 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
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/load_balance/load_balance.rb', line 30 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") IspUnityLog.info("100% packet loss for #{isp.name}") isp.online = false else IspUnityLog.info("0% packet loss for #{isp.name}") isp.online = true end return isp.online end |