Class: Naminori::Serf

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

Constant Summary collapse

@@event =
nil

Class Method Summary collapse

Class Method Details

.alive?(member) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/naminori/serf.rb', line 41

def alive?(member)
  member[:status] == "alive"
end

.event_messageObject



10
11
12
# File 'lib/naminori/serf.rb', line 10

def event_message
  puts "event:#{ENV['SERF_EVENT']} value:#{get}"
end

.failed?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/naminori/serf.rb', line 22

def failed?
  ENV['SERF_EVENT'] == 'member-failed'
end

.get_alive_member_by_role(role) ⇒ Object



30
31
32
33
34
35
# File 'lib/naminori/serf.rb', line 30

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

.getsObject



6
7
8
# File 'lib/naminori/serf.rb', line 6

def gets
  @@event ||= STDIN.gets.chomp.match(/(?<node>.+?)\t(?<ip>.+?)\t(?<role>.+?)\t/)
end

.join?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/naminori/serf.rb', line 14

def join?
  ENV['SERF_EVENT'] == 'member-join'
end

.leave?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/naminori/serf.rb', line 18

def leave?
  ENV['SERF_EVENT'] == 'member-leave'
end

.membersObject



45
46
47
# File 'lib/naminori/serf.rb', line 45

def members
  `serf members`.split("\n")
end

.parse_member(member) ⇒ Object



49
50
51
# File 'lib/naminori/serf.rb', line 49

def parse_member(member)
  member.match(/(?<node>.+?)\s+(?<ip>.+?):[0-9]+\s+(?<status>\w+)+\s+role=(?<role>\w+)/)
end

.role?(role) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/naminori/serf.rb', line 26

def role?(role)
  gets[:role] == role
end

.target_role?(member, role) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/naminori/serf.rb', line 37

def target_role?(member, role)
  member[:role] == role
end