Skip to content

Commit bf54c2d

Browse files
author
David Roberts
committed
Merge branch 'master' into periodic_reallocation_attempt
2 parents 5e63d17 + 031d056 commit bf54c2d

File tree

465 files changed

+4881
-2003
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

465 files changed

+4881
-2003
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,16 @@ class BuildPlugin implements Plugin<Project> {
245245
*
246246
* If either of these fail, we fail the build.
247247
*/
248+
249+
// check if the Docker binary exists and record its path
250+
final List<String> maybeDockerBinaries = ['/usr/bin/docker', '/usr/local/bin/docker']
251+
final String dockerBinary = maybeDockerBinaries.find { it -> new File(it).exists() }
252+
248253
final boolean buildDocker
249254
final String buildDockerProperty = System.getProperty("build.docker")
250-
if (buildDockerProperty == null || buildDockerProperty == "true") {
255+
if (buildDockerProperty == null) {
256+
buildDocker = dockerBinary != null
257+
} else if (buildDockerProperty == "true") {
251258
buildDocker = true
252259
} else if (buildDockerProperty == "false") {
253260
buildDocker = false
@@ -258,10 +265,6 @@ class BuildPlugin implements Plugin<Project> {
258265
rootProject.rootProject.ext.buildDocker = buildDocker
259266
rootProject.rootProject.ext.requiresDocker = []
260267
rootProject.gradle.taskGraph.whenReady { TaskExecutionGraph taskGraph ->
261-
// check if the Docker binary exists and record its path
262-
final List<String> maybeDockerBinaries = ['/usr/bin/docker', '/usr/local/bin/docker']
263-
final String dockerBinary = maybeDockerBinaries.find { it -> new File(it).exists() }
264-
265268
int exitCode
266269
String dockerErrorOutput
267270
if (dockerBinary == null) {

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,22 @@ class ClusterConfiguration {
7676
}
7777
}
7878

79+
/**
80+
* Whether the initial_master_nodes setting should be automatically derived from the nodes
81+
* in the cluster. Only takes effect if all nodes in the cluster understand this setting
82+
* and the discovery type is not explicitly set.
83+
*/
84+
@Input
85+
boolean autoSetInitialMasterNodes = true
86+
87+
/**
88+
* Whether the file-based discovery provider should be automatically setup based on
89+
* the nodes in the cluster. Only takes effect if no other hosts provider is already
90+
* configured.
91+
*/
92+
@Input
93+
boolean autoSetHostsProvider = true
94+
7995
@Input
8096
String jvmArgs = "-Xms" + System.getProperty('tests.heap.size', '512m') +
8197
" " + "-Xmx" + System.getProperty('tests.heap.size', '512m') +

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,15 @@ class ClusterFormationTasks {
131131
Object dependsOn
132132
if (node.nodeVersion.onOrAfter("6.5.0")) {
133133
writeConfigSetup = { Map esConfig ->
134-
// Don't force discovery provider if one is set by the test cluster specs already
135-
if (esConfig.containsKey('discovery.zen.hosts_provider') == false) {
136-
esConfig['discovery.zen.hosts_provider'] = 'file'
134+
if (config.getAutoSetHostsProvider()) {
135+
// Don't force discovery provider if one is set by the test cluster specs already
136+
if (esConfig.containsKey('discovery.zen.hosts_provider') == false) {
137+
esConfig['discovery.zen.hosts_provider'] = 'file'
138+
}
139+
esConfig['discovery.zen.ping.unicast.hosts'] = []
137140
}
138-
esConfig['discovery.zen.ping.unicast.hosts'] = []
139-
if (hasBwcNodes == false && esConfig['discovery.type'] == null) {
140-
esConfig['discovery.type'] = 'zen2'
141+
boolean supportsInitialMasterNodes = hasBwcNodes == false || config.bwcVersion.onOrAfter("7.0.0")
142+
if (esConfig['discovery.type'] == null && config.getAutoSetInitialMasterNodes() && supportsInitialMasterNodes) {
141143
esConfig['cluster.initial_master_nodes'] = nodes.stream().map({ n ->
142144
if (n.config.settings['node.name'] == null) {
143145
return "node-" + n.nodeNum

buildSrc/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
elasticsearch = 7.0.0
2-
lucene = 8.0.0-snapshot-aaa64d70159
2+
lucene = 8.0.0-snapshot-ef61b547b1
33

44
# optional dependencies
55
spatial4j = 0.7

client/rest-high-level/src/main/java/org/elasticsearch/client/IndicesClient.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,15 @@
5454
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
5555
import org.elasticsearch.action.admin.indices.shrink.ResizeResponse;
5656
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
57-
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
5857
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
5958
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
6059
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
6160
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
6261
import org.elasticsearch.action.support.master.AcknowledgedResponse;
6362
import org.elasticsearch.client.core.ShardsAcknowledgedResponse;
6463
import org.elasticsearch.client.indices.FreezeIndexRequest;
64+
import org.elasticsearch.client.indices.GetIndexTemplatesRequest;
65+
import org.elasticsearch.client.indices.IndexTemplatesExistRequest;
6566
import org.elasticsearch.client.indices.UnfreezeIndexRequest;
6667
import org.elasticsearch.rest.RestStatus;
6768

@@ -813,6 +814,35 @@ public void getTemplateAsync(GetIndexTemplatesRequest getIndexTemplatesRequest,
813814
options, GetIndexTemplatesResponse::fromXContent, listener, emptySet());
814815
}
815816

817+
/**
818+
* Uses the Index Templates API to determine if index templates exist
819+
*
820+
* @param indexTemplatesRequest the request
821+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
822+
* @return true if any index templates in the request exist, false otherwise
823+
* @throws IOException in case there is a problem sending the request or parsing back the response
824+
*/
825+
public boolean existsTemplate(IndexTemplatesExistRequest indexTemplatesRequest, RequestOptions options) throws IOException {
826+
return restHighLevelClient.performRequest(indexTemplatesRequest, IndicesRequestConverters::templatesExist, options,
827+
RestHighLevelClient::convertExistsResponse, emptySet());
828+
}
829+
830+
/**
831+
* Uses the Index Templates API to determine if index templates exist
832+
*
833+
* @param indexTemplatesExistRequest the request
834+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
835+
* @param listener the listener to be notified upon request completion. The listener will be called with the value {@code true}
836+
* if any index templates in the request exist, false otherwise
837+
*/
838+
public void existsTemplateAsync(IndexTemplatesExistRequest indexTemplatesExistRequest,
839+
RequestOptions options,
840+
ActionListener<Boolean> listener) {
841+
842+
restHighLevelClient.performRequestAsync(indexTemplatesExistRequest, IndicesRequestConverters::templatesExist, options,
843+
RestHighLevelClient::convertExistsResponse, listener, emptySet());
844+
}
845+
816846
/**
817847
* Calls the analyze API
818848
*

client/rest-high-level/src/main/java/org/elasticsearch/client/IndicesRequestConverters.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,11 @@
4646
import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
4747
import org.elasticsearch.action.admin.indices.shrink.ResizeType;
4848
import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
49-
import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
5049
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
5150
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
5251
import org.elasticsearch.client.indices.FreezeIndexRequest;
52+
import org.elasticsearch.client.indices.GetIndexTemplatesRequest;
53+
import org.elasticsearch.client.indices.IndexTemplatesExistRequest;
5354
import org.elasticsearch.client.indices.UnfreezeIndexRequest;
5455
import org.elasticsearch.common.Strings;
5556

@@ -385,13 +386,27 @@ static Request getAlias(GetAliasesRequest getAliasesRequest) {
385386
return request;
386387
}
387388

388-
static Request getTemplates(GetIndexTemplatesRequest getIndexTemplatesRequest) throws IOException {
389-
String[] names = getIndexTemplatesRequest.names();
390-
String endpoint = new RequestConverters.EndpointBuilder().addPathPartAsIs("_template").addCommaSeparatedPathParts(names).build();
391-
Request request = new Request(HttpGet.METHOD_NAME, endpoint);
392-
RequestConverters.Params params = new RequestConverters.Params(request);
393-
params.withLocal(getIndexTemplatesRequest.local());
394-
params.withMasterTimeout(getIndexTemplatesRequest.masterNodeTimeout());
389+
static Request getTemplates(GetIndexTemplatesRequest getIndexTemplatesRequest) {
390+
final String endpoint = new RequestConverters.EndpointBuilder()
391+
.addPathPartAsIs("_template")
392+
.addCommaSeparatedPathParts(getIndexTemplatesRequest.names())
393+
.build();
394+
final Request request = new Request(HttpGet.METHOD_NAME, endpoint);
395+
final RequestConverters.Params params = new RequestConverters.Params(request);
396+
params.withLocal(getIndexTemplatesRequest.isLocal());
397+
params.withMasterTimeout(getIndexTemplatesRequest.getMasterNodeTimeout());
398+
return request;
399+
}
400+
401+
static Request templatesExist(IndexTemplatesExistRequest indexTemplatesExistRequest) {
402+
final String endpoint = new RequestConverters.EndpointBuilder()
403+
.addPathPartAsIs("_template")
404+
.addCommaSeparatedPathParts(indexTemplatesExistRequest.names())
405+
.build();
406+
final Request request = new Request(HttpHead.METHOD_NAME, endpoint);
407+
final RequestConverters.Params params = new RequestConverters.Params(request);
408+
params.withLocal(indexTemplatesExistRequest.isLocal());
409+
params.withMasterTimeout(indexTemplatesExistRequest.getMasterNodeTimeout());
395410
return request;
396411
}
397412

client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,10 @@ static Request count(CountRequest countRequest) throws IOException {
462462
}
463463

464464
static Request explain(ExplainRequest explainRequest) throws IOException {
465-
Request request = new Request(HttpGet.METHOD_NAME,
466-
endpoint(explainRequest.index(), explainRequest.type(), explainRequest.id(), "_explain"));
465+
String endpoint = explainRequest.isTypeless()
466+
? endpoint(explainRequest.index(), "_explain", explainRequest.id())
467+
: endpoint(explainRequest.index(), explainRequest.type(), explainRequest.id(), "_explain");
468+
Request request = new Request(HttpGet.METHOD_NAME, endpoint);
467469

468470
Params params = new Params(request);
469471
params.withStoredFields(explainRequest.storedFields());

client/rest-high-level/src/main/java/org/elasticsearch/client/SecurityRequestConverters.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ private SecurityRequestConverters() {}
5656

5757
static Request changePassword(ChangePasswordRequest changePasswordRequest) throws IOException {
5858
String endpoint = new RequestConverters.EndpointBuilder()
59-
.addPathPartAsIs("_xpack/security/user")
59+
.addPathPartAsIs("_security/user")
6060
.addPathPart(changePasswordRequest.getUsername())
6161
.addPathPartAsIs("_password")
6262
.build();
@@ -69,7 +69,7 @@ static Request changePassword(ChangePasswordRequest changePasswordRequest) throw
6969

7070
static Request putUser(PutUserRequest putUserRequest) throws IOException {
7171
String endpoint = new RequestConverters.EndpointBuilder()
72-
.addPathPartAsIs("_xpack/security/user")
72+
.addPathPartAsIs("_security/user")
7373
.addPathPart(putUserRequest.getUser().getUsername())
7474
.build();
7575
Request request = new Request(HttpPut.METHOD_NAME, endpoint);
@@ -81,7 +81,7 @@ static Request putUser(PutUserRequest putUserRequest) throws IOException {
8181

8282
static Request deleteUser(DeleteUserRequest deleteUserRequest) {
8383
String endpoint = new RequestConverters.EndpointBuilder()
84-
.addPathPartAsIs("_xpack","security", "user")
84+
.addPathPartAsIs("_security", "user")
8585
.addPathPart(deleteUserRequest.getName())
8686
.build();
8787
Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
@@ -92,7 +92,7 @@ static Request deleteUser(DeleteUserRequest deleteUserRequest) {
9292

9393
static Request putRoleMapping(final PutRoleMappingRequest putRoleMappingRequest) throws IOException {
9494
final String endpoint = new RequestConverters.EndpointBuilder()
95-
.addPathPartAsIs("_xpack/security/role_mapping")
95+
.addPathPartAsIs("_security/role_mapping")
9696
.addPathPart(putRoleMappingRequest.getName())
9797
.build();
9898
final Request request = new Request(HttpPut.METHOD_NAME, endpoint);
@@ -104,7 +104,7 @@ static Request putRoleMapping(final PutRoleMappingRequest putRoleMappingRequest)
104104

105105
static Request getRoleMappings(final GetRoleMappingsRequest getRoleMappingRequest) throws IOException {
106106
RequestConverters.EndpointBuilder builder = new RequestConverters.EndpointBuilder();
107-
builder.addPathPartAsIs("_xpack/security/role_mapping");
107+
builder.addPathPartAsIs("_security/role_mapping");
108108
if (getRoleMappingRequest.getRoleMappingNames().size() > 0) {
109109
builder.addPathPart(Strings.collectionToCommaDelimitedString(getRoleMappingRequest.getRoleMappingNames()));
110110
}
@@ -121,7 +121,7 @@ static Request disableUser(DisableUserRequest disableUserRequest) {
121121

122122
private static Request setUserEnabled(SetUserEnabledRequest setUserEnabledRequest) {
123123
String endpoint = new RequestConverters.EndpointBuilder()
124-
.addPathPartAsIs("_xpack/security/user")
124+
.addPathPartAsIs("_security/user")
125125
.addPathPart(setUserEnabledRequest.getUsername())
126126
.addPathPart(setUserEnabledRequest.isEnabled() ? "_enable" : "_disable")
127127
.build();
@@ -132,14 +132,14 @@ private static Request setUserEnabled(SetUserEnabledRequest setUserEnabledReques
132132
}
133133

134134
static Request hasPrivileges(HasPrivilegesRequest hasPrivilegesRequest) throws IOException {
135-
Request request = new Request(HttpGet.METHOD_NAME, "/_xpack/security/user/_has_privileges");
135+
Request request = new Request(HttpGet.METHOD_NAME, "/_security/user/_has_privileges");
136136
request.setEntity(createEntity(hasPrivilegesRequest, REQUEST_BODY_CONTENT_TYPE));
137137
return request;
138138
}
139139

140140
static Request clearRealmCache(ClearRealmCacheRequest clearRealmCacheRequest) {
141141
RequestConverters.EndpointBuilder builder = new RequestConverters.EndpointBuilder()
142-
.addPathPartAsIs("_xpack/security/realm");
142+
.addPathPartAsIs("_security/realm");
143143
if (clearRealmCacheRequest.getRealms().isEmpty() == false) {
144144
builder.addCommaSeparatedPathParts(clearRealmCacheRequest.getRealms().toArray(Strings.EMPTY_ARRAY));
145145
} else {
@@ -156,7 +156,7 @@ static Request clearRealmCache(ClearRealmCacheRequest clearRealmCacheRequest) {
156156

157157
static Request clearRolesCache(ClearRolesCacheRequest disableCacheRequest) {
158158
String endpoint = new RequestConverters.EndpointBuilder()
159-
.addPathPartAsIs("_xpack/security/role")
159+
.addPathPartAsIs("_security/role")
160160
.addCommaSeparatedPathParts(disableCacheRequest.names())
161161
.addPathPart("_clear_cache")
162162
.build();
@@ -165,7 +165,7 @@ static Request clearRolesCache(ClearRolesCacheRequest disableCacheRequest) {
165165

166166
static Request deleteRoleMapping(DeleteRoleMappingRequest deleteRoleMappingRequest) {
167167
final String endpoint = new RequestConverters.EndpointBuilder()
168-
.addPathPartAsIs("_xpack/security/role_mapping")
168+
.addPathPartAsIs("_security/role_mapping")
169169
.addPathPart(deleteRoleMappingRequest.getName())
170170
.build();
171171
final Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
@@ -176,7 +176,7 @@ static Request deleteRoleMapping(DeleteRoleMappingRequest deleteRoleMappingReque
176176

177177
static Request deleteRole(DeleteRoleRequest deleteRoleRequest) {
178178
String endpoint = new RequestConverters.EndpointBuilder()
179-
.addPathPartAsIs("_xpack/security/role")
179+
.addPathPartAsIs("_security/role")
180180
.addPathPart(deleteRoleRequest.getName())
181181
.build();
182182
Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
@@ -187,36 +187,36 @@ static Request deleteRole(DeleteRoleRequest deleteRoleRequest) {
187187

188188
static Request getRoles(GetRolesRequest getRolesRequest) {
189189
RequestConverters.EndpointBuilder builder = new RequestConverters.EndpointBuilder();
190-
builder.addPathPartAsIs("_xpack/security/role");
190+
builder.addPathPartAsIs("_security/role");
191191
if (getRolesRequest.getRoleNames().size() > 0) {
192192
builder.addPathPart(Strings.collectionToCommaDelimitedString(getRolesRequest.getRoleNames()));
193193
}
194194
return new Request(HttpGet.METHOD_NAME, builder.build());
195195
}
196196

197197
static Request createToken(CreateTokenRequest createTokenRequest) throws IOException {
198-
Request request = new Request(HttpPost.METHOD_NAME, "/_xpack/security/oauth2/token");
198+
Request request = new Request(HttpPost.METHOD_NAME, "/_security/oauth2/token");
199199
request.setEntity(createEntity(createTokenRequest, REQUEST_BODY_CONTENT_TYPE));
200200
return request;
201201
}
202202

203203
static Request invalidateToken(InvalidateTokenRequest invalidateTokenRequest) throws IOException {
204-
Request request = new Request(HttpDelete.METHOD_NAME, "/_xpack/security/oauth2/token");
204+
Request request = new Request(HttpDelete.METHOD_NAME, "/_security/oauth2/token");
205205
request.setEntity(createEntity(invalidateTokenRequest, REQUEST_BODY_CONTENT_TYPE));
206206
return request;
207207
}
208208

209209
static Request getPrivileges(GetPrivilegesRequest getPrivilegesRequest) {
210210
String endpoint = new RequestConverters.EndpointBuilder()
211-
.addPathPartAsIs("_xpack/security/privilege")
211+
.addPathPartAsIs("_security/privilege")
212212
.addPathPart(getPrivilegesRequest.getApplicationName())
213213
.addCommaSeparatedPathParts(getPrivilegesRequest.getPrivilegeNames())
214214
.build();
215215
return new Request(HttpGet.METHOD_NAME, endpoint);
216216
}
217217

218218
static Request putPrivileges(final PutPrivilegesRequest putPrivilegesRequest) throws IOException {
219-
Request request = new Request(HttpPut.METHOD_NAME, "/_xpack/security/privilege");
219+
Request request = new Request(HttpPut.METHOD_NAME, "/_security/privilege");
220220
request.setEntity(createEntity(putPrivilegesRequest, REQUEST_BODY_CONTENT_TYPE));
221221
RequestConverters.Params params = new RequestConverters.Params(request);
222222
params.withRefreshPolicy(putPrivilegesRequest.getRefreshPolicy());
@@ -225,7 +225,7 @@ static Request putPrivileges(final PutPrivilegesRequest putPrivilegesRequest) th
225225

226226
static Request deletePrivileges(DeletePrivilegesRequest deletePrivilegeRequest) {
227227
String endpoint = new RequestConverters.EndpointBuilder()
228-
.addPathPartAsIs("_xpack/security/privilege")
228+
.addPathPartAsIs("_security/privilege")
229229
.addPathPart(deletePrivilegeRequest.getApplication())
230230
.addCommaSeparatedPathParts(deletePrivilegeRequest.getPrivileges())
231231
.build();
@@ -237,7 +237,7 @@ static Request deletePrivileges(DeletePrivilegesRequest deletePrivilegeRequest)
237237

238238
static Request putRole(final PutRoleRequest putRoleRequest) throws IOException {
239239
final String endpoint = new RequestConverters.EndpointBuilder()
240-
.addPathPartAsIs("_xpack/security/role")
240+
.addPathPartAsIs("_security/role")
241241
.addPathPart(putRoleRequest.getRole().getName())
242242
.build();
243243
final Request request = new Request(HttpPut.METHOD_NAME, endpoint);

0 commit comments

Comments
 (0)