Skip to content

Commit d8f9584

Browse files
authored
Merge pull request #377 from vihas-splunk/make-validations-configurablee
Add a new config parameter for disabling splunk validations
2 parents 63c3545 + a8e42bb commit d8f9584

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ Use the below schema to configure Splunk Connect for Kafka
162162
| `splunk.sources` | Splunk event source metadata for Kafka topic data. The same configuration rules as indexes can be applied. If left unconfigured, the default source binds to the HEC token. | `""` |
163163
| `splunk.sourcetypes` | Splunk event sourcetype metadata for Kafka topic data. The same configuration rules as indexes can be applied here. If left unconfigured, the default sourcetype binds to the HEC token. | `""` |
164164
| `splunk.flush.window` | The interval in seconds at which the events from kafka connect will be flushed to Splunk. | `30` |
165+
| `splunk.validation.disable` | Disable validating splunk configurations before creating task. | `false` |
165166
| `splunk.hec.ssl.validate.certs` | Valid settings are `true` or `false`. Enables or disables HTTPS certification validation. |`true`|
166167
| `splunk.hec.http.keepalive` | Valid settings are `true` or `false`. Enables or disables HTTP connection keep-alive. |`true`|
167168
| `splunk.hec.max.http.connection.per.channel` | Controls how many HTTP connections will be created and cached in the HTTP pool for one HEC channel. |`2`|

Diff for: src/main/java/com/splunk/kafka/connect/SplunkSinkConnector.java

+3
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ private static String[] split(String data, String sep) {
148148

149149
private void validateSplunkConfigurations(final Map<String, String> configs) throws ConfigException {
150150
SplunkSinkConnectorConfig connectorConfig = new SplunkSinkConnectorConfig(configs);
151+
if (connectorConfig.disableValidation) {
152+
return;
153+
}
151154
String[] indexes = split(connectorConfig.indexes, ",");
152155
if(indexes == null || indexes.length == 0) {
153156
preparePayloadAndExecuteRequest(connectorConfig, "");

Diff for: src/main/java/com/splunk/kafka/connect/SplunkSinkConnectorConfig.java

+6
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public final class SplunkSinkConnectorConfig extends AbstractConfig {
4646
static final String SOURCE_CONF = "splunk.sources";
4747
static final String SOURCETYPE_CONF = "splunk.sourcetypes";
4848
static final String FLUSH_WINDOW_CONF = "splunk.flush.window";
49+
static final String DISABLE_VALIDATION = "splunk.validation.disable";
4950
static final String TOTAL_HEC_CHANNEL_CONF = "splunk.hec.total.channels";
5051
static final String MAX_HTTP_CONNECTION_PER_CHANNEL_CONF = "splunk.hec.max.http.connection.per.channel";
5152
static final String MAX_BATCH_SIZE_CONF = "splunk.hec.max.batch.size"; // record count
@@ -128,6 +129,7 @@ public final class SplunkSinkConnectorConfig extends AbstractConfig {
128129
static final String SSL_VALIDATE_CERTIFICATES_DOC = "Valid settings are true or false. Enables or disables HTTPS "
129130
+ "certification validation. By default, this is set to true.";
130131
static final String ENABLE_COMPRESSSION_DOC = "Valid settings are true or false. Used for enable or disable gzip-compression. By default, this is set to false.";
132+
static final String DISABLE_VALIDATION_DOC = "Disable validating splunk configurations before creating task.";
131133
// Acknowledgement Parameters
132134
// Use Ack
133135
static final String ACK_DOC = "Valid settings are true or false. When set to true Splunk Connect for Kafka will "
@@ -218,6 +220,7 @@ public final class SplunkSinkConnectorConfig extends AbstractConfig {
218220
final int socketTimeout;
219221
final boolean validateCertificates;
220222
final boolean enableCompression;
223+
final boolean disableValidation;
221224
final int lbPollInterval;
222225

223226
final boolean ack;
@@ -304,6 +307,7 @@ public final class SplunkSinkConnectorConfig extends AbstractConfig {
304307
kerberosUserPrincipal = getString(KERBEROS_USER_PRINCIPAL_CONF);
305308
kerberosKeytabPath = getString(KERBEROS_KEYTAB_PATH_CONF);
306309
enableCompression = getBoolean(ENABLE_COMPRESSSION_CONF);
310+
disableValidation = getBoolean(DISABLE_VALIDATION);
307311
enableTimestampExtraction = getBoolean(ENABLE_TIMESTAMP_EXTRACTION_CONF);
308312
regex = getString(REGEX_CONF);
309313
timestampFormat = getString(TIMESTAMP_FORMAT_CONF).trim();
@@ -351,6 +355,7 @@ public static ConfigDef conf() {
351355
.define(HEADER_HOST_CONF, ConfigDef.Type.STRING, "splunk.header.host", ConfigDef.Importance.MEDIUM, HEADER_HOST_DOC)
352356
.define(LB_POLL_INTERVAL_CONF, ConfigDef.Type.INT, 120, ConfigDef.Importance.LOW, LB_POLL_INTERVAL_DOC)
353357
.define(ENABLE_COMPRESSSION_CONF, ConfigDef.Type.BOOLEAN, false, ConfigDef.Importance.MEDIUM, ENABLE_COMPRESSSION_DOC)
358+
.define(DISABLE_VALIDATION, ConfigDef.Type.BOOLEAN, false, ConfigDef.Importance.MEDIUM, DISABLE_VALIDATION_DOC)
354359
.define(KERBEROS_USER_PRINCIPAL_CONF, ConfigDef.Type.STRING, "", ConfigDef.Importance.MEDIUM, KERBEROS_USER_PRINCIPAL_DOC)
355360
.define(KERBEROS_KEYTAB_PATH_CONF, ConfigDef.Type.STRING, "", ConfigDef.Importance.MEDIUM, KERBEROS_KEYTAB_LOCATION_DOC)
356361
.define(ENABLE_TIMESTAMP_EXTRACTION_CONF, ConfigDef.Type.BOOLEAN, false , ConfigDef.Importance.MEDIUM, ENABLE_TIMESTAMP_EXTRACTION_DOC)
@@ -425,6 +430,7 @@ public String toString() {
425430
+ "headerSourcetype:" + headerSourcetype + ", "
426431
+ "headerHost:" + headerHost + ", "
427432
+ "enableCompression:" + enableCompression + ", "
433+
+ "disableValidation:" + disableValidation + ", "
428434
+ "lbPollInterval:" + lbPollInterval;
429435
}
430436

Diff for: src/test/java/com/splunk/kafka/connect/SplunkSinkConnecterTest.java

+26
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,32 @@ public void testValidSplunkConfigurations() {
235235
Assertions.assertDoesNotThrow(()->connector.validate(configs));
236236
}
237237

238+
@Test
239+
public void testInvalidSplunkConfigurationsWithValidationDisabled() {
240+
final Map<String, String> configs = new HashMap<>();
241+
addNecessaryConfigs(configs);
242+
SplunkSinkConnector connector = new SplunkSinkConnector();
243+
configs.put("splunk.validation.disable", "true");
244+
configs.put("topics", "b");
245+
MockHecClientWrapper clientInstance = new MockHecClientWrapper();
246+
clientInstance.client.setResponse(CloseableHttpClientMock.exception);
247+
((SplunkSinkConnector) connector).setHecInstance(clientInstance);
248+
Assertions.assertDoesNotThrow(()->connector.validate(configs));
249+
}
250+
251+
@Test
252+
public void testInvalidSplunkConfigurationsWithValidationEnabled() {
253+
final Map<String, String> configs = new HashMap<>();
254+
addNecessaryConfigs(configs);
255+
SplunkSinkConnector connector = new SplunkSinkConnector();
256+
configs.put("splunk.validation.disable", "false");
257+
configs.put("topics", "b");
258+
MockHecClientWrapper clientInstance = new MockHecClientWrapper();
259+
clientInstance.client.setResponse(CloseableHttpClientMock.exception);
260+
((SplunkSinkConnector) connector).setHecInstance(clientInstance);
261+
Assertions.assertThrows(ConfigException.class, ()->connector.validate(configs));
262+
}
263+
238264
private void addNecessaryConfigs(Map<String, String> configs) {
239265
configs.put(URI_CONF, TEST_URI);
240266
configs.put(TOKEN_CONF, "blah");

0 commit comments

Comments
 (0)