Sha256: b0bfcae4a68bf113cf9ad7983db6ab192876780407d4ec3ade2c710fd0422d15

Contents?: true

Size: 1.38 KB

Versions: 4

Compression:

Stored size: 1.38 KB

Contents

module Dryad
  module Consul
    class ServiceRegistry
      class << self
        def register(service)
          service.to_registers.each do |register|
            ::Diplomat::Service.register(register)
          end
        end

        def deregister(service)
          service.portals.each do |portal|
            ::Diplomat::Service.deregister(portal.id)
          end
        end

        def service_instances(name, schema, groups)
          all_services = ::Diplomat::Health.service(Dryad::Core::Service.full_name(schema, name))
          service_instances = []
          all_services.each do |service|
            service_hash = service.Service
            if !service_hash["Meta"].nil? && service_hash["Meta"].has_key?("group") &&
              groups.include?(service_hash["Meta"]["group"])
              service_instances << service_hash
            else
              groups.each do |group|
                if service_hash["Tags"].include?("group = \"#{group}\"")
                  service_instances << service_hash
                  break
                end
              end
            end
          end
          service_instances.map do |service|
            Dryad::Core::ServiceInstance.new(
              name: name,
              schema: schema,
              address: service["Address"],
              port: service["Port"]
            )
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dryad-consul-0.3.4 lib/dryad/consul/service_registry.rb
dryad-consul-0.3.2 lib/dryad/consul/service_registry.rb
dryad-consul-0.3.0 lib/dryad/consul/service_registry.rb
dryad-consul-0.2.7 lib/dryad/consul/service_registry.rb