blob: 43c5e386fedb78f212ac366a5337435ba78dd8f7 [file] [log] [blame]
Denis Egorenkoa45a0a02013-10-01 16:03:39 +00001# lib/savanna
2
3# Dependencies:
4# ``functions`` file
5# ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined
Denis Egorenkoa45a0a02013-10-01 16:03:39 +00006
7# ``stack.sh`` calls the entry points in this order:
8#
9# install_savanna
10# configure_savanna
11# start_savanna
12# stop_savanna
13
14# Save trace setting
15XTRACE=$(set +o | grep xtrace)
16set +o xtrace
17
18
19# Defaults
20# --------
21
22# Set up default repos
23SAVANNA_REPO=${SAVANNA_REPO:-${GIT_BASE}/openstack/savanna.git}
24SAVANNA_BRANCH=${SAVANNA_BRANCH:-master}
25
26# Set up default directories
27SAVANNA_DIR=$DEST/savanna
28SAVANNA_CONF_DIR=${SAVANNA_CONF_DIR:-/etc/savanna}
Sergey Lukjanovabb7df12014-01-28 22:38:06 +040029SAVANNA_CONF_FILE=${SAVANNA_CONF_DIR}/savanna.conf
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000030SAVANNA_DEBUG=${SAVANNA_DEBUG:-True}
31
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040032SAVANNA_SERVICE_HOST=${SAVANNA_SERVICE_HOST:-$SERVICE_HOST}
33SAVANNA_SERVICE_PORT=${SAVANNA_SERVICE_PORT:-8386}
34SAVANNA_SERVICE_PROTOCOL=${SAVANNA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
35
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000036# Support entry points installation of console scripts
37if [[ -d $SAVANNA_DIR/bin ]]; then
38 SAVANNA_BIN_DIR=$SAVANNA_DIR/bin
39else
40 SAVANNA_BIN_DIR=$(get_python_exec_prefix)
41fi
42
Dean Troyer4237f592014-01-29 16:22:11 -060043# Tell Tempest this project is present
44TEMPEST_SERVICES+=,savanna
45
46
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000047# Functions
48# ---------
49
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040050# create_savanna_accounts() - Set up common required savanna accounts
51#
52# Tenant User Roles
53# ------------------------------
54# service savanna admin
55function create_savanna_accounts() {
56
Steve Martinelli19685422014-01-24 13:02:26 -060057 SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
58 ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040059
Steve Martinelli19685422014-01-24 13:02:26 -060060 SAVANNA_USER=$(openstack user create \
61 savanna \
62 --password "$SERVICE_PASSWORD" \
63 --project $SERVICE_TENANT \
64 --email savanna@example.com \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040065 | grep " id " | get_field 2)
Steve Martinelli19685422014-01-24 13:02:26 -060066 openstack role add \
67 $ADMIN_ROLE \
68 --project $SERVICE_TENANT \
69 --user $SAVANNA_USER
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040070
71 if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
Steve Martinelli19685422014-01-24 13:02:26 -060072 SAVANNA_SERVICE=$(openstack service create \
73 savanna \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040074 --type=data_processing \
75 --description="Savanna Data Processing" \
76 | grep " id " | get_field 2)
Steve Martinelli19685422014-01-24 13:02:26 -060077 openstack endpoint create \
78 $SAVANNA_SERVICE \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040079 --region RegionOne \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040080 --publicurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
81 --adminurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
82 --internalurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s"
83 fi
84}
85
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000086# configure_savanna() - Set config files, create data dirs, etc
87function configure_savanna() {
88
89 if [[ ! -d $SAVANNA_CONF_DIR ]]; then
90 sudo mkdir -p $SAVANNA_CONF_DIR
91 fi
92 sudo chown $STACK_USER $SAVANNA_CONF_DIR
93
94 # Copy over savanna configuration file and configure common parameters.
Sergey Lukjanovabb7df12014-01-28 22:38:06 +040095 cp $SAVANNA_DIR/etc/savanna/savanna.conf.sample $SAVANNA_CONF_FILE
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000096
Sergey Lukjanovabb7df12014-01-28 22:38:06 +040097 iniset $SAVANNA_CONF_FILE DEFAULT os_admin_password $SERVICE_PASSWORD
98 iniset $SAVANNA_CONF_FILE DEFAULT os_admin_username savanna
99 iniset $SAVANNA_CONF_FILE DEFAULT os_admin_tenant_name $SERVICE_TENANT_NAME
100 iniset $SAVANNA_CONF_FILE DEFAULT debug $SAVANNA_DEBUG
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000101
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400102 iniset $SAVANNA_CONF_FILE database connection `database_connection_url savanna`
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000103
104 if is_service_enabled neutron; then
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400105 iniset $SAVANNA_CONF_FILE DEFAULT use_neutron true
106 iniset $SAVANNA_CONF_FILE DEFAULT use_floating_ips true
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000107 fi
108
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400109 iniset $SAVANNA_CONF_FILE DEFAULT use_syslog $SYSLOG
Sergey Lukjanovfe422552014-01-23 14:18:54 +0400110
111 recreate_database savanna utf8
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400112 $SAVANNA_BIN_DIR/savanna-db-manage --config-file $SAVANNA_CONF_FILE upgrade head
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000113}
114
115# install_savanna() - Collect source and prepare
116function install_savanna() {
117 git_clone $SAVANNA_REPO $SAVANNA_DIR $SAVANNA_BRANCH
118 setup_develop $SAVANNA_DIR
119}
120
121# start_savanna() - Start running processes, including screen
122function start_savanna() {
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400123 screen_it savanna "cd $SAVANNA_DIR && $SAVANNA_BIN_DIR/savanna-api --config-file $SAVANNA_CONF_FILE"
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000124}
125
126# stop_savanna() - Stop running processes
127function stop_savanna() {
128 # Kill the Savanna screen windows
129 screen -S $SCREEN_NAME -p savanna -X kill
130}
131
132
133# Restore xtrace
134$XTRACE
135
136# Local variables:
137# mode: shell-script
138# End: