Class: LogStash::PipelineAction::Create

Inherits:
Base
  • Object
show all
Includes:
Util::Loggable
Defined in:
lib/logstash/pipeline_action/create.rb

Instance Method Summary collapse

Methods inherited from Base

#<=>, #inspect

Constructor Details

#initialize(pipeline_config, metric) ⇒ Create

We currently pass around the metric object again this is needed to correctly create a pipeline, in a future PR we could pass a factory to create the pipeline so we pass the logic to create the pipeline instead.



15
16
17
18
# File 'lib/logstash/pipeline_action/create.rb', line 15

def initialize(pipeline_config, metric)
  @pipeline_config = pipeline_config
  @metric = metric
end

Instance Method Details

#execute(agent, pipelines_registry) ⇒ Object

The execute assume that the thread safety access of the pipeline is managed by the caller.



34
35
36
37
38
39
40
41
# File 'lib/logstash/pipeline_action/create.rb', line 34

def execute(agent, pipelines_registry)
  pipeline_class = @pipeline_config.settings.get_value("pipeline.java_execution") ? LogStash::JavaPipeline : LogStash::Pipeline
  new_pipeline = pipeline_class.new(@pipeline_config, @metric, agent)
  success = pipelines_registry.create_pipeline(pipeline_id, new_pipeline) do
    new_pipeline.start # block until the pipeline is correctly started or crashed
  end
  LogStash::ConvergeResult::ActionResult.create(self, success)
end

#execution_priorityObject

Make sure we execution system pipeline like the monitoring before any user defined pipelines, system pipeline register hooks into the system that will be triggered by the user defined pipeline.



27
28
29
30
# File 'lib/logstash/pipeline_action/create.rb', line 27

def execution_priority
  default_priority = super
  @pipeline_config.system? ? default_priority * -1 : default_priority
end

#pipeline_idObject



20
21
22
# File 'lib/logstash/pipeline_action/create.rb', line 20

def pipeline_id
  @pipeline_config.pipeline_id
end

#to_sObject



43
44
45
# File 'lib/logstash/pipeline_action/create.rb', line 43

def to_s
  "PipelineAction::Create<#{pipeline_id}>"
end