Sha256: f3b956ea29e51597cf688b381247852d7f428867bd4f7cfdf02cacb0982e574b

Contents?: true

Size: 846 Bytes

Versions: 3

Compression:

Stored size: 846 Bytes

Contents

require 'diplomat'

module Skalera
  module Services
    class Controllers
      def self.for(controller_uuid)
        controllers = Diplomat::Kv.get("controllers/#{controller_uuid}", recurse: true)
        host = extract(controllers, 'address')
        port = extract(controllers, 'port')
        [host['address'], port['port']]
      end

      def self.extract(controllers, field)
        result = {}
        controllers.select { |c| c[:key].match(%r{/#{field}}) }.each do |hash|
          host = hash[:key].sub(%r{controllers/}, '').split('/')[1]
          result[host] = hash[:value]
        end
        result
      end

      def self.add(controller_uuid, host, port)
        Diplomat::Kv.put("controllers/#{controller_uuid}/address", host)
        Diplomat::Kv.put("controllers/#{controller_uuid}/port", port)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
skalera-services-0.2.3 lib/skalera/services/controllers.rb
skalera-services-0.2.2 lib/skalera/services/controllers.rb
skalera-services-0.2.1 lib/skalera/services/controllers.rb