blob: 6d4e8648bf660b62a51122d17d38b9b60243887a [file] [log] [blame]
Sean Daguee263c822014-12-05 14:25:28 -05001#!/bin/bash
2#
Sergey Lukjanov7ff84432014-03-10 20:04:51 +04003# lib/sahara
4
5# Dependencies:
6# ``functions`` file
7# ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
8
9# ``stack.sh`` calls the entry points in this order:
10#
11# install_sahara
Sergey Lukjanova90898d2014-08-05 16:14:12 +040012# install_python_saharaclient
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040013# configure_sahara
Andrew Lazarevb3130482014-12-16 14:36:59 -080014# sahara_register_images
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040015# start_sahara
16# stop_sahara
17# cleanup_sahara
18
19# Save trace setting
20XTRACE=$(set +o | grep xtrace)
21set +o xtrace
22
23
24# Defaults
25# --------
26
27# Set up default repos
Sergey Lukjanova90898d2014-08-05 16:14:12 +040028
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040029# Set up default directories
Sean Dagueee5ae7b2014-11-13 13:23:27 -050030GITDIR["python-saharaclient"]=$DEST/python-saharaclient
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040031SAHARA_DIR=$DEST/sahara
Sergey Lukjanova90898d2014-08-05 16:14:12 +040032
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040033SAHARA_CONF_DIR=${SAHARA_CONF_DIR:-/etc/sahara}
34SAHARA_CONF_FILE=${SAHARA_CONF_DIR}/sahara.conf
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040035
Andrew Lazarev0479d372015-02-09 16:51:25 -080036if is_ssl_enabled_service "sahara" || is_service_enabled tls-proxy; then
Andrew Lazarev5ccbd0a2015-02-06 16:22:12 -080037 SAHARA_SERVICE_PROTOCOL="https"
38fi
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040039SAHARA_SERVICE_HOST=${SAHARA_SERVICE_HOST:-$SERVICE_HOST}
40SAHARA_SERVICE_PORT=${SAHARA_SERVICE_PORT:-8386}
Andrew Lazarev0479d372015-02-09 16:51:25 -080041SAHARA_SERVICE_PORT_INT=${SAHARA_SERVICE_PORT_INT:-18386}
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040042SAHARA_SERVICE_PROTOCOL=${SAHARA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
43
44SAHARA_AUTH_CACHE_DIR=${SAHARA_AUTH_CACHE_DIR:-/var/cache/sahara}
45
Sergey Reshetnyak32ac55a2015-02-25 15:54:20 +030046SAHARA_ENABLED_PLUGINS=${SAHARA_ENABLED_PLUGINS:-vanilla,hdp,cdh,spark,fake}
Sergey Lukjanov10f41612014-04-25 11:42:41 +040047
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040048# Support entry points installation of console scripts
49if [[ -d $SAHARA_DIR/bin ]]; then
50 SAHARA_BIN_DIR=$SAHARA_DIR/bin
51else
52 SAHARA_BIN_DIR=$(get_python_exec_prefix)
53fi
54
55# Tell Tempest this project is present
56TEMPEST_SERVICES+=,sahara
57
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040058# Functions
59# ---------
60
61# create_sahara_accounts() - Set up common required sahara accounts
62#
63# Tenant User Roles
64# ------------------------------
65# service sahara admin
66function create_sahara_accounts {
67
Jamie Lennoxe8bc2b82015-02-10 20:38:56 +110068 create_service_user "sahara"
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040069
70 if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
Bartosz Górski0abde392014-02-28 14:15:19 +010071
Telles Nobrega37a06f02014-11-18 07:59:10 -030072 # TODO: remove "data_processing" service when #1356053 will be fixed
73 local sahara_service_old=$(openstack service create \
74 "data_processing" \
75 --name "sahara" \
76 --description "Sahara Data Processing" \
77 -f value -c id
78 )
79 local sahara_service_new=$(openstack service create \
80 "data-processing" \
81 --name "sahara" \
82 --description "Sahara Data Processing" \
83 -f value -c id
84 )
85 get_or_create_endpoint $sahara_service_old \
86 "$REGION_NAME" \
87 "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
88 "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
89 "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s"
90 get_or_create_endpoint $sahara_service_new \
Bartosz Górski0abde392014-02-28 14:15:19 +010091 "$REGION_NAME" \
92 "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
93 "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
94 "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s"
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040095 fi
96}
97
98# cleanup_sahara() - Remove residual data files, anything left over from
99# previous runs that would need to clean up.
100function cleanup_sahara {
101
102 # Cleanup auth cache dir
103 sudo rm -rf $SAHARA_AUTH_CACHE_DIR
104}
105
106# configure_sahara() - Set config files, create data dirs, etc
107function configure_sahara {
Dean Troyer8421c2b2015-03-16 13:52:19 -0500108 sudo install -d -o $STACK_USER $SAHARA_CONF_DIR
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400109
Andrew Lazarev627ca742014-10-29 17:01:15 -0700110 if [[ -f $SAHARA_DIR/etc/sahara/policy.json ]]; then
111 cp -p $SAHARA_DIR/etc/sahara/policy.json $SAHARA_CONF_DIR
112 fi
113
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400114 # Create auth cache dir
Dean Troyer8421c2b2015-03-16 13:52:19 -0500115 sudo install -d -o $STACK_USER -m 700 $SAHARA_AUTH_CACHE_DIR
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400116 rm -rf $SAHARA_AUTH_CACHE_DIR/*
117
Brant Knudson05952372014-09-19 17:22:22 -0500118 configure_auth_token_middleware $SAHARA_CONF_FILE sahara $SAHARA_AUTH_CACHE_DIR
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400119
Sergey Reshetnyak435cd4d2015-03-01 12:44:02 +0300120 iniset_rpc_backend sahara $SAHARA_CONF_FILE DEFAULT
121
Vitaly Gridneve50fcb12014-08-11 12:01:12 +0000122 # Set configuration to send notifications
123
124 if is_service_enabled ceilometer; then
125 iniset $SAHARA_CONF_FILE DEFAULT enable_notifications "true"
126 iniset $SAHARA_CONF_FILE DEFAULT notification_driver "messaging"
Vitaly Gridneve50fcb12014-08-11 12:01:12 +0000127 fi
128
Sergey Lukjanov3cd59e12014-03-25 00:06:31 +0400129 iniset $SAHARA_CONF_FILE DEFAULT verbose True
130 iniset $SAHARA_CONF_FILE DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400131
Sergey Lukjanov10f41612014-04-25 11:42:41 +0400132 iniset $SAHARA_CONF_FILE DEFAULT plugins $SAHARA_ENABLED_PLUGINS
133
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400134 iniset $SAHARA_CONF_FILE database connection `database_connection_url sahara`
135
136 if is_service_enabled neutron; then
137 iniset $SAHARA_CONF_FILE DEFAULT use_neutron true
Andrew Lazarev4f7e0f22015-02-06 16:16:01 -0800138
139 if is_ssl_enabled_service "neutron" || is_service_enabled tls-proxy; then
140 iniset $SAHARA_CONF_FILE neutron ca_file $SSL_BUNDLE_FILE
141 fi
Andrew Lazarev0943e072014-12-17 16:07:32 -0800142 else
143 iniset $SAHARA_CONF_FILE DEFAULT use_neutron false
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400144 fi
145
146 if is_service_enabled heat; then
147 iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine heat
Andrew Lazarev4f7e0f22015-02-06 16:16:01 -0800148
149 if is_ssl_enabled_service "heat" || is_service_enabled tls-proxy; then
150 iniset $SAHARA_CONF_FILE heat ca_file $SSL_BUNDLE_FILE
151 fi
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400152 else
153 iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine direct
154 fi
155
Andrew Lazarev4f7e0f22015-02-06 16:16:01 -0800156 if is_ssl_enabled_service "cinder" || is_service_enabled tls-proxy; then
157 iniset $SAHARA_CONF_FILE cinder ca_file $SSL_BUNDLE_FILE
158 fi
159
160 if is_ssl_enabled_service "nova" || is_service_enabled tls-proxy; then
161 iniset $SAHARA_CONF_FILE nova ca_file $SSL_BUNDLE_FILE
162 fi
163
164 if is_ssl_enabled_service "swift" || is_service_enabled tls-proxy; then
165 iniset $SAHARA_CONF_FILE swift ca_file $SSL_BUNDLE_FILE
166 fi
167
168 if is_ssl_enabled_service "key" || is_service_enabled tls-proxy; then
169 iniset $SAHARA_CONF_FILE keystone ca_file $SSL_BUNDLE_FILE
170 fi
171
Andrew Lazarev5ccbd0a2015-02-06 16:22:12 -0800172 # Register SSL certificates if provided
173 if is_ssl_enabled_service sahara; then
174 ensure_certificates SAHARA
175
176 iniset $SAHARA_CONF_FILE ssl cert_file "$SAHARA_SSL_CERT"
177 iniset $SAHARA_CONF_FILE ssl key_file "$SAHARA_SSL_KEY"
178 fi
179
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400180 iniset $SAHARA_CONF_FILE DEFAULT use_syslog $SYSLOG
181
Luigi Toscanob4bef1f2014-04-03 19:24:57 +0200182 # Format logging
183 if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then
184 setup_colorized_logging $SAHARA_CONF_FILE DEFAULT
185 fi
186
Andrew Lazarev0479d372015-02-09 16:51:25 -0800187 if is_service_enabled tls-proxy; then
188 # Set the service port for a proxy to take the original
189 iniset $SAHARA_CONF DEFAULT port $SAHARA_SERVICE_PORT_INT
190 fi
191
Ihar Hrachyshka157c84b2014-10-06 13:29:39 +0200192 recreate_database sahara
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400193 $SAHARA_BIN_DIR/sahara-db-manage --config-file $SAHARA_CONF_FILE upgrade head
194}
195
196# install_sahara() - Collect source and prepare
197function install_sahara {
198 git_clone $SAHARA_REPO $SAHARA_DIR $SAHARA_BRANCH
199 setup_develop $SAHARA_DIR
200}
201
Sergey Lukjanova90898d2014-08-05 16:14:12 +0400202# install_python_saharaclient() - Collect source and prepare
203function install_python_saharaclient {
Sean Dagueee5ae7b2014-11-13 13:23:27 -0500204 if use_library_from_git "python-saharaclient"; then
205 git_clone_by_name "python-saharaclient"
206 setup_dev_lib "python-saharaclient"
207 fi
Sergey Lukjanova90898d2014-08-05 16:14:12 +0400208}
209
Andrew Lazarevb3130482014-12-16 14:36:59 -0800210# sahara_register_images() - Registers images in sahara image registry
211function sahara_register_images {
212 if is_service_enabled heat && [[ ! -z "$HEAT_CFN_IMAGE_URL" ]]; then
213 # Register heat image for Fake plugin
214 local fake_plugin_properties="--property _sahara_tag_0.1=True"
215 fake_plugin_properties+=" --property _sahara_tag_fake=True"
216 fake_plugin_properties+=" --property _sahara_username=fedora"
217 openstack --os-url $GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT image set $(basename "$HEAT_CFN_IMAGE_URL" ".qcow2") $fake_plugin_properties
218 fi
219}
220
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400221# start_sahara() - Start running processes, including screen
222function start_sahara {
Andrew Lazarev0479d372015-02-09 16:51:25 -0800223 local service_port=$SAHARA_SERVICE_PORT
224 local service_protocol=$SAHARA_SERVICE_PROTOCOL
225 if is_service_enabled tls-proxy; then
226 service_port=$SAHARA_SERVICE_PORT_INT
227 service_protocol="http"
228 fi
229
Chris Dent2f27a0e2014-09-09 13:46:02 +0100230 run_process sahara "$SAHARA_BIN_DIR/sahara-all --config-file $SAHARA_CONF_FILE"
Sergey Reshetnyak435cd4d2015-03-01 12:44:02 +0300231 run_process sahara-api "$SAHARA_BIN_DIR/sahara-api --config-file $SAHARA_CONF_FILE"
232 run_process sahara-eng "$SAHARA_BIN_DIR/sahara-engine --config-file $SAHARA_CONF_FILE"
Andrew Lazarev0479d372015-02-09 16:51:25 -0800233
234 echo "Waiting for Sahara to start..."
235 if ! wait_for_service $SERVICE_TIMEOUT $service_protocol://$SAHARA_SERVICE_HOST:$service_port; then
236 die $LINENO "Sahara did not start"
237 fi
238
239 # Start proxies if enabled
240 if is_service_enabled tls-proxy; then
241 start_tls_proxy '*' $SAHARA_SERVICE_PORT $SAHARA_SERVICE_HOST $SAHARA_SERVICE_PORT_INT &
242 fi
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400243}
244
245# stop_sahara() - Stop running processes
246function stop_sahara {
247 # Kill the Sahara screen windows
Sean Dague9a413ab2015-02-04 12:44:18 -0500248 stop_process sahara
Sergey Reshetnyak435cd4d2015-03-01 12:44:02 +0300249 stop_process sahara-api
250 stop_process sahara-eng
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400251}
252
253
254# Restore xtrace
255$XTRACE
256
257# Local variables:
258# mode: shell-script
259# End: