Configure dsvm gate job to use uwsgi instead of apache2
Change-Id: I31c8f5e724367e863fd613fbad170e52f99f1a42
This commit is contained in:
1
devstack/files/apache2-freezer-api.conf
Normal file
1
devstack/files/apache2-freezer-api.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ProxyPass "/backup" "unix:/var/run/uwsgi/freezer-api-wsgi.socket|uwsgi://uwsgi-uds-freezer-api-wsgi/" retry=0
|
@@ -103,6 +103,7 @@ function configure_freezer_api {
|
|||||||
|
|
||||||
# enable debuging
|
# enable debuging
|
||||||
iniset $FREEZER_API_CONF 'DEFAULT' debug True
|
iniset $FREEZER_API_CONF 'DEFAULT' debug True
|
||||||
|
iniset $FREEZER_API_CONF 'DEFAULT' log_file $FREEZER_API_LOG_DIR/freezer-api.log
|
||||||
|
|
||||||
# set paste configuration
|
# set paste configuration
|
||||||
iniset $FREEZER_API_CONF 'paste_deploy' config_file $FREEZER_API_CONF_DIR/freezer-paste.ini
|
iniset $FREEZER_API_CONF 'paste_deploy' config_file $FREEZER_API_CONF_DIR/freezer-paste.ini
|
||||||
@@ -130,6 +131,9 @@ function configure_freezer_api {
|
|||||||
if [[ "${FREEZER_API_SERVER_TYPE}" == "apache2" ]]; then
|
if [[ "${FREEZER_API_SERVER_TYPE}" == "apache2" ]]; then
|
||||||
echo_summary "Configuring Freezer API wsgi app in Apache"
|
echo_summary "Configuring Freezer API wsgi app in Apache"
|
||||||
configure_apache_freezer_app
|
configure_apache_freezer_app
|
||||||
|
elif [[ "${FREEZER_API_SERVER_TYPE}" == "uwsgi" ]]; then
|
||||||
|
echo_summary "Configuring Freezer API wsgi app in Uwsgi"
|
||||||
|
configure_uwsgi_freezer_api_app
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO certs and more recent options such as elasticsearch connection parameters
|
# TODO certs and more recent options such as elasticsearch connection parameters
|
||||||
@@ -149,10 +153,18 @@ function init_freezer_api {
|
|||||||
|
|
||||||
# executed during: stack extra
|
# executed during: stack extra
|
||||||
function start_freezer_api {
|
function start_freezer_api {
|
||||||
|
|
||||||
if [[ "${FREEZER_API_SERVER_TYPE}" == "uwsgi" ]]; then
|
if [[ "${FREEZER_API_SERVER_TYPE}" == "uwsgi" ]]; then
|
||||||
run_process freezer-api "uwsgi --http :$FREEZER_API_PORT --need-app --master --module freezer_api.cmd.wsgi:application"
|
# @todo (szaher) use apache2 proxy template to run api with uwsgi
|
||||||
|
run_process freezer-api "$FREEZER_API_BIN_DIR/uwsgi --ini $FREEZER_API_UWSGI_CONF --pidfile2 $FREEZER_API_UWSGI_MASTER_PIDFILE"
|
||||||
sleep 1
|
sleep 1
|
||||||
|
enable_apache_site freezer-api
|
||||||
|
restart_apache_server
|
||||||
|
|
||||||
|
tail_log freezer-api /var/log/$APACHE_NAME/freezer-api.log
|
||||||
|
|
||||||
elif [[ "${FREEZER_API_SERVER_TYPE}" == "apache2" ]]; then
|
elif [[ "${FREEZER_API_SERVER_TYPE}" == "apache2" ]]; then
|
||||||
|
|
||||||
enable_apache_site freezer-api
|
enable_apache_site freezer-api
|
||||||
restart_apache_server
|
restart_apache_server
|
||||||
tail_log freezer-api /var/log/$APACHE_NAME/freezer-api.log
|
tail_log freezer-api /var/log/$APACHE_NAME/freezer-api.log
|
||||||
@@ -164,9 +176,13 @@ function start_freezer_api {
|
|||||||
# executed during: stop
|
# executed during: stop
|
||||||
function stop_freezer_api {
|
function stop_freezer_api {
|
||||||
${TOP_DIR}/pkg/elasticsearch.sh stop
|
${TOP_DIR}/pkg/elasticsearch.sh stop
|
||||||
|
|
||||||
if [[ "${FREEZER_API_SERVER_TYPE}" == "uwsgi" ]]; then
|
if [[ "${FREEZER_API_SERVER_TYPE}" == "uwsgi" ]]; then
|
||||||
|
uwsgi --stop $FREEZER_API_UWSGI_MASTER_PIDFILE
|
||||||
killall -9 uwsgi
|
killall -9 uwsgi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
disable_apache_site freezer-api
|
||||||
stop_process freezer-api
|
stop_process freezer-api
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,11 +218,23 @@ function create_freezer_api_accounts {
|
|||||||
#
|
#
|
||||||
# freezer backup endpoint registration
|
# freezer backup endpoint registration
|
||||||
#
|
#
|
||||||
get_or_create_endpoint "$freezer_service" \
|
|
||||||
|
if [[ "${FREEZER_API_SERVER_TYPE}" == "uwsgi" ]]; then
|
||||||
|
get_or_create_endpoint "$freezer_service" \
|
||||||
|
"$REGION_NAME" \
|
||||||
|
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST/backup" \
|
||||||
|
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST/backup" \
|
||||||
|
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST/backup"
|
||||||
|
|
||||||
|
elif [[ "${FREEZER_API_SERVER_TYPE}" == "apache2" ]]; then
|
||||||
|
get_or_create_endpoint "$freezer_service" \
|
||||||
"$REGION_NAME" \
|
"$REGION_NAME" \
|
||||||
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST:$FREEZER_API_PORT" \
|
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST:$FREEZER_API_PORT" \
|
||||||
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST:$FREEZER_API_PORT" \
|
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST:$FREEZER_API_PORT" \
|
||||||
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST:$FREEZER_API_PORT"
|
"$FREEZER_API_SERVICE_PROTOCOL://$SERVICE_HOST:$FREEZER_API_PORT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -232,5 +260,48 @@ function configure_apache_freezer_app {
|
|||||||
" -i $freezer_api_apache_conf
|
" -i $freezer_api_apache_conf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function configure_uwsgi_freezer_api_app {
|
||||||
|
|
||||||
|
local freezer_api_apache_conf=$(apache_site_config_for freezer-api)
|
||||||
|
|
||||||
|
# copy the uwsgi.conf to /etc/freezer/
|
||||||
|
sudo cp $FREEZER_API_DIR/etc/freezer/uwsgi.conf $FREEZER_API_UWSGI_CONF
|
||||||
|
|
||||||
|
local local_http="${SERVICE_HOST}:$FREEZER_API_PORT"
|
||||||
|
if [[ "${SERVICE_HOST}" == "127.0.0.1" ]] || [[ "${SERVICE_HOST}" == "localhost" ]]; then
|
||||||
|
local_http=":$FREEZER_API_PORT"
|
||||||
|
fi
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' http $local_http
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' processes 2
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' threads 2
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' wsgi-file $FREEZER_API_DIR/freezer_api/cmd/wsgi.py
|
||||||
|
|
||||||
|
# Make sure the client doesn't try to re-use the connection.
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' add-header "Connection: close"
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' master true
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' socket /var/run/uwsgi/freezer-api-wsgi.socket
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' chmod-socket 666
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' lazy-apps true
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' plugins python
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' enable-threads true
|
||||||
|
|
||||||
|
# Set die-on-term & exit-on-reload so that uwsgi shuts down
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' exit-on-reload true
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' die-on-term true
|
||||||
|
|
||||||
|
# uwsgi recommends this to prevent thundering herd on accept.
|
||||||
|
iniset $FREEZER_API_UWSGI_CONF 'uwsgi' thunder-lock true
|
||||||
|
|
||||||
|
# print the content of the uwsgi.conf after replacing values
|
||||||
|
cat $FREEZER_API_UWSGI_CONF
|
||||||
|
|
||||||
|
echo_summary "Configuring freezer-api uwsgi site"
|
||||||
|
|
||||||
|
sudo cp $FREEZER_API_FILES/apache2-freezer-api.conf $freezer_api_apache_conf
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# Restore xtrace
|
# Restore xtrace
|
||||||
$XTRACE
|
$XTRACE
|
||||||
|
@@ -20,6 +20,9 @@ FREEZER_API_DIR=$DEST/freezer-api
|
|||||||
FREEZER_API_FILES=${FREEZER_API_DIR}/devstack/files
|
FREEZER_API_FILES=${FREEZER_API_DIR}/devstack/files
|
||||||
FREEZER_API_CONF_DIR=${FREEZER_API_CONF_DIR:-/etc/freezer}
|
FREEZER_API_CONF_DIR=${FREEZER_API_CONF_DIR:-/etc/freezer}
|
||||||
FREEZER_API_CONF=$FREEZER_API_CONF_DIR/freezer-api.conf
|
FREEZER_API_CONF=$FREEZER_API_CONF_DIR/freezer-api.conf
|
||||||
|
FREEZER_API_UWSGI_CONF=$FREEZER_API_CONF_DIR/uwsgi.conf
|
||||||
|
FREEZER_API_UWSGI_MASTER_PIDFILE=/tmp/uwsgifreezermasterprocess.pid
|
||||||
|
|
||||||
FREEZER_API_LOG_DIR=$DEST/logs
|
FREEZER_API_LOG_DIR=$DEST/logs
|
||||||
FREEZER_API_AUTH_CACHE_DIR=${FREEZER_API_AUTH_CACHE_DIR:-/var/cache/freezer-api}
|
FREEZER_API_AUTH_CACHE_DIR=${FREEZER_API_AUTH_CACHE_DIR:-/var/cache/freezer-api}
|
||||||
|
|
||||||
@@ -28,7 +31,7 @@ FREEZER_API_REPO=${FREEZER_API_REPO:-${GIT_BASE}/openstack/freezer-api.git}
|
|||||||
FREEZER_API_BRANCH=${FREEZER_API_BRANCH:-master}
|
FREEZER_API_BRANCH=${FREEZER_API_BRANCH:-master}
|
||||||
|
|
||||||
# supported servers: "apache2", "uwsgi"
|
# supported servers: "apache2", "uwsgi"
|
||||||
FREEZER_API_SERVER_TYPE=${FREEZER_API_SERVER_TYPE:-apache2}
|
FREEZER_API_SERVER_TYPE=${FREEZER_API_SERVER_TYPE:-uwsgi}
|
||||||
|
|
||||||
FREEZER_API_SERVICE_PROTOCOL=http
|
FREEZER_API_SERVICE_PROTOCOL=http
|
||||||
FREEZER_API_PORT=9090
|
FREEZER_API_PORT=9090
|
||||||
@@ -38,6 +41,8 @@ FREEZERCLIENT_DIR=$DEST/python-freezerclient
|
|||||||
FREEZERCLIENT_REPO=${FREEZERCLIENT_REPO:-${GIT_BASE}/openstack/python-freezerclient.git}
|
FREEZERCLIENT_REPO=${FREEZERCLIENT_REPO:-${GIT_BASE}/openstack/python-freezerclient.git}
|
||||||
FREEZERCLIENT_BRANCH=${FREEZERCLIENT_BRANCH:-master}
|
FREEZERCLIENT_BRANCH=${FREEZERCLIENT_BRANCH:-master}
|
||||||
|
|
||||||
|
FREEZER_API_BIN_DIR=$(get_python_exec_prefix)
|
||||||
|
|
||||||
enable_service freezer-api
|
enable_service freezer-api
|
||||||
|
|
||||||
# Tell Tempest this project is present
|
# Tell Tempest this project is present
|
||||||
|
1
etc/freezer/apache2-freezer-api.conf
Normal file
1
etc/freezer/apache2-freezer-api.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ProxyPass "/backup" "unix:/var/run/uwsgi/freezer-api-wsgi.socket|uwsgi://uwsgi-uds-freezer-api-wsgi/" retry=0
|
17
etc/freezer/uwsgi.conf
Normal file
17
etc/freezer/uwsgi.conf
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[uwsgi]
|
||||||
|
chmod-socket = 666
|
||||||
|
lazy-apps = true
|
||||||
|
strict = true
|
||||||
|
http = :9090
|
||||||
|
processes = 2
|
||||||
|
threads = 2
|
||||||
|
wsgi-file = /opt/stack/freezer-api/freezer_api/cmd/wsgi.py
|
||||||
|
callable = app
|
||||||
|
master = true
|
||||||
|
add-header = Connection: close
|
||||||
|
plugins = python
|
||||||
|
enable-threads = true
|
||||||
|
exit-on-reload = true
|
||||||
|
die-on-term = true
|
||||||
|
socket = /var/run/uwsgi/freezer-api-wsgi.socket
|
||||||
|
thunder-lock = true
|
Reference in New Issue
Block a user