Sha256: f1e6697ada9bf221819abdd7f522e6f3df115ad673f7106ec1366723cecd6f24

Contents?: true

Size: 743 Bytes

Versions: 15

Compression:

Stored size: 743 Bytes

Contents

require 'open-uri'
require 'json'
require 'dply/error'

module Dplyr
  class Consul

    def hosts(app_name, service: "app")
      uri = "http://127.0.0.1:8500/v1/catalog/service/#{service}?tag=#{app_name}"
      response = JSON.parse(open(uri).read)
      hosts = []
      response.each do |i|
        host = {}
        metadata_tag = i["ServiceTags"].find {|t| t =~ /\Ametadata:/}
        metadata = metadata_tag ? JSON.parse(metadata_tag.partition(":")[2]) : {}
        host[:user] = metadata["user"]
        host[:dir] = metadata["dir"]
        host[:addr] = i["Address"] 
        host[:id] = i["Node"]
        hosts << host
      end
      hosts
    rescue
      raise ::Dply::Error, "failed to load hosts from consul"
    end

  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
dply-0.2.19 lib/dplyr/consul.rb
dply-0.2.18 lib/dplyr/consul.rb
dply-0.2.17 lib/dplyr/consul.rb
dply-0.2.16 lib/dplyr/consul.rb
dply-0.2.15 lib/dplyr/consul.rb
dply-0.2.14 lib/dplyr/consul.rb
dply-0.2.13 lib/dplyr/consul.rb
dply-0.2.11 lib/dplyr/consul.rb
dply-0.2.10 lib/dplyr/consul.rb
dply-0.2.9 lib/dplyr/consul.rb
dply-0.2.8 lib/dplyr/consul.rb
dply-0.2.7 lib/dplyr/consul.rb
dply-0.2.6 lib/dplyr/consul.rb
dply-0.2.5 lib/dplyr/consul.rb
dply-0.2.4 lib/dplyr/consul.rb