blob: d7152b1e6f582690925d6982bc9999ce8b6da986 [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
Sergey Lukjanovde205722014-02-19 14:00:42 +040013# cleanup_savanna
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000014
15# Save trace setting
16XTRACE=$(set +o | grep xtrace)
17set +o xtrace
18
19
20# Defaults
21# --------
22
23# Set up default repos
24SAVANNA_REPO=${SAVANNA_REPO:-${GIT_BASE}/openstack/savanna.git}
25SAVANNA_BRANCH=${SAVANNA_BRANCH:-master}
26
27# Set up default directories
28SAVANNA_DIR=$DEST/savanna
29SAVANNA_CONF_DIR=${SAVANNA_CONF_DIR:-/etc/savanna}
Sergey Lukjanovabb7df12014-01-28 22:38:06 +040030SAVANNA_CONF_FILE=${SAVANNA_CONF_DIR}/savanna.conf
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000031SAVANNA_DEBUG=${SAVANNA_DEBUG:-True}
32
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040033SAVANNA_SERVICE_HOST=${SAVANNA_SERVICE_HOST:-$SERVICE_HOST}
34SAVANNA_SERVICE_PORT=${SAVANNA_SERVICE_PORT:-8386}
35SAVANNA_SERVICE_PROTOCOL=${SAVANNA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
36
Sergey Lukjanovde205722014-02-19 14:00:42 +040037SAVANNA_AUTH_CACHE_DIR=${SAVANNA_AUTH_CACHE_DIR:-/var/cache/savanna}
38
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000039# Support entry points installation of console scripts
40if [[ -d $SAVANNA_DIR/bin ]]; then
41 SAVANNA_BIN_DIR=$SAVANNA_DIR/bin
42else
43 SAVANNA_BIN_DIR=$(get_python_exec_prefix)
44fi
45
Dean Troyer4237f592014-01-29 16:22:11 -060046# Tell Tempest this project is present
47TEMPEST_SERVICES+=,savanna
48
49
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000050# Functions
51# ---------
52
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040053# create_savanna_accounts() - Set up common required savanna accounts
54#
55# Tenant User Roles
56# ------------------------------
57# service savanna admin
Ian Wienandaee18c72014-02-21 15:35:08 +110058function create_savanna_accounts {
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040059
Steve Martinelli19685422014-01-24 13:02:26 -060060 SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
61 ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040062
Steve Martinelli19685422014-01-24 13:02:26 -060063 SAVANNA_USER=$(openstack user create \
64 savanna \
65 --password "$SERVICE_PASSWORD" \
66 --project $SERVICE_TENANT \
67 --email savanna@example.com \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040068 | grep " id " | get_field 2)
Steve Martinelli19685422014-01-24 13:02:26 -060069 openstack role add \
70 $ADMIN_ROLE \
71 --project $SERVICE_TENANT \
72 --user $SAVANNA_USER
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040073
74 if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
Steve Martinelli19685422014-01-24 13:02:26 -060075 SAVANNA_SERVICE=$(openstack service create \
76 savanna \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040077 --type=data_processing \
78 --description="Savanna Data Processing" \
79 | grep " id " | get_field 2)
Steve Martinelli19685422014-01-24 13:02:26 -060080 openstack endpoint create \
81 $SAVANNA_SERVICE \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040082 --region RegionOne \
Sergey Lukjanov0c08e7b2013-12-04 18:03:25 +040083 --publicurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
84 --adminurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
85 --internalurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s"
86 fi
87}
88
Sergey Lukjanovde205722014-02-19 14:00:42 +040089# cleanup_savanna() - Remove residual data files, anything left over from
90# previous runs that would need to clean up.
Ian Wienandaee18c72014-02-21 15:35:08 +110091function cleanup_savanna {
Sergey Lukjanovde205722014-02-19 14:00:42 +040092
93 # Cleanup auth cache dir
94 sudo rm -rf $SAVANNA_AUTH_CACHE_DIR
95}
96
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000097# configure_savanna() - Set config files, create data dirs, etc
Ian Wienandaee18c72014-02-21 15:35:08 +110098function configure_savanna {
Denis Egorenkoa45a0a02013-10-01 16:03:39 +000099
100 if [[ ! -d $SAVANNA_CONF_DIR ]]; then
101 sudo mkdir -p $SAVANNA_CONF_DIR
102 fi
103 sudo chown $STACK_USER $SAVANNA_CONF_DIR
104
105 # Copy over savanna configuration file and configure common parameters.
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400106 cp $SAVANNA_DIR/etc/savanna/savanna.conf.sample $SAVANNA_CONF_FILE
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000107
Sergey Lukjanovde205722014-02-19 14:00:42 +0400108 # Create auth cache dir
109 sudo mkdir -p $SAVANNA_AUTH_CACHE_DIR
110 sudo chown $STACK_USER $SAVANNA_AUTH_CACHE_DIR
111 rm -rf $SAVANNA_AUTH_CACHE_DIR/*
112
113 # Set obsolete keystone auth configs for backward compatibility
114 iniset $SAVANNA_CONF_FILE DEFAULT os_auth_host $KEYSTONE_SERVICE_HOST
115 iniset $SAVANNA_CONF_FILE DEFAULT os_auth_port $KEYSTONE_SERVICE_PORT
116 iniset $SAVANNA_CONF_FILE DEFAULT os_auth_protocol $KEYSTONE_SERVICE_PROTOCOL
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400117 iniset $SAVANNA_CONF_FILE DEFAULT os_admin_password $SERVICE_PASSWORD
118 iniset $SAVANNA_CONF_FILE DEFAULT os_admin_username savanna
119 iniset $SAVANNA_CONF_FILE DEFAULT os_admin_tenant_name $SERVICE_TENANT_NAME
Sergey Lukjanovde205722014-02-19 14:00:42 +0400120
121 # Set actual keystone auth configs
122 iniset $SAVANNA_CONF_FILE keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/
123 iniset $SAVANNA_CONF_FILE keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
124 iniset $SAVANNA_CONF_FILE keystone_authtoken admin_user savanna
125 iniset $SAVANNA_CONF_FILE keystone_authtoken admin_password $SERVICE_PASSWORD
126 iniset $SAVANNA_CONF_FILE keystone_authtoken signing_dir $SAVANNA_AUTH_CACHE_DIR
127 iniset $SAVANNA_CONF_FILE keystone_authtoken cafile $KEYSTONE_SSL_CA
128
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400129 iniset $SAVANNA_CONF_FILE DEFAULT debug $SAVANNA_DEBUG
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000130
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400131 iniset $SAVANNA_CONF_FILE database connection `database_connection_url savanna`
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000132
133 if is_service_enabled neutron; then
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400134 iniset $SAVANNA_CONF_FILE DEFAULT use_neutron true
135 iniset $SAVANNA_CONF_FILE DEFAULT use_floating_ips true
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000136 fi
137
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400138 iniset $SAVANNA_CONF_FILE DEFAULT use_syslog $SYSLOG
Sergey Lukjanovfe422552014-01-23 14:18:54 +0400139
140 recreate_database savanna utf8
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400141 $SAVANNA_BIN_DIR/savanna-db-manage --config-file $SAVANNA_CONF_FILE upgrade head
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000142}
143
144# install_savanna() - Collect source and prepare
Ian Wienandaee18c72014-02-21 15:35:08 +1100145function install_savanna {
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000146 git_clone $SAVANNA_REPO $SAVANNA_DIR $SAVANNA_BRANCH
147 setup_develop $SAVANNA_DIR
148}
149
150# start_savanna() - Start running processes, including screen
Ian Wienandaee18c72014-02-21 15:35:08 +1100151function start_savanna {
Sergey Lukjanovabb7df12014-01-28 22:38:06 +0400152 screen_it savanna "cd $SAVANNA_DIR && $SAVANNA_BIN_DIR/savanna-api --config-file $SAVANNA_CONF_FILE"
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000153}
154
155# stop_savanna() - Stop running processes
Ian Wienandaee18c72014-02-21 15:35:08 +1100156function stop_savanna {
Denis Egorenkoa45a0a02013-10-01 16:03:39 +0000157 # Kill the Savanna screen windows
158 screen -S $SCREEN_NAME -p savanna -X kill
159}
160
161
162# Restore xtrace
163$XTRACE
164
165# Local variables:
166# mode: shell-script
167# End: