blob: 33ee34e22f4dac8221d8168a93cd29bb8093a29e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{5,6} )
MY_PN="curator"
ES_VERSION="6.4.3"
inherit distutils-r1
DESCRIPTION="Tending time-series indices in Elasticsearch"
HOMEPAGE="https://github.com/elasticsearch/curator"
SRC_URI="https://github.com/elasticsearch/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
test? ( https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-${ES_VERSION}.tar.gz )"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~x86"
# tests fail in chroot
# https://github.com/elastic/elasticsearch/issues/12018
RESTRICT="test"
IUSE="doc test"
RDEPEND="
>=dev-python/elasticsearch-py-6.1.0[${PYTHON_USEDEP}]
<dev-python/elasticsearch-py-7.0.0[${PYTHON_USEDEP}]
>=dev-python/click-6.7[${PYTHON_USEDEP}]
<dev-python/click-7.0[${PYTHON_USEDEP}]
>=dev-python/certifi-2018.10.15[${PYTHON_USEDEP}]
>=dev-python/urllib3-1.22[${PYTHON_USEDEP}]
>=dev-python/voluptuous-0.9.3[${PYTHON_USEDEP}]"
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
>=dev-python/six-1.11.0[${PYTHON_USEDEP}]
dev-python/sphinx[${PYTHON_USEDEP}]
>=dev-python/pyyaml-3.10[${PYTHON_USEDEP}]
test? ( ${RDEPEND}
virtual/jre:1.8
dev-python/mock[${PYTHON_USEDEP}]
dev-python/nose[${PYTHON_USEDEP}]
dev-python/coverage[${PYTHON_USEDEP}]
dev-python/nosexcover[${PYTHON_USEDEP}]
dev-python/six[${PYTHON_USEDEP}] )"
S="${WORKDIR}/${MY_PN}-${PV}"
python_prepare_all() {
# avoid downloading from net
sed -e '/^intersphinx_mapping/,+3d' -i docs/conf.py || die
# requests_aws4auth not in portage
sed -e '/boto3/d' \
-e '/requests_aws4auth/d' \
-i setup.cfg setup.py || die
distutils-r1_python_prepare_all
}
python_compile_all() {
emake -C docs -j1 man $(usex doc html "")
}
# running tests in non-chroot environments:
# FEATURES="test -usersandbox" emerge dev-python/elasticsearch-curator
python_test() {
# starts two ES instances (local,remote) and runs the tests
# https://github.com/elastic/curator/blob/master/travis-run.sh
local ES_INSTANCES="local remote"
local ES_PATH="${WORKDIR}/elasticsearch-${ES_VERSION}"
declare -A ES_PORT
ES_PORT[local]=25123
ES_PORT[remote]=25124
local i
declare -A ES_CONFIG_DIR ES_CONFIG_PATH ES_INSTANCE ES_LOG ES_PID
for i in ${ES_INSTANCES}; do
ES_CONFIG_DIR[$i]="${ES_PATH}/$i"
ES_CONFIG_PATH[$i]="${ES_CONFIG_DIR[$i]}/elasticsearch.yml"
ES_PID[$i]="${ES_PATH}/$i.pid"
ES_LOG[$i]="${ES_PATH}/logs/$i.log"
done
# configure ES instances
for i in ${ES_INSTANCES}; do
mkdir -p "${ES_CONFIG_DIR[$i]}" || die
cp ${ES_PATH}/config/{jvm.options,log4j2.properties} "${ES_CONFIG_DIR[$i]}"/ || die
echo 'network.host: 127.0.0.1' > "${ES_CONFIG_PATH[$i]}" || die
echo "http.port: ${ES_PORT[$i]}" >> "${ES_CONFIG_PATH[$i]}" || die
echo "cluster.name: $i" >> "${ES_CONFIG_PATH[$i]}" || die
echo 'node.max_local_storage_nodes: 2' >> "${ES_CONFIG_PATH[$i]}" || die
echo "discovery.zen.ping.unicast.hosts: [\"127.0.0.1:${ES_PORT[$i]}\"]" >> "${ES_CONFIG_PATH[$i]}" || die
done
echo 'path.repo: /' >> "${ES_CONFIG_PATH[local]}" || die
echo "reindex.remote.whitelist: localhost:${ES_PORT[remote]}" >> "${ES_CONFIG_PATH[local]}" || die
# start ES instances
for i in ${ES_INSTANCES}; do
ES_PATH_CONF=${ES_CONFIG_DIR[$i]} "${ES_PATH}/bin/elasticsearch" -d -p "${ES_PID[$i]}" || die
local j
local es_started=0
for j in {1..20}; do
grep -q "started" "${ES_LOG[$i]}" 2> /dev/null
if [[ $? -eq 0 ]]; then
einfo "Elasticsearch $i started"
es_started=1
eend 0
break
elif grep -q 'BindException\[Address already in use\]' "${ES_LOG[$i]}" 2>/dev/null; then
eend 1
eerror "Elasticsearch $i already running"
die "Cannot start Elasticsearch $i for tests"
else
einfo "Waiting for Elasticsearch $i"
eend 1
sleep 2
continue
fi
done
[[ $es_started -eq 0 ]] && die "Elasticsearch failed to start"
done
export TEST_ES_SERVER="localhost:${ES_PORT[local]}"
export REMOTE_ES_SERVER="localhost:${ES_PORT[remote]}"
# run tests
esetup.py test || die
for i in ${ES_INSTANCES}; do
pkill -F ${ES_PID[$i]}
done
}
python_install_all() {
use doc && local HTML_DOCS=( docs/_build/html/. )
doman docs/_build/man/*
distutils-r1_python_install_all
}
pkg_postinst() {
ewarn ""
ewarn "For Python 3 support information please read: http://click.pocoo.org/latest/python3/"
ewarn ""
ewarn "Example usage on Python 3:"
ewarn "export LC_ALL=en_US.UTF-8"
ewarn "export LANG=en_US.UTF-8"
ewarn "curator ..."
}
|