blob: e77c504db0d5bbbf73ae2189bf23d470ae4ced51 [file] [log] [blame]
Steven Hardyd591a252014-10-27 17:22:17 +00001# Install and start the **Tuskar** service
2#
3# To enable, add the following to your localrc
4#
5# enable_service tuskar
6# enable_service tuskar-api
7
8
9if is_service_enabled tuskar; then
10 if [[ "$1" == "source" ]]; then
11 # Initial source, do nothing as functions sourced
12 # are below rather than in lib/tuskar
13 echo_summary "source extras tuskar"
14 elif [[ "$1" == "stack" && "$2" == "install" ]]; then
15 echo_summary "Installing Tuskar"
16 install_tuskarclient
17 install_tuskar
18 elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
19 echo_summary "Configuring Tuskar"
20 configure_tuskar
21 configure_tuskarclient
22
23 if is_service_enabled key; then
24 create_tuskar_accounts
25 fi
26
27 elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
28 echo_summary "Initializing Tuskar"
29 init_tuskar
30 start_tuskar
31 fi
32
33 if [[ "$1" == "unstack" ]]; then
34 stop_tuskar
35 fi
36fi
37
38# library code (equivalent to lib/tuskar)
39# ---------
40# - install_tuskarclient
41# - install_tuskar
42# - configure_tuskarclient
43# - configure_tuskar
44# - init_tuskar
45# - start_tuskar
46# - stop_tuskar
47# - cleanup_tuskar
48
49# Save trace setting
50XTRACE=$(set +o | grep xtrace)
51set +o xtrace
52
53
54# Defaults
55# --------
56
57# tuskar repos
58TUSKAR_REPO=${TUSKAR_REPO:-${GIT_BASE}/openstack/tuskar.git}
59TUSKAR_BRANCH=${TUSKAR_BRANCH:-master}
60
61TUSKARCLIENT_REPO=${TUSKARCLIENT_REPO:-${GIT_BASE}/openstack/python-tuskarclient.git}
62TUSKARCLIENT_BRANCH=${TUSKARCLIENT_BRANCH:-master}
63
64# set up default directories
65TUSKAR_DIR=$DEST/tuskar
66TUSKARCLIENT_DIR=$DEST/python-tuskarclient
67TUSKAR_AUTH_CACHE_DIR=${TUSKAR_AUTH_CACHE_DIR:-/var/cache/tuskar}
68TUSKAR_STANDALONE=`trueorfalse False $TUSKAR_STANDALONE`
69TUSKAR_CONF_DIR=/etc/tuskar
70TUSKAR_CONF=$TUSKAR_CONF_DIR/tuskar.conf
71TUSKAR_API_HOST=${TUSKAR_API_HOST:-$HOST_IP}
72TUSKAR_API_PORT=${TUSKAR_API_PORT:-8585}
73
74# Tell Tempest this project is present
75TEMPEST_SERVICES+=,tuskar
76
77# Functions
78# ---------
79
80# Test if any Tuskar services are enabled
81# is_tuskar_enabled
82function is_tuskar_enabled {
83 [[ ,${ENABLED_SERVICES} =~ ,"tuskar-" ]] && return 0
84 return 1
85}
86
87# cleanup_tuskar() - Remove residual data files, anything left over from previous
88# runs that a clean run would need to clean up
89function cleanup_tuskar {
90 sudo rm -rf $TUSKAR_AUTH_CACHE_DIR
91}
92
93# configure_tuskar() - Set config files, create data dirs, etc
94function configure_tuskar {
95 setup_develop $TUSKAR_DIR
96
97 if [[ ! -d $TUSKAR_CONF_DIR ]]; then
98 sudo mkdir -p $TUSKAR_CONF_DIR
99 fi
100 sudo chown $STACK_USER $TUSKAR_CONF_DIR
101 # remove old config files
102 rm -f $TUSKAR_CONF_DIR/tuskar-*.conf
103
104 TUSKAR_POLICY_FILE=$TUSKAR_CONF_DIR/policy.json
105
106 cp $TUSKAR_DIR/etc/tuskar/policy.json $TUSKAR_POLICY_FILE
107 cp $TUSKAR_DIR/etc/tuskar/tuskar.conf.sample $TUSKAR_CONF
108
109 # common options
110 iniset $TUSKAR_CONF database connection `database_connection_url tuskar`
111
112 # logging
113 iniset $TUSKAR_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
114 iniset $TUSKAR_CONF DEFAULT use_syslog $SYSLOG
115 if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then
116 # Add color to logging output
117 setup_colorized_logging $TUSKAR_CONF DEFAULT tenant user
118 fi
119
120 configure_auth_token_middleware $TUSKAR_CONF tuskar $TUSKAR_AUTH_CACHE_DIR
121
122 if is_ssl_enabled_service "key"; then
123 iniset $TUSKAR_CONF clients_keystone ca_file $SSL_BUNDLE_FILE
124 fi
125
126 iniset $TUSKAR_CONF tuskar_api bind_port $TUSKAR_API_PORT
127
128}
129
130# init_tuskar() - Initialize database
131function init_tuskar {
132
133 # (re)create tuskar database
134 recreate_database tuskar utf8
135
136 tuskar-dbsync --config-file $TUSKAR_CONF
137 create_tuskar_cache_dir
138}
139
140# create_tuskar_cache_dir() - Part of the init_tuskar() process
141function create_tuskar_cache_dir {
142 # Create cache dirs
143 sudo mkdir -p $TUSKAR_AUTH_CACHE_DIR
144 sudo chown $STACK_USER $TUSKAR_AUTH_CACHE_DIR
145}
146
147# install_tuskarclient() - Collect source and prepare
148function install_tuskarclient {
149 git_clone $TUSKARCLIENT_REPO $TUSKARCLIENT_DIR $TUSKARCLIENT_BRANCH
150 setup_develop $TUSKARCLIENT_DIR
151}
152
153# configure_tuskarclient() - Set config files, create data dirs, etc
154function configure_tuskarclient {
155 setup_develop $TUSKARCLIENT_DIR
156}
157
158# install_tuskar() - Collect source and prepare
159function install_tuskar {
160 git_clone $TUSKAR_REPO $TUSKAR_DIR $TUSKAR_BRANCH
161}
162
163# start_tuskar() - Start running processes, including screen
164function start_tuskar {
165 run_process tuskar-api "tuskar-api --config-file=$TUSKAR_CONF"
166}
167
168# stop_tuskar() - Stop running processes
169function stop_tuskar {
170 # Kill the screen windows
171 local serv
172 for serv in tuskar-api; do
173 stop_process $serv
174 done
175}
176
177# create_tuskar_accounts() - Set up common required tuskar accounts
178function create_tuskar_accounts {
179 # migrated from files/keystone_data.sh
180 local service_tenant=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
181 local admin_role=$(openstack role list | awk "/ admin / { print \$2 }")
182
183 local tuskar_user=$(get_or_create_user "tuskar" \
184 "$SERVICE_PASSWORD" $service_tenant)
185 get_or_add_user_role $admin_role $tuskar_user $service_tenant
186
187 if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
188
189 local tuskar_service=$(get_or_create_service "tuskar" \
190 "management" "Tuskar Management Service")
191 get_or_create_endpoint $tuskar_service \
192 "$REGION_NAME" \
193 "$SERVICE_PROTOCOL://$TUSKAR_API_HOST:$TUSKAR_API_PORT" \
194 "$SERVICE_PROTOCOL://$TUSKAR_API_HOST:$TUSKAR_API_PORT" \
195 "$SERVICE_PROTOCOL://$TUSKAR_API_HOST:$TUSKAR_API_PORT"
196 fi
197}
198
199# Restore xtrace
200$XTRACE
201
202# Tell emacs to use shell-script-mode
203## Local variables:
204## mode: shell-script
205## End: