2019-10-24 10:04:57 -04:00
|
|
|
import org.elasticsearch.gradle.test.RestIntegTestTask
|
|
|
|
|
2016-12-29 12:16:04 -05:00
|
|
|
/*
|
|
|
|
* Licensed to Elasticsearch under one or more contributor
|
|
|
|
* license agreements. See the NOTICE file distributed with
|
|
|
|
* this work for additional information regarding copyright
|
|
|
|
* ownership. Elasticsearch licenses this file to you under
|
|
|
|
* the Apache License, Version 2.0 (the "License"); you may
|
|
|
|
* not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing,
|
|
|
|
* software distributed under the License is distributed on an
|
|
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
|
* KIND, either express or implied. See the License for the
|
|
|
|
* specific language governing permissions and limitations
|
|
|
|
* under the License.
|
|
|
|
*/
|
2019-06-20 02:21:29 -04:00
|
|
|
apply plugin: 'elasticsearch.testclusters'
|
2016-12-29 12:16:04 -05:00
|
|
|
apply plugin: 'elasticsearch.build'
|
|
|
|
apply plugin: 'elasticsearch.rest-test'
|
2017-07-13 03:44:25 -04:00
|
|
|
apply plugin: 'nebula.maven-base-publish'
|
|
|
|
apply plugin: 'nebula.maven-scm'
|
2016-12-29 12:16:04 -05:00
|
|
|
|
|
|
|
group = 'org.elasticsearch.client'
|
2017-07-13 03:44:25 -04:00
|
|
|
archivesBaseName = 'elasticsearch-rest-high-level-client'
|
|
|
|
|
2018-08-09 13:11:08 -04:00
|
|
|
publishing {
|
|
|
|
publications {
|
|
|
|
nebula {
|
|
|
|
artifactId = archivesBaseName
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-05 07:06:11 -05:00
|
|
|
configurations {
|
|
|
|
restSpec
|
|
|
|
}
|
|
|
|
|
|
|
|
idea {
|
|
|
|
module {
|
2019-11-14 06:01:23 -05:00
|
|
|
if (scopes.TEST != null) {
|
|
|
|
scopes.TEST.plus.add(project.configurations.restSpec)
|
|
|
|
}
|
2018-12-05 07:06:11 -05:00
|
|
|
}
|
|
|
|
}
|
2018-07-17 05:26:28 -04:00
|
|
|
|
2016-12-29 12:16:04 -05:00
|
|
|
dependencies {
|
2019-06-04 16:50:23 -04:00
|
|
|
compile project(':server')
|
|
|
|
compile project(':client:rest')
|
2019-08-14 03:52:49 -04:00
|
|
|
compile project(':modules:mapper-extras')
|
2019-06-04 16:50:23 -04:00
|
|
|
compile project(':modules:parent-join')
|
|
|
|
compile project(':modules:aggs-matrix-stats')
|
|
|
|
compile project(':modules:rank-eval')
|
|
|
|
compile project(':modules:lang-mustache')
|
2016-12-29 12:16:04 -05:00
|
|
|
|
2019-06-04 16:50:23 -04:00
|
|
|
testCompile project(':client:test')
|
|
|
|
testCompile project(':test:framework')
|
2016-12-29 12:16:04 -05:00
|
|
|
testCompile "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${versions.randomizedrunner}"
|
|
|
|
testCompile "junit:junit:${versions.junit}"
|
2018-07-17 05:26:28 -04:00
|
|
|
//this is needed to make RestHighLevelClientTests#testApiNamingConventions work from IDEs
|
2019-06-04 16:50:23 -04:00
|
|
|
testCompile project(":rest-api-spec")
|
|
|
|
// Needed for serialization tests:
|
2019-04-09 03:46:05 -04:00
|
|
|
// (In order to serialize a server side class to a client side class or the other way around)
|
2019-10-03 03:50:46 -04:00
|
|
|
testCompile(project(':x-pack:plugin:core')) {
|
2019-11-14 06:01:23 -05:00
|
|
|
exclude group: 'org.elasticsearch', module: 'elasticsearch-rest-high-level-client'
|
2019-10-03 03:50:46 -04:00
|
|
|
}
|
2018-12-05 07:06:11 -05:00
|
|
|
|
2019-06-04 16:50:23 -04:00
|
|
|
restSpec project(':rest-api-spec')
|
2018-12-05 07:06:11 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
//we need to copy the yaml spec so we can check naming (see RestHighlevelClientTests#testApiNamingConventions)
|
|
|
|
processTestResources {
|
2019-10-28 15:11:55 -04:00
|
|
|
dependsOn configurations.restSpec // so that configurations resolve
|
2018-12-05 07:06:11 -05:00
|
|
|
from({ zipTree(configurations.restSpec.singleFile) }) {
|
|
|
|
include 'rest-api-spec/api/**'
|
|
|
|
}
|
2019-08-27 07:42:46 -04:00
|
|
|
from(project(':client:rest-high-level').file('src/test/resources'))
|
2016-12-29 12:16:04 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
dependencyLicenses {
|
|
|
|
// Don't check licenses for dependency that are part of the elasticsearch project
|
|
|
|
// But any other dependency should have its license/notice/sha1
|
|
|
|
dependencies = project.configurations.runtime.fileCollection {
|
|
|
|
it.group.startsWith('org.elasticsearch') == false
|
|
|
|
}
|
|
|
|
}
|
2017-02-17 14:45:41 -05:00
|
|
|
|
|
|
|
forbiddenApisMain {
|
|
|
|
// core does not depend on the httpclient for compile so we add the signatures here. We don't add them for test as they are already
|
|
|
|
// specified
|
2018-08-22 02:05:22 -04:00
|
|
|
addSignatureFiles 'http-signatures'
|
|
|
|
signaturesFiles += files('src/main/resources/forbidden/rest-high-level-signatures.txt')
|
2017-12-13 10:26:47 -05:00
|
|
|
}
|
2019-10-03 03:50:46 -04:00
|
|
|
|
2018-10-15 12:20:34 -04:00
|
|
|
File nodeCert = file("./testnode.crt")
|
|
|
|
File nodeTrustStore = file("./testnode.jks")
|
2019-08-27 07:42:46 -04:00
|
|
|
File pkiTrustCert = file("./src/test/resources/org/elasticsearch/client/security/delegate_pki/testRootCA.crt")
|
2018-07-19 04:40:54 -04:00
|
|
|
|
2019-06-20 02:21:29 -04:00
|
|
|
integTest.runner {
|
2019-10-24 10:04:57 -04:00
|
|
|
systemProperty 'tests.rest.async', 'false'
|
2018-09-05 12:56:30 -04:00
|
|
|
systemProperty 'tests.rest.cluster.username', System.getProperty('tests.rest.cluster.username', 'test_user')
|
|
|
|
systemProperty 'tests.rest.cluster.password', System.getProperty('tests.rest.cluster.password', 'test-password')
|
|
|
|
}
|
|
|
|
|
2019-10-24 10:04:57 -04:00
|
|
|
RestIntegTestTask asyncIntegTest = tasks.create("asyncIntegTest", RestIntegTestTask) {
|
|
|
|
runner {
|
|
|
|
systemProperty 'tests.rest.async', 'true'
|
|
|
|
systemProperty 'tests.rest.cluster.username', System.getProperty('tests.rest.cluster.username', 'test_user')
|
|
|
|
systemProperty 'tests.rest.cluster.password', System.getProperty('tests.rest.cluster.password', 'test-password')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
check.dependsOn(asyncIntegTest)
|
|
|
|
|
|
|
|
testClusters.all {
|
2019-07-15 20:53:05 -04:00
|
|
|
testDistribution = 'DEFAULT'
|
2018-10-16 10:46:14 -04:00
|
|
|
systemProperty 'es.scripting.update.ctx_in_params', 'false'
|
2019-06-20 02:21:29 -04:00
|
|
|
setting 'reindex.remote.whitelist', '[ "[::1]:*", "127.0.0.1:*" ]'
|
2018-07-19 04:40:54 -04:00
|
|
|
setting 'xpack.license.self_generated.type', 'trial'
|
2018-09-05 12:56:30 -04:00
|
|
|
setting 'xpack.security.enabled', 'true'
|
2018-10-29 02:17:56 -04:00
|
|
|
setting 'xpack.security.authc.token.enabled', 'true'
|
2019-02-04 22:21:57 -05:00
|
|
|
setting 'xpack.security.authc.api_key.enabled', 'true'
|
2019-11-21 20:14:55 -05:00
|
|
|
setting 'xpack.security.http.ssl.enabled', 'false'
|
|
|
|
setting 'xpack.security.transport.ssl.enabled', 'false'
|
2018-10-15 12:20:34 -04:00
|
|
|
// Truststore settings are not used since TLS is not enabled. Included for testing the get certificates API
|
2019-01-14 16:06:22 -05:00
|
|
|
setting 'xpack.security.http.ssl.certificate_authorities', 'testnode.crt'
|
2018-10-15 12:20:34 -04:00
|
|
|
setting 'xpack.security.transport.ssl.truststore.path', 'testnode.jks'
|
2019-08-27 07:42:46 -04:00
|
|
|
setting 'xpack.security.authc.realms.file.default_file.order', '0'
|
|
|
|
setting 'xpack.security.authc.realms.native.default_native.order', '1'
|
|
|
|
setting 'xpack.security.authc.realms.pki.pki1.order', '2'
|
|
|
|
setting 'xpack.security.authc.realms.pki.pki1.certificate_authorities', '[ "testRootCA.crt" ]'
|
|
|
|
setting 'xpack.security.authc.realms.pki.pki1.delegation.enabled', 'true'
|
|
|
|
|
2019-01-28 16:09:12 -05:00
|
|
|
setting 'indices.lifecycle.poll_interval', '1000ms'
|
[7.x] Add ILM histore store index (#50287) (#50345)
* Add ILM histore store index (#50287)
* Add ILM histore store index
This commit adds an ILM history store that tracks the lifecycle
execution state as an index progresses through its ILM policy. ILM
history documents store output similar to what the ILM explain API
returns.
An example document with ALL fields (not all documents will have all
fields) would look like:
```json
{
"@timestamp": 1203012389,
"policy": "my-ilm-policy",
"index": "index-2019.1.1-000023",
"index_age":123120,
"success": true,
"state": {
"phase": "warm",
"action": "allocate",
"step": "ERROR",
"failed_step": "update-settings",
"is_auto-retryable_error": true,
"creation_date": 12389012039,
"phase_time": 12908389120,
"action_time": 1283901209,
"step_time": 123904107140,
"phase_definition": "{\"policy\":\"ilm-history-ilm-policy\",\"phase_definition\":{\"min_age\":\"0ms\",\"actions\":{\"rollover\":{\"max_size\":\"50gb\",\"max_age\":\"30d\"}}},\"version\":1,\"modified_date_in_millis\":1576517253463}",
"step_info": "{... etc step info here as json ...}"
},
"error_details": "java.lang.RuntimeException: etc\n\tcaused by:etc etc etc full stacktrace"
}
```
These documents go into the `ilm-history-1-00000N` index to provide an
audit trail of the operations ILM has performed.
This history storage is enabled by default but can be disabled by setting
`index.lifecycle.history_index_enabled` to `false.`
Resolves #49180
* Make ILMHistoryStore.putAsync truly async (#50403)
This moves the `putAsync` method in `ILMHistoryStore` never to block.
Previously due to the way that the `BulkProcessor` works, it was possible
for `BulkProcessor#add` to block executing a bulk request. This was bad
as we may be adding things to the history store in cluster state update
threads.
This also moves the index creation to be done prior to the bulk request
execution, rather than being checked every time an operation was added
to the queue. This lessens the chance of the index being created, then
deleted (by some external force), and then recreated via a bulk indexing
request.
Resolves #50353
2019-12-20 14:33:36 -05:00
|
|
|
setting 'index.lifecycle.history_index_enabled', 'false'
|
2019-06-20 02:21:29 -04:00
|
|
|
keystore 'xpack.security.transport.ssl.truststore.secure_password', 'testnode'
|
2019-10-21 06:15:05 -04:00
|
|
|
extraConfigFile 'roles.yml', file('roles.yml')
|
2019-10-24 10:04:57 -04:00
|
|
|
user username: System.getProperty('tests.rest.cluster.username', 'test_user'),
|
2019-11-14 06:01:23 -05:00
|
|
|
password: System.getProperty('tests.rest.cluster.password', 'test-password'),
|
|
|
|
role: System.getProperty('tests.rest.cluster.role', 'admin')
|
2019-10-24 10:04:57 -04:00
|
|
|
user username: 'admin_user', password: 'admin-password'
|
2019-06-20 02:21:29 -04:00
|
|
|
|
2018-10-15 12:20:34 -04:00
|
|
|
extraConfigFile nodeCert.name, nodeCert
|
|
|
|
extraConfigFile nodeTrustStore.name, nodeTrustStore
|
2019-08-27 07:42:46 -04:00
|
|
|
extraConfigFile pkiTrustCert.name, pkiTrustCert
|
2018-07-19 04:40:54 -04:00
|
|
|
}
|