blob: 9c4f6f780134aa8ab2f9cb239a20d9eb1cf0dd80 [file] [log] [blame]
Sean Daguef8b4f852015-02-04 15:46:03 -05001#!/bin/bash -xe
2
3# basic reference point for things like filecache
4#
5# TODO(sdague): once we have a few of these I imagine the download
6# step can probably be factored out to something nicer
7TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
8FILES=$TOP_DIR/files
gordon chungb203d0c2015-08-12 11:58:11 -04009source $TOP_DIR/stackrc
Sean Daguef8b4f852015-02-04 15:46:03 -050010
11# Package source and version, all pkg files are expected to have
12# something like this, as well as a way to override them.
13ELASTICSEARCH_VERSION=${ELASTICSEARCH_VERSION:-1.4.2}
14ELASTICSEARCH_BASEURL=${ELASTICSEARCH_BASEURL:-https://download.elasticsearch.org/elasticsearch/elasticsearch}
15
16# Elastic search actual implementation
17function wget_elasticsearch {
18 local file=${1}
19
20 if [ ! -f ${FILES}/${file} ]; then
21 wget $ELASTICSEARCH_BASEURL/${file} -O ${FILES}/${file}
22 fi
23
24 if [ ! -f ${FILES}/${file}.sha1.txt ]; then
25 wget $ELASTICSEARCH_BASEURL/${file}.sha1.txt -O ${FILES}/${file}.sha1.txt
26 fi
27
28 pushd ${FILES}; sha1sum ${file} > ${file}.sha1.gen; popd
29
30 if ! diff ${FILES}/${file}.sha1.gen ${FILES}/${file}.sha1.txt; then
31 echo "Invalid elasticsearch download. Could not install."
32 return 1
33 fi
34 return 0
35}
36
37function download_elasticsearch {
38 if is_ubuntu; then
39 wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.deb
40 elif is_fedora; then
41 wget_elasticsearch elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
42 fi
43}
44
45function configure_elasticsearch {
46 # currently a no op
Attila Fazekas99b59882015-02-24 12:15:21 +010047 :
Sean Daguef8b4f852015-02-04 15:46:03 -050048}
49
gordon chung76e724b2015-02-11 18:28:37 -050050function _check_elasticsearch_ready {
51 # poll elasticsearch to see if it's started
52 if ! wait_for_service 30 http://localhost:9200; then
53 die $LINENO "Maximum timeout reached. Could not connect to ElasticSearch"
54 fi
55}
56
Sean Daguef8b4f852015-02-04 15:46:03 -050057function start_elasticsearch {
58 if is_ubuntu; then
59 sudo /etc/init.d/elasticsearch start
gordon chung76e724b2015-02-11 18:28:37 -050060 _check_elasticsearch_ready
Sean Daguef8b4f852015-02-04 15:46:03 -050061 elif is_fedora; then
62 sudo /bin/systemctl start elasticsearch.service
gordon chung76e724b2015-02-11 18:28:37 -050063 _check_elasticsearch_ready
Sean Daguef8b4f852015-02-04 15:46:03 -050064 else
65 echo "Unsupported architecture...can not start elasticsearch."
66 fi
67}
68
69function stop_elasticsearch {
70 if is_ubuntu; then
71 sudo /etc/init.d/elasticsearch stop
72 elif is_fedora; then
73 sudo /bin/systemctl stop elasticsearch.service
74 else
75 echo "Unsupported architecture...can not stop elasticsearch."
76 fi
77}
78
79function install_elasticsearch {
Sean Dague60996b12015-04-08 09:06:49 -040080 pip_install_gr elasticsearch
Sean Daguef8b4f852015-02-04 15:46:03 -050081 if is_package_installed elasticsearch; then
82 echo "Note: elasticsearch was already installed."
83 return
84 fi
85 if is_ubuntu; then
86 is_package_installed openjdk-7-jre-headless || install_package openjdk-7-jre-headless
87
88 sudo dpkg -i ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.deb
89 sudo update-rc.d elasticsearch defaults 95 10
90 elif is_fedora; then
Federico Ressi3809def2016-01-06 08:19:24 +000091 is_package_installed java-1.8.0-openjdk-headless || install_package java-1.8.0-openjdk-headless
Sean Daguef8b4f852015-02-04 15:46:03 -050092 yum_install ${FILES}/elasticsearch-${ELASTICSEARCH_VERSION}.noarch.rpm
93 sudo /bin/systemctl daemon-reload
94 sudo /bin/systemctl enable elasticsearch.service
95 else
96 echo "Unsupported install of elasticsearch on this architecture."
97 fi
98}
99
100function uninstall_elasticsearch {
101 if is_package_installed elasticsearch; then
102 if is_ubuntu; then
103 sudo apt-get purge elasticsearch
104 elif is_fedora; then
105 sudo yum remove elasticsearch
106 else
107 echo "Unsupported install of elasticsearch on this architecture."
108 fi
109 fi
110}
111
112# The PHASE dispatcher. All pkg files are expected to basically cargo
113# cult the case statement.
114PHASE=$1
115echo "Phase is $PHASE"
116
117case $PHASE in
118 download)
119 download_elasticsearch
120 ;;
121 install)
122 install_elasticsearch
123 ;;
124 configure)
125 configure_elasticsearch
126 ;;
127 start)
128 start_elasticsearch
129 ;;
130 stop)
131 stop_elasticsearch
132 ;;
133 uninstall)
134 uninstall_elasticsearch
135 ;;
136esac