class RabbitMQ::Cluster::Server
Attributes
client[RW]
etcd[RW]
Public Class Methods
build()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 15 def self.build new( ::RabbitMQManager.new(ENV['RABBITMQ_MNGR'] || 'http://guest:guest@localhost:15672'), ::RabbitMQ::Cluster::Etcd.build ) end
new(client, etcd)
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 22 def initialize(client, etcd) self.client = client self.etcd = etcd end
Public Instance Methods
healthcheck()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 36 def healthcheck register if up? end
name()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 40 def name @_name ||= client.overview["node"] end
prestart()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 27 def prestart setup_erlang_cookie end
synchronize()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 31 def synchronize join_cluster remove_stopped_nodes if stopped_nodes.any? end
up?()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 44 def up? client.aliveness_test('/')['status'] == 'ok' rescue Faraday::ConnectionFailed false end
Private Instance Methods
clustered?()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 86 def clustered? client.nodes.size > 1 end
join_cluster()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 76 def join_cluster if up? && !clustered? && nodes_to_join.any? system("rabbitmqctl stop_app") system("rabbitmqctl join_cluster #{nodes_to_join.first}") system("rabbitmqctl start_app") sleep 1 until up? register end end
nodes(running)
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 72 def nodes(running) client.nodes.select { |n| n["running"] == running }.map { |n| n["name"] }.sort end
nodes_to_join()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 90 def nodes_to_join etcd.nodes - [name] end
register()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 52 def register etcd.register(name) end
remove_stopped_nodes()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 64 def remove_stopped_nodes etcd.acquire_lock do stopped_nodes.each do |node_name| system("rabbitmqctl forget_cluster_node #{node_name}") end end end
running_nodes()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 56 def running_nodes nodes(true) end
stopped_nodes()
click to toggle source
# File lib/rabbitmq/cluster/server.rb, line 60 def stopped_nodes nodes(false) end