[Monitoring] Remove BWC Layer for Marvel (2.3 - 2.4) in 6.0 (elastic/x-pack-elasticsearch#1990)
This removes all BWC code that assisted in reading Marvel indices in 6.0. Original commit: elastic/x-pack-elasticsearch@253fbf9a73
This commit is contained in:
parent
9078c0b244
commit
b302ff32e8
|
@ -1,137 +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.xpack.monitoring.exporter.http;
|
|
||||||
|
|
||||||
import org.apache.http.HttpEntity;
|
|
||||||
import org.apache.http.entity.ByteArrayEntity;
|
|
||||||
import org.apache.http.entity.ContentType;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.apache.logging.log4j.message.ParameterizedMessage;
|
|
||||||
import org.apache.lucene.util.BytesRef;
|
|
||||||
import org.elasticsearch.client.Response;
|
|
||||||
import org.elasticsearch.client.ResponseException;
|
|
||||||
import org.elasticsearch.client.RestClient;
|
|
||||||
import org.elasticsearch.common.Nullable;
|
|
||||||
import org.elasticsearch.common.logging.Loggers;
|
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentHelper;
|
|
||||||
import org.elasticsearch.common.xcontent.json.JsonXContent;
|
|
||||||
import org.elasticsearch.rest.RestStatus;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates aliases for monitoring indexes created by Marvel 2.3+.
|
|
||||||
*/
|
|
||||||
public class BackwardsCompatibilityAliasesResource extends HttpResource {
|
|
||||||
private static final Logger logger = Loggers.getLogger(BackwardsCompatibilityAliasesResource.class);
|
|
||||||
|
|
||||||
private final TimeValue masterTimeout;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new {@link TemplateHttpResource}.
|
|
||||||
*
|
|
||||||
* @param resourceOwnerName The user-recognizable name.
|
|
||||||
* @param masterTimeout Master timeout to use with any request.
|
|
||||||
*/
|
|
||||||
public BackwardsCompatibilityAliasesResource(final String resourceOwnerName, @Nullable final TimeValue masterTimeout) {
|
|
||||||
super(resourceOwnerName);
|
|
||||||
this.masterTimeout = masterTimeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean doCheckAndPublish(RestClient client) {
|
|
||||||
boolean needNewAliases = false;
|
|
||||||
XContentBuilder request;
|
|
||||||
try {
|
|
||||||
Response response = client.performRequest("GET", "/.marvel-es-1-*", Collections.singletonMap("filter_path", "*.aliases"));
|
|
||||||
Map<String, Object> indices = XContentHelper.convertToMap(JsonXContent.jsonXContent, response.getEntity().getContent(), false);
|
|
||||||
request = JsonXContent.contentBuilder();
|
|
||||||
request.startObject().startArray("actions");
|
|
||||||
for (Map.Entry<String, Object> e : indices.entrySet()) {
|
|
||||||
String index = e.getKey();
|
|
||||||
// we add a suffix so that it will not collide with today's monitoring index following an upgrade
|
|
||||||
String alias = ".monitoring-es-2-" + index.substring(".marvel-es-1-".length()) + "-alias";
|
|
||||||
if (false == aliasesForIndex(e.getValue()).contains(alias)) {
|
|
||||||
needNewAliases = true;
|
|
||||||
addAlias(request, index, alias);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
request.endArray().endObject();
|
|
||||||
} catch (ResponseException e) {
|
|
||||||
int statusCode = e.getResponse().getStatusLine().getStatusCode();
|
|
||||||
|
|
||||||
if (statusCode == RestStatus.NOT_FOUND.getStatus()) {
|
|
||||||
logger.debug("no 2.x monitoring indexes found so no need to create backwards compatibility aliases");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
logger.error((Supplier<?>) () ->
|
|
||||||
new ParameterizedMessage("failed to check for 2.x monitoring indexes with [{}]", statusCode),
|
|
||||||
e);
|
|
||||||
return false;
|
|
||||||
} catch (IOException | RuntimeException e) {
|
|
||||||
logger.error("failed to check for 2.x monitoring indexes", e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (false == needNewAliases) {
|
|
||||||
// Hurray! Nothing to do!
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Looks like we have to create some new aliases. Note that this is a race with all other exporters on other nodes of Elasticsearch
|
|
||||||
* targeting this cluster. That is fine because this request is idemopotent, meaning that if it has no work to do it'll just return
|
|
||||||
* 200 OK { "acknowledged": true }. */
|
|
||||||
try {
|
|
||||||
BytesRef bytes = request.bytes().toBytesRef();
|
|
||||||
HttpEntity body = new ByteArrayEntity(bytes.bytes, bytes.offset, bytes.length, ContentType.APPLICATION_JSON);
|
|
||||||
Response response = client.performRequest("POST", "/_aliases", parameters(), body);
|
|
||||||
Map<String, Object> aliasesResponse = XContentHelper.convertToMap(JsonXContent.jsonXContent, response.getEntity().getContent(),
|
|
||||||
false);
|
|
||||||
Boolean acked = (Boolean) aliasesResponse.get("acknowledged");
|
|
||||||
if (acked == null) {
|
|
||||||
logger.error("Unexpected response format from _aliases action {}", aliasesResponse);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return acked;
|
|
||||||
} catch (IOException | RuntimeException e) {
|
|
||||||
logger.error("failed to create aliases for 2.x monitoring indexes", e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Set<?> aliasesForIndex(Object indexInfo) {
|
|
||||||
Map<?, ?> info = (Map<?, ?>) indexInfo;
|
|
||||||
Map<?, ?> aliases = (Map<?, ?>) info.get("aliases");
|
|
||||||
return aliases.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parameters to use for all requests.
|
|
||||||
*/
|
|
||||||
Map<String, String> parameters() {
|
|
||||||
Map<String, String> parameters = new HashMap<>();
|
|
||||||
if (masterTimeout != null) {
|
|
||||||
parameters.put("master_timeout", masterTimeout.getStringRep());
|
|
||||||
}
|
|
||||||
return parameters;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addAlias(XContentBuilder request, String index, String alias) throws IOException {
|
|
||||||
request.startObject().startObject("add");
|
|
||||||
{
|
|
||||||
request.field("index", index);
|
|
||||||
request.field("alias", alias);
|
|
||||||
}
|
|
||||||
request.endObject().endObject();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -39,8 +39,6 @@ import org.elasticsearch.xpack.monitoring.resolver.MonitoringIndexNameResolver;
|
||||||
import org.elasticsearch.xpack.monitoring.resolver.ResolversRegistry;
|
import org.elasticsearch.xpack.monitoring.resolver.ResolversRegistry;
|
||||||
import org.elasticsearch.xpack.ssl.SSLService;
|
import org.elasticsearch.xpack.ssl.SSLService;
|
||||||
|
|
||||||
import static org.elasticsearch.common.unit.TimeValue.timeValueSeconds;
|
|
||||||
|
|
||||||
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.SSLContext;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -132,10 +130,6 @@ public class HttpExporter extends Exporter {
|
||||||
* ES level timeout used when checking and writing pipelines (used to speed up tests)
|
* ES level timeout used when checking and writing pipelines (used to speed up tests)
|
||||||
*/
|
*/
|
||||||
public static final String PIPELINE_CHECK_TIMEOUT_SETTING = "index.pipeline.master_timeout";
|
public static final String PIPELINE_CHECK_TIMEOUT_SETTING = "index.pipeline.master_timeout";
|
||||||
/**
|
|
||||||
* ES level timeout used when checking and writing aliases (used to speed up tests)
|
|
||||||
*/
|
|
||||||
public static final String ALIAS_TIMEOUT_SETTING = "index.alias.master_timeout";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minimum supported version of the remote monitoring cluster.
|
* Minimum supported version of the remote monitoring cluster.
|
||||||
|
@ -329,10 +323,6 @@ public class HttpExporter extends Exporter {
|
||||||
// load the pipeline (this will get added to as the monitoring API version increases)
|
// load the pipeline (this will get added to as the monitoring API version increases)
|
||||||
configurePipelineResources(config, resourceOwnerName, resources);
|
configurePipelineResources(config, resourceOwnerName, resources);
|
||||||
|
|
||||||
// alias .marvel-es-1-* indices
|
|
||||||
resources.add(new BackwardsCompatibilityAliasesResource(resourceOwnerName,
|
|
||||||
config.settings().getAsTime(ALIAS_TIMEOUT_SETTING, timeValueSeconds(30))));
|
|
||||||
|
|
||||||
// load the watches for cluster alerts if Watcher is available
|
// load the watches for cluster alerts if Watcher is available
|
||||||
configureClusterAlertsResources(config, resourceOwnerName, resources);
|
configureClusterAlertsResources(config, resourceOwnerName, resources);
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,6 @@ import org.apache.logging.log4j.Logger;
|
||||||
import org.apache.logging.log4j.message.ParameterizedMessage;
|
import org.apache.logging.log4j.message.ParameterizedMessage;
|
||||||
import org.apache.logging.log4j.util.Supplier;
|
import org.apache.logging.log4j.util.Supplier;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesAction;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
|
|
||||||
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
|
||||||
|
@ -253,11 +249,6 @@ public class LocalExporter extends Exporter implements ClusterStateListener, Cle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null != prepareAddAliasesTo2xIndices(clusterState)) {
|
|
||||||
logger.debug("old monitoring indexes exist without aliases, waiting for them to get new aliases");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.trace("monitoring index templates and pipelines are installed, service can start");
|
logger.trace("monitoring index templates and pipelines are installed, service can start");
|
||||||
|
|
||||||
// everything is setup
|
// everything is setup
|
||||||
|
@ -326,38 +317,6 @@ public class LocalExporter extends Exporter implements ClusterStateListener, Cle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IndicesAliasesRequest addAliasesTo2xIndices = prepareAddAliasesTo2xIndices(clusterState);
|
|
||||||
if (addAliasesTo2xIndices == null) {
|
|
||||||
logger.trace("there are no 2.x monitoring indices or they have all the aliases they need");
|
|
||||||
} else {
|
|
||||||
final List<String> monitoringIndices2x = addAliasesTo2xIndices.getAliasActions().stream()
|
|
||||||
.flatMap((a) -> Arrays.stream(a.indices()))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
logger.debug("there are 2.x monitoring indices {} and they are missing some aliases to make them compatible with 5.x",
|
|
||||||
monitoringIndices2x);
|
|
||||||
asyncActions.add(() -> client.execute(IndicesAliasesAction.INSTANCE, addAliasesTo2xIndices,
|
|
||||||
new ActionListener<IndicesAliasesResponse>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(IndicesAliasesResponse response) {
|
|
||||||
responseReceived(pendingResponses, true, null);
|
|
||||||
if (response.isAcknowledged()) {
|
|
||||||
logger.info("Added modern aliases to 2.x monitoring indices {}", monitoringIndices2x);
|
|
||||||
} else {
|
|
||||||
logger.info("Unable to add modern aliases to 2.x monitoring indices {}, response not acknowledged.",
|
|
||||||
monitoringIndices2x);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(Exception e) {
|
|
||||||
responseReceived(pendingResponses, false, null);
|
|
||||||
logger.error((Supplier<?>)
|
|
||||||
() -> new ParameterizedMessage("Unable to add modern aliases to 2.x monitoring indices {}",
|
|
||||||
monitoringIndices2x), e);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
// avoid constantly trying to setup Watcher, which requires a lot of overhead and avoid attempting to setup during a cluster state
|
// avoid constantly trying to setup Watcher, which requires a lot of overhead and avoid attempting to setup during a cluster state
|
||||||
// change
|
// change
|
||||||
if (state.get() == State.RUNNING && clusterStateChange == false && canUseWatcher()) {
|
if (state.get() == State.RUNNING && clusterStateChange == false && canUseWatcher()) {
|
||||||
|
@ -614,23 +573,6 @@ public class LocalExporter extends Exporter implements ClusterStateListener, Cle
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private IndicesAliasesRequest prepareAddAliasesTo2xIndices(ClusterState clusterState) {
|
|
||||||
IndicesAliasesRequest request = null;
|
|
||||||
for (IndexMetaData index : clusterState.metaData()) {
|
|
||||||
String name = index.getIndex().getName();
|
|
||||||
if (name.startsWith(".marvel-es-1-")) {
|
|
||||||
// we add a suffix so that it will not collide with today's monitoring index following an upgrade
|
|
||||||
String alias = ".monitoring-es-2-" + name.substring(".marvel-es-1-".length()) + "-alias";
|
|
||||||
if (index.getAliases().containsKey(alias)) continue;
|
|
||||||
if (request == null) {
|
|
||||||
request = new IndicesAliasesRequest();
|
|
||||||
}
|
|
||||||
request.addAliasAction(AliasActions.add().index(name).alias(alias));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return request;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
INITIALIZED,
|
INITIALIZED,
|
||||||
RUNNING,
|
RUNNING,
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class ReservedRolesStore {
|
||||||
RoleDescriptor.IndicesPrivileges.builder().indices(".kibana*").privileges("manage", "read", "index", "delete")
|
RoleDescriptor.IndicesPrivileges.builder().indices(".kibana*").privileges("manage", "read", "index", "delete")
|
||||||
.build() }, null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
.build() }, null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
||||||
.put("monitoring_user", new RoleDescriptor("monitoring_user", null, new RoleDescriptor.IndicesPrivileges[] {
|
.put("monitoring_user", new RoleDescriptor("monitoring_user", null, new RoleDescriptor.IndicesPrivileges[] {
|
||||||
RoleDescriptor.IndicesPrivileges.builder().indices(".marvel-es-*", ".monitoring-*").privileges("read").build() },
|
RoleDescriptor.IndicesPrivileges.builder().indices(".monitoring-*").privileges("read").build() },
|
||||||
null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
||||||
.put("remote_monitoring_agent", new RoleDescriptor("remote_monitoring_agent",
|
.put("remote_monitoring_agent", new RoleDescriptor("remote_monitoring_agent",
|
||||||
new String[] {
|
new String[] {
|
||||||
|
@ -54,7 +54,7 @@ public class ReservedRolesStore {
|
||||||
"cluster:admin/xpack/watcher/watch/delete",
|
"cluster:admin/xpack/watcher/watch/delete",
|
||||||
},
|
},
|
||||||
new RoleDescriptor.IndicesPrivileges[] {
|
new RoleDescriptor.IndicesPrivileges[] {
|
||||||
RoleDescriptor.IndicesPrivileges.builder().indices(".marvel-es-*", ".monitoring-*").privileges("all").build() },
|
RoleDescriptor.IndicesPrivileges.builder().indices(".monitoring-*").privileges("all").build() },
|
||||||
null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
||||||
.put("ingest_admin", new RoleDescriptor("ingest_admin", new String[] { "manage_index_templates", "manage_pipeline" },
|
.put("ingest_admin", new RoleDescriptor("ingest_admin", new String[] { "manage_index_templates", "manage_pipeline" },
|
||||||
null, null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
null, null, MetadataUtils.DEFAULT_RESERVED_METADATA))
|
||||||
|
|
|
@ -178,7 +178,7 @@ public class OldMonitoringIndicesBackwardsCompatibilityTests extends AbstractOld
|
||||||
logger.info("--> Waiting for indices deletion");
|
logger.info("--> Waiting for indices deletion");
|
||||||
CountDown retries = new CountDown(10);
|
CountDown retries = new CountDown(10);
|
||||||
assertBusy(() -> {
|
assertBusy(() -> {
|
||||||
String[] indices = new String[]{".marvel-*", ".monitoring-*"};
|
String[] indices = new String[]{".monitoring-*"};
|
||||||
IndicesExistsResponse existsResponse = client().admin().indices().prepareExists(indices).get();
|
IndicesExistsResponse existsResponse = client().admin().indices().prepareExists(indices).get();
|
||||||
if (existsResponse.isExists()) {
|
if (existsResponse.isExists()) {
|
||||||
assertAcked(client().admin().indices().prepareDelete(indices));
|
assertAcked(client().admin().indices().prepareDelete(indices));
|
||||||
|
|
|
@ -26,7 +26,6 @@ import org.elasticsearch.common.util.concurrent.ThreadContext;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentHelper;
|
import org.elasticsearch.common.xcontent.XContentHelper;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.common.xcontent.json.JsonXContent;
|
|
||||||
import org.elasticsearch.env.Environment;
|
import org.elasticsearch.env.Environment;
|
||||||
import org.elasticsearch.license.XPackLicenseState;
|
import org.elasticsearch.license.XPackLicenseState;
|
||||||
import org.elasticsearch.test.ESIntegTestCase;
|
import org.elasticsearch.test.ESIntegTestCase;
|
||||||
|
@ -67,14 +66,12 @@ import static org.elasticsearch.xpack.monitoring.exporter.http.ClusterAlertHttpR
|
||||||
import static org.elasticsearch.xpack.monitoring.exporter.http.PublishableHttpResource.FILTER_PATH_RESOURCE_VERSION;
|
import static org.elasticsearch.xpack.monitoring.exporter.http.PublishableHttpResource.FILTER_PATH_RESOURCE_VERSION;
|
||||||
import static org.elasticsearch.xpack.monitoring.exporter.http.WatcherExistsHttpResource.WATCHER_CHECK_PARAMETERS;
|
import static org.elasticsearch.xpack.monitoring.exporter.http.WatcherExistsHttpResource.WATCHER_CHECK_PARAMETERS;
|
||||||
import static org.hamcrest.Matchers.containsInAnyOrder;
|
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||||
import static org.hamcrest.Matchers.containsString;
|
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import static org.hamcrest.Matchers.hasSize;
|
import static org.hamcrest.Matchers.hasSize;
|
||||||
import static org.hamcrest.Matchers.instanceOf;
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
import static org.hamcrest.Matchers.not;
|
import static org.hamcrest.Matchers.not;
|
||||||
import static org.hamcrest.Matchers.notNullValue;
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
import static org.hamcrest.Matchers.startsWith;
|
|
||||||
|
|
||||||
@ESIntegTestCase.ClusterScope(scope = Scope.TEST,
|
@ESIntegTestCase.ClusterScope(scope = Scope.TEST,
|
||||||
numDataNodes = 1, numClientNodes = 0, transportClientRatio = 0.0, supportsDedicatedMasters = false)
|
numDataNodes = 1, numClientNodes = 0, transportClientRatio = 0.0, supportsDedicatedMasters = false)
|
||||||
|
@ -86,8 +83,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
private final boolean remoteClusterAllowsWatcher = randomBoolean();
|
private final boolean remoteClusterAllowsWatcher = randomBoolean();
|
||||||
private final boolean currentLicenseAllowsWatcher = true;
|
private final boolean currentLicenseAllowsWatcher = true;
|
||||||
private final boolean watcherAlreadyExists = randomBoolean();
|
private final boolean watcherAlreadyExists = randomBoolean();
|
||||||
private final boolean bwcIndexesExist = randomBoolean();
|
|
||||||
private final boolean bwcAliasesExist = randomBoolean();
|
|
||||||
private final Environment environment = new Environment(Settings.builder().put("path.home", createTempDir()).build());
|
private final Environment environment = new Environment(Settings.builder().put("path.home", createTempDir()).build());
|
||||||
|
|
||||||
private MockWebServer webServer;
|
private MockWebServer webServer;
|
||||||
|
@ -131,8 +126,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
enqueueGetClusterVersionResponse(Version.CURRENT);
|
enqueueGetClusterVersionResponse(Version.CURRENT);
|
||||||
enqueueSetupResponses(webServer,
|
enqueueSetupResponses(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
||||||
|
|
||||||
final int nbDocs = randomIntBetween(1, 25);
|
final int nbDocs = randomIntBetween(1, 25);
|
||||||
|
@ -140,8 +134,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
|
|
||||||
assertMonitorResources(webServer,
|
assertMonitorResources(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
assertBulk(webServer, nbDocs);
|
assertBulk(webServer, nbDocs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,8 +160,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
enqueueGetClusterVersionResponse(Version.CURRENT);
|
enqueueGetClusterVersionResponse(Version.CURRENT);
|
||||||
enqueueSetupResponses(webServer,
|
enqueueSetupResponses(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
||||||
|
|
||||||
final int nbDocs = randomIntBetween(1, 25);
|
final int nbDocs = randomIntBetween(1, 25);
|
||||||
|
@ -177,7 +169,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
assertMonitorResources(webServer,
|
assertMonitorResources(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
||||||
bwcIndexesExist, bwcAliasesExist,
|
|
||||||
headers, null);
|
headers, null);
|
||||||
assertBulk(webServer, nbDocs, headers, null);
|
assertBulk(webServer, nbDocs, headers, null);
|
||||||
}
|
}
|
||||||
|
@ -228,8 +219,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
enqueueGetClusterVersionResponse(Version.CURRENT);
|
enqueueGetClusterVersionResponse(Version.CURRENT);
|
||||||
enqueueSetupResponses(webServer,
|
enqueueSetupResponses(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
enqueueResponse(200, "{\"errors\": false}");
|
enqueueResponse(200, "{\"errors\": false}");
|
||||||
|
|
||||||
final int nbDocs = randomIntBetween(1, 25);
|
final int nbDocs = randomIntBetween(1, 25);
|
||||||
|
@ -238,7 +228,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
assertMonitorResources(webServer,
|
assertMonitorResources(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
||||||
bwcIndexesExist, bwcAliasesExist,
|
|
||||||
headers, basePath);
|
headers, basePath);
|
||||||
assertBulk(webServer, nbDocs, headers, basePath);
|
assertBulk(webServer, nbDocs, headers, basePath);
|
||||||
}
|
}
|
||||||
|
@ -253,16 +242,14 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
enqueueGetClusterVersionResponse(Version.CURRENT);
|
enqueueGetClusterVersionResponse(Version.CURRENT);
|
||||||
enqueueSetupResponses(webServer,
|
enqueueSetupResponses(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
enqueueResponse(200, "{\"errors\": false}");
|
enqueueResponse(200, "{\"errors\": false}");
|
||||||
|
|
||||||
export(settings, Collections.singletonList(newRandomMonitoringDoc()));
|
export(settings, Collections.singletonList(newRandomMonitoringDoc()));
|
||||||
|
|
||||||
assertMonitorResources(webServer,
|
assertMonitorResources(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
assertBulk(webServer);
|
assertBulk(webServer);
|
||||||
|
|
||||||
try (MockWebServer secondWebServer = createMockWebServer()) {
|
try (MockWebServer secondWebServer = createMockWebServer()) {
|
||||||
|
@ -287,7 +274,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
}
|
}
|
||||||
// opposite of if it existed before
|
// opposite of if it existed before
|
||||||
enqueuePipelineResponses(secondWebServer, !pipelineExistsAlready);
|
enqueuePipelineResponses(secondWebServer, !pipelineExistsAlready);
|
||||||
enqueueBackwardsCompatibilityAliasResponse(secondWebServer, bwcIndexesExist, true);
|
|
||||||
enqueueWatcherResponses(secondWebServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
enqueueWatcherResponses(secondWebServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
enqueueResponse(secondWebServer, 200, "{\"errors\": false}");
|
enqueueResponse(secondWebServer, 200, "{\"errors\": false}");
|
||||||
|
|
||||||
|
@ -311,7 +297,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertMonitorPipelines(secondWebServer, !pipelineExistsAlready, null, null);
|
assertMonitorPipelines(secondWebServer, !pipelineExistsAlready, null, null);
|
||||||
assertMonitorBackwardsCompatibilityAliases(secondWebServer, false, null, null);
|
|
||||||
assertMonitorWatches(secondWebServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
assertMonitorWatches(secondWebServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
||||||
null, null);
|
null, null);
|
||||||
assertBulk(secondWebServer);
|
assertBulk(secondWebServer);
|
||||||
|
@ -353,8 +338,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
enqueueGetClusterVersionResponse(Version.CURRENT);
|
enqueueGetClusterVersionResponse(Version.CURRENT);
|
||||||
enqueueSetupResponses(webServer,
|
enqueueSetupResponses(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
||||||
|
|
||||||
MonitoringDoc doc = newRandomMonitoringDoc();
|
MonitoringDoc doc = newRandomMonitoringDoc();
|
||||||
|
@ -362,8 +346,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
|
|
||||||
assertMonitorResources(webServer,
|
assertMonitorResources(webServer,
|
||||||
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
templatesExistsAlready, includeOldTemplates, pipelineExistsAlready,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
bwcIndexesExist, bwcAliasesExist);
|
|
||||||
MockRequest recordedRequest = assertBulk(webServer);
|
MockRequest recordedRequest = assertBulk(webServer);
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -384,8 +367,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
|
|
||||||
enqueueGetClusterVersionResponse(Version.CURRENT);
|
enqueueGetClusterVersionResponse(Version.CURRENT);
|
||||||
enqueueSetupResponses(webServer, true, includeOldTemplates, true,
|
enqueueSetupResponses(webServer, true, includeOldTemplates, true,
|
||||||
true, true, true,
|
true, true, true);
|
||||||
false, false);
|
|
||||||
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}");
|
||||||
|
|
||||||
doc = newRandomMonitoringDoc();
|
doc = newRandomMonitoringDoc();
|
||||||
|
@ -395,8 +377,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
+ DateTimeFormat.forPattern(newTimeFormat).withZoneUTC().print(doc.getTimestamp());
|
+ DateTimeFormat.forPattern(newTimeFormat).withZoneUTC().print(doc.getTimestamp());
|
||||||
|
|
||||||
assertMonitorResources(webServer, true, includeOldTemplates, true,
|
assertMonitorResources(webServer, true, includeOldTemplates, true,
|
||||||
true, true, true,
|
true, true, true);
|
||||||
false, false);
|
|
||||||
recordedRequest = assertBulk(webServer);
|
recordedRequest = assertBulk(webServer);
|
||||||
|
|
||||||
bytes = recordedRequest.getBody().getBytes(StandardCharsets.UTF_8);
|
bytes = recordedRequest.getBody().getBytes(StandardCharsets.UTF_8);
|
||||||
|
@ -427,11 +408,10 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
final boolean templateAlreadyExists, final boolean includeOldTemplates,
|
final boolean templateAlreadyExists, final boolean includeOldTemplates,
|
||||||
final boolean pipelineAlreadyExists,
|
final boolean pipelineAlreadyExists,
|
||||||
final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher,
|
final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher,
|
||||||
final boolean watcherAlreadyExists,
|
final boolean watcherAlreadyExists) throws Exception {
|
||||||
final boolean bwcIndexesExist, final boolean bwcAliasesExist) throws Exception {
|
|
||||||
assertMonitorResources(webServer, templateAlreadyExists, includeOldTemplates, pipelineAlreadyExists,
|
assertMonitorResources(webServer, templateAlreadyExists, includeOldTemplates, pipelineAlreadyExists,
|
||||||
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
||||||
bwcIndexesExist, bwcAliasesExist, null, null);
|
null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertMonitorResources(final MockWebServer webServer,
|
private void assertMonitorResources(final MockWebServer webServer,
|
||||||
|
@ -439,13 +419,11 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
final boolean pipelineAlreadyExists,
|
final boolean pipelineAlreadyExists,
|
||||||
final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher,
|
final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher,
|
||||||
final boolean watcherAlreadyExists,
|
final boolean watcherAlreadyExists,
|
||||||
boolean bwcIndexesExist, boolean bwcAliasesExist,
|
|
||||||
@Nullable final Map<String, String[]> customHeaders,
|
@Nullable final Map<String, String[]> customHeaders,
|
||||||
@Nullable final String basePath) throws Exception {
|
@Nullable final String basePath) throws Exception {
|
||||||
assertMonitorVersion(webServer, customHeaders, basePath);
|
assertMonitorVersion(webServer, customHeaders, basePath);
|
||||||
assertMonitorTemplates(webServer, templateAlreadyExists, includeOldTemplates, customHeaders, basePath);
|
assertMonitorTemplates(webServer, templateAlreadyExists, includeOldTemplates, customHeaders, basePath);
|
||||||
assertMonitorPipelines(webServer, pipelineAlreadyExists, customHeaders, basePath);
|
assertMonitorPipelines(webServer, pipelineAlreadyExists, customHeaders, basePath);
|
||||||
assertMonitorBackwardsCompatibilityAliases(webServer, bwcIndexesExist && false == bwcAliasesExist, customHeaders, basePath);
|
|
||||||
assertMonitorWatches(webServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
assertMonitorWatches(webServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists,
|
||||||
customHeaders, basePath);
|
customHeaders, basePath);
|
||||||
}
|
}
|
||||||
|
@ -541,28 +519,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertMonitorBackwardsCompatibilityAliases(final MockWebServer webServer, final boolean expectPost,
|
|
||||||
@Nullable final Map<String, String[]> customHeaders, @Nullable final String basePath) throws Exception {
|
|
||||||
final String pathPrefix = basePathToAssertablePrefix(basePath);
|
|
||||||
MockRequest request = webServer.takeRequest();
|
|
||||||
|
|
||||||
assertThat(request.getMethod(), equalTo("GET"));
|
|
||||||
assertThat(request.getUri().getPath(), startsWith(pathPrefix + "/.marvel-es-1-*"));
|
|
||||||
assertThat(request.getUri().getQuery(), containsString("filter_path=*.aliases"));
|
|
||||||
assertHeaders(request, customHeaders);
|
|
||||||
|
|
||||||
if (expectPost) {
|
|
||||||
request = webServer.takeRequest();
|
|
||||||
|
|
||||||
assertThat(request.getMethod(), equalTo("POST"));
|
|
||||||
assertThat(request.getUri().getPath(), startsWith(pathPrefix + "/_aliases"));
|
|
||||||
assertThat(request.getUri().getQuery(), containsString("master_timeout=30s"));
|
|
||||||
assertThat(request.getBody(), containsString("add"));
|
|
||||||
assertHeaders(request, customHeaders);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private MockRequest assertBulk(final MockWebServer webServer) throws Exception {
|
private MockRequest assertBulk(final MockWebServer webServer) throws Exception {
|
||||||
return assertBulk(webServer, -1);
|
return assertBulk(webServer, -1);
|
||||||
}
|
}
|
||||||
|
@ -708,11 +664,9 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
final boolean templatesAlreadyExists, final boolean includeOldTemplates,
|
final boolean templatesAlreadyExists, final boolean includeOldTemplates,
|
||||||
final boolean pipelineAlreadyExists,
|
final boolean pipelineAlreadyExists,
|
||||||
final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher,
|
final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher,
|
||||||
final boolean watcherAlreadyExists,
|
final boolean watcherAlreadyExists) throws IOException {
|
||||||
final boolean bwcIndexesExist, final boolean bwcAliasesExist) throws IOException {
|
|
||||||
enqueueTemplateResponses(webServer, templatesAlreadyExists, includeOldTemplates);
|
enqueueTemplateResponses(webServer, templatesAlreadyExists, includeOldTemplates);
|
||||||
enqueuePipelineResponses(webServer, pipelineAlreadyExists);
|
enqueuePipelineResponses(webServer, pipelineAlreadyExists);
|
||||||
enqueueBackwardsCompatibilityAliasResponse(webServer, bwcIndexesExist, bwcAliasesExist);
|
|
||||||
enqueueWatcherResponses(webServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
enqueueWatcherResponses(webServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -868,26 +822,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enqueueBackwardsCompatibilityAliasResponse(MockWebServer webServer, boolean bwcIndexesExist, boolean bwcAliasesExist)
|
|
||||||
throws IOException {
|
|
||||||
if (false == bwcIndexesExist && randomBoolean()) {
|
|
||||||
enqueueResponse(webServer, 404, "index does not exist");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
XContentBuilder response = JsonXContent.contentBuilder().prettyPrint().startObject();
|
|
||||||
if (bwcIndexesExist) {
|
|
||||||
int timestampIndexes = between(1, 100);
|
|
||||||
for (int i = 0; i < timestampIndexes; i++) {
|
|
||||||
writeIndex(response, ".marvel-es-1-" + i, bwcAliasesExist ? ".monitoring-es-2-" + i + "-alias" : "ignored");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
response.endObject();
|
|
||||||
enqueueResponse(webServer, 200, response.string());
|
|
||||||
if (bwcIndexesExist && false == bwcAliasesExist) {
|
|
||||||
enqueueResponse(webServer, 200, "{\"acknowledged\": true}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void writeIndex(XContentBuilder response, String index, String alias) throws IOException {
|
private void writeIndex(XContentBuilder response, String index, String alias) throws IOException {
|
||||||
response.startObject(index);
|
response.startObject(index);
|
||||||
{
|
{
|
||||||
|
|
|
@ -343,7 +343,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
||||||
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
||||||
whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
||||||
whenSuccessfulBackwardsCompatibilityAliases();
|
|
||||||
|
|
||||||
// there's only one check
|
// there's only one check
|
||||||
when(client.performRequest(eq("GET"), eq("/_xpack"), anyMapOf(String.class, String.class))).thenThrow(exception);
|
when(client.performRequest(eq("GET"), eq("/_xpack"), anyMapOf(String.class, String.class))).thenThrow(exception);
|
||||||
|
@ -358,7 +357,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
verifyPutTemplates(unsuccessfulGetTemplates);
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
||||||
verifyGetPipelines(EXPECTED_PIPELINES);
|
verifyGetPipelines(EXPECTED_PIPELINES);
|
||||||
verifyPutPipelines(unsuccessfulGetPipelines);
|
verifyPutPipelines(unsuccessfulGetPipelines);
|
||||||
verifyBackwardsCompatibilityAliases();
|
|
||||||
verifyWatcherCheck();
|
verifyWatcherCheck();
|
||||||
verifyNoMoreInteractions(client);
|
verifyNoMoreInteractions(client);
|
||||||
}
|
}
|
||||||
|
@ -378,7 +376,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
||||||
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
||||||
whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
||||||
whenSuccessfulBackwardsCompatibilityAliases();
|
|
||||||
whenWatcherCanBeUsed(validLicense);
|
whenWatcherCanBeUsed(validLicense);
|
||||||
|
|
||||||
// failure in the middle of various watches being checked/published; suggests a node dropped
|
// failure in the middle of various watches being checked/published; suggests a node dropped
|
||||||
|
@ -435,7 +432,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
verifyPutTemplates(unsuccessfulGetTemplates);
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
||||||
verifyGetPipelines(EXPECTED_PIPELINES);
|
verifyGetPipelines(EXPECTED_PIPELINES);
|
||||||
verifyPutPipelines(unsuccessfulGetPipelines);
|
verifyPutPipelines(unsuccessfulGetPipelines);
|
||||||
verifyBackwardsCompatibilityAliases();
|
|
||||||
verifyWatcherCheck();
|
verifyWatcherCheck();
|
||||||
if (validLicense) {
|
if (validLicense) {
|
||||||
verifyGetWatches(expectedGets);
|
verifyGetWatches(expectedGets);
|
||||||
|
@ -461,7 +457,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
||||||
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
||||||
whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
whenSuccessfulPutPipelines(unsuccessfulGetPipelines);
|
||||||
whenSuccessfulBackwardsCompatibilityAliases();
|
|
||||||
// license needs to be valid, otherwise we'll do DELETEs, which are tested earlier
|
// license needs to be valid, otherwise we'll do DELETEs, which are tested earlier
|
||||||
whenWatcherCanBeUsed(true);
|
whenWatcherCanBeUsed(true);
|
||||||
|
|
||||||
|
@ -511,7 +506,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
verifyPutTemplates(unsuccessfulGetTemplates);
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
||||||
verifyGetPipelines(EXPECTED_PIPELINES);
|
verifyGetPipelines(EXPECTED_PIPELINES);
|
||||||
verifyPutPipelines(unsuccessfulGetPipelines);
|
verifyPutPipelines(unsuccessfulGetPipelines);
|
||||||
verifyBackwardsCompatibilityAliases();
|
|
||||||
verifyWatcherCheck();
|
verifyWatcherCheck();
|
||||||
verifyGetWatches(expectedGets);
|
verifyGetWatches(expectedGets);
|
||||||
verifyPutWatches(expectedPuts);
|
verifyPutWatches(expectedPuts);
|
||||||
|
@ -542,7 +536,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
} else {
|
} else {
|
||||||
whenWatcherCannotBeUsed();
|
whenWatcherCannotBeUsed();
|
||||||
}
|
}
|
||||||
whenSuccessfulBackwardsCompatibilityAliases();
|
|
||||||
|
|
||||||
assertTrue(resources.isDirty());
|
assertTrue(resources.isDirty());
|
||||||
|
|
||||||
|
@ -564,7 +557,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
verifyDeleteWatches(EXPECTED_WATCHES);
|
verifyDeleteWatches(EXPECTED_WATCHES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
verifyBackwardsCompatibilityAliases();
|
|
||||||
verifyNoMoreInteractions(client);
|
verifyNoMoreInteractions(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -590,7 +582,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
whenSuccessfulPutTemplates(unsuccessfulGetTemplates);
|
||||||
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines);
|
||||||
whenSuccessfulPutPipelines(1);
|
whenSuccessfulPutPipelines(1);
|
||||||
whenSuccessfulBackwardsCompatibilityAliases();
|
|
||||||
|
|
||||||
assertTrue(resources.isDirty());
|
assertTrue(resources.isDirty());
|
||||||
|
|
||||||
|
@ -603,7 +594,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
verifyPutTemplates(unsuccessfulGetTemplates);
|
verifyPutTemplates(unsuccessfulGetTemplates);
|
||||||
verifyGetPipelines(EXPECTED_PIPELINES);
|
verifyGetPipelines(EXPECTED_PIPELINES);
|
||||||
verifyPutPipelines(unsuccessfulGetPipelines);
|
verifyPutPipelines(unsuccessfulGetPipelines);
|
||||||
verifyBackwardsCompatibilityAliases();
|
|
||||||
verifyNoMoreInteractions(client);
|
verifyNoMoreInteractions(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -877,23 +867,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
.thenReturn(successfulDeletes.get(0), successfulDeletes.subList(1, successful).toArray(new Response[successful - 1]));
|
.thenReturn(successfulDeletes.get(0), successfulDeletes.subList(1, successful).toArray(new Response[successful - 1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void whenSuccessfulBackwardsCompatibilityAliases() throws IOException {
|
|
||||||
// Just return no indexes so we won't have to mock adding aliases
|
|
||||||
|
|
||||||
final Response response = mock(Response.class);
|
|
||||||
final StatusLine statusLine = mock(StatusLine.class);
|
|
||||||
|
|
||||||
when(response.getStatusLine()).thenReturn(statusLine);
|
|
||||||
when(statusLine.getStatusCode()).thenReturn(RestStatus.OK.getStatus());
|
|
||||||
when(response.getEntity()).thenReturn(new StringEntity("{}", ContentType.APPLICATION_JSON));
|
|
||||||
|
|
||||||
when(client.performRequest(eq("GET"),
|
|
||||||
startsWith("/.marvel-es-1-*"),
|
|
||||||
anyMapOf(String.class, String.class)))
|
|
||||||
.thenReturn(response);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void verifyVersionCheck() throws IOException {
|
private void verifyVersionCheck() throws IOException {
|
||||||
verify(client).performRequest(eq("GET"), eq("/"), anyMapOf(String.class, String.class));
|
verify(client).performRequest(eq("GET"), eq("/"), anyMapOf(String.class, String.class));
|
||||||
}
|
}
|
||||||
|
@ -943,10 +916,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe
|
||||||
any(HttpEntity.class)); // raw template
|
any(HttpEntity.class)); // raw template
|
||||||
}
|
}
|
||||||
|
|
||||||
private void verifyBackwardsCompatibilityAliases() throws IOException {
|
|
||||||
verify(client).performRequest(eq("GET"), startsWith("/.marvel-es-1-*"), anyMapOf(String.class, String.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
private ClusterService mockClusterService(final ClusterState state) {
|
private ClusterService mockClusterService(final ClusterState state) {
|
||||||
final ClusterService clusterService = mock(ClusterService.class);
|
final ClusterService clusterService = mock(ClusterService.class);
|
||||||
|
|
||||||
|
|
|
@ -292,7 +292,6 @@ public class HttpExporterTests extends ESTestCase {
|
||||||
final boolean createOldTemplates = randomBoolean();
|
final boolean createOldTemplates = randomBoolean();
|
||||||
final TimeValue templateTimeout = randomFrom(TimeValue.timeValueSeconds(30), null);
|
final TimeValue templateTimeout = randomFrom(TimeValue.timeValueSeconds(30), null);
|
||||||
final TimeValue pipelineTimeout = randomFrom(TimeValue.timeValueSeconds(30), null);
|
final TimeValue pipelineTimeout = randomFrom(TimeValue.timeValueSeconds(30), null);
|
||||||
final TimeValue aliasTimeout = randomFrom(TimeValue.timeValueSeconds(30), null);
|
|
||||||
|
|
||||||
final Settings.Builder builder = Settings.builder()
|
final Settings.Builder builder = Settings.builder()
|
||||||
.put("xpack.monitoring.exporters._http.type", "http");
|
.put("xpack.monitoring.exporters._http.type", "http");
|
||||||
|
@ -318,10 +317,6 @@ public class HttpExporterTests extends ESTestCase {
|
||||||
builder.put("xpack.monitoring.exporters._http.index.pipeline.master_timeout", pipelineTimeout.getStringRep());
|
builder.put("xpack.monitoring.exporters._http.index.pipeline.master_timeout", pipelineTimeout.getStringRep());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aliasTimeout != null) {
|
|
||||||
builder.put("xpack.monitoring.exporters._http.index.aliases.master_timeout", aliasTimeout.getStringRep());
|
|
||||||
}
|
|
||||||
|
|
||||||
final Config config = createConfig(builder.build());
|
final Config config = createConfig(builder.build());
|
||||||
|
|
||||||
final MultiHttpResource multiResource = HttpExporter.createResources(config, new ResolversRegistry(config.settings()));
|
final MultiHttpResource multiResource = HttpExporter.createResources(config, new ResolversRegistry(config.settings()));
|
||||||
|
@ -349,25 +344,19 @@ public class HttpExporterTests extends ESTestCase {
|
||||||
.map(ClusterAlertHttpResource.class::cast)
|
.map(ClusterAlertHttpResource.class::cast)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
final List<BackwardsCompatibilityAliasesResource> bwc =
|
|
||||||
resources.stream().filter(resource -> resource instanceof BackwardsCompatibilityAliasesResource)
|
|
||||||
.map(BackwardsCompatibilityAliasesResource.class::cast)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
// expected number of resources
|
// expected number of resources
|
||||||
assertThat(multiResource.getResources().size(),
|
assertThat(multiResource.getResources().size(),
|
||||||
equalTo(version + templates.size() + pipelines.size() + watcherCheck.size() + bwc.size()));
|
equalTo(version + templates.size() + pipelines.size() + watcherCheck.size()));
|
||||||
assertThat(version, equalTo(1));
|
assertThat(version, equalTo(1));
|
||||||
assertThat(templates, hasSize(createOldTemplates ? 5 + OLD_TEMPLATE_IDS.length : 5));
|
assertThat(templates, hasSize(createOldTemplates ? 5 + OLD_TEMPLATE_IDS.length : 5));
|
||||||
assertThat(pipelines, hasSize(useIngest ? PIPELINE_IDS.length : 0));
|
assertThat(pipelines, hasSize(useIngest ? PIPELINE_IDS.length : 0));
|
||||||
assertThat(watcherCheck, hasSize(clusterAlertManagement ? 1 : 0));
|
assertThat(watcherCheck, hasSize(clusterAlertManagement ? 1 : 0));
|
||||||
assertThat(watches, hasSize(clusterAlertManagement ? ClusterAlertsUtil.WATCH_IDS.length : 0));
|
assertThat(watches, hasSize(clusterAlertManagement ? ClusterAlertsUtil.WATCH_IDS.length : 0));
|
||||||
assertThat(bwc, hasSize(1));
|
|
||||||
|
|
||||||
// timeouts
|
// timeouts
|
||||||
assertMasterTimeoutSet(templates, templateTimeout);
|
assertMasterTimeoutSet(templates, templateTimeout);
|
||||||
assertMasterTimeoutSet(pipelines, pipelineTimeout);
|
assertMasterTimeoutSet(pipelines, pipelineTimeout);
|
||||||
assertMasterTimeoutSet(bwc, aliasTimeout);
|
|
||||||
|
|
||||||
// logging owner names
|
// logging owner names
|
||||||
final List<String> uniqueOwners =
|
final List<String> uniqueOwners =
|
||||||
|
@ -478,9 +467,6 @@ public class HttpExporterTests extends ESTestCase {
|
||||||
for (final HttpResource resource : resources) {
|
for (final HttpResource resource : resources) {
|
||||||
if (resource instanceof PublishableHttpResource) {
|
if (resource instanceof PublishableHttpResource) {
|
||||||
assertEquals(timeout.getStringRep(), ((PublishableHttpResource) resource).getParameters().get("master_timeout"));
|
assertEquals(timeout.getStringRep(), ((PublishableHttpResource) resource).getParameters().get("master_timeout"));
|
||||||
} else if (resource instanceof BackwardsCompatibilityAliasesResource) {
|
|
||||||
assertEquals(timeout.getStringRep(),
|
|
||||||
((BackwardsCompatibilityAliasesResource) resource).parameters().get("master_timeout"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,10 @@ package org.elasticsearch.xpack.monitoring.exporter.local;
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
|
import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.get.GetIndexResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
|
||||||
import org.elasticsearch.action.index.IndexRequestBuilder;
|
import org.elasticsearch.action.index.IndexRequestBuilder;
|
||||||
import org.elasticsearch.action.ingest.GetPipelineResponse;
|
import org.elasticsearch.action.ingest.GetPipelineResponse;
|
||||||
import org.elasticsearch.action.search.SearchResponse;
|
import org.elasticsearch.action.search.SearchResponse;
|
||||||
import org.elasticsearch.cluster.metadata.AliasMetaData;
|
|
||||||
import org.elasticsearch.cluster.metadata.IndexTemplateMetaData;
|
import org.elasticsearch.cluster.metadata.IndexTemplateMetaData;
|
||||||
import org.elasticsearch.common.Strings;
|
import org.elasticsearch.common.Strings;
|
||||||
import org.elasticsearch.common.bytes.BytesReference;
|
import org.elasticsearch.common.bytes.BytesReference;
|
||||||
|
@ -60,7 +58,6 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcke
|
||||||
import static org.elasticsearch.xpack.monitoring.MonitoredSystem.BEATS;
|
import static org.elasticsearch.xpack.monitoring.MonitoredSystem.BEATS;
|
||||||
import static org.elasticsearch.xpack.monitoring.MonitoredSystem.KIBANA;
|
import static org.elasticsearch.xpack.monitoring.MonitoredSystem.KIBANA;
|
||||||
import static org.elasticsearch.xpack.monitoring.MonitoredSystem.LOGSTASH;
|
import static org.elasticsearch.xpack.monitoring.MonitoredSystem.LOGSTASH;
|
||||||
import static org.elasticsearch.xpack.monitoring.exporter.MonitoringTemplateUtils.OLD_TEMPLATE_VERSION;
|
|
||||||
import static org.elasticsearch.xpack.monitoring.exporter.MonitoringTemplateUtils.PIPELINE_IDS;
|
import static org.elasticsearch.xpack.monitoring.exporter.MonitoringTemplateUtils.PIPELINE_IDS;
|
||||||
import static org.elasticsearch.xpack.monitoring.exporter.MonitoringTemplateUtils.TEMPLATE_VERSION;
|
import static org.elasticsearch.xpack.monitoring.exporter.MonitoringTemplateUtils.TEMPLATE_VERSION;
|
||||||
import static org.hamcrest.Matchers.greaterThan;
|
import static org.hamcrest.Matchers.greaterThan;
|
||||||
|
@ -92,15 +89,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase {
|
||||||
indexRandom(true, indexRequestBuilders);
|
indexRandom(true, indexRequestBuilders);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (randomBoolean()) {
|
|
||||||
// create some marvel indices to check if aliases are correctly created
|
|
||||||
final int oldies = randomIntBetween(1, 5);
|
|
||||||
for (int i = 0; i < oldies; i++) {
|
|
||||||
assertAcked(client().admin().indices().prepareCreate(".marvel-es-1-2014.12." + i)
|
|
||||||
.setSettings("number_of_shards", 1, "number_of_replicas", 0).get());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Settings.Builder exporterSettings = Settings.builder()
|
Settings.Builder exporterSettings = Settings.builder()
|
||||||
.put("xpack.monitoring.exporters._local.enabled", true);
|
.put("xpack.monitoring.exporters._local.enabled", true);
|
||||||
|
|
||||||
|
@ -134,7 +122,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase {
|
||||||
|
|
||||||
checkMonitoringTemplates();
|
checkMonitoringTemplates();
|
||||||
checkMonitoringPipelines();
|
checkMonitoringPipelines();
|
||||||
checkMonitoringAliases();
|
|
||||||
checkMonitoringDocs();
|
checkMonitoringDocs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,7 +181,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase {
|
||||||
|
|
||||||
checkMonitoringTemplates();
|
checkMonitoringTemplates();
|
||||||
checkMonitoringPipelines();
|
checkMonitoringPipelines();
|
||||||
checkMonitoringAliases();
|
|
||||||
checkMonitoringWatches();
|
checkMonitoringWatches();
|
||||||
checkMonitoringDocs();
|
checkMonitoringDocs();
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -269,23 +255,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase {
|
||||||
assertTrue("monitoring ingest pipeline not found", response.isFound());
|
assertTrue("monitoring ingest pipeline not found", response.isFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks that the local exporter correctly added aliases to indices created with previous
|
|
||||||
* Marvel versions.
|
|
||||||
*/
|
|
||||||
private void checkMonitoringAliases() {
|
|
||||||
GetIndexResponse response =
|
|
||||||
client().admin().indices().prepareGetIndex().setIndices(".marvel-es-1-*").get();
|
|
||||||
for (String index : response.getIndices()) {
|
|
||||||
List<AliasMetaData> aliases = response.getAliases().get(index);
|
|
||||||
assertEquals("marvel index should have at least 1 alias: " + index, 1, aliases.size());
|
|
||||||
|
|
||||||
String indexDate = index.substring(".marvel-es-1-".length());
|
|
||||||
String expectedAlias = ".monitoring-es-" + OLD_TEMPLATE_VERSION + "-" + indexDate + "-alias";
|
|
||||||
assertEquals(expectedAlias, aliases.get(0).getAlias());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks that the local exporter correctly creates Watches.
|
* Checks that the local exporter correctly creates Watches.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -214,18 +214,16 @@ public class ReservedRolesStoreTests extends ESTestCase {
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:foo").test(randomAlphaOfLengthBetween(8, 24)),
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:foo").test(randomAlphaOfLengthBetween(8, 24)),
|
||||||
is(false));
|
is(false));
|
||||||
|
|
||||||
Arrays.asList(".monitoring-" + randomAlphaOfLength(randomIntBetween(0, 13)),
|
final String index = ".monitoring-" + randomAlphaOfLength(randomIntBetween(0, 13));
|
||||||
".marvel-es-" + randomAlphaOfLength(randomIntBetween(0, 13))).forEach((index) -> {
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(false));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(false));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:bar").test(index), is(false));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:bar").test(index), is(false));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(DeleteIndexAction.NAME).test(index), is(false));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(DeleteIndexAction.NAME).test(index), is(false));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(CreateIndexAction.NAME).test(index), is(false));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(CreateIndexAction.NAME).test(index), is(false));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(IndexAction.NAME).test(index), is(false));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(IndexAction.NAME).test(index), is(false));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(DeleteAction.NAME).test(index), is(false));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(DeleteAction.NAME).test(index), is(false));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(UpdateSettingsAction.NAME).test(index), is(false));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(UpdateSettingsAction.NAME).test(index), is(false));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(SearchAction.NAME).test(index), is(true));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(SearchAction.NAME).test(index), is(true));
|
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(GetAction.NAME).test(index), is(true));
|
||||||
assertThat(monitoringUserRole.indices().allowedIndicesMatcher(GetAction.NAME).test(index), is(true));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRemoteMonitoringAgentRole() {
|
public void testRemoteMonitoringAgentRole() {
|
||||||
|
@ -259,19 +257,17 @@ public class ReservedRolesStoreTests extends ESTestCase {
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:foo")
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:foo")
|
||||||
.test(randomAlphaOfLengthBetween(8, 24)), is(false));
|
.test(randomAlphaOfLengthBetween(8, 24)), is(false));
|
||||||
|
|
||||||
Arrays.asList(".monitoring-" + randomAlphaOfLength(randomIntBetween(0, 13)),
|
final String index = ".monitoring-" + randomAlphaOfLength(randomIntBetween(0, 13));
|
||||||
".marvel-es-" + randomAlphaOfLength(randomIntBetween(0, 13))).forEach((index) -> {
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:foo").test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:bar").test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:bar").test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(DeleteIndexAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(DeleteIndexAction.NAME).test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(CreateIndexAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(CreateIndexAction.NAME).test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(IndexAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(IndexAction.NAME).test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(DeleteAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(DeleteAction.NAME).test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(UpdateSettingsAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(UpdateSettingsAction.NAME).test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(SearchAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(SearchAction.NAME).test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(GetAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(GetAction.NAME).test(index), is(true));
|
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(GetIndexAction.NAME).test(index), is(true));
|
||||||
assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher(GetIndexAction.NAME).test(index), is(true));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testReportingUserRole() {
|
public void testReportingUserRole() {
|
||||||
|
|
Loading…
Reference in New Issue