diff --git a/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/BackwardsCompatibilityAliasesResource.java b/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/BackwardsCompatibilityAliasesResource.java deleted file mode 100644 index 534374b0536..00000000000 --- a/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/BackwardsCompatibilityAliasesResource.java +++ /dev/null @@ -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 indices = XContentHelper.convertToMap(JsonXContent.jsonXContent, response.getEntity().getContent(), false); - request = JsonXContent.contentBuilder(); - request.startObject().startArray("actions"); - for (Map.Entry 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 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 parameters() { - Map 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(); - } -} diff --git a/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporter.java b/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporter.java index 4c752633543..0edefeee3cc 100644 --- a/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporter.java +++ b/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporter.java @@ -39,8 +39,6 @@ import org.elasticsearch.xpack.monitoring.resolver.MonitoringIndexNameResolver; import org.elasticsearch.xpack.monitoring.resolver.ResolversRegistry; import org.elasticsearch.xpack.ssl.SSLService; -import static org.elasticsearch.common.unit.TimeValue.timeValueSeconds; - import javax.net.ssl.SSLContext; import java.io.IOException; 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) */ 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. @@ -329,10 +323,6 @@ public class HttpExporter extends Exporter { // load the pipeline (this will get added to as the monitoring API version increases) 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 configureClusterAlertsResources(config, resourceOwnerName, resources); diff --git a/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporter.java b/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporter.java index d3ebadffbc0..33922dfaaea 100644 --- a/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporter.java +++ b/plugin/src/main/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporter.java @@ -10,10 +10,6 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.logging.log4j.util.Supplier; 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.DeleteIndexResponse; 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"); // 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 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() { - @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 // change 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 { INITIALIZED, RUNNING, diff --git a/plugin/src/main/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStore.java b/plugin/src/main/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStore.java index 9eb0ab9a0af..bb2b080c70e 100644 --- a/plugin/src/main/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStore.java +++ b/plugin/src/main/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStore.java @@ -44,7 +44,7 @@ public class ReservedRolesStore { RoleDescriptor.IndicesPrivileges.builder().indices(".kibana*").privileges("manage", "read", "index", "delete") .build() }, null, MetadataUtils.DEFAULT_RESERVED_METADATA)) .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)) .put("remote_monitoring_agent", new RoleDescriptor("remote_monitoring_agent", new String[] { @@ -54,7 +54,7 @@ public class ReservedRolesStore { "cluster:admin/xpack/watcher/watch/delete", }, 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)) .put("ingest_admin", new RoleDescriptor("ingest_admin", new String[] { "manage_index_templates", "manage_pipeline" }, null, null, MetadataUtils.DEFAULT_RESERVED_METADATA)) diff --git a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/OldMonitoringIndicesBackwardsCompatibilityTests.java b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/OldMonitoringIndicesBackwardsCompatibilityTests.java index 897e1008070..02db820ed43 100644 --- a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/OldMonitoringIndicesBackwardsCompatibilityTests.java +++ b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/OldMonitoringIndicesBackwardsCompatibilityTests.java @@ -178,7 +178,7 @@ public class OldMonitoringIndicesBackwardsCompatibilityTests extends AbstractOld logger.info("--> Waiting for indices deletion"); CountDown retries = new CountDown(10); assertBusy(() -> { - String[] indices = new String[]{".marvel-*", ".monitoring-*"}; + String[] indices = new String[]{".monitoring-*"}; IndicesExistsResponse existsResponse = client().admin().indices().prepareExists(indices).get(); if (existsResponse.isExists()) { assertAcked(client().admin().indices().prepareDelete(indices)); diff --git a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java index 5a4590c6151..f1aed7bd46f 100644 --- a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java +++ b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterIT.java @@ -26,7 +26,6 @@ import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.XContentType; -import org.elasticsearch.common.xcontent.json.JsonXContent; import org.elasticsearch.env.Environment; import org.elasticsearch.license.XPackLicenseState; 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.WatcherExistsHttpResource.WATCHER_CHECK_PARAMETERS; import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.startsWith; @ESIntegTestCase.ClusterScope(scope = Scope.TEST, 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 currentLicenseAllowsWatcher = true; 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 MockWebServer webServer; @@ -131,8 +126,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { enqueueGetClusterVersionResponse(Version.CURRENT); enqueueSetupResponses(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}"); final int nbDocs = randomIntBetween(1, 25); @@ -140,8 +134,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { assertMonitorResources(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); assertBulk(webServer, nbDocs); } @@ -167,8 +160,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { enqueueGetClusterVersionResponse(Version.CURRENT); enqueueSetupResponses(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}"); final int nbDocs = randomIntBetween(1, 25); @@ -177,7 +169,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase { assertMonitorResources(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist, headers, null); assertBulk(webServer, nbDocs, headers, null); } @@ -228,8 +219,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { enqueueGetClusterVersionResponse(Version.CURRENT); enqueueSetupResponses(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); enqueueResponse(200, "{\"errors\": false}"); final int nbDocs = randomIntBetween(1, 25); @@ -238,7 +228,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase { assertMonitorResources(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist, headers, basePath); assertBulk(webServer, nbDocs, headers, basePath); } @@ -253,16 +242,14 @@ public class HttpExporterIT extends MonitoringIntegTestCase { enqueueGetClusterVersionResponse(Version.CURRENT); enqueueSetupResponses(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); enqueueResponse(200, "{\"errors\": false}"); export(settings, Collections.singletonList(newRandomMonitoringDoc())); assertMonitorResources(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); assertBulk(webServer); try (MockWebServer secondWebServer = createMockWebServer()) { @@ -287,7 +274,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase { } // opposite of if it existed before enqueuePipelineResponses(secondWebServer, !pipelineExistsAlready); - enqueueBackwardsCompatibilityAliasResponse(secondWebServer, bwcIndexesExist, true); enqueueWatcherResponses(secondWebServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); enqueueResponse(secondWebServer, 200, "{\"errors\": false}"); @@ -311,7 +297,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase { } } assertMonitorPipelines(secondWebServer, !pipelineExistsAlready, null, null); - assertMonitorBackwardsCompatibilityAliases(secondWebServer, false, null, null); assertMonitorWatches(secondWebServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, null, null); assertBulk(secondWebServer); @@ -353,8 +338,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { enqueueGetClusterVersionResponse(Version.CURRENT); enqueueSetupResponses(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}"); MonitoringDoc doc = newRandomMonitoringDoc(); @@ -362,8 +346,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { assertMonitorResources(webServer, templatesExistsAlready, includeOldTemplates, pipelineExistsAlready, - remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist); + remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists); MockRequest recordedRequest = assertBulk(webServer); @SuppressWarnings("unchecked") @@ -384,8 +367,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { enqueueGetClusterVersionResponse(Version.CURRENT); enqueueSetupResponses(webServer, true, includeOldTemplates, true, - true, true, true, - false, false); + true, true, true); enqueueResponse(200, "{\"errors\": false, \"msg\": \"successful bulk request\"}"); doc = newRandomMonitoringDoc(); @@ -395,8 +377,7 @@ public class HttpExporterIT extends MonitoringIntegTestCase { + DateTimeFormat.forPattern(newTimeFormat).withZoneUTC().print(doc.getTimestamp()); assertMonitorResources(webServer, true, includeOldTemplates, true, - true, true, true, - false, false); + true, true, true); recordedRequest = assertBulk(webServer); bytes = recordedRequest.getBody().getBytes(StandardCharsets.UTF_8); @@ -427,11 +408,10 @@ public class HttpExporterIT extends MonitoringIntegTestCase { final boolean templateAlreadyExists, final boolean includeOldTemplates, final boolean pipelineAlreadyExists, final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher, - final boolean watcherAlreadyExists, - final boolean bwcIndexesExist, final boolean bwcAliasesExist) throws Exception { + final boolean watcherAlreadyExists) throws Exception { assertMonitorResources(webServer, templateAlreadyExists, includeOldTemplates, pipelineAlreadyExists, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, - bwcIndexesExist, bwcAliasesExist, null, null); + null, null); } private void assertMonitorResources(final MockWebServer webServer, @@ -439,13 +419,11 @@ public class HttpExporterIT extends MonitoringIntegTestCase { final boolean pipelineAlreadyExists, final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher, final boolean watcherAlreadyExists, - boolean bwcIndexesExist, boolean bwcAliasesExist, @Nullable final Map customHeaders, @Nullable final String basePath) throws Exception { assertMonitorVersion(webServer, customHeaders, basePath); assertMonitorTemplates(webServer, templateAlreadyExists, includeOldTemplates, customHeaders, basePath); assertMonitorPipelines(webServer, pipelineAlreadyExists, customHeaders, basePath); - assertMonitorBackwardsCompatibilityAliases(webServer, bwcIndexesExist && false == bwcAliasesExist, customHeaders, basePath); assertMonitorWatches(webServer, remoteClusterAllowsWatcher, currentLicenseAllowsWatcher, watcherAlreadyExists, customHeaders, basePath); } @@ -541,28 +519,6 @@ public class HttpExporterIT extends MonitoringIntegTestCase { } } - private void assertMonitorBackwardsCompatibilityAliases(final MockWebServer webServer, final boolean expectPost, - @Nullable final Map 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 { return assertBulk(webServer, -1); } @@ -708,11 +664,9 @@ public class HttpExporterIT extends MonitoringIntegTestCase { final boolean templatesAlreadyExists, final boolean includeOldTemplates, final boolean pipelineAlreadyExists, final boolean remoteClusterAllowsWatcher, final boolean currentLicenseAllowsWatcher, - final boolean watcherAlreadyExists, - final boolean bwcIndexesExist, final boolean bwcAliasesExist) throws IOException { + final boolean watcherAlreadyExists) throws IOException { enqueueTemplateResponses(webServer, templatesAlreadyExists, includeOldTemplates); enqueuePipelineResponses(webServer, pipelineAlreadyExists); - enqueueBackwardsCompatibilityAliasResponse(webServer, bwcIndexesExist, bwcAliasesExist); 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 { response.startObject(index); { diff --git a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterResourceTests.java b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterResourceTests.java index 79a8eecd66d..2e6c812c785 100644 --- a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterResourceTests.java +++ b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterResourceTests.java @@ -343,7 +343,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe whenSuccessfulPutTemplates(unsuccessfulGetTemplates); whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines); whenSuccessfulPutPipelines(unsuccessfulGetPipelines); - whenSuccessfulBackwardsCompatibilityAliases(); // there's only one check 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); verifyGetPipelines(EXPECTED_PIPELINES); verifyPutPipelines(unsuccessfulGetPipelines); - verifyBackwardsCompatibilityAliases(); verifyWatcherCheck(); verifyNoMoreInteractions(client); } @@ -378,7 +376,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe whenSuccessfulPutTemplates(unsuccessfulGetTemplates); whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines); whenSuccessfulPutPipelines(unsuccessfulGetPipelines); - whenSuccessfulBackwardsCompatibilityAliases(); whenWatcherCanBeUsed(validLicense); // 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); verifyGetPipelines(EXPECTED_PIPELINES); verifyPutPipelines(unsuccessfulGetPipelines); - verifyBackwardsCompatibilityAliases(); verifyWatcherCheck(); if (validLicense) { verifyGetWatches(expectedGets); @@ -461,7 +457,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe whenSuccessfulPutTemplates(unsuccessfulGetTemplates); whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines); whenSuccessfulPutPipelines(unsuccessfulGetPipelines); - whenSuccessfulBackwardsCompatibilityAliases(); // license needs to be valid, otherwise we'll do DELETEs, which are tested earlier whenWatcherCanBeUsed(true); @@ -511,7 +506,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe verifyPutTemplates(unsuccessfulGetTemplates); verifyGetPipelines(EXPECTED_PIPELINES); verifyPutPipelines(unsuccessfulGetPipelines); - verifyBackwardsCompatibilityAliases(); verifyWatcherCheck(); verifyGetWatches(expectedGets); verifyPutWatches(expectedPuts); @@ -542,7 +536,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe } else { whenWatcherCannotBeUsed(); } - whenSuccessfulBackwardsCompatibilityAliases(); assertTrue(resources.isDirty()); @@ -564,7 +557,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe verifyDeleteWatches(EXPECTED_WATCHES); } } - verifyBackwardsCompatibilityAliases(); verifyNoMoreInteractions(client); } @@ -590,7 +582,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe whenSuccessfulPutTemplates(unsuccessfulGetTemplates); whenGetPipelines(successfulGetPipelines, unsuccessfulGetPipelines); whenSuccessfulPutPipelines(1); - whenSuccessfulBackwardsCompatibilityAliases(); assertTrue(resources.isDirty()); @@ -603,7 +594,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe verifyPutTemplates(unsuccessfulGetTemplates); verifyGetPipelines(EXPECTED_PIPELINES); verifyPutPipelines(unsuccessfulGetPipelines); - verifyBackwardsCompatibilityAliases(); verifyNoMoreInteractions(client); } @@ -877,23 +867,6 @@ public class HttpExporterResourceTests extends AbstractPublishableHttpResourceTe .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 { 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 } - 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) { final ClusterService clusterService = mock(ClusterService.class); diff --git a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterTests.java b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterTests.java index 0ecf325fdf5..2245905b28b 100644 --- a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterTests.java +++ b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/http/HttpExporterTests.java @@ -292,7 +292,6 @@ public class HttpExporterTests extends ESTestCase { final boolean createOldTemplates = randomBoolean(); final TimeValue templateTimeout = 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() .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()); } - if (aliasTimeout != null) { - builder.put("xpack.monitoring.exporters._http.index.aliases.master_timeout", aliasTimeout.getStringRep()); - } - final Config config = createConfig(builder.build()); final MultiHttpResource multiResource = HttpExporter.createResources(config, new ResolversRegistry(config.settings())); @@ -349,25 +344,19 @@ public class HttpExporterTests extends ESTestCase { .map(ClusterAlertHttpResource.class::cast) .collect(Collectors.toList()); } - final List bwc = - resources.stream().filter(resource -> resource instanceof BackwardsCompatibilityAliasesResource) - .map(BackwardsCompatibilityAliasesResource.class::cast) - .collect(Collectors.toList()); // expected number of resources 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(templates, hasSize(createOldTemplates ? 5 + OLD_TEMPLATE_IDS.length : 5)); assertThat(pipelines, hasSize(useIngest ? PIPELINE_IDS.length : 0)); assertThat(watcherCheck, hasSize(clusterAlertManagement ? 1 : 0)); assertThat(watches, hasSize(clusterAlertManagement ? ClusterAlertsUtil.WATCH_IDS.length : 0)); - assertThat(bwc, hasSize(1)); // timeouts assertMasterTimeoutSet(templates, templateTimeout); assertMasterTimeoutSet(pipelines, pipelineTimeout); - assertMasterTimeoutSet(bwc, aliasTimeout); // logging owner names final List uniqueOwners = @@ -478,9 +467,6 @@ public class HttpExporterTests extends ESTestCase { for (final HttpResource resource : resources) { if (resource instanceof PublishableHttpResource) { assertEquals(timeout.getStringRep(), ((PublishableHttpResource) resource).getParameters().get("master_timeout")); - } else if (resource instanceof BackwardsCompatibilityAliasesResource) { - assertEquals(timeout.getStringRep(), - ((BackwardsCompatibilityAliasesResource) resource).parameters().get("master_timeout")); } } } diff --git a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTests.java b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTests.java index 1663269ba58..98e614dce00 100644 --- a/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTests.java +++ b/plugin/src/test/java/org/elasticsearch/xpack/monitoring/exporter/local/LocalExporterIntegTests.java @@ -7,12 +7,10 @@ package org.elasticsearch.xpack.monitoring.exporter.local; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; 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.index.IndexRequestBuilder; import org.elasticsearch.action.ingest.GetPipelineResponse; import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.cluster.metadata.AliasMetaData; import org.elasticsearch.cluster.metadata.IndexTemplateMetaData; import org.elasticsearch.common.Strings; 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.KIBANA; 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.TEMPLATE_VERSION; import static org.hamcrest.Matchers.greaterThan; @@ -92,15 +89,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase { 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() .put("xpack.monitoring.exporters._local.enabled", true); @@ -134,7 +122,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase { checkMonitoringTemplates(); checkMonitoringPipelines(); - checkMonitoringAliases(); checkMonitoringDocs(); } @@ -194,7 +181,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase { checkMonitoringTemplates(); checkMonitoringPipelines(); - checkMonitoringAliases(); checkMonitoringWatches(); checkMonitoringDocs(); } finally { @@ -269,23 +255,6 @@ public class LocalExporterIntegTests extends LocalExporterIntegTestCase { 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 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. */ diff --git a/plugin/src/test/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStoreTests.java b/plugin/src/test/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStoreTests.java index d16b6e438bb..1fafd2a7d89 100644 --- a/plugin/src/test/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStoreTests.java +++ b/plugin/src/test/java/org/elasticsearch/xpack/security/authz/store/ReservedRolesStoreTests.java @@ -214,18 +214,16 @@ public class ReservedRolesStoreTests extends ESTestCase { assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:foo").test(randomAlphaOfLengthBetween(8, 24)), is(false)); - Arrays.asList(".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:bar").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(IndexAction.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(SearchAction.NAME).test(index), is(true)); - assertThat(monitoringUserRole.indices().allowedIndicesMatcher(GetAction.NAME).test(index), is(true)); - }); + final String index = ".monitoring-" + randomAlphaOfLength(randomIntBetween(0, 13)); + assertThat(monitoringUserRole.indices().allowedIndicesMatcher("indices:foo").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(CreateIndexAction.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(UpdateSettingsAction.NAME).test(index), is(false)); + assertThat(monitoringUserRole.indices().allowedIndicesMatcher(SearchAction.NAME).test(index), is(true)); + assertThat(monitoringUserRole.indices().allowedIndicesMatcher(GetAction.NAME).test(index), is(true)); } public void testRemoteMonitoringAgentRole() { @@ -259,19 +257,17 @@ public class ReservedRolesStoreTests extends ESTestCase { assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:foo") .test(randomAlphaOfLengthBetween(8, 24)), is(false)); - Arrays.asList(".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:bar").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(IndexAction.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(SearchAction.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)); - }); + final String index = ".monitoring-" + randomAlphaOfLength(randomIntBetween(0, 13)); + assertThat(remoteMonitoringAgentRole.indices().allowedIndicesMatcher("indices:foo").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(CreateIndexAction.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(UpdateSettingsAction.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(GetIndexAction.NAME).test(index), is(true)); } public void testReportingUserRole() {