Improve OutputDelegator public API

This minimizes the OutputDelegator public API

Fixes https://github.com/elastic/logstash/issues/5813

Fixes #5827
This commit is contained in:
Andrew Cholakian 2016-08-24 14:49:32 -05:00
parent bfac549241
commit 934138531c

View file

@ -5,19 +5,21 @@ require "logstash/output_delegator_strategies/single"
require "logstash/output_delegator_strategies/legacy"
module LogStash class OutputDelegator
attr_reader :metric, :metric_events, :strategy, :namespaced_metric, :metric_events , :plugin_args, :strategy_registry
attr_reader :metric, :metric_events, :strategy, :namespaced_metric, :metric_events, :id
def initialize(logger, output_class, metric, strategy_registry, plugin_args)
@logger = logger
@output_class = output_class
@metric = metric
@plugin_args = plugin_args
@strategy_registry = strategy_registry
@id = plugin_args["id"]
raise ArgumentError, "No strategy registry specified" unless strategy_registry
raise ArgumentError, "No ID specified! Got args #{plugin_args}" unless id
build_strategy!
@strategy = strategy_registry.
class_for(self.concurrency).
new(@logger, @output_class, @metric, plugin_args)
@namespaced_metric = metric.namespace(id.to_sym)
@namespaced_metric.gauge(:name, config_name)
@metric_events = @namespaced_metric.namespace(:events)
@ -31,16 +33,6 @@ module LogStash class OutputDelegator
@output_class.concurrency
end
def build_strategy!
@strategy = strategy_registry.
class_for(self.concurrency).
new(@logger, @output_class, @metric, @plugin_args)
end
def id
@plugin_args["id"]
end
def register
@strategy.register
end