Sha256: 554322dc7f52abe3d75259fdcaad094bec17d04ff685cc932870b9afc5c7a1b1

Contents?: true

Size: 1.24 KB

Versions: 9

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module Riddle
  class Configuration
    class DistributedIndex < Riddle::Configuration::Section
      def self.settings
        [
          :type, :local, :agent, :agent_blackhole,
          :agent_connect_timeout, :agent_query_timeout
        ]
      end

      attr_accessor :name, :local_indices, :remote_indices, :agent_blackhole,
        :agent_connect_timeout, :agent_query_timeout

      def initialize(name)
        @name             = name
        @local_indices    = []
        @remote_indices   = []
        @agent_blackhole  = []
      end

      def type
        "distributed"
      end

      def local
        self.local_indices
      end

      def agent
        agents = remote_indices.collect { |index| index.remote }.uniq
        agents.collect { |agent|
          agent + ":" + remote_indices.select { |index|
            index.remote == agent
          }.collect { |index| index.name }.join(",")
        }
      end

      def render
        raise ConfigurationError unless valid?

        (
          ["index #{name}", "{"] +
          settings_body +
          ["}", ""]
        ).join("\n")
      end

      def valid?
        @local_indices.length > 0 || @remote_indices.length > 0
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
riddle-2.4.3 lib/riddle/configuration/distributed_index.rb
riddle-2.4.2 lib/riddle/configuration/distributed_index.rb
riddle-2.4.1 lib/riddle/configuration/distributed_index.rb
riddle-2.4.0 lib/riddle/configuration/distributed_index.rb
riddle-2.3.2 lib/riddle/configuration/distributed_index.rb
riddle-2.3.1 lib/riddle/configuration/distributed_index.rb
riddle-2.3.0 lib/riddle/configuration/distributed_index.rb
riddle-2.2.2 lib/riddle/configuration/distributed_index.rb
riddle-2.2.1 lib/riddle/configuration/distributed_index.rb