elastic-enterprise-search 8.4.0 → 8.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.buildkite/Dockerfile +13 -0
- data/.buildkite/certs/README.md +50 -0
- data/.buildkite/certs/ca.crt +20 -0
- data/.buildkite/certs/ca.key +27 -0
- data/.buildkite/certs/testnode.crt +21 -0
- data/.buildkite/certs/testnode.key +27 -0
- data/.buildkite/certs/testnode_no_san.crt +19 -0
- data/.buildkite/certs/testnode_no_san.key +27 -0
- data/.buildkite/functions/cleanup.sh +67 -0
- data/.buildkite/functions/imports.sh +60 -0
- data/.buildkite/functions/wait-for-container.sh +36 -0
- data/.buildkite/log-results.sh +15 -0
- data/.buildkite/pipeline.yml +25 -0
- data/.buildkite/run-client.sh +35 -0
- data/.buildkite/run-elasticsearch.sh +150 -0
- data/.buildkite/run-enterprise-search.sh +72 -0
- data/.buildkite/run-tests.sh +24 -0
- data/.ci/.env +9 -0
- data/.ci/docker-compose.yml +166 -0
- data/.ci/jobs/{elastic+enterprise-search-ruby+8.0.yml → elastic+enterprise-search-ruby+8.4.yml} +4 -4
- data/.ci/jobs/{elastic+enterprise-search-ruby+8.1.yml → elastic+enterprise-search-ruby+8.5.yml} +4 -4
- data/.ci/run-kibana.sh +22 -0
- data/.ci/run-stack.sh +1 -0
- data/.ci/test-matrix.yml +1 -1
- data/.github/workflows/rubocop.yml +2 -2
- data/.github/workflows/testing.yml +3 -1
- data/.gitignore +2 -1
- data/README.md +1 -1
- data/docs/guide/release_notes/717.asciidoc +12 -0
- data/docs/guide/release_notes/85.asciidoc +40 -0
- data/docs/guide/release_notes/86.asciidoc +9 -0
- data/docs/guide/release_notes/index.asciidoc +4 -0
- data/elastic-enterprise-search.gemspec +7 -2
- data/lib/elastic/app-search/api/put_search_settings.rb +1 -0
- data/lib/elastic/app-search/api/search_es_search.rb +2 -1
- data/lib/elastic/app-search/api/search_explain.rb +1 -1
- data/lib/elastic/enterprise-search/version.rb +1 -1
- data/spec/app-search/client_spec.rb +1 -28
- data/spec/enterprise-search/client_spec.rb +2 -29
- data/spec/spec_helper.rb +38 -0
- data/spec/workplace-search/client_spec.rb +1 -28
- metadata +89 -11
- data/.ci/jobs/elastic+enterprise-search-ruby+8.2.yml +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39e7df6602a80c776dda6da6ca3bc760170d0f7cee394e5e9ab805093851f054
|
4
|
+
data.tar.gz: 06be17689a9957f56f41a5547f1a475d30b6f7ae2db0771b3a9becd5f1cdb9b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36994506a1019e7a84134c9e2116e9299d6a14e9b1ef34b6044a63efaf4d587b7026c61b0d8edaecb59d1936f883b44593fb8df0ae4417544a0396d319f33aff
|
7
|
+
data.tar.gz: 50c34b6d1fb5d9671b568d464c5be690c924ace7c6e32e1daa7b703f0e1f75c259a34d47db8f5b572c816260f2ef2433b82f2623e31fd477e63c3b9cca25b722
|
@@ -0,0 +1,13 @@
|
|
1
|
+
ARG RUBY_VERSION=${RUBY_VERSION:-3.1}
|
2
|
+
FROM ruby:$RUBY_VERSION
|
3
|
+
|
4
|
+
ENV QUIET=true
|
5
|
+
ENV CI=true
|
6
|
+
|
7
|
+
# Install required tools
|
8
|
+
RUN apt-get -q update && apt-get -y install zip curl
|
9
|
+
|
10
|
+
WORKDIR /code/enterprise-search-ruby
|
11
|
+
COPY . .
|
12
|
+
|
13
|
+
RUN bundle install
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# CI certificates
|
2
|
+
|
3
|
+
This directory contains certificates that can be used to test against Elasticsearch in CI
|
4
|
+
|
5
|
+
## Generating new certificates using the Certificate Authority cert and key
|
6
|
+
|
7
|
+
The `ca.crt` and `ca.key` can be used to generate any other certificates that may be needed
|
8
|
+
for CI. Perhaps the easiest way to do so is using
|
9
|
+
[`elasticsearch-certutil`](https://www.elastic.co/guide/en/elasticsearch/reference/current/certutil.html)
|
10
|
+
|
11
|
+
Using the elasticsearch docker container, run the following from the `.ci/certs` directory
|
12
|
+
|
13
|
+
```sh
|
14
|
+
docker run \
|
15
|
+
-v "$PWD:/var/tmp" \
|
16
|
+
--rm docker.elastic.co/elasticsearch/elasticsearch:7.6.1 \
|
17
|
+
./bin/elasticsearch-certutil cert \
|
18
|
+
--ca-cert /var/tmp/ca.crt --ca-key /var/tmp/ca.key --pem \
|
19
|
+
--out /var/tmp/bundle.zip
|
20
|
+
```
|
21
|
+
|
22
|
+
This will output a `bundle.zip` file containing a directory named `instance` containing
|
23
|
+
`instance.crt` and `instance.key` in PEM format.
|
24
|
+
|
25
|
+
The CN Subject name can be changed using
|
26
|
+
|
27
|
+
```sh
|
28
|
+
docker run \
|
29
|
+
-v "$PWD:/var/tmp" \
|
30
|
+
--rm docker.elastic.co/elasticsearch/elasticsearch:7.6.1 \
|
31
|
+
./bin/elasticsearch-certutil cert \
|
32
|
+
--ca-cert /var/tmp/ca.crt --ca-key /var/tmp/ca.key --pem \
|
33
|
+
--out /var/tmp/bundle.zip \
|
34
|
+
--name foo
|
35
|
+
```
|
36
|
+
|
37
|
+
The directory in `bundle.zip` will now be named `foo` and contain
|
38
|
+
`foo.crt` and `foo.key` in PEM format.
|
39
|
+
|
40
|
+
Additional DNS and IP SAN entries can be added with `--dns` and `--ip`, respectively.
|
41
|
+
|
42
|
+
```sh
|
43
|
+
docker run \
|
44
|
+
-v "$PWD:/var/tmp" \
|
45
|
+
--rm docker.elastic.co/elasticsearch/elasticsearch:7.6.1 \
|
46
|
+
./bin/elasticsearch-certutil cert \
|
47
|
+
--ca-cert /var/tmp/ca.crt --ca-key /var/tmp/ca.key --pem \
|
48
|
+
--out /var/tmp/bundle.zip \
|
49
|
+
--dns instance --dns localhost --dns es1 --ip 127.0.0.1 --ip ::1
|
50
|
+
```
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDSjCCAjKgAwIBAgIVAJQLm8V2LcaCTHUcoIfO+KL63nG3MA0GCSqGSIb3DQEB
|
3
|
+
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
4
|
+
ZXJhdGVkIENBMB4XDTIwMDIyNjA1NTA1N1oXDTIzMDIyNTA1NTA1N1owNDEyMDAG
|
5
|
+
A1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5lcmF0ZWQgQ0Ew
|
6
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDYyajkPvGtUOE5M1OowQfB
|
7
|
+
kWVrWjo1+LIxzgCeRHp0YztLtdVJ0sk2xoSrt2uZpxcPepdyOseLTjFJex1D2yCR
|
8
|
+
AEniIqcFif4G72nDih2LlbhpUe/+/MTryj8ZTkFTzI+eMmbQi5FFMaH+kwufmdt/
|
9
|
+
5/w8YazO18SxxJUlzMqzfNUrhM8vvvVdxgboU7PWhk28wZHCMHQovomHmzclhRpF
|
10
|
+
N0FMktA98vHHeRjH19P7rNhifSd7hZzoH3H148HVAKoPgqnZ6vW2O2YfAWOP6ulq
|
11
|
+
cyszr57p8fS9B2wSdlWW7nVHU1JuKcYD67CxbBS23BeGFgCj4tiNrmxO8S5Yf85v
|
12
|
+
AgMBAAGjUzBRMB0GA1UdDgQWBBSWAlip9eoPmnG4p4OFZeOUBlAbNDAfBgNVHSME
|
13
|
+
GDAWgBSWAlip9eoPmnG4p4OFZeOUBlAbNDAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
14
|
+
SIb3DQEBCwUAA4IBAQA19qqrMTWl7YyId+LR/QIHDrP4jfxmrEELrAL58q5Epc1k
|
15
|
+
XxZLzOBSXoBfBrPdv+3XklWqXrZjKWfdkux0Xmjnl4qul+srrZDLJVZG3I7IrITh
|
16
|
+
AmQUmL9MuPiMnAcxoGZp1xpijtW8Qmd2qnambbljWfkuVaa4hcVRfrAX6TciIQ21
|
17
|
+
bS5aeLGrPqR14h30YzDp0RMmTujEa1o6ExN0+RSTkE9m89Q6WdM69az8JW7YkWqm
|
18
|
+
I+UCG3TcLd3TXmN1zNQkq4y2ObDK4Sxy/2p6yFPI1Fds5w/zLfBOvvPQY61vEqs8
|
19
|
+
SCCcQIe7f6NDpIRIBlty1C9IaEHj7edyHjF6rtYb
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpgIBAAKCAQEA2Mmo5D7xrVDhOTNTqMEHwZFla1o6NfiyMc4AnkR6dGM7S7XV
|
3
|
+
SdLJNsaEq7drmacXD3qXcjrHi04xSXsdQ9sgkQBJ4iKnBYn+Bu9pw4odi5W4aVHv
|
4
|
+
/vzE68o/GU5BU8yPnjJm0IuRRTGh/pMLn5nbf+f8PGGsztfEscSVJczKs3zVK4TP
|
5
|
+
L771XcYG6FOz1oZNvMGRwjB0KL6Jh5s3JYUaRTdBTJLQPfLxx3kYx9fT+6zYYn0n
|
6
|
+
e4Wc6B9x9ePB1QCqD4Kp2er1tjtmHwFjj+rpanMrM6+e6fH0vQdsEnZVlu51R1NS
|
7
|
+
binGA+uwsWwUttwXhhYAo+LYja5sTvEuWH/ObwIDAQABAoIBAQC8QDGnMnmPdWJ+
|
8
|
+
13FYY3cmwel+FXXjFDk5QpgK15A2rUz6a8XxO1d7d1wR+U84uH4v9Na6XQyWjaoD
|
9
|
+
EyPQnuJiyAtgkZLUHoY244PGR5NsePEQlBSCKmGeF5w/j1LvP/2e9EmP4wKdQYJY
|
10
|
+
nLxFNcgEBCFnFbKIU5n8fKa/klybCrwlBokenyBro02tqH4LL7h1YMRRrl97fv1V
|
11
|
+
e/y/0WcMN+KnMglfz6haimBRV2yamCCHHmBImC+wzOgT/quqlxPfI+a3ScHxuA65
|
12
|
+
3QyCavaqlPh+T3lXnN/Na4UWqFtzMmwgJX2x1zM5qiln46/JoDiXtagvV43L3rNs
|
13
|
+
LhPRFeIRAoGBAPhEB7nNpEDNjIRUL6WpebWS9brKAVY7gYn7YQrKGhhCyftyaiBZ
|
14
|
+
zYgxPaJdqYXf+DmkWlANGoYiwEs40QwkR/FZrvO4+Xh3n3dgtl59ZmieuoQvDsG+
|
15
|
+
RYIj+TfBaqhewhZNMMl7dxz7DeyQhyRCdsvl3VqJM0RuOsIrzrhCIEItAoGBAN+K
|
16
|
+
lgWI7swDpOEaLmu+IWMkGImh1LswXoZqIgi/ywZ7htZjPzidOIeUsMi+lrYsKojG
|
17
|
+
uU3sBxASsf9kYXDnuUuUbGT5M/N2ipXERt7klUAA/f5sg1IKlTrabaN/HGs/uNtf
|
18
|
+
Efa8v/h2VyTurdPCJ17TNpbOMDwX1qGM62tyt2CLAoGBAIHCnP8iWq18QeuQTO8b
|
19
|
+
a3/Z9hHRL22w4H4MI6aOB6GSlxuTq6CJD4IVqo9IwSg17fnCy2l3z9s4IqWuZqUf
|
20
|
+
+XJOW8ELd2jdrT2qEOfGR1Z7UCVyqxXcq1vgDYx0zZh/HpalddB5dcJx/c8do2Ty
|
21
|
+
UEE2PcHqYB9uNcvzNbLc7RtpAoGBALbuU0yePUTI6qGnajuTcQEPpeDjhRHWSFRZ
|
22
|
+
ABcG1N8uMS66Mx9iUcNp462zgeP8iqY5caUZtMHreqxT+gWKK7F0+as7386pwElF
|
23
|
+
QPXgO18QMMqHBIQb0vlBjJ1SRPBjSiSDTVEML1DljvTTOX7kEJHh6HdKrmBO5b54
|
24
|
+
cqMQUo53AoGBAPVWRPUXCqlBz914xKna0ZUh2aesRBg5BvOoq9ey9c52EIU5PXL5
|
25
|
+
0Isk8sWSsvhl3tjDPBH5WuL5piKgnCTqkVbEHmWu9s1T57Mw6NuxlPMLBWvyv4c6
|
26
|
+
tB9brOxv0ui3qGMuBsBoDKbkNnwXyOXLyFg7O+H4l016A3mLQzJM+NGV
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDYjCCAkqgAwIBAgIVAIZQH0fe5U+bGQ6m1JUBO/AQkQ/9MA0GCSqGSIb3DQEB
|
3
|
+
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
4
|
+
ZXJhdGVkIENBMB4XDTIwMDMyNzE5MTcxMVoXDTIzMDMyNzE5MTcxMVowEzERMA8G
|
5
|
+
A1UEAxMIaW5zdGFuY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDB
|
6
|
+
fco1t1+sE1gTwTVGcXKZqJTP2GjMHM0cfJE5KKfwC5B+pHADRT6FZxvepgKjEBDt
|
7
|
+
CK+2Rmotyeb15XXMSKguNhyT+2PuKvT5r05L7P91XRYXrwxG2swJPtct7A87xdFa
|
8
|
+
Ek+YRpqGGmTaux2jOELMiAmqEzoj6w/xFq+LF4SolTW4wOL2eLFkEFHBX2oCwU5T
|
9
|
+
Q+B+7E9zL45nFWlkeRGJ+ZQTnRNZ/1r4N9A9Gtj4x/H1/y4inWndikdxAb5QiEYJ
|
10
|
+
T+vbQWzHYWjz13ttHJsz+6T8rvA1jK+buHgVh4K8lV13X9k54soBqHB8va7/KIJP
|
11
|
+
g8gvd6vusEI7Bmfl1as7AgMBAAGjgYswgYgwHQYDVR0OBBYEFKnnpvuVYwtFSUis
|
12
|
+
WwN9OHLyExzJMB8GA1UdIwQYMBaAFJYCWKn16g+acbing4Vl45QGUBs0MDsGA1Ud
|
13
|
+
EQQ0MDKCCWxvY2FsaG9zdIIIaW5zdGFuY2WHBH8AAAGHEAAAAAAAAAAAAAAAAAAA
|
14
|
+
AAGCA2VzMTAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAPNsIoD4GBrTgR
|
15
|
+
jfvBuHS6eU16P95m16O8Mdpr4SMQgWLQUhs8aoVgfwpg2TkbCWxOe6khJOyNm7bf
|
16
|
+
fW4aFQ/OHcQV4Czz3c7eOHTWSyMlCOv+nRXd4giJZ5TOHw1zKGmKXOIvhvE6RfdF
|
17
|
+
uBBfrusk164H4iykm0Bbr/wo4d6wuebp3ZYLPw5zV0D08rsaR+3VJ9VxWuFpdm/r
|
18
|
+
2onYOohyuX9DRjAczasC+CRRQN4eHJlRfSQB8WfTKw3EloRJJDAg6SJyGiAJ++BF
|
19
|
+
hnqfNcEyKes2AWagFF9aTbEJMrzMhH+YB5F+S/PWvMUlFzcoocVKqc4pIrjKUNWO
|
20
|
+
6nbTxeAB
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEAwX3KNbdfrBNYE8E1RnFymaiUz9hozBzNHHyROSin8AuQfqRw
|
3
|
+
A0U+hWcb3qYCoxAQ7QivtkZqLcnm9eV1zEioLjYck/tj7ir0+a9OS+z/dV0WF68M
|
4
|
+
RtrMCT7XLewPO8XRWhJPmEaahhpk2rsdozhCzIgJqhM6I+sP8RavixeEqJU1uMDi
|
5
|
+
9nixZBBRwV9qAsFOU0PgfuxPcy+OZxVpZHkRifmUE50TWf9a+DfQPRrY+Mfx9f8u
|
6
|
+
Ip1p3YpHcQG+UIhGCU/r20Fsx2Fo89d7bRybM/uk/K7wNYyvm7h4FYeCvJVdd1/Z
|
7
|
+
OeLKAahwfL2u/yiCT4PIL3er7rBCOwZn5dWrOwIDAQABAoIBAFcm4ICnculf4Sks
|
8
|
+
umFbUiISA81GjZV6V4zAMu1K+bGuk8vnJyjh9JJD6hK0NbXa07TgV7zDJKoxKd2S
|
9
|
+
GCgGhfIin2asMcuh/6vDIYIjYsErR3stdlsnzAVSD7v4ergSlwR6AO32xz0mAE1h
|
10
|
+
QK029yeHEstPU72/7/NIo5MD6dXAbut1MzgijZD8RQo1z21D6qmLcPTVTfkn7a3W
|
11
|
+
MY3y7XUIkA1TOyIRsH3k6F6NBWkvtXbwOUeLCJ14EvS8T9BqhIhPDZv8mQTRLDOD
|
12
|
+
tQRyC4Cnw+UhYmnMFJhj6N2jpTBv/AdoKcRC56uBJyPW+dxj6i4e7n3pQuxqRvpI
|
13
|
+
LLJJsskCgYEA4QQxzuJizLKV75rE+Qxg0Ej0Gid1aj3H5eeTZOUhm9KC8KDfPdpk
|
14
|
+
msKaNzJq/VDcqHPluGS1jYZVgZlal1nk5xKBcbQ4n297VPVd+sLtlf0bj4atlDUO
|
15
|
+
+iOVo0H7k5yWvj+TzVRlc5zjDLcnQh8i+22o3+65hIrb2zpzg/cCZJ8CgYEA3CJX
|
16
|
+
bjmWPQ0uZVIa8Wz8cJFtKT9uVl7Z3/f6HjN9I0b/9MmVlNxQVAilVwhDkzR/UawG
|
17
|
+
QeRFBJ6XWRwX0aoMq+O9VSNu/R2rtEMpIYt3LwbI3yw6GRoCdB5qeL820O+KX5Fl
|
18
|
+
/z+ZNgrHgA1yKPVf+8ke2ZtLEqPHMN+BMuq8t+UCgYEAy0MfvzQPbbuw55WWcyb0
|
19
|
+
WZJdNzcHwKX4ajzrj4vP9VOPRtD7eINMt+QsrMnVjei6u0yeahhHTIXZvc2K4Qeq
|
20
|
+
V/YGinDzaUqqTU+synXFauUOPXO6XxQi6GC2rphPKsOcBFWoLSYc0vgYvgbA5uD7
|
21
|
+
l8Yyc77RROKuwfWmHcJHHh8CgYBurGFSjGdJWHgr/oSHPqkIG0VLiJV7nQJjBPRd
|
22
|
+
/Lr8YnTK6BJpHf7Q0Ov3frMirjEYqakXtaExel5TMbmT8q+eN8h3pnHlleY+oclr
|
23
|
+
EQghv4J8GWs4NYhoQuZ6wH/ZuaTS+XHTS3FG51J3wcrUZtET8ICvHNE4lNjPbH8z
|
24
|
+
TysENQKBgHER1RtDFdz+O7mlWibrHk8JDgcVdZV/pBF+9cb7r/orkH9RLAHDlsAO
|
25
|
+
tuSVaQmm5eqgaAxMamBXSyw1lir07byemyuEDg0mJ1rNUGsAY8P+LWr579gvKMme
|
26
|
+
5gvrJr99JkBTV3z+TiL7dZa52eW00Ijqg2qcbHGpq3kXWWkbd8Tn
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,19 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDIzCCAgugAwIBAgIVAMTO6uVx9dLox2t0lY4IcBKZXb5WMA0GCSqGSIb3DQEB
|
3
|
+
CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu
|
4
|
+
ZXJhdGVkIENBMB4XDTIwMDIyNjA1NTA1OVoXDTIzMDIyNTA1NTA1OVowEzERMA8G
|
5
|
+
A1UEAxMIaW5zdGFuY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDK
|
6
|
+
YLTOikVENiN/qYupOsoXd7VYYnryyfCC/dK4FC2aozkbqjFzBdvPGAasoc4yEiH5
|
7
|
+
CGeXMgJuOjk1maqetmdIsw00j4oHJviYsnGXzxxS5swhD7spcW4Uk4V4tAUzrbfT
|
8
|
+
vW/2WW/yYCLe5phVb2chz0jL+WYb4bBmdfs/t6RtP9RqsplYAmVp3gZ6lt2YNtvE
|
9
|
+
k9gz0TVk3DuO1TquIClfRYUjuywS6xDSvxJ8Jl91EfDWM8QU+9F+YAtiv74xl2U3
|
10
|
+
P0wwMqNvMxf9/3ak3lTQGsgO4L6cwbKpVLMMzxSVunZz/sgl19xy3qHHz1Qr2MjJ
|
11
|
+
/2c2J7vahUL4NPRkjJClAgMBAAGjTTBLMB0GA1UdDgQWBBS2Wn8E2VZv4oenY+pR
|
12
|
+
O8G3zfQXhzAfBgNVHSMEGDAWgBSWAlip9eoPmnG4p4OFZeOUBlAbNDAJBgNVHRME
|
13
|
+
AjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAvwPvCiJJ6v9jYcyvYY8I3gP0oCwrylpRL
|
14
|
+
n91UlgRSHUmuAObyOoVN5518gSV/bTU2SDrstcLkLFxHvnfpoGJoxsQEHuGxwDRI
|
15
|
+
nhYNd62EKLerehNM/F9ILKmvTh8f6QPCzjUuExTXv+63l2Sr6dBS7FHsGs6UKUYO
|
16
|
+
llM/y9wMZ1LCuZuBg9RhtgpFXRSgDM9Z7Begu0d/BPX9od/qAeZg9Arz4rwUiCN4
|
17
|
+
IJOMEBEPi5q1tgeS0Fb1Grpqd0Uz5tZKtEHNKzLG+zSMmkneL62Nk2HsmEFZKwzg
|
18
|
+
u2pU42UaUE596G6o78s1aLn9ICcElPHTjiuZNSiyuu9IzvFDjGQw
|
19
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEogIBAAKCAQEAymC0zopFRDYjf6mLqTrKF3e1WGJ68snwgv3SuBQtmqM5G6ox
|
3
|
+
cwXbzxgGrKHOMhIh+QhnlzICbjo5NZmqnrZnSLMNNI+KByb4mLJxl88cUubMIQ+7
|
4
|
+
KXFuFJOFeLQFM623071v9llv8mAi3uaYVW9nIc9Iy/lmG+GwZnX7P7ekbT/UarKZ
|
5
|
+
WAJlad4GepbdmDbbxJPYM9E1ZNw7jtU6riApX0WFI7ssEusQ0r8SfCZfdRHw1jPE
|
6
|
+
FPvRfmALYr++MZdlNz9MMDKjbzMX/f92pN5U0BrIDuC+nMGyqVSzDM8Ulbp2c/7I
|
7
|
+
Jdfcct6hx89UK9jIyf9nNie72oVC+DT0ZIyQpQIDAQABAoIBADAh7f7NjgnaInlD
|
8
|
+
ds8KB3SraPsbeQhzlPtiqRJU4j/MIFH/GYG03AGWQkget67a9y+GmzSvlTpoKKEh
|
9
|
+
6h2TXl9BDpv4o6ht0WRn1HJ5tM/Wyqf2WNpTew3zxCPgFPikkXsPrChYPzLTQJfp
|
10
|
+
GkP/mfTFmxfAOlPZSp4j41zVLYs53eDkAegFPVfKSr1XNNJ3QODLPcIBfxBYsiC9
|
11
|
+
oU+jRW8xYuj31cEl5k5UqrChJ1rm3mt6cguqXKbISuoSvi13gXI6DccqhuLAU+Kr
|
12
|
+
ib2XYrRP+pWocZo/pM9WUVoNGtFxfY88sAQtvG6gDKo2AURtFyq84Ow0h9mdixV/
|
13
|
+
gRIDPcECgYEA5nEqE3OKuG9WuUFGXvjtn4C0F6JjflYWh7AbX51S4F6LKrW6/XHL
|
14
|
+
Rg4BtF+XReT7OQ6llsV8kZeUxsUckkgDLzSaA8lysNDV5KkhAWHfRqH//QKFbqZi
|
15
|
+
JL9t3x63Qt81US8s2hQk3khPYTRM8ZB3xHiXvZYSGC/0x/DxfEO3QJECgYEA4NK5
|
16
|
+
sxtrat8sFz6SK9nWEKimPjDVzxJ0hxdX4tRq/JdOO5RncawVqt6TNP9gTuxfBvhW
|
17
|
+
MhJYEsQj8iUoL1dxo9d1eP8HEANNV0iX5OBvJNmgBp+2OyRSyr+PA55+wAxYuAE7
|
18
|
+
QKaitOjW57fpArNRt2hQyiSzTuqUFRWTWJHCWNUCgYAEurPTXF6vdFGCUc2g61jt
|
19
|
+
GhYYGhQSpq+lrz6Qksj9o9MVWE9zHh++21C7o+6V16I0RJGva3QoBMVf4vG4KtQt
|
20
|
+
5tV2WG8LI+4P2Ey+G4UajP6U8bVNVQrUmD0oBBhcvfn5JY+1Fg6/pRpD82/U0VMz
|
21
|
+
7AmpMWhDqNBMPiymkTk0kQKBgCuWb05cSI0ly4SOKwS5bRk5uVFhYnKNH255hh6C
|
22
|
+
FGP4acB/WzbcqC7CjEPAJ0nl5d6SExQOHmk1AcsWjR3wlCWxxiK5PwNJwJrlhh1n
|
23
|
+
reS1FKN0H36D4lFQpkeLWQOe4Sx7gKNeKzlr0w6Fx3Uwku0+Gju2tdTdAey8jB6l
|
24
|
+
08opAoGAEe1AuR/OFp2xw6V8TH9UHkkpGxy+OrXI6PX6tgk29PgB+uiMu4RwbjVz
|
25
|
+
1di1KKq2XecAilVbnyqY+edADxYGbSnci9x5wQRIebfMi3VXKtV8NQBv2as6qwtW
|
26
|
+
JDcQUWotOHjpdvmfJWWkcBhbAKrgX8ukww00ZI/lC3/rmkGnBBg=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,67 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Shared cleanup routines between different steps
|
4
|
+
#
|
5
|
+
# Please source .ci/functions/imports.sh as a whole not just this file
|
6
|
+
#
|
7
|
+
# Version 1.0.0
|
8
|
+
# - Initial version after refactor
|
9
|
+
|
10
|
+
function cleanup_volume {
|
11
|
+
if [[ "$(docker volume ls -q -f name=$1)" ]]; then
|
12
|
+
echo -e "\033[34;1mINFO:\033[0m Removing volume $1\033[0m"
|
13
|
+
(docker volume rm "$1") || true
|
14
|
+
fi
|
15
|
+
}
|
16
|
+
function container_running {
|
17
|
+
if [[ "$(docker ps -q -f name=$1)" ]]; then
|
18
|
+
return 0;
|
19
|
+
else return 1;
|
20
|
+
fi
|
21
|
+
}
|
22
|
+
function cleanup_node {
|
23
|
+
if container_running "$1"; then
|
24
|
+
echo -e "\033[34;1mINFO:\033[0m Removing container $1\033[0m"
|
25
|
+
(docker container rm --force --volumes "$1") || true
|
26
|
+
fi
|
27
|
+
if [[ -n "$1" ]]; then
|
28
|
+
echo -e "\033[34;1mINFO:\033[0m Removing volume $1-${suffix}-data\033[0m"
|
29
|
+
cleanup_volume "$1-${suffix}-data"
|
30
|
+
fi
|
31
|
+
}
|
32
|
+
function cleanup_network {
|
33
|
+
if [[ "$(docker network ls -q -f name=$1)" ]]; then
|
34
|
+
echo -e "\033[34;1mINFO:\033[0m Removing network $1\033[0m"
|
35
|
+
(docker network rm "$1") || true
|
36
|
+
fi
|
37
|
+
}
|
38
|
+
|
39
|
+
function cleanup_trap {
|
40
|
+
status=$?
|
41
|
+
set +x
|
42
|
+
if [[ "$DETACH" != "true" ]]; then
|
43
|
+
echo -e "\033[34;1mINFO:\033[0m clean the network if not detached (start and exit)\033[0m"
|
44
|
+
cleanup_all_in_network "$1"
|
45
|
+
fi
|
46
|
+
# status is 0 or SIGINT
|
47
|
+
if [[ "$status" == "0" || "$status" == "130" ]]; then
|
48
|
+
echo -e "\n\033[32;1mSUCCESS run-tests\033[0m"
|
49
|
+
exit 0
|
50
|
+
else
|
51
|
+
echo -e "\n\033[31;1mFAILURE during run-tests\033[0m"
|
52
|
+
exit ${status}
|
53
|
+
fi
|
54
|
+
};
|
55
|
+
function cleanup_all_in_network {
|
56
|
+
|
57
|
+
if [[ -z "$(docker network ls -q -f name="^$1\$")" ]]; then
|
58
|
+
echo -e "\033[34;1mINFO:\033[0m $1 is already deleted\033[0m"
|
59
|
+
return 0
|
60
|
+
fi
|
61
|
+
containers=$(docker network inspect -f '{{ range $key, $value := .Containers }}{{ printf "%s\n" .Name}}{{ end }}' $1)
|
62
|
+
while read -r container; do
|
63
|
+
cleanup_node "$container"
|
64
|
+
done <<< "$containers"
|
65
|
+
cleanup_network $1
|
66
|
+
echo -e "\033[32;1mSUCCESS:\033[0m Cleaned up and exiting\033[0m"
|
67
|
+
};
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Sets up all the common variables and imports relevant functions
|
4
|
+
#
|
5
|
+
# Version 1.0.1
|
6
|
+
# - Initial version after refactor
|
7
|
+
# - Validate STACK_VERSION asap
|
8
|
+
|
9
|
+
function require_stack_version() {
|
10
|
+
if [[ -z $STACK_VERSION ]]; then
|
11
|
+
echo -e "\033[31;1mERROR:\033[0m Required environment variable [STACK_VERSION] not set\033[0m"
|
12
|
+
exit 1
|
13
|
+
fi
|
14
|
+
}
|
15
|
+
|
16
|
+
require_stack_version
|
17
|
+
|
18
|
+
if [[ -z $es_node_name ]]; then
|
19
|
+
# only set these once
|
20
|
+
set -euo pipefail
|
21
|
+
export TEST_SUITE=${TEST_SUITE-free}
|
22
|
+
export SERVICE=${SERVICE-}
|
23
|
+
export RUNSCRIPTS=${RUNSCRIPTS-}
|
24
|
+
export DETACH=${DETACH-false}
|
25
|
+
export CLEANUP=${CLEANUP-false}
|
26
|
+
|
27
|
+
export es_node_name=instance
|
28
|
+
export elastic_password=changeme
|
29
|
+
export elasticsearch_image=elasticsearch
|
30
|
+
export elasticsearch_url=https://elastic:${elastic_password}@${es_node_name}:9200
|
31
|
+
if [[ $TEST_SUITE != "platinum" ]]; then
|
32
|
+
export elasticsearch_url=http://${es_node_name}:9200
|
33
|
+
fi
|
34
|
+
export external_elasticsearch_url=${elasticsearch_url/$es_node_name/localhost}
|
35
|
+
export elasticsearch_container="${elasticsearch_image}:${STACK_VERSION}"
|
36
|
+
|
37
|
+
export suffix=rest-test
|
38
|
+
export moniker=$(echo "$elasticsearch_container" | tr -C "[:alnum:]" '-')
|
39
|
+
export network_name=${moniker}${suffix}
|
40
|
+
|
41
|
+
export ssl_cert="${script_path}/certs/testnode.crt"
|
42
|
+
export ssl_key="${script_path}/certs/testnode.key"
|
43
|
+
export ssl_ca="${script_path}/certs/ca.crt"
|
44
|
+
|
45
|
+
fi
|
46
|
+
|
47
|
+
export script_path=$(dirname $(realpath -s $0))
|
48
|
+
source $script_path/functions/cleanup.sh
|
49
|
+
source $script_path/functions/wait-for-container.sh
|
50
|
+
trap "cleanup_trap ${network_name}" EXIT
|
51
|
+
|
52
|
+
|
53
|
+
if [[ "$CLEANUP" == "true" ]]; then
|
54
|
+
cleanup_all_in_network $network_name
|
55
|
+
exit 0
|
56
|
+
fi
|
57
|
+
|
58
|
+
echo -e "\033[34;1mINFO:\033[0m Creating network $network_name if it does not exist already \033[0m"
|
59
|
+
docker network inspect "$network_name" > /dev/null 2>&1 || docker network create "$network_name"
|
60
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Exposes a routine scripts can call to wait for a container if that container set up a health command
|
4
|
+
#
|
5
|
+
# Please source .ci/functions/imports.sh as a whole not just this file
|
6
|
+
#
|
7
|
+
# Version 1.0.1
|
8
|
+
# - Initial version after refactor
|
9
|
+
# - Make sure wait_for_contiainer is silent
|
10
|
+
|
11
|
+
function wait_for_container {
|
12
|
+
set +x
|
13
|
+
until ! container_running "$1" || (container_running "$1" && [[ "$(docker inspect -f "{{.State.Health.Status}}" ${1})" != "starting" ]]); do
|
14
|
+
echo ""
|
15
|
+
docker inspect -f "{{range .State.Health.Log}}{{.Output}}{{end}}" ${1}
|
16
|
+
echo -e "\033[34;1mINFO:\033[0m waiting for node $1 to be up\033[0m"
|
17
|
+
sleep 20;
|
18
|
+
done;
|
19
|
+
|
20
|
+
# Always show logs if the container is running, this is very useful both on CI as well as while developing
|
21
|
+
if container_running $1; then
|
22
|
+
docker logs $1
|
23
|
+
fi
|
24
|
+
|
25
|
+
if ! container_running $1 || [[ "$(docker inspect -f "{{.State.Health.Status}}" ${1})" != "healthy" ]]; then
|
26
|
+
cleanup_all_in_network $2
|
27
|
+
echo
|
28
|
+
echo -e "\033[31;1mERROR:\033[0m Failed to start $1 in detached mode beyond health checks\033[0m"
|
29
|
+
echo -e "\033[31;1mERROR:\033[0m dumped the docker log before shutting the node down\033[0m"
|
30
|
+
return 1
|
31
|
+
else
|
32
|
+
echo
|
33
|
+
echo -e "\033[32;1mSUCCESS:\033[0m Detached and healthy: ${1} on docker network: ${network_name}\033[0m"
|
34
|
+
return 0
|
35
|
+
fi
|
36
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# This script is intended to be run after the build in a Buildkite pipeline
|
4
|
+
echo "--- Test summary"
|
5
|
+
buildkite-agent artifact download "tmp/*.html" .
|
6
|
+
|
7
|
+
files="tmp/*.html"
|
8
|
+
for f in $files; do
|
9
|
+
SERVICE=`echo $f | grep -o "\(appsearch\|enterprisesearch\|workplacesearch\)"`
|
10
|
+
RUBY_VERSION=`echo $f | grep -Po "(\d+\.)+\d+"`
|
11
|
+
EXAMPLES=`cat $f | grep -o "[0-9]\+ example" | tail -1`
|
12
|
+
FAILURES=`cat $f | grep -o "[0-9]\+ failure" | tail -1`
|
13
|
+
PENDING=`cat $f | grep -o "[0-9]\+ pending" | tail -1`
|
14
|
+
echo "--- :rspec: $EXAMPLES - :x: $FAILURES - :pinched_fingers: $PENDING :test_tube: $SERVICE :ruby: $RUBY_VERSION"
|
15
|
+
done
|
@@ -0,0 +1,25 @@
|
|
1
|
+
steps:
|
2
|
+
- label: ":elastic-enterprise-search: Enterprise Search :rspec: {{ matrix.service }} :ruby: v{{ matrix.ruby }}"
|
3
|
+
agents:
|
4
|
+
provider: "gcp"
|
5
|
+
env:
|
6
|
+
RUBY_VERSION: "{{ matrix.ruby }}"
|
7
|
+
SERVICE: "{{ matrix.service }}"
|
8
|
+
STACK_VERSION: 8.6-SNAPSHOT
|
9
|
+
matrix:
|
10
|
+
setup:
|
11
|
+
ruby:
|
12
|
+
- "3.2"
|
13
|
+
- "3.1"
|
14
|
+
- "3.0"
|
15
|
+
- "2.7"
|
16
|
+
service:
|
17
|
+
- enterprisesearch
|
18
|
+
- appsearch
|
19
|
+
- workplacesearch
|
20
|
+
command: ./.buildkite/run-tests.sh
|
21
|
+
artifact_paths: "tmp/*"
|
22
|
+
- wait: ~
|
23
|
+
continue_on_failure: true
|
24
|
+
- label: "Log Results"
|
25
|
+
command: ./.buildkite/log-results.sh
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Once called Elasticsearch and Enteprise Search should be up and running
|
4
|
+
#
|
5
|
+
script_path=$(dirname $(realpath -s $0))
|
6
|
+
source $script_path/functions/imports.sh
|
7
|
+
set -euo pipefail
|
8
|
+
|
9
|
+
export RUBY_VERSION=${RUBY_VERSION:-3.1}
|
10
|
+
|
11
|
+
echo "--- Pinging Elasticsearch :elasticsearch:"
|
12
|
+
curl --insecure --fail $external_elasticsearch_url/_cluster/health?pretty
|
13
|
+
|
14
|
+
enterprise_search_url="http://localhost:3002"
|
15
|
+
echo "--- Pinging Enterprise Search :elastic-enterprise-search:"
|
16
|
+
curl -I --fail $enterprise_search_url
|
17
|
+
|
18
|
+
echo "--- :ruby: Building Docker image"
|
19
|
+
docker build \
|
20
|
+
--file $script_path/Dockerfile \
|
21
|
+
--tag elastic/enterprise-search-ruby \
|
22
|
+
--build-arg RUBY_VERSION=${RUBY_VERSION} \
|
23
|
+
.
|
24
|
+
|
25
|
+
echo "--- :ruby: Running $SERVICE tests"
|
26
|
+
docker run \
|
27
|
+
--network ${network_name} \
|
28
|
+
--name enterprise-search-ruby \
|
29
|
+
--env "ELASTIC_ENTERPRISE_HOST=http://${CONTAINER_NAME}:3002" \
|
30
|
+
--env "SERVICE=${SERVICE}" \
|
31
|
+
--rm \
|
32
|
+
--volume `pwd`:/code/enterprise-search-ruby \
|
33
|
+
elastic/enterprise-search-ruby \
|
34
|
+
rake spec:integration:${SERVICE}
|
35
|
+
|
@@ -0,0 +1,150 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Launch one or more Elasticsearch nodes via the Docker image,
|
4
|
+
# to form a cluster suitable for running the REST API tests.
|
5
|
+
#
|
6
|
+
# Export the STACK_VERSION variable, eg. '8.0.0-SNAPSHOT'.
|
7
|
+
# Export the TEST_SUITE variable, eg. 'free' or 'platinum' defaults to 'free'.
|
8
|
+
# Export the NUMBER_OF_NODES variable to start more than 1 node
|
9
|
+
|
10
|
+
# Version 1.6.1
|
11
|
+
# - Initial version of the run-elasticsearch.sh script
|
12
|
+
# - Deleting the volume should not dependent on the container still running
|
13
|
+
# - Fixed `ES_JAVA_OPTS` config
|
14
|
+
# - Moved to STACK_VERSION and TEST_VERSION
|
15
|
+
# - Refactored into functions and imports
|
16
|
+
# - Support NUMBER_OF_NODES
|
17
|
+
# - Added 5 retries on docker pull for fixing transient network errors
|
18
|
+
# - Added flags to make local CCR configurations work
|
19
|
+
# - Added action.destructive_requires_name=false as the default will be true in v8
|
20
|
+
# - Added ingest.geoip.downloader.enabled=false as it causes false positives in testing
|
21
|
+
# - Moved ELASTIC_PASSWORD and xpack.security.enabled to the base arguments for "Security On by default"
|
22
|
+
# - Use https only when TEST_SUITE is "platinum", when "free" use http
|
23
|
+
# - Set xpack.security.enabled=false for "free" and xpack.security.enabled=true for "platinum"
|
24
|
+
|
25
|
+
script_path=$(dirname $(realpath -s $0))
|
26
|
+
source $script_path/functions/imports.sh
|
27
|
+
set -euo pipefail
|
28
|
+
|
29
|
+
echo -e "\033[34;1mINFO:\033[0m Take down node if called twice with the same arguments (DETACH=true) or on seperate terminals \033[0m"
|
30
|
+
cleanup_node $es_node_name
|
31
|
+
|
32
|
+
master_node_name=${es_node_name}
|
33
|
+
cluster_name=${moniker}${suffix}
|
34
|
+
|
35
|
+
declare -a volumes
|
36
|
+
environment=($(cat <<-END
|
37
|
+
--env ELASTIC_PASSWORD=$elastic_password
|
38
|
+
--env node.name=$es_node_name
|
39
|
+
--env cluster.name=$cluster_name
|
40
|
+
--env cluster.initial_master_nodes=$master_node_name
|
41
|
+
--env discovery.seed_hosts=$master_node_name
|
42
|
+
--env cluster.routing.allocation.disk.threshold_enabled=false
|
43
|
+
--env bootstrap.memory_lock=true
|
44
|
+
--env node.attr.testattr=test
|
45
|
+
--env path.repo=/tmp
|
46
|
+
--env repositories.url.allowed_urls=http://snapshot.test*
|
47
|
+
--env action.destructive_requires_name=false
|
48
|
+
--env ingest.geoip.downloader.enabled=false
|
49
|
+
--env cluster.deprecation_indexing.enabled=false
|
50
|
+
END
|
51
|
+
))
|
52
|
+
if [[ "$TEST_SUITE" == "platinum" ]]; then
|
53
|
+
environment+=($(cat <<-END
|
54
|
+
--env xpack.security.enabled=true
|
55
|
+
--env xpack.license.self_generated.type=trial
|
56
|
+
--env xpack.security.http.ssl.enabled=true
|
57
|
+
--env xpack.security.http.ssl.verification_mode=certificate
|
58
|
+
--env xpack.security.http.ssl.key=certs/testnode.key
|
59
|
+
--env xpack.security.http.ssl.certificate=certs/testnode.crt
|
60
|
+
--env xpack.security.http.ssl.certificate_authorities=certs/ca.crt
|
61
|
+
--env xpack.security.transport.ssl.enabled=true
|
62
|
+
--env xpack.security.transport.ssl.verification_mode=certificate
|
63
|
+
--env xpack.security.transport.ssl.key=certs/testnode.key
|
64
|
+
--env xpack.security.transport.ssl.certificate=certs/testnode.crt
|
65
|
+
--env xpack.security.transport.ssl.certificate_authorities=certs/ca.crt
|
66
|
+
END
|
67
|
+
))
|
68
|
+
volumes+=($(cat <<-END
|
69
|
+
--volume $ssl_cert:/usr/share/elasticsearch/config/certs/testnode.crt
|
70
|
+
--volume $ssl_key:/usr/share/elasticsearch/config/certs/testnode.key
|
71
|
+
--volume $ssl_ca:/usr/share/elasticsearch/config/certs/ca.crt
|
72
|
+
END
|
73
|
+
))
|
74
|
+
else
|
75
|
+
environment+=($(cat <<-END
|
76
|
+
--env node.roles=data,data_cold,data_content,data_frozen,data_hot,data_warm,ingest,master,ml,remote_cluster_client,transform
|
77
|
+
--env xpack.security.enabled=false
|
78
|
+
--env xpack.security.http.ssl.enabled=false
|
79
|
+
END
|
80
|
+
))
|
81
|
+
fi
|
82
|
+
|
83
|
+
cert_validation_flags=""
|
84
|
+
if [[ "$TEST_SUITE" == "platinum" ]]; then
|
85
|
+
cert_validation_flags="--insecure --cacert /usr/share/elasticsearch/config/certs/ca.crt --resolve ${es_node_name}:443:127.0.0.1"
|
86
|
+
fi
|
87
|
+
|
88
|
+
echo "--- :elasticsearch: Environment setup"
|
89
|
+
echo "TEST_SUITE: $TEST_SUITE"
|
90
|
+
echo "Elasticsearch URL: $elasticsearch_url"
|
91
|
+
echo "Elasticsearch External URL: $external_elasticsearch_url"
|
92
|
+
|
93
|
+
|
94
|
+
echo "--- :elasticsearch: Running container"
|
95
|
+
# Pull the container, retry on failures up to 5 times with
|
96
|
+
# short delays between each attempt. Fixes most transient network errors.
|
97
|
+
docker_pull_attempts=0
|
98
|
+
until [ "$docker_pull_attempts" -ge 5 ]
|
99
|
+
do
|
100
|
+
docker pull docker.elastic.co/elasticsearch/"$elasticsearch_container" && break
|
101
|
+
docker_pull_attempts=$((docker_pull_attempts+1))
|
102
|
+
echo "Failed to pull image, retrying in 10 seconds (retry $docker_pull_attempts/5)..."
|
103
|
+
sleep 10
|
104
|
+
done
|
105
|
+
|
106
|
+
NUMBER_OF_NODES=${NUMBER_OF_NODES-1}
|
107
|
+
http_port=9200
|
108
|
+
for (( i=0; i<$NUMBER_OF_NODES; i++, http_port++ )); do
|
109
|
+
node_name=${es_node_name}$i
|
110
|
+
node_url=${external_elasticsearch_url/9200/${http_port}}$i
|
111
|
+
if [[ "$i" == "0" ]]; then node_name=$es_node_name; fi
|
112
|
+
environment+=($(cat <<-END
|
113
|
+
--env node.name=$node_name
|
114
|
+
END
|
115
|
+
))
|
116
|
+
echo "$i: $http_port $node_url "
|
117
|
+
volume_name=${node_name}-${suffix}-data
|
118
|
+
volumes+=($(cat <<-END
|
119
|
+
--volume $volume_name:/usr/share/elasticsearch/data${i}
|
120
|
+
END
|
121
|
+
))
|
122
|
+
|
123
|
+
# make sure we detach for all but the last node if DETACH=false (default) so all nodes are started
|
124
|
+
local_detach="true"
|
125
|
+
if [[ "$i" == "$((NUMBER_OF_NODES-1))" ]]; then local_detach=$DETACH; fi
|
126
|
+
echo -e "\033[34;1mINFO:\033[0m Starting container $node_name \033[0m"
|
127
|
+
set -x
|
128
|
+
docker run \
|
129
|
+
--name "$node_name" \
|
130
|
+
--network "$network_name" \
|
131
|
+
--env "ES_JAVA_OPTS=-Xms1g -Xmx1g -da:org.elasticsearch.xpack.ccr.index.engine.FollowingEngineAssertions" \
|
132
|
+
"${environment[@]}" \
|
133
|
+
"${volumes[@]}" \
|
134
|
+
--publish "$http_port":9200 \
|
135
|
+
--ulimit nofile=65536:65536 \
|
136
|
+
--ulimit memlock=-1:-1 \
|
137
|
+
--detach="$local_detach" \
|
138
|
+
--health-cmd="curl $cert_validation_flags --fail $elasticsearch_url/_cluster/health || exit 1" \
|
139
|
+
--health-interval=2s \
|
140
|
+
--health-retries=20 \
|
141
|
+
--health-timeout=2s \
|
142
|
+
--rm \
|
143
|
+
docker.elastic.co/elasticsearch/"$elasticsearch_container";
|
144
|
+
|
145
|
+
set +x
|
146
|
+
if wait_for_container "$es_node_name" "$network_name"; then
|
147
|
+
echo -e "\033[32;1mSUCCESS:\033[0m Running on: $node_url\033[0m"
|
148
|
+
fi
|
149
|
+
|
150
|
+
done
|