Class: Synapse::Rails::Consul
- Inherits:
-
Object
- Object
- Synapse::Rails::Consul
- Defined in:
- lib/synapse/rails/consul.rb
Class Attribute Summary collapse
-
.datacenter ⇒ Object
Returns the value of attribute datacenter.
Class Method Summary collapse
- .discover(service) ⇒ Object
- .host_resolver ⇒ Object
- .hostnames(params = {}) ⇒ Object
- .local_consul_resolver ⇒ Object
- .resolv(hostnames) ⇒ Object
- .resolv_and_check_resolver_with(hostname) ⇒ Object
- .use_resolvers(hostname) ⇒ Object
Class Attribute Details
.datacenter ⇒ Object
Returns the value of attribute datacenter.
7 8 9 |
# File 'lib/synapse/rails/consul.rb', line 7 def datacenter @datacenter end |
Class Method Details
.discover(service) ⇒ Object
15 16 17 |
# File 'lib/synapse/rails/consul.rb', line 15 def discover service resolv hostnames for:service end |
.host_resolver ⇒ Object
41 42 43 |
# File 'lib/synapse/rails/consul.rb', line 41 def host_resolver @host_resolver ||= Resolv::DNS.new end |
.hostnames(params = {}) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/synapse/rails/consul.rb', line 8 def hostnames params={} return unless params[:for] [ ("#{params[:for]}.service.#{datacenter}.consul" if datacenter), "#{params[:for]}.service.consul." ].compact end |
.local_consul_resolver ⇒ Object
44 45 46 |
# File 'lib/synapse/rails/consul.rb', line 44 def local_consul_resolver @local_consul_resolver ||= Resolv::DNS.new(nameserver_port:[['127.0.0.1',8600]]) end |
.resolv(hostnames) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/synapse/rails/consul.rb', line 18 def resolv hostnames @resolvers ||= Set.new hostnames.collect do |hostname| if @resolvers.empty? resolv_and_check_resolver_with hostname else use_resolvers hostname end end.flatten end |
.resolv_and_check_resolver_with(hostname) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/synapse/rails/consul.rb', line 33 def resolv_and_check_resolver_with hostname [host_resolver,local_consul_resolver].each do |resolver| addresses = resolver.getaddresses hostname next if addresses.empty? @resolvers << resolver return addresses end end |
.use_resolvers(hostname) ⇒ Object
28 29 30 31 32 |
# File 'lib/synapse/rails/consul.rb', line 28 def use_resolvers hostname @resolvers.collect do |resolver| resolver.getaddresses hostname end end |