class Naminori::Serf

Public Class Methods

alive?(member) click to toggle source
# File lib/naminori/serf.rb, line 44
def alive?(member)
  member[:status] == "alive"
end
event_message() click to toggle source
# File lib/naminori/serf.rb, line 13
def event_message
  puts "event:#{ENV['SERF_EVENT']} value:#{gets}" if gets
end
failed?() click to toggle source
# File lib/naminori/serf.rb, line 25
def failed?
  ENV['SERF_EVENT'] == 'member-failed'
end
get_alive_member_by_role(role) click to toggle source
# File lib/naminori/serf.rb, line 33
def get_alive_member_by_role(role)
  members.map do |line|
    member = parse_member(line)
    target_role?(member, role) && alive?(member) ? member : nil
  end.compact if members
end
gets() click to toggle source
# File lib/naminori/serf.rb, line 7
def gets
  @@event ||= STDIN.gets.chomp.match(/(?<node>.+?)\t(?<ip>.+?)\t(?<role>.+?)\t/)
rescue
  @@event
end
join?() click to toggle source
# File lib/naminori/serf.rb, line 17
def join?
  ENV['SERF_EVENT'] == 'member-join'
end
leave?() click to toggle source
# File lib/naminori/serf.rb, line 21
def leave?
  ENV['SERF_EVENT'] == 'member-leave'
end
members() click to toggle source
# File lib/naminori/serf.rb, line 48
def members
  `serf members`.split("\n")
end
parse_member(member) click to toggle source
# File lib/naminori/serf.rb, line 52
def parse_member(member)
  member.match(/(?<node>.+?)\s+(?<ip>.+?):[0-9]+\s+(?<status>\w+)+\s+role=(?<role>\w+)/)
end
role?(role) click to toggle source
# File lib/naminori/serf.rb, line 29
def role?(role)
  gets && gets[:role] == role
end
target_role?(member, role) click to toggle source
# File lib/naminori/serf.rb, line 40
def target_role?(member, role)
  member[:role] == role
end