Class: Naminori::Serf
- Inherits:
-
Object
- Object
- Naminori::Serf
- Defined in:
- lib/naminori/serf.rb
Constant Summary collapse
- @@event =
nil
Class Method Summary collapse
- .alive?(member) ⇒ Boolean
- .event_message ⇒ Object
- .failed? ⇒ Boolean
- .get_alive_member_by_role(role) ⇒ Object
- .gets ⇒ Object
- .join? ⇒ Boolean
- .leave? ⇒ Boolean
- .members ⇒ Object
- .parse_member(member) ⇒ Object
- .role?(role) ⇒ Boolean
- .target_role?(member, role) ⇒ Boolean
Class Method Details
.alive?(member) ⇒ Boolean
41 42 43 |
# File 'lib/naminori/serf.rb', line 41 def alive?(member) member[:status] == "alive" end |
.event_message ⇒ Object
10 11 12 |
# File 'lib/naminori/serf.rb', line 10 def puts "event:#{ENV['SERF_EVENT']} value:#{get}" end |
.failed? ⇒ 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 |
.gets ⇒ Object
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
14 15 16 |
# File 'lib/naminori/serf.rb', line 14 def join? ENV['SERF_EVENT'] == 'member-join' end |
.leave? ⇒ Boolean
18 19 20 |
# File 'lib/naminori/serf.rb', line 18 def leave? ENV['SERF_EVENT'] == 'member-leave' end |
.members ⇒ Object
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
26 27 28 |
# File 'lib/naminori/serf.rb', line 26 def role?(role) gets[:role] == role end |
.target_role?(member, role) ⇒ Boolean
37 38 39 |
# File 'lib/naminori/serf.rb', line 37 def target_role?(member, role) member[:role] == role end |