Search in sources :

Example 21 with CreateIndexRequest

use of org.opensearch.action.admin.indices.create.CreateIndexRequest in project security by opensearch-project.

the class IntegrationTests method testNoDnfof.

@Test
public void testNoDnfof() throws Exception {
    final Settings settings = Settings.builder().put(ConfigConstants.SECURITY_ROLES_MAPPING_RESOLUTION, "BOTH").build();
    setup(Settings.EMPTY, new DynamicSecurityConfig(), settings);
    final RestHelper rh = nonSslRestHelper();
    try (Client tc = getClient()) {
        tc.admin().indices().create(new CreateIndexRequest("copysf")).actionGet();
        tc.index(new IndexRequest("indexa").id("0").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":\"indexa\"}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("indexb").id("0").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":\"indexb\"}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("vulcangov").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("starfleet").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("starfleet_academy").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("starfleet_library").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("klingonempire").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("public").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("spock").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("kirk").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("role01_role02").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.admin().indices().aliases(new IndicesAliasesRequest().addAliasAction(AliasActions.add().indices("starfleet", "starfleet_academy", "starfleet_library").alias("sf"))).actionGet();
        tc.admin().indices().aliases(new IndicesAliasesRequest().addAliasAction(AliasActions.add().indices("klingonempire", "vulcangov").alias("nonsf"))).actionGet();
        tc.admin().indices().aliases(new IndicesAliasesRequest().addAliasAction(AliasActions.add().indices("public").alias("unrestricted"))).actionGet();
    }
    HttpResponse resc;
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("indexa,indexb/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("indexa,indexb/_search?pretty", encodeBasicHeader("user_b", "user_b"))).getStatusCode());
    System.out.println(resc.getBody());
    String msearchBody = "{\"index\":\"indexa\", \"ignore_unavailable\": true}" + System.lineSeparator() + "{\"size\":10, \"query\":{\"bool\":{\"must\":{\"match_all\":{}}}}}" + System.lineSeparator() + "{\"index\":\"indexb\", \"ignore_unavailable\": true}" + System.lineSeparator() + "{\"size\":10, \"query\":{\"bool\":{\"must\":{\"match_all\":{}}}}}" + System.lineSeparator();
    System.out.println("#### msearch a");
    resc = rh.executePostRequest("_msearch?pretty", msearchBody, encodeBasicHeader("user_a", "user_a"));
    Assert.assertEquals(200, resc.getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("indexa"));
    Assert.assertFalse(resc.getBody(), resc.getBody().contains("indexb"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("exception"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("permission"));
    System.out.println("#### msearch b");
    resc = rh.executePostRequest("_msearch?pretty", msearchBody, encodeBasicHeader("user_b", "user_b"));
    Assert.assertEquals(200, resc.getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertFalse(resc.getBody(), resc.getBody().contains("indexa"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("indexb"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("exception"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("permission"));
    msearchBody = "{\"index\":\"indexc\", \"ignore_unavailable\": true}" + System.lineSeparator() + "{\"size\":10, \"query\":{\"bool\":{\"must\":{\"match_all\":{}}}}}" + System.lineSeparator() + "{\"index\":\"indexd\", \"ignore_unavailable\": true}" + System.lineSeparator() + "{\"size\":10, \"query\":{\"bool\":{\"must\":{\"match_all\":{}}}}}" + System.lineSeparator();
    System.out.println("#### msearch b2");
    resc = rh.executePostRequest("_msearch?pretty", msearchBody, encodeBasicHeader("user_b", "user_b"));
    System.out.println(resc.getBody());
    Assert.assertEquals(200, resc.getStatusCode());
    Assert.assertFalse(resc.getBody(), resc.getBody().contains("indexc"));
    Assert.assertFalse(resc.getBody(), resc.getBody().contains("indexd"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("exception"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("permission"));
    int count = resc.getBody().split("\"status\" : 403").length;
    Assert.assertEquals(3, count);
    String mgetBody = "{" + "\"docs\" : [" + "{" + "\"_index\" : \"indexa\"," + "\"_id\" : \"0\"" + " }," + " {" + "\"_index\" : \"indexb\"," + " \"_id\" : \"0\"" + "}" + "]" + "}";
    resc = rh.executePostRequest("_mget?pretty", mgetBody, encodeBasicHeader("user_b", "user_b"));
    Assert.assertEquals(200, resc.getStatusCode());
    Assert.assertFalse(resc.getBody(), resc.getBody().contains("\"content\" : \"indexa\""));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("indexb"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("exception"));
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("permission"));
    mgetBody = "{" + "\"docs\" : [" + "{" + "\"_index\" : \"indexx\"," + "\"_id\" : \"0\"" + " }," + " {" + "\"_index\" : \"indexy\"," + " \"_id\" : \"0\"" + "}" + "]" + "}";
    resc = rh.executePostRequest("_mget?pretty", mgetBody, encodeBasicHeader("user_b", "user_b"));
    Assert.assertEquals(200, resc.getStatusCode());
    Assert.assertTrue(resc.getBody(), resc.getBody().contains("exception"));
    count = resc.getBody().split("root_cause").length;
    Assert.assertEquals(3, count);
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("index*/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    Assert.assertEquals(HttpStatus.SC_OK, (resc = rh.executeGetRequest("indexa/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("indexb/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("*/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("_all/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("notexists/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_NOT_FOUND, (resc = rh.executeGetRequest("indexanbh,indexabb*/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_FORBIDDEN, (resc = rh.executeGetRequest("starfleet/_search?pretty", encodeBasicHeader("user_a", "user_a"))).getStatusCode());
    System.out.println(resc.getBody());
    Assert.assertEquals(HttpStatus.SC_OK, (resc = rh.executeGetRequest("starfleet/_search?pretty", encodeBasicHeader("worf", "worf"))).getStatusCode());
    System.out.println(resc.getBody());
    System.out.println("#### _all/_mapping/field/*");
    Assert.assertEquals(HttpStatus.SC_OK, (resc = rh.executeGetRequest("_all/_mapping/field/*", encodeBasicHeader("nagilum", "nagilum"))).getStatusCode());
    System.out.println(resc.getBody());
    System.out.println("#### _mapping/field/*");
    Assert.assertEquals(HttpStatus.SC_OK, (resc = rh.executeGetRequest("_mapping/field/*", encodeBasicHeader("nagilum", "nagilum"))).getStatusCode());
    System.out.println(resc.getBody());
    System.out.println("#### */_mapping/field/*");
    Assert.assertEquals(HttpStatus.SC_OK, (resc = rh.executeGetRequest("*/_mapping/field/*", encodeBasicHeader("nagilum", "nagilum"))).getStatusCode());
    System.out.println(resc.getBody());
}
Also used : DynamicSecurityConfig(org.opensearch.security.test.DynamicSecurityConfig) IndicesAliasesRequest(org.opensearch.action.admin.indices.alias.IndicesAliasesRequest) HttpResponse(org.opensearch.security.test.helper.rest.RestHelper.HttpResponse) Client(org.opensearch.client.Client) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest) IndexRequest(org.opensearch.action.index.IndexRequest) RestHelper(org.opensearch.security.test.helper.rest.RestHelper) Settings(org.opensearch.common.settings.Settings) Test(org.junit.Test) SingleClusterTest(org.opensearch.security.test.SingleClusterTest)

Example 22 with CreateIndexRequest

use of org.opensearch.action.admin.indices.create.CreateIndexRequest in project security by opensearch-project.

the class PrivilegesEvaluationTest method resolveTestHidden.

@Test
public void resolveTestHidden() throws Exception {
    setup();
    try (Client client = getClient()) {
        client.index(new IndexRequest("hidden_test_not_hidden").setRefreshPolicy(RefreshPolicy.IMMEDIATE).source(XContentType.JSON, "index", "hidden_test_not_hidden", "b", "y", "date", "1985/01/01")).actionGet();
        client.admin().indices().create(new CreateIndexRequest(".hidden_test_actually_hidden").settings(ImmutableMap.of("index.hidden", true))).actionGet();
        client.index(new IndexRequest(".hidden_test_actually_hidden").id("test").source("a", "b").setRefreshPolicy(RefreshPolicy.IMMEDIATE)).actionGet();
    }
    RestHelper rh = nonSslRestHelper();
    RestHelper.HttpResponse httpResponse = rh.executeGetRequest("/*hidden_test*/_search?expand_wildcards=all&pretty=true", encodeBasicHeader("hidden_test", "nagilum"));
    Assert.assertEquals(httpResponse.getBody(), 403, httpResponse.getStatusCode());
    httpResponse = rh.executeGetRequest("/hidden_test_not_hidden?pretty=true", encodeBasicHeader("hidden_test", "nagilum"));
    Assert.assertEquals(httpResponse.getBody(), 200, httpResponse.getStatusCode());
}
Also used : Client(org.opensearch.client.Client) IndexRequest(org.opensearch.action.index.IndexRequest) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest) RestHelper(org.opensearch.security.test.helper.rest.RestHelper) SingleClusterTest(org.opensearch.security.test.SingleClusterTest) Test(org.junit.Test)

Example 23 with CreateIndexRequest

use of org.opensearch.action.admin.indices.create.CreateIndexRequest in project security by opensearch-project.

the class ResolveAPITests method setupIndices.

private void setupIndices() {
    try (Client tc = getClient()) {
        tc.admin().indices().create(new CreateIndexRequest("copysf")).actionGet();
        tc.index(new IndexRequest("vulcangov").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("starfleet").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("starfleet_academy").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("starfleet_library").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("klingonempire").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("public").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("spock").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("kirk").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("role01_role02").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.index(new IndexRequest("xyz").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).source("{\"content\":1}", XContentType.JSON)).actionGet();
        tc.admin().indices().aliases(new IndicesAliasesRequest().addAliasAction(IndicesAliasesRequest.AliasActions.add().indices("starfleet", "starfleet_academy", "starfleet_library").alias("sf"))).actionGet();
        tc.admin().indices().aliases(new IndicesAliasesRequest().addAliasAction(IndicesAliasesRequest.AliasActions.add().indices("klingonempire", "vulcangov").alias("nonsf"))).actionGet();
        tc.admin().indices().aliases(new IndicesAliasesRequest().addAliasAction(IndicesAliasesRequest.AliasActions.add().indices("public").alias("unrestricted"))).actionGet();
        tc.admin().indices().aliases(new IndicesAliasesRequest().addAliasAction(IndicesAliasesRequest.AliasActions.add().indices("xyz").alias("alias1"))).actionGet();
    }
}
Also used : IndicesAliasesRequest(org.opensearch.action.admin.indices.alias.IndicesAliasesRequest) Client(org.opensearch.client.Client) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest) IndexRequest(org.opensearch.action.index.IndexRequest) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest)

Example 24 with CreateIndexRequest

use of org.opensearch.action.admin.indices.create.CreateIndexRequest in project security by opensearch-project.

the class RolesInjectorIntegTest method testRolesInject.

@Test
public void testRolesInject() throws Exception {
    setup(Settings.EMPTY, new DynamicSecurityConfig().setSecurityRoles("roles.yml"), Settings.EMPTY);
    Assert.assertEquals(clusterInfo.numNodes, clusterHelper.nodeClient().admin().cluster().health(new ClusterHealthRequest().waitForGreenStatus()).actionGet().getNumberOfNodes());
    Assert.assertEquals(ClusterHealthStatus.GREEN, clusterHelper.nodeClient().admin().cluster().health(new ClusterHealthRequest().waitForGreenStatus()).actionGet().getStatus());
    final Settings tcSettings = Settings.builder().put(minimumSecuritySettings(Settings.EMPTY).get(0)).put("cluster.name", clusterInfo.clustername).put("node.data", false).put("node.master", false).put("node.ingest", false).put("path.data", "./target/data/" + clusterInfo.clustername + "/cert/data").put("path.logs", "./target/data/" + clusterInfo.clustername + "/cert/logs").put("path.home", "./target").put("node.name", "testclient").put("discovery.initial_state_timeout", "8s").put("plugins.security.allow_default_init_securityindex", "true").putList("discovery.zen.ping.unicast.hosts", clusterInfo.nodeHost + ":" + clusterInfo.nodePort).build();
    // 1. Without roles injection.
    try (Node node = new PluginAwareNode(false, tcSettings, Netty4Plugin.class, OpenSearchSecurityPlugin.class, RolesInjectorPlugin.class).start()) {
        waitForInit(node.client());
        CreateIndexResponse cir = node.client().admin().indices().create(new CreateIndexRequest("captain-logs-1")).actionGet();
        Assert.assertTrue(cir.isAcknowledged());
        IndicesExistsResponse ier = node.client().admin().indices().exists(new IndicesExistsRequest("captain-logs-1")).actionGet();
        Assert.assertTrue(ier.isExists());
    }
    // 2. With invalid roles, must throw security exception.
    RolesInjectorPlugin.injectedRoles = "invalid_user|invalid_role";
    Exception exception = null;
    try (Node node = new PluginAwareNode(false, tcSettings, Netty4Plugin.class, OpenSearchSecurityPlugin.class, RolesInjectorPlugin.class).start()) {
        waitForInit(node.client());
        CreateIndexResponse cir = node.client().admin().indices().create(new CreateIndexRequest("captain-logs-2")).actionGet();
        Assert.assertTrue(cir.isAcknowledged());
    } catch (OpenSearchSecurityException ex) {
        exception = ex;
        log.warn(ex.toString());
    }
    Assert.assertNotNull(exception);
    Assert.assertTrue(exception.getMessage().contains("indices:admin/create"));
    // 3. With valid roles - which has permission to create index.
    RolesInjectorPlugin.injectedRoles = "valid_user|opendistro_security_all_access";
    try (Node node = new PluginAwareNode(false, tcSettings, Netty4Plugin.class, OpenSearchSecurityPlugin.class, RolesInjectorPlugin.class).start()) {
        waitForInit(node.client());
        CreateIndexResponse cir = node.client().admin().indices().create(new CreateIndexRequest("captain-logs-3")).actionGet();
        Assert.assertTrue(cir.isAcknowledged());
        IndicesExistsResponse ier = node.client().admin().indices().exists(new IndicesExistsRequest("captain-logs-3")).actionGet();
        Assert.assertTrue(ier.isExists());
    }
}
Also used : OpenSearchSecurityException(org.opensearch.OpenSearchSecurityException) ClusterHealthRequest(org.opensearch.action.admin.cluster.health.ClusterHealthRequest) Netty4Plugin(org.opensearch.transport.Netty4Plugin) Node(org.opensearch.node.Node) PluginAwareNode(org.opensearch.node.PluginAwareNode) OpenSearchSecurityException(org.opensearch.OpenSearchSecurityException) PluginAwareNode(org.opensearch.node.PluginAwareNode) DynamicSecurityConfig(org.opensearch.security.test.DynamicSecurityConfig) IndicesExistsResponse(org.opensearch.action.admin.indices.exists.indices.IndicesExistsResponse) CreateIndexResponse(org.opensearch.action.admin.indices.create.CreateIndexResponse) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest) Settings(org.opensearch.common.settings.Settings) IndicesExistsRequest(org.opensearch.action.admin.indices.exists.indices.IndicesExistsRequest) Test(org.junit.Test) SingleClusterTest(org.opensearch.security.test.SingleClusterTest)

Example 25 with CreateIndexRequest

use of org.opensearch.action.admin.indices.create.CreateIndexRequest in project security by opensearch-project.

the class FlsExistsFieldsTest method populateData.

protected void populateData(Client tc) {
    tc.admin().indices().create(new CreateIndexRequest("data").simpleMapping("@timestamp", "type=date", "host", "type=text,norms=false", "response", "type=text,norms=false", "non-existing", "type=text,norms=false")).actionGet();
    for (int i = 0; i < 1; i++) {
        String doc = "{\"host\" : \"myhost" + i + "\",\n" + "        \"@timestamp\" : \"2018-01-18T09:03:25.877Z\",\n" + "        \"response\": \"404\"}";
        tc.index(new IndexRequest("data").id("a-normal-" + i).setRefreshPolicy(RefreshPolicy.IMMEDIATE).source(doc, XContentType.JSON)).actionGet();
    }
    for (int i = 0; i < 1; i++) {
        String doc = "{" + "        \"@timestamp\" : \"2017-01-18T09:03:25.877Z\",\n" + "        \"response\": \"200\"}";
        tc.index(new IndexRequest("data").id("b-missing1-" + i).setRefreshPolicy(RefreshPolicy.IMMEDIATE).source(doc, XContentType.JSON)).actionGet();
    }
    for (int i = 0; i < 1; i++) {
        String doc = "{\"host\" : \"myhost" + i + "\",\n" + "        \"@timestamp\" : \"2018-01-18T09:03:25.877Z\",\n" + "         \"non-existing\": \"xxx\"," + "        \"response\": \"403\"}";
        tc.index(new IndexRequest("data").id("c-missing2-" + i).setRefreshPolicy(RefreshPolicy.IMMEDIATE).source(doc, XContentType.JSON)).actionGet();
    }
}
Also used : CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest) IndexRequest(org.opensearch.action.index.IndexRequest) CreateIndexRequest(org.opensearch.action.admin.indices.create.CreateIndexRequest)

Aggregations

CreateIndexRequest (org.opensearch.action.admin.indices.create.CreateIndexRequest)79 IndexRequest (org.opensearch.action.index.IndexRequest)34 Settings (org.opensearch.common.settings.Settings)31 Client (org.opensearch.client.Client)29 Test (org.junit.Test)27 SingleClusterTest (org.opensearch.security.test.SingleClusterTest)22 RestHelper (org.opensearch.security.test.helper.rest.RestHelper)19 IOException (java.io.IOException)18 HttpResponse (org.opensearch.security.test.helper.rest.RestHelper.HttpResponse)15 CreateIndexResponse (org.opensearch.action.admin.indices.create.CreateIndexResponse)13 DynamicSecurityConfig (org.opensearch.security.test.DynamicSecurityConfig)13 IndicesAliasesRequest (org.opensearch.action.admin.indices.alias.IndicesAliasesRequest)12 ActionListener (org.opensearch.action.ActionListener)11 IndexMetadata (org.opensearch.cluster.metadata.IndexMetadata)10 ThreadPool (org.opensearch.threadpool.ThreadPool)10 Alias (org.opensearch.action.admin.indices.alias.Alias)9 ClusterState (org.opensearch.cluster.ClusterState)9 Map (java.util.Map)8 ArrayList (java.util.ArrayList)7 HashMap (java.util.HashMap)7