diff --git a/src/main/java/org/elasticsearch/alerts/AlertsModule.java b/src/main/java/org/elasticsearch/alerts/AlertsModule.java index 721836b7488..be055ef4cde 100644 --- a/src/main/java/org/elasticsearch/alerts/AlertsModule.java +++ b/src/main/java/org/elasticsearch/alerts/AlertsModule.java @@ -48,7 +48,6 @@ public class AlertsModule extends AbstractModule implements SpawnModules { bind(AlertsService.class).asEagerSingleton(); bind(AlertsStore.class).asEagerSingleton(); bind(TemplateUtils.class).asEagerSingleton(); - bind(ConfigurationService.class).asEagerSingleton(); } diff --git a/src/main/java/org/elasticsearch/alerts/ConfigurableComponentListener.java b/src/main/java/org/elasticsearch/alerts/ConfigurableComponentListener.java deleted file mode 100644 index e7eca386882..00000000000 --- a/src/main/java/org/elasticsearch/alerts/ConfigurableComponentListener.java +++ /dev/null @@ -1,15 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts; - -import org.elasticsearch.common.settings.Settings; - -/** - * This interface allows a component to register itself for configuration updates - */ -public interface ConfigurableComponentListener { - void receiveConfigurationUpdate(Settings settings); -} diff --git a/src/main/java/org/elasticsearch/alerts/ConfigurationService.java b/src/main/java/org/elasticsearch/alerts/ConfigurationService.java deleted file mode 100644 index 144ec6dd50c..00000000000 --- a/src/main/java/org/elasticsearch/alerts/ConfigurationService.java +++ /dev/null @@ -1,85 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts; - -import org.elasticsearch.action.get.GetResponse; -import org.elasticsearch.action.index.IndexResponse; -import org.elasticsearch.alerts.support.init.proxy.ClientProxy; -import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.common.component.AbstractComponent; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.ImmutableSettings; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.indices.IndexMissingException; - -import java.io.IOException; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * Simple service to get settings that are persisted in the a special document in the .alerts index. - * Also notifies known components about setting changes. - * - * The service requires on the fact that the alert service has been started. - */ -public class ConfigurationService extends AbstractComponent { - - public static final String CONFIG_TYPE = "config"; - public static final String GLOBAL_CONFIG_NAME = "global"; - - private final ClientProxy client; - private final CopyOnWriteArrayList registeredComponents; - - @Inject - public ConfigurationService(Settings settings, ClientProxy client) { - super(settings); - this.client = client; - registeredComponents = new CopyOnWriteArrayList<>(); - } - - /** - * This method gets the config - * @return The immutable settings loaded from the index - */ - public Settings getConfig() { - try { - client.admin().indices().prepareRefresh(AlertsStore.ALERT_INDEX).get(); - } catch (IndexMissingException ime) { - logger.error("No index [" + AlertsStore.ALERT_INDEX + "] found"); - return null; - } - GetResponse response = client.prepareGet(AlertsStore.ALERT_INDEX, CONFIG_TYPE, GLOBAL_CONFIG_NAME).get(); - if (response.isExists()) { - return ImmutableSettings.settingsBuilder().loadFromSource(response.getSourceAsString()).build(); - } else { - return null; - } - } - - /** - * Notify the listeners of a new config - */ - public IndexResponse updateConfig(BytesReference settingsSource) throws IOException { - - IndexResponse indexResponse = client.prepareIndex(AlertsStore.ALERT_INDEX, ConfigurationService.CONFIG_TYPE, ConfigurationService.GLOBAL_CONFIG_NAME) - .setSource(settingsSource).get(); - - Settings settings = ImmutableSettings.settingsBuilder().loadFromSource(settingsSource.toUtf8()).build(); - for (ConfigurableComponentListener componentListener : registeredComponents) { - componentListener.receiveConfigurationUpdate(settings); - } - - return indexResponse; - } - - /** - * Registers an component to receive config updates - */ - public void registerListener(ConfigurableComponentListener configListener) { - if (!registeredComponents.contains(configListener)) { - registeredComponents.add(configListener); - } - } -} diff --git a/src/main/java/org/elasticsearch/alerts/client/AlertsClient.java b/src/main/java/org/elasticsearch/alerts/client/AlertsClient.java index 0cbb3b5fcd9..ffd9fe41435 100644 --- a/src/main/java/org/elasticsearch/alerts/client/AlertsClient.java +++ b/src/main/java/org/elasticsearch/alerts/client/AlertsClient.java @@ -11,10 +11,6 @@ import org.elasticsearch.alerts.transport.actions.ack.AckAlertAction; import org.elasticsearch.alerts.transport.actions.ack.AckAlertRequest; import org.elasticsearch.alerts.transport.actions.ack.AckAlertRequestBuilder; import org.elasticsearch.alerts.transport.actions.ack.AckAlertResponse; -import org.elasticsearch.alerts.transport.actions.config.ConfigAlertAction; -import org.elasticsearch.alerts.transport.actions.config.ConfigAlertRequest; -import org.elasticsearch.alerts.transport.actions.config.ConfigAlertRequestBuilder; -import org.elasticsearch.alerts.transport.actions.config.ConfigAlertResponse; import org.elasticsearch.alerts.transport.actions.delete.DeleteAlertAction; import org.elasticsearch.alerts.transport.actions.delete.DeleteAlertRequest; import org.elasticsearch.alerts.transport.actions.delete.DeleteAlertRequestBuilder; @@ -254,25 +250,4 @@ public class AlertsClient { public ActionFuture alertService(AlertsServiceRequest request) { return client.execute(AlertsServiceAction.INSTANCE, request); } - - /** - * Prepare make an alert config request. - */ - public ConfigAlertRequestBuilder prepareAlertConfig() { - return new ConfigAlertRequestBuilder(client); - } - - /** - * Perform an config alert request - */ - public void alertConfig(ConfigAlertRequest request, ActionListener listener) { - client.execute(ConfigAlertAction.INSTANCE, request, listener); - } - - /** - * Perform an config alert request - */ - public ActionFuture alertConfig(ConfigAlertRequest request) { - return client.execute(ConfigAlertAction.INSTANCE, request); - } } diff --git a/src/main/java/org/elasticsearch/alerts/rest/AlertsRestModule.java b/src/main/java/org/elasticsearch/alerts/rest/AlertsRestModule.java index 445fd5908b1..c8962978406 100644 --- a/src/main/java/org/elasticsearch/alerts/rest/AlertsRestModule.java +++ b/src/main/java/org/elasticsearch/alerts/rest/AlertsRestModule.java @@ -25,7 +25,6 @@ public class AlertsRestModule extends AbstractModule implements PreProcessModule restModule.addRestAction(RestAlertsStatsAction.class); restModule.addRestAction(RestGetAlertAction.class); restModule.addRestAction(RestAlertServiceAction.class); - restModule.addRestAction(RestConfigAlertAction.class); restModule.addRestAction(RestAckAlertAction.class); } } diff --git a/src/main/java/org/elasticsearch/alerts/rest/action/RestConfigAlertAction.java b/src/main/java/org/elasticsearch/alerts/rest/action/RestConfigAlertAction.java deleted file mode 100644 index 89076c1bd09..00000000000 --- a/src/main/java/org/elasticsearch/alerts/rest/action/RestConfigAlertAction.java +++ /dev/null @@ -1,63 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts.rest.action; - -import org.elasticsearch.action.index.IndexResponse; -import org.elasticsearch.alerts.AlertsStore; -import org.elasticsearch.alerts.ConfigurationService; -import org.elasticsearch.alerts.client.AlertsClient; -import org.elasticsearch.alerts.transport.actions.config.ConfigAlertRequest; -import org.elasticsearch.alerts.transport.actions.config.ConfigAlertResponse; -import org.elasticsearch.client.Client; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.rest.*; -import org.elasticsearch.rest.action.support.RestBuilderListener; - -import static org.elasticsearch.rest.RestStatus.CREATED; -import static org.elasticsearch.rest.RestStatus.OK; - -/** - */ -public class RestConfigAlertAction extends BaseRestHandler { - - private final AlertsClient alertsClient; - - @Inject - protected RestConfigAlertAction(Settings settings, RestController controller, Client client, AlertsClient alertsClient) { - super(settings, controller, client); - this.alertsClient = alertsClient; - String path = AlertsStore.ALERT_INDEX + "/" + ConfigurationService.CONFIG_TYPE + "/" + ConfigurationService.GLOBAL_CONFIG_NAME; - controller.registerHandler(RestRequest.Method.PUT, path, this); - controller.registerHandler(RestRequest.Method.POST, path, this); - } - - @Override - protected void handleRequest(RestRequest request, RestChannel channel, Client client) throws Exception { - ConfigAlertRequest configAlertRequest = new ConfigAlertRequest(); - configAlertRequest.setConfigSource(request.content()); - configAlertRequest.setConfigSourceUnsafe(request.contentUnsafe()); - alertsClient.alertConfig(configAlertRequest, new RestBuilderListener(channel) { - @Override - public RestResponse buildResponse(ConfigAlertResponse response, XContentBuilder builder) throws Exception { - IndexResponse indexResponse = response.indexResponse(); - builder.startObject() - .field("_index", indexResponse.getIndex()) - .field("_type", indexResponse.getType()) - .field("_id", indexResponse.getId()) - .field("_version", indexResponse.getVersion()) - .field("created", indexResponse.isCreated()); - builder.endObject(); - RestStatus status = OK; - if (indexResponse.isCreated()) { - status = CREATED; - } - return new BytesRestResponse(status, builder); - } - }); - } -} \ No newline at end of file diff --git a/src/main/java/org/elasticsearch/alerts/transport/AlertsTransportModule.java b/src/main/java/org/elasticsearch/alerts/transport/AlertsTransportModule.java index e143979ed7f..98a53545575 100644 --- a/src/main/java/org/elasticsearch/alerts/transport/AlertsTransportModule.java +++ b/src/main/java/org/elasticsearch/alerts/transport/AlertsTransportModule.java @@ -8,8 +8,6 @@ package org.elasticsearch.alerts.transport; import org.elasticsearch.action.ActionModule; import org.elasticsearch.alerts.transport.actions.ack.AckAlertAction; import org.elasticsearch.alerts.transport.actions.ack.TransportAckAlertAction; -import org.elasticsearch.alerts.transport.actions.config.ConfigAlertAction; -import org.elasticsearch.alerts.transport.actions.config.TransportConfigAlertAction; import org.elasticsearch.alerts.transport.actions.delete.DeleteAlertAction; import org.elasticsearch.alerts.transport.actions.delete.TransportDeleteAlertAction; import org.elasticsearch.alerts.transport.actions.get.GetAlertAction; @@ -39,8 +37,6 @@ public class AlertsTransportModule extends AbstractModule implements PreProcessM actionModule.registerAction(AlertsStatsAction.INSTANCE, TransportAlertsStatsAction.class); actionModule.registerAction(AckAlertAction.INSTANCE, TransportAckAlertAction.class); actionModule.registerAction(AlertsServiceAction.INSTANCE, TransportAlertsServiceAction.class); - actionModule.registerAction(ConfigAlertAction.INSTANCE, TransportConfigAlertAction.class); - actionModule.registerAction(ConfigAlertAction.INSTANCE, TransportConfigAlertAction.class); } } diff --git a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertAction.java b/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertAction.java deleted file mode 100644 index 643a9adc15e..00000000000 --- a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertAction.java +++ /dev/null @@ -1,33 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts.transport.actions.config; - -import org.elasticsearch.alerts.client.AlertsAction; -import org.elasticsearch.client.Client; - -/** - * This action deletes an alert from in memory, the scheduler and the index - */ -public class ConfigAlertAction extends AlertsAction { - - public static final ConfigAlertAction INSTANCE = new ConfigAlertAction(); - public static final String NAME = "indices:data/write/alert/config"; - - private ConfigAlertAction() { - super(NAME); - } - - @Override - public ConfigAlertResponse newResponse() { - return new ConfigAlertResponse(); - } - - @Override - public ConfigAlertRequestBuilder newRequestBuilder(Client client) { - return new ConfigAlertRequestBuilder(client); - } - -} diff --git a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertRequest.java b/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertRequest.java deleted file mode 100644 index c24cea0fdeb..00000000000 --- a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertRequest.java +++ /dev/null @@ -1,100 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts.transport.actions.config; - -import org.elasticsearch.action.ActionRequestValidationException; -import org.elasticsearch.action.ValidateActions; -import org.elasticsearch.action.support.master.MasterNodeOperationRequest; -import org.elasticsearch.alerts.AlertsStore; -import org.elasticsearch.alerts.ConfigurationService; -import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; - -import java.io.IOException; - -/** - * A delete alert request to delete an alert by name (id) - */ -public class ConfigAlertRequest extends MasterNodeOperationRequest { - - private BytesReference configSource; - private boolean configSourceUnsafe; - - public ConfigAlertRequest() { - } - - /** - * @return The source of the config - */ - public BytesReference getConfigSource() { - return configSource; - } - - /** - * Sets the source of the config document - */ - public void setConfigSource(BytesReference configSource) { - this.configSource = configSource; - this.configSourceUnsafe = false; - } - - /** - * @return Whether the ByteRef configSource safe - */ - public boolean isConfigSourceUnsafe() { - return configSourceUnsafe; - } - - public void setConfigSourceUnsafe(boolean configSourceUnsafe) { - this.configSourceUnsafe = configSourceUnsafe; - } - - - /** - * Set the source of the config with boolean to control source safety - */ - public void setConfigSource(BytesReference configSource, boolean configSourceUnsafe) { - this.configSource = configSource; - this.configSourceUnsafe = configSourceUnsafe; - } - - - public void beforeLocalFork() { - if (configSourceUnsafe) { - configSource = configSource.copyBytesArray(); - configSourceUnsafe = false; - } - } - - - @Override - public ActionRequestValidationException validate() { - ActionRequestValidationException validationException = null; - if (configSource == null){ - validationException = ValidateActions.addValidationError("configName is missing", validationException); - } - return validationException; - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - configSource = in.readBytesReference(); - configSourceUnsafe = false; - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - out.writeBytesReference(configSource); - } - - @Override - public String toString() { - return "config {[" + AlertsStore.ALERT_INDEX + "][" + ConfigurationService.CONFIG_TYPE + "]}"; - } -} diff --git a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertRequestBuilder.java b/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertRequestBuilder.java deleted file mode 100644 index dee6cb161d9..00000000000 --- a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertRequestBuilder.java +++ /dev/null @@ -1,45 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts.transport.actions.config; - -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.action.support.master.MasterNodeOperationRequestBuilder; -import org.elasticsearch.alerts.client.AlertsClient; -import org.elasticsearch.client.Client; -import org.elasticsearch.common.bytes.BytesReference; - -/** - * A alert config action request builder. - */ -public class ConfigAlertRequestBuilder extends MasterNodeOperationRequestBuilder { - - public ConfigAlertRequestBuilder(Client client) { - super(client, new ConfigAlertRequest()); - } - - /** - * Sets the source of the config to be modified - */ - public ConfigAlertRequestBuilder setConfigSource(BytesReference configSource) { - this.request().setConfigSource(configSource); - return this; - } - - /** - * Sets the source of the config to be modified with boolean to control safety - */ - public ConfigAlertRequestBuilder setConfigSource(BytesReference configSource, boolean sourceUnsafe) { - this.request().setConfigSource(configSource); - this.request().setConfigSourceUnsafe(sourceUnsafe); - return this; - } - - @Override - protected void doExecute(final ActionListener listener) { - new AlertsClient(client).alertConfig(request, listener); - } - -} diff --git a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertResponse.java b/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertResponse.java deleted file mode 100644 index 669b557b011..00000000000 --- a/src/main/java/org/elasticsearch/alerts/transport/actions/config/ConfigAlertResponse.java +++ /dev/null @@ -1,50 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts.transport.actions.config; - -import org.elasticsearch.action.ActionResponse; -import org.elasticsearch.action.index.IndexResponse; -import org.elasticsearch.common.Nullable; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; - -import java.io.IOException; - -/** - */ -public class ConfigAlertResponse extends ActionResponse { - - private IndexResponse indexResponse; - - public ConfigAlertResponse() { - } - - public ConfigAlertResponse(@Nullable IndexResponse indexResponse) { - this.indexResponse = indexResponse; - } - - public IndexResponse indexResponse() { - return indexResponse; - } - - @Override - public void readFrom(StreamInput in) throws IOException { - super.readFrom(in); - if (in.readBoolean()) { - indexResponse = new IndexResponse(); - indexResponse.readFrom(in); - } - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - super.writeTo(out); - out.writeBoolean(indexResponse != null); - if (indexResponse != null) { - indexResponse.writeTo(out); - } - } -} diff --git a/src/main/java/org/elasticsearch/alerts/transport/actions/config/TransportConfigAlertAction.java b/src/main/java/org/elasticsearch/alerts/transport/actions/config/TransportConfigAlertAction.java deleted file mode 100644 index 23f9564f73d..00000000000 --- a/src/main/java/org/elasticsearch/alerts/transport/actions/config/TransportConfigAlertAction.java +++ /dev/null @@ -1,70 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts.transport.actions.config; - -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.action.ActionListener; -import org.elasticsearch.action.index.IndexResponse; -import org.elasticsearch.action.support.ActionFilters; -import org.elasticsearch.action.support.master.TransportMasterNodeOperationAction; -import org.elasticsearch.alerts.AlertsStore; -import org.elasticsearch.alerts.ConfigurationService; -import org.elasticsearch.cluster.ClusterService; -import org.elasticsearch.cluster.ClusterState; -import org.elasticsearch.cluster.block.ClusterBlockException; -import org.elasticsearch.cluster.block.ClusterBlockLevel; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.transport.TransportService; - -/** - * Performs the config operation. - */ -public class TransportConfigAlertAction extends TransportMasterNodeOperationAction { - - private final ConfigurationService configManager; - - @Inject - public TransportConfigAlertAction(Settings settings, TransportService transportService, ClusterService clusterService, - ThreadPool threadPool, ActionFilters actionFilters, ConfigurationService configManager) { - super(settings, ConfigAlertAction.NAME, transportService, clusterService, threadPool, actionFilters); - this.configManager = configManager; - } - - @Override - protected String executor() { - return ThreadPool.Names.MANAGEMENT; - } - - @Override - protected ConfigAlertRequest newRequest() { - return new ConfigAlertRequest(); - } - - @Override - protected ConfigAlertResponse newResponse() { - return new ConfigAlertResponse(); - } - - @Override - protected void masterOperation(ConfigAlertRequest request, ClusterState state, ActionListener listener) throws ElasticsearchException { - try { - IndexResponse indexResponse = configManager.updateConfig(request.getConfigSource()); - listener.onResponse(new ConfigAlertResponse(indexResponse)); - } catch (Exception e) { - listener.onFailure(e); - } - } - - @Override - protected ClusterBlockException checkBlock(ConfigAlertRequest request, ClusterState state) { - request.beforeLocalFork(); // This is the best place to make the config source safe - return state.blocks().indexBlockedException(ClusterBlockLevel.WRITE, AlertsStore.ALERT_INDEX); - } - - -} diff --git a/src/test/java/org/elasticsearch/alerts/ConfigTest.java b/src/test/java/org/elasticsearch/alerts/ConfigTest.java deleted file mode 100644 index 412298475eb..00000000000 --- a/src/test/java/org/elasticsearch/alerts/ConfigTest.java +++ /dev/null @@ -1,91 +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; - * you may not use this file except in compliance with the Elastic License. - */ -package org.elasticsearch.alerts; - -import org.elasticsearch.action.index.IndexResponse; -import org.elasticsearch.alerts.support.init.proxy.ClientProxy; -import org.elasticsearch.common.settings.ImmutableSettings; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.unit.TimeValue; -import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.common.xcontent.XContentFactory; -import org.elasticsearch.test.ElasticsearchIntegrationTest; - -import static org.hamcrest.core.IsEqual.equalTo; - -/** - */ -public class ConfigTest extends ElasticsearchIntegrationTest { - - class SettingsListener implements ConfigurableComponentListener { - Settings settings; - - @Override - public void receiveConfigurationUpdate(Settings settings) { - this.settings = settings; - } - } - - public void testListener() throws Exception { - TimeValue tv = TimeValue.timeValueMillis(10000); - Settings oldSettings = ImmutableSettings.builder() - .put("foo", tv) - .put("bar", 1) - .put("baz", true) - .build(); - ConfigurationService configurationService = new ConfigurationService(oldSettings, ClientProxy.of(client())); - - SettingsListener settingsListener = new SettingsListener(); - configurationService.registerListener(settingsListener); - TimeValue tv2 = TimeValue.timeValueMillis(10); - XContentBuilder jsonSettings = XContentFactory.jsonBuilder(); - jsonSettings.startObject(); - jsonSettings.field("foo", tv2) - .field("bar", 100) - .field("baz", false); - jsonSettings.endObject(); - configurationService.updateConfig(jsonSettings.bytes()); - - assertThat(settingsListener.settings.getAsTime("foo", new TimeValue(0)).getMillis(), equalTo(tv2.getMillis())); - assertThat(settingsListener.settings.getAsInt("bar", 0), equalTo(100)); - assertThat(settingsListener.settings.getAsBoolean("baz", true), equalTo(false)); - } - - public void testLoadingSettings() throws Exception { - TimeValue tv = TimeValue.timeValueMillis(10000); - Settings oldSettings = ImmutableSettings.builder() - .put("foo", tv) - .put("bar", 1) - .put("baz", true) - .build(); - - TimeValue tv2 = TimeValue.timeValueMillis(10); - Settings newSettings = ImmutableSettings.builder() - .put("foo", tv2) - .put("bar", 100) - .put("baz", false) - .build(); - - XContentBuilder jsonBuilder = XContentFactory.jsonBuilder(); - jsonBuilder.startObject(); - newSettings.toXContent(jsonBuilder, ToXContent.EMPTY_PARAMS); - jsonBuilder.endObject(); - IndexResponse indexResponse = client() - .prepareIndex(AlertsStore.ALERT_INDEX, ConfigurationService.CONFIG_TYPE, "global") - .setSource(jsonBuilder) - .get(); - assertTrue(indexResponse.isCreated()); - - ConfigurationService configurationService = new ConfigurationService(oldSettings, ClientProxy.of(client())); - Settings loadedSettings = configurationService.getConfig(); - assertThat(loadedSettings.get("foo"), equalTo(newSettings.get("foo"))); - assertThat(loadedSettings.get("bar"), equalTo(newSettings.get("bar"))); - assertThat(loadedSettings.get("baz"), equalTo(newSettings.get("baz"))); - } - - -}