Skip to content

Commit 44799c4

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Allow ceilometer-api to run under mod_wsgi"
2 parents d844513 + ae6fb18 commit 44799c4

2 files changed

Lines changed: 63 additions & 1 deletion

File tree

files/apache-ceilometer.template

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Listen %PORT%
2+
3+
<VirtualHost *:%PORT%>
4+
WSGIDaemonProcess ceilometer-api processes=2 threads=10 user=%USER% display-name=%{GROUP}
5+
WSGIProcessGroup ceilometer-api
6+
WSGIScriptAlias / %WSGIAPP%
7+
WSGIApplicationGroup %{GLOBAL}
8+
<IfVersion >= 2.4>
9+
ErrorLogFormat "%{cu}t %M"
10+
</IfVersion>
11+
ErrorLog /var/log/%APACHE_NAME%/ceilometer.log
12+
CustomLog /var/log/%APACHE_NAME%/ceilometer_access.log combined
13+
</VirtualHost>
14+
15+
WSGISocketPrefix /var/run/%APACHE_NAME%

lib/ceilometer

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ CEILOMETER_CONF_DIR=/etc/ceilometer
4141
CEILOMETER_CONF=$CEILOMETER_CONF_DIR/ceilometer.conf
4242
CEILOMETER_API_LOG_DIR=/var/log/ceilometer-api
4343
CEILOMETER_AUTH_CACHE_DIR=${CEILOMETER_AUTH_CACHE_DIR:-/var/cache/ceilometer}
44+
CEILOMETER_WSGI_DIR=${CEILOMETER_WSGI_DIR:-/var/www/ceilometer}
4445

4546
# Support potential entry-points console scripts
4647
CEILOMETER_BIN_DIR=$(get_python_exec_prefix)
@@ -52,6 +53,7 @@ CEILOMETER_BACKEND=${CEILOMETER_BACKEND:-mysql}
5253
CEILOMETER_SERVICE_PROTOCOL=http
5354
CEILOMETER_SERVICE_HOST=$SERVICE_HOST
5455
CEILOMETER_SERVICE_PORT=${CEILOMETER_SERVICE_PORT:-8777}
56+
CEILOMETER_USE_MOD_WSGI=$(trueorfalse False $CEILOMETER_USE_MOD_WSGI)
5557

5658
# To enable OSprofiler change value of this variable to "notifications,profiler"
5759
CEILOMETER_NOTIFICATION_TOPICS=${CEILOMETER_NOTIFICATION_TOPICS:-notifications}
@@ -105,12 +107,39 @@ create_ceilometer_accounts() {
105107
}
106108

107109

110+
# _cleanup_keystone_apache_wsgi() - Remove wsgi files, disable and remove apache vhost file
111+
function _cleanup_ceilometer_apache_wsgi {
112+
sudo rm -f $CEILOMETER_WSGI_DIR/*
113+
sudo rm -f $(apache_site_config_for ceilometer)
114+
}
115+
108116
# cleanup_ceilometer() - Remove residual data files, anything left over from previous
109117
# runs that a clean run would need to clean up
110118
function cleanup_ceilometer {
111119
if [ "$CEILOMETER_BACKEND" != 'mysql' ] && [ "$CEILOMETER_BACKEND" != 'postgresql' ] ; then
112120
mongo ceilometer --eval "db.dropDatabase();"
113121
fi
122+
if [ "$CEILOMETER_USE_MOD_WSGI" == "True" ]; then
123+
_cleanup_ceilometer_apache_wsgi
124+
fi
125+
}
126+
127+
function _config_ceilometer_apache_wsgi {
128+
sudo mkdir -p $CEILOMETER_WSGI_DIR
129+
130+
local ceilometer_apache_conf=$(apache_site_config_for ceilometer)
131+
local apache_version=$(get_apache_version)
132+
133+
# copy proxy vhost and wsgi file
134+
sudo cp $CEILOMETER_DIR/ceilometer/api/app.wsgi $CEILOMETER_WSGI_DIR/app
135+
136+
sudo cp $FILES/apache-ceilometer.template $ceilometer_apache_conf
137+
sudo sed -e "
138+
s|%PORT%|$CEILOMETER_SERVICE_PORT|g;
139+
s|%APACHE_NAME%|$APACHE_NAME|g;
140+
s|%WSGIAPP%|$CEILOMETER_WSGI_DIR/app|g;
141+
s|%USER%|$STACK_USER|g
142+
" -i $ceilometer_apache_conf
114143
}
115144

116145
# configure_ceilometer() - Set config files, create data dirs, etc
@@ -163,6 +192,11 @@ function configure_ceilometer {
163192
iniset $CEILOMETER_CONF vmware host_username "$VMWAREAPI_USER"
164193
iniset $CEILOMETER_CONF vmware host_password "$VMWAREAPI_PASSWORD"
165194
fi
195+
196+
if [ "$CEILOMETER_USE_MOD_WSGI" == "True" ]; then
197+
iniset $CEILOMETER_CONF api pecan_debug "False"
198+
_config_ceilometer_apache_wsgi
199+
fi
166200
}
167201

168202
function configure_mongodb {
@@ -223,7 +257,16 @@ function start_ceilometer {
223257
run_process ceilometer-acentral "ceilometer-agent-central --config-file $CEILOMETER_CONF"
224258
run_process ceilometer-anotification "ceilometer-agent-notification --config-file $CEILOMETER_CONF"
225259
run_process ceilometer-collector "ceilometer-collector --config-file $CEILOMETER_CONF"
226-
run_process ceilometer-api "ceilometer-api -d -v --log-dir=$CEILOMETER_API_LOG_DIR --config-file $CEILOMETER_CONF"
260+
261+
if [[ "$CEILOMETER_USE_MOD_WSGI" == "False" ]]; then
262+
run_process ceilometer-api "ceilometer-api -d -v --log-dir=$CEILOMETER_API_LOG_DIR --config-file $CEILOMETER_CONF"
263+
else
264+
enable_apache_site ceilometer
265+
restart_apache_server
266+
tail_log ceilometer /var/log/$APACHE_NAME/ceilometer.log
267+
tail_log ceilometer-api /var/log/$APACHE_NAME/ceilometer_access.log
268+
fi
269+
227270

228271
# Start the compute agent last to allow time for the collector to
229272
# fully wake up and connect to the message bus. See bug #1355809
@@ -248,6 +291,10 @@ function start_ceilometer {
248291

249292
# stop_ceilometer() - Stop running processes
250293
function stop_ceilometer {
294+
if [ "$CEILOMETER_USE_MOD_WSGI" == "True" ]; then
295+
disable_apache_site ceilometer
296+
restart_apache_server
297+
fi
251298
# Kill the ceilometer screen windows
252299
for serv in ceilometer-acompute ceilometer-acentral ceilometer-anotification ceilometer-collector ceilometer-api ceilometer-alarm-notifier ceilometer-alarm-evaluator; do
253300
stop_process $serv

0 commit comments

Comments
 (0)