You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/11/26 11:32:40 UTC

[camel] branch main updated: camel-splunk-hec - Add endpoint url suffix configuration to enable options and raw transports (#8774)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new f0a7bf34258 camel-splunk-hec - Add endpoint url suffix configuration to enable options and raw transports (#8774)
f0a7bf34258 is described below

commit f0a7bf34258740d1cf66af9efbc9c78f86fa0024
Author: Martin Kremers <in...@martinkremers.de>
AuthorDate: Sat Nov 26 12:32:32 2022 +0100

    camel-splunk-hec - Add endpoint url suffix configuration to enable options and raw transports (#8774)
    
    Signed-off-by: Martin Kremers <in...@martinkremers.de>
---
 .../splunkhec/SplunkHECEndpointConfigurer.java     |  6 ++++++
 .../splunkhec/SplunkHECEndpointUriFactory.java     |  3 ++-
 .../camel/component/splunkhec/splunk-hec.json      |  1 +
 .../splunkhec/SplunkHECConfiguration.java          | 24 ++++++++++++++++++++++
 .../component/splunkhec/SplunkHECProducer.java     |  4 ++--
 .../splunkhec/SplunkHECConfigurationTest.java      |  6 ++++++
 6 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointConfigurer.java b/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointConfigurer.java
index 24bfee9ad62..b87621b0bff 100644
--- a/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointConfigurer.java
+++ b/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointConfigurer.java
@@ -35,6 +35,8 @@ public class SplunkHECEndpointConfigurer extends PropertyConfigurerSupport imple
         case "source": target.getConfiguration().setSource(property(camelContext, java.lang.String.class, value)); return true;
         case "sourcetype":
         case "sourceType": target.getConfiguration().setSourceType(property(camelContext, java.lang.String.class, value)); return true;
+        case "splunkendpoint":
+        case "splunkEndpoint": target.getConfiguration().setSplunkEndpoint(property(camelContext, java.lang.String.class, value)); return true;
         case "time": target.getConfiguration().setTime(property(camelContext, java.lang.Long.class, value)); return true;
         default: return false;
         }
@@ -57,6 +59,8 @@ public class SplunkHECEndpointConfigurer extends PropertyConfigurerSupport imple
         case "source": return java.lang.String.class;
         case "sourcetype":
         case "sourceType": return java.lang.String.class;
+        case "splunkendpoint":
+        case "splunkEndpoint": return java.lang.String.class;
         case "time": return java.lang.Long.class;
         default: return null;
         }
@@ -80,6 +84,8 @@ public class SplunkHECEndpointConfigurer extends PropertyConfigurerSupport imple
         case "source": return target.getConfiguration().getSource();
         case "sourcetype":
         case "sourceType": return target.getConfiguration().getSourceType();
+        case "splunkendpoint":
+        case "splunkEndpoint": return target.getConfiguration().getSplunkEndpoint();
         case "time": return target.getConfiguration().getTime();
         default: return null;
         }
diff --git a/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointUriFactory.java b/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointUriFactory.java
index 6f56ca456b4..071689b1ac5 100644
--- a/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointUriFactory.java
+++ b/components/camel-splunk-hec/src/generated/java/org/apache/camel/component/splunkhec/SplunkHECEndpointUriFactory.java
@@ -21,7 +21,7 @@ public class SplunkHECEndpointUriFactory extends org.apache.camel.support.compon
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(12);
+        Set<String> props = new HashSet<>(13);
         props.add("bodyOnly");
         props.add("headersOnly");
         props.add("host");
@@ -31,6 +31,7 @@ public class SplunkHECEndpointUriFactory extends org.apache.camel.support.compon
         props.add("skipTlsVerify");
         props.add("source");
         props.add("sourceType");
+        props.add("splunkEndpoint");
         props.add("splunkURL");
         props.add("time");
         props.add("token");
diff --git a/components/camel-splunk-hec/src/generated/resources/org/apache/camel/component/splunkhec/splunk-hec.json b/components/camel-splunk-hec/src/generated/resources/org/apache/camel/component/splunkhec/splunk-hec.json
index acb073ed6c7..5ff292cb02e 100644
--- a/components/camel-splunk-hec/src/generated/resources/org/apache/camel/component/splunkhec/splunk-hec.json
+++ b/components/camel-splunk-hec/src/generated/resources/org/apache/camel/component/splunkhec/splunk-hec.json
@@ -37,6 +37,7 @@
     "index": { "kind": "parameter", "displayName": "Index", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "camel", "configurationClass": "org.apache.camel.component.splunkhec.SplunkHECConfiguration", "configurationField": "configuration", "description": "Splunk index to write to" },
     "source": { "kind": "parameter", "displayName": "Source", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "camel", "configurationClass": "org.apache.camel.component.splunkhec.SplunkHECConfiguration", "configurationField": "configuration", "description": "Splunk source argument" },
     "sourceType": { "kind": "parameter", "displayName": "Source Type", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "camel", "configurationClass": "org.apache.camel.component.splunkhec.SplunkHECConfiguration", "configurationField": "configuration", "description": "Splunk sourcetype argument" },
+    "splunkEndpoint": { "kind": "parameter", "displayName": "Splunk Endpoint", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "\/services\/collector\/event", "configurationClass": "org.apache.camel.component.splunkhec.SplunkHECConfiguration", "configurationField": "configuration", "description": "Splunk endpoint Defaults to \/services\/collector\/event To writ [...]
     "time": { "kind": "parameter", "displayName": "Time", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.splunkhec.SplunkHECConfiguration", "configurationField": "configuration", "description": "Time this even occurred. By default, the time will be when this event hits the splunk server." },
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
     "https": { "kind": "parameter", "displayName": "Https", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.splunkhec.SplunkHECConfiguration", "configurationField": "configuration", "description": "Contact HEC over https." },
diff --git a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECConfiguration.java b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECConfiguration.java
index 078d003f0d0..6d1695ce67b 100644
--- a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECConfiguration.java
+++ b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECConfiguration.java
@@ -36,6 +36,8 @@ public class SplunkHECConfiguration {
     private String source = "camel";
     @UriParam
     private String host;
+    @UriParam(defaultValue = "/services/collector/event")
+    private String splunkEndpoint = "/services/collector/event";
     @UriParam(label = "security")
     private boolean skipTlsVerify;
     @UriParam(label = "security", defaultValue = "true")
@@ -99,6 +101,26 @@ public class SplunkHECConfiguration {
         this.host = host;
     }
 
+    /**
+     * Splunk endpoint
+     *   Defaults to /services/collector/event
+     *   To write RAW data like JSON use /services/collector/raw
+     *   For a list of all endpoints refer to splunk documentation (HTTP Event Collector REST API endpoints)
+     *   Example for Spunk 8.2.x: https://docs.splunk.com/Documentation/SplunkCloud/8.2.2203/Data/HECRESTendpoints
+     *
+     *   To extract timestamps in Splunk>8.0 /services/collector/event?auto_extract_timestamp=true
+     *   Remember to utilize RAW{} for questionmarks or slashes in parameters, see:
+     *   https://camel.apache.org/manual/faq/how-do-i-configure-endpoints.html
+     *   #HowdoIconfigureendpoints-Configuringparametervaluesusingrawvalues
+     */
+    public void setSplunkEndpoint(String splunkEndpoint) {
+        this.splunkEndpoint = splunkEndpoint;
+    }
+
+    public String getSplunkEndpoint() {
+        return this.splunkEndpoint;
+    }
+
     public boolean isSkipTlsVerify() {
         return skipTlsVerify;
     }
@@ -153,4 +175,6 @@ public class SplunkHECConfiguration {
     public void setTime(Long time) {
         this.time = time;
     }
+
+
 }
diff --git a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java
index ec2cf813760..e1c5314ad04 100644
--- a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java
+++ b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java
@@ -72,8 +72,8 @@ public class SplunkHECProducer extends DefaultProducer {
         Map<String, Object> payload = createPayload(exchange.getIn());
 
         HttpPost httppost = new HttpPost(
-                (endpoint.getConfiguration().isHttps() ? "https" : "http") + "://" + endpoint.getSplunkURL()
-                                         + "/services/collector/event");
+                (endpoint.getConfiguration().isHttps() ? "https" : "http") + "://"
+                        + endpoint.getSplunkURL() + endpoint.getConfiguration().getSplunkEndpoint());
         httppost.addHeader("Authorization", " Splunk " + endpoint.getToken());
 
         EntityTemplate entityTemplate = new EntityTemplate(outputStream -> MAPPER.writer().writeValue(outputStream, payload));
diff --git a/components/camel-splunk-hec/src/test/java/org/apache/camel/component/splunkhec/SplunkHECConfigurationTest.java b/components/camel-splunk-hec/src/test/java/org/apache/camel/component/splunkhec/SplunkHECConfigurationTest.java
index c377994072b..fa8306e94e6 100644
--- a/components/camel-splunk-hec/src/test/java/org/apache/camel/component/splunkhec/SplunkHECConfigurationTest.java
+++ b/components/camel-splunk-hec/src/test/java/org/apache/camel/component/splunkhec/SplunkHECConfigurationTest.java
@@ -36,6 +36,12 @@ public class SplunkHECConfigurationTest {
         assertEquals("mine", config.getHost());
     }
 
+    @Test
+    public void testDefaultEndpoint() {
+        SplunkHECConfiguration config = new SplunkHECConfiguration();
+        assertEquals("/services/collector/event", config.getSplunkEndpoint());
+    }
+
     @Test
     public void testDefaultIndex() {
         SplunkHECConfiguration config = new SplunkHECConfiguration();