From 5b0b57e5daa5c8f22713c19544aa4d5e5f52b001 Mon Sep 17 00:00:00 2001 From: Mashhur Date: Mon, 3 Feb 2025 15:18:25 -0800 Subject: [PATCH] Remove set_security_user processor configs to make all unsupported processors same behavior. # Conflicts: # src/main/java/co/elastic/logstash/filters/elasticintegration/ingest/SetSecurityUserProcessor.java --- spec/integration/elastic_integration_spec.rb | 57 +++++++++++++++++++ .../EventProcessorBuilder.java | 3 - .../ingest/SetSecurityUserProcessor.java | 48 ---------------- 3 files changed, 57 insertions(+), 51 deletions(-) diff --git a/spec/integration/elastic_integration_spec.rb b/spec/integration/elastic_integration_spec.rb index 6fb89b26..a68d0fdf 100644 --- a/spec/integration/elastic_integration_spec.rb +++ b/spec/integration/elastic_integration_spec.rb @@ -1481,4 +1481,61 @@ def path; @path; end end end + context '#unsupported processors' do + let(:settings) { + super().merge( + "ssl_certificate_authorities" => "spec/fixtures/test_certs/root.crt" + ) + } + + unsupported_processors = { + 'set_security_user' => + '{ + "set_security_user": { + "field": "user" + } + }', + 'inference' => + '{ + "inference": { + "model_id": "model_deployment_for_inference", + "input_output": [{"input_field": "content", "output_field": "content_embedding"}] + } + }', + 'enrich' => + '{ + "enrich": { + "policy_name": "enrich_policy_name", + "field": "source_field", + "target_field": "target_field" + } + }' + } + + before(:each) do + subject.register + end + + shared_examples 'processor failure' do + it 'adds failure tag to metadata' do + events = [LogStash::Event.new( + "message" => "55.3.244.1 GET /index.html 15824 0.043", + "data_stream" => data_stream + )] + + subject.multi_filter(events).each do |event| + failure_reason = event.get("[@metadata][_ingest_pipeline_failure]") + expect(failure_reason).to be_truthy + end + end + end + + unsupported_processors.each do |name, config| + describe "with #{name} processor" do + let(:pipeline_processor) { config } + include_examples 'processor failure' + end + end + end + end \ No newline at end of file diff --git a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java index 84552d3c..8c93223f 100644 --- a/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java +++ b/src/main/java/co/elastic/logstash/filters/elasticintegration/EventProcessorBuilder.java @@ -9,7 +9,6 @@ import co.elastic.logstash.api.Event; import co.elastic.logstash.api.FilterMatchListener; import co.elastic.logstash.filters.elasticintegration.ingest.RedactPlugin; -import co.elastic.logstash.filters.elasticintegration.ingest.SetSecurityUserProcessor; import co.elastic.logstash.filters.elasticintegration.ingest.SingleProcessorIngestPlugin; import co.elastic.logstash.filters.elasticintegration.resolver.CacheReloadService; import co.elastic.logstash.filters.elasticintegration.resolver.CachingResolver; @@ -33,7 +32,6 @@ import org.elasticsearch.painless.PainlessPlugin; import org.elasticsearch.painless.PainlessScriptEngine; import org.elasticsearch.painless.spi.PainlessExtension; -import org.elasticsearch.painless.spi.Whitelist; import org.elasticsearch.plugins.ExtensiblePlugin; import org.elasticsearch.plugins.IngestPlugin; import org.elasticsearch.script.IngestConditionalScript; @@ -128,7 +126,6 @@ public EventProcessorBuilder() { org.elasticsearch.ingest.common.UriPartsProcessor.TYPE)); this.addProcessorsFromPlugin(IngestUserAgentPlugin::new); this.addProcessorsFromPlugin(RedactPlugin::new); - this.addProcessor(SetSecurityUserProcessor.TYPE, SetSecurityUserProcessor.Factory::new); } // event -> pipeline name diff --git a/src/main/java/co/elastic/logstash/filters/elasticintegration/ingest/SetSecurityUserProcessor.java b/src/main/java/co/elastic/logstash/filters/elasticintegration/ingest/SetSecurityUserProcessor.java index 4cf31a6b..e69de29b 100644 --- a/src/main/java/co/elastic/logstash/filters/elasticintegration/ingest/SetSecurityUserProcessor.java +++ b/src/main/java/co/elastic/logstash/filters/elasticintegration/ingest/SetSecurityUserProcessor.java @@ -1,48 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. - * under one or more contributor license agreements. Licensed under the - * Elastic License 2.0; you may not use this file except in compliance - * with the Elastic License 2.0. - */ -package co.elastic.logstash.filters.elasticintegration.ingest; - -import org.elasticsearch.cluster.metadata.ProjectId; -import org.elasticsearch.ingest.AbstractProcessor; -import org.elasticsearch.ingest.IngestDocument; -import org.elasticsearch.ingest.Processor; - -import java.util.Map; - -public class SetSecurityUserProcessor extends AbstractProcessor { - - public static final String TYPE = "set_security_user"; - - private SetSecurityUserProcessor(String tag, String description) { - super(tag, description); - } - - - @Override - public IngestDocument execute(IngestDocument ingestDocument) throws Exception { - // within Logstash, the set_security_user processor is a no-op - return ingestDocument; - } - - @Override - public String getType() { - return TYPE; - } - - public static final class Factory implements Processor.Factory { - - @Override - public SetSecurityUserProcessor create(Map registry, String processorTag, - String description, Map config, ProjectId projectId) { - String[] supportedConfigs = {"field", "properties"}; - for (String cfg : supportedConfigs) { - config.remove(cfg); - } - return new SetSecurityUserProcessor(processorTag, description); - } - } -}