blob: 7b592b00436131278f54a642ec0ff8e3d4c74347 [file] [log] [blame]
Sergey Lukjanov7ff84432014-03-10 20:04:51 +04001# lib/sahara
2
3# Dependencies:
4# ``functions`` file
5# ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
6
7# ``stack.sh`` calls the entry points in this order:
8#
9# install_sahara
10# configure_sahara
11# start_sahara
12# stop_sahara
13# cleanup_sahara
14
15# Save trace setting
16XTRACE=$(set +o | grep xtrace)
17set +o xtrace
18
19
20# Defaults
21# --------
22
23# Set up default repos
24SAHARA_REPO=${SAHARA_REPO:-${GIT_BASE}/openstack/sahara.git}
25SAHARA_BRANCH=${SAHARA_BRANCH:-master}
26
27# Set up default directories
28SAHARA_DIR=$DEST/sahara
29SAHARA_CONF_DIR=${SAHARA_CONF_DIR:-/etc/sahara}
30SAHARA_CONF_FILE=${SAHARA_CONF_DIR}/sahara.conf
31SAHARA_DEBUG=${SAHARA_DEBUG:-True}
32
33SAHARA_SERVICE_HOST=${SAHARA_SERVICE_HOST:-$SERVICE_HOST}
34SAHARA_SERVICE_PORT=${SAHARA_SERVICE_PORT:-8386}
35SAHARA_SERVICE_PROTOCOL=${SAHARA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
36
37SAHARA_AUTH_CACHE_DIR=${SAHARA_AUTH_CACHE_DIR:-/var/cache/sahara}
38
39# Support entry points installation of console scripts
40if [[ -d $SAHARA_DIR/bin ]]; then
41 SAHARA_BIN_DIR=$SAHARA_DIR/bin
42else
43 SAHARA_BIN_DIR=$(get_python_exec_prefix)
44fi
45
46# Tell Tempest this project is present
47TEMPEST_SERVICES+=,sahara
48
Sergey Lukjanov7ff84432014-03-10 20:04:51 +040049# Functions
50# ---------
51
52# create_sahara_accounts() - Set up common required sahara accounts
53#
54# Tenant User Roles
55# ------------------------------
56# service sahara admin
57function create_sahara_accounts {
58
59 SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
60 ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
61
62 SAHARA_USER=$(openstack user create \
63 sahara \
64 --password "$SERVICE_PASSWORD" \
65 --project $SERVICE_TENANT \
66 --email sahara@example.com \
67 | grep " id " | get_field 2)
68 openstack role add \
69 $ADMIN_ROLE \
70 --project $SERVICE_TENANT \
71 --user $SAHARA_USER
72
73 if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
74 SAHARA_SERVICE=$(openstack service create \
75 sahara \
76 --type=data_processing \
77 --description="Sahara Data Processing" \
78 | grep " id " | get_field 2)
79 openstack endpoint create \
80 $SAHARA_SERVICE \
81 --region RegionOne \
82 --publicurl "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
83 --adminurl "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
84 --internalurl "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s"
85 fi
86}
87
88# cleanup_sahara() - Remove residual data files, anything left over from
89# previous runs that would need to clean up.
90function cleanup_sahara {
91
92 # Cleanup auth cache dir
93 sudo rm -rf $SAHARA_AUTH_CACHE_DIR
94}
95
96# configure_sahara() - Set config files, create data dirs, etc
97function configure_sahara {
98
99 if [[ ! -d $SAHARA_CONF_DIR ]]; then
100 sudo mkdir -p $SAHARA_CONF_DIR
101 fi
102 sudo chown $STACK_USER $SAHARA_CONF_DIR
103
104 # Copy over sahara configuration file and configure common parameters.
Sergey Lukjanov51ebda62014-03-12 22:26:12 +0400105 cp $SAHARA_DIR/etc/sahara/sahara.conf.sample $SAHARA_CONF_FILE
Sergey Lukjanov7ff84432014-03-10 20:04:51 +0400106
107 # Create auth cache dir
108 sudo mkdir -p $SAHARA_AUTH_CACHE_DIR
109 sudo chown $STACK_USER $SAHARA_AUTH_CACHE_DIR
110 rm -rf $SAHARA_AUTH_CACHE_DIR/*
111
112 # Set obsolete keystone auth configs for backward compatibility
113 iniset $SAHARA_CONF_FILE DEFAULT os_auth_host $KEYSTONE_SERVICE_HOST
114 iniset $SAHARA_CONF_FILE DEFAULT os_auth_port $KEYSTONE_SERVICE_PORT
115 iniset $SAHARA_CONF_FILE DEFAULT os_auth_protocol $KEYSTONE_SERVICE_PROTOCOL
116 iniset $SAHARA_CONF_FILE DEFAULT os_admin_password $SERVICE_PASSWORD
117 iniset $SAHARA_CONF_FILE DEFAULT os_admin_username sahara
118 iniset $SAHARA_CONF_FILE DEFAULT os_admin_tenant_name $SERVICE_TENANT_NAME
119
120 # Set actual keystone auth configs
121 iniset $SAHARA_CONF_FILE keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/
122 iniset $SAHARA_CONF_FILE keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
123 iniset $SAHARA_CONF_FILE keystone_authtoken admin_user sahara
124 iniset $SAHARA_CONF_FILE keystone_authtoken admin_password $SERVICE_PASSWORD
125 iniset $SAHARA_CONF_FILE keystone_authtoken signing_dir $SAHARA_AUTH_CACHE_DIR
126 iniset $SAHARA_CONF_FILE keystone_authtoken cafile $KEYSTONE_SSL_CA
127
128 iniset $SAHARA_CONF_FILE DEFAULT debug $SAHARA_DEBUG
129
130 iniset $SAHARA_CONF_FILE database connection `database_connection_url sahara`
131
132 if is_service_enabled neutron; then
133 iniset $SAHARA_CONF_FILE DEFAULT use_neutron true
134 iniset $SAHARA_CONF_FILE DEFAULT use_floating_ips true
135 fi
136
137 if is_service_enabled heat; then
138 iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine heat
139 else
140 iniset $SAHARA_CONF_FILE DEFAULT infrastructure_engine direct
141 fi
142
143 iniset $SAHARA_CONF_FILE DEFAULT use_syslog $SYSLOG
144
145 recreate_database sahara utf8
146 $SAHARA_BIN_DIR/sahara-db-manage --config-file $SAHARA_CONF_FILE upgrade head
147}
148
149# install_sahara() - Collect source and prepare
150function install_sahara {
151 git_clone $SAHARA_REPO $SAHARA_DIR $SAHARA_BRANCH
152 setup_develop $SAHARA_DIR
153}
154
155# start_sahara() - Start running processes, including screen
156function start_sahara {
157 screen_it sahara "cd $SAHARA_DIR && $SAHARA_BIN_DIR/sahara-api --config-file $SAHARA_CONF_FILE"
158}
159
160# stop_sahara() - Stop running processes
161function stop_sahara {
162 # Kill the Sahara screen windows
163 screen -S $SCREEN_NAME -p sahara -X kill
164}
165
166
167# Restore xtrace
168$XTRACE
169
170# Local variables:
171# mode: shell-script
172# End: