devstack: Remove mod_wsgi support

The same is being removed from devstack (for example:
https://review.opendev.org/c/openstack/devstack/+/932195 ) in favor of
the global usage of uwsgi.

Change-Id: I0a496c09b4fa7b40b070f6c36dc4e80e994c10a0
This commit is contained in:
Takashi Kajinami 2024-11-23 04:38:51 +09:00
parent 1d04accdbb
commit 6a0150df63

View File

@ -35,9 +35,6 @@ GITDIR["python-heatclient"]=$DEST/python-heatclient
GITREPO["python-heatclient"]=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git} GITREPO["python-heatclient"]=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
GITBRANCH["python-heatclient"]=${HEATCLIENT_BRANCH:-master} GITBRANCH["python-heatclient"]=${HEATCLIENT_BRANCH:-master}
# Use HEAT_USE_MOD_WSGI for backward compatibility
HEAT_USE_APACHE=${HEAT_USE_APACHE:-${HEAT_USE_MOD_WSGI:-True}}
HEAT_DIR=$DEST/heat HEAT_DIR=$DEST/heat
HEAT_HTTPD_VHOST_FILES_DIR=$HEAT_DIR/etc/heat/httpd HEAT_HTTPD_VHOST_FILES_DIR=$HEAT_DIR/etc/heat/httpd
@ -49,6 +46,8 @@ HEAT_ENV_DIR=$HEAT_CONF_DIR/environment.d
HEAT_TEMPLATES_DIR=$HEAT_CONF_DIR/templates HEAT_TEMPLATES_DIR=$HEAT_CONF_DIR/templates
HEAT_API_HOST=${HEAT_API_HOST:-$SERVICE_HOST} HEAT_API_HOST=${HEAT_API_HOST:-$SERVICE_HOST}
HEAT_API_PORT=${HEAT_API_PORT:-8004} HEAT_API_PORT=${HEAT_API_PORT:-8004}
HEAT_API_CFN_HOST=${HEAT_API_CFN_HOST:-$SERVICE_HOST}
HEAT_API_CFN_PORT=${HEAT_API_CFN_PORT:-8000}
HEAT_SERVICE_USER=${HEAT_SERVICE_USER:-heat} HEAT_SERVICE_USER=${HEAT_SERVICE_USER:-heat}
HEAT_TRUSTEE_USER=${HEAT_TRUSTEE_USER:-$HEAT_SERVICE_USER} HEAT_TRUSTEE_USER=${HEAT_TRUSTEE_USER:-$HEAT_SERVICE_USER}
HEAT_TRUSTEE_PASSWORD=${HEAT_TRUSTEE_PASSWORD:-$SERVICE_PASSWORD} HEAT_TRUSTEE_PASSWORD=${HEAT_TRUSTEE_PASSWORD:-$SERVICE_PASSWORD}
@ -99,9 +98,8 @@ function is_heat_enabled {
# cleanup_heat() - Remove residual data files, anything left over from previous # cleanup_heat() - Remove residual data files, anything left over from previous
# runs that a clean run would need to clean up # runs that a clean run would need to clean up
function cleanup_heat { function cleanup_heat {
if [[ "$HEAT_USE_APACHE" == "True" ]]; then remove_uwsgi_config "$HEAT_API_UWSGI_CONF" "$HEAT_API_UWSGI"
_cleanup_heat_apache_wsgi remove_uwsgi_config "$HEAT_CFN_API_UWSGI_CONF" "$HEAT_CFN_API_UWSGI"
fi
sudo rm -rf $HEAT_ENV_DIR sudo rm -rf $HEAT_ENV_DIR
sudo rm -rf $HEAT_TEMPLATES_DIR sudo rm -rf $HEAT_TEMPLATES_DIR
sudo rm -rf $HEAT_CONF_DIR sudo rm -rf $HEAT_CONF_DIR
@ -114,23 +112,14 @@ function configure_heat {
# remove old config files # remove old config files
rm -f $HEAT_CONF_DIR/heat-*.conf rm -f $HEAT_CONF_DIR/heat-*.conf
HEAT_API_CFN_HOST=${HEAT_API_CFN_HOST:-$SERVICE_HOST}
HEAT_API_CFN_PORT=${HEAT_API_CFN_PORT:-8000}
HEAT_ENGINE_HOST=${HEAT_ENGINE_HOST:-$SERVICE_HOST}
HEAT_ENGINE_PORT=${HEAT_ENGINE_PORT:-8001}
HEAT_API_PASTE_FILE=$HEAT_CONF_DIR/api-paste.ini HEAT_API_PASTE_FILE=$HEAT_CONF_DIR/api-paste.ini
cp $HEAT_DIR/etc/heat/api-paste.ini $HEAT_API_PASTE_FILE cp $HEAT_DIR/etc/heat/api-paste.ini $HEAT_API_PASTE_FILE
# common options # common options
iniset_rpc_backend heat $HEAT_CONF iniset_rpc_backend heat $HEAT_CONF
if [[ "$HEAT_USE_APACHE" == "True" && "$WSGI_MODE" == "uwsgi" ]]; then
iniset $HEAT_CONF DEFAULT heat_metadata_server_url http://$HEAT_API_CFN_HOST/heat-api-cfn iniset $HEAT_CONF DEFAULT heat_metadata_server_url http://$HEAT_API_CFN_HOST/heat-api-cfn
iniset $HEAT_CONF DEFAULT heat_waitcondition_server_url http://$HEAT_API_CFN_HOST/heat-api-cfn/v1/waitcondition iniset $HEAT_CONF DEFAULT heat_waitcondition_server_url http://$HEAT_API_CFN_HOST/heat-api-cfn/v1/waitcondition
else
iniset $HEAT_CONF DEFAULT heat_metadata_server_url http://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT
iniset $HEAT_CONF DEFAULT heat_waitcondition_server_url http://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1/waitcondition
fi
iniset $HEAT_CONF database connection `database_connection_url heat` iniset $HEAT_CONF database connection `database_connection_url heat`
# we are using a hardcoded auth_encryption_key as it has to be the same for # we are using a hardcoded auth_encryption_key as it has to be the same for
@ -145,30 +134,19 @@ function configure_heat {
# reduce Heat engine workers # reduce Heat engine workers
iniset $HEAT_CONF DEFAULT num_engine_workers "$HEAT_ENGINE_WORKERS" iniset $HEAT_CONF DEFAULT num_engine_workers "$HEAT_ENGINE_WORKERS"
local no_format="False"
if [[ "$HEAT_USE_APACHE" == "True" && "$WSGI_MODE" != "uwsgi" ]]; then
no_format="True"
fi
# Format logging # Format logging
setup_logging $HEAT_CONF $no_format setup_logging $HEAT_CONF
if [[ ! -z "$HEAT_DEFERRED_AUTH" ]]; then if [[ ! -z "$HEAT_DEFERRED_AUTH" ]]; then
iniset $HEAT_CONF DEFAULT deferred_auth_method $HEAT_DEFERRED_AUTH iniset $HEAT_CONF DEFAULT deferred_auth_method $HEAT_DEFERRED_AUTH
fi fi
if [[ "$HEAT_USE_APACHE" == "True" ]]; then
if [[ $WSGI_MODE == "uwsgi" ]]; then
write_uwsgi_config "$HEAT_API_UWSGI_CONF" "$HEAT_API_UWSGI" "/heat-api" "" "heat-api" write_uwsgi_config "$HEAT_API_UWSGI_CONF" "$HEAT_API_UWSGI" "/heat-api" "" "heat-api"
# configure threads for h-api to avoid IO wait and messaging timeout. We use # configure threads for h-api to avoid IO wait and messaging timeout. We use
# 'nproc/4' to calculate API workers, hence, 4 would be probably correct # 'nproc/4' to calculate API workers, hence, 4 would be probably correct
# approximation. # approximation.
iniset "$HEAT_API_UWSGI_CONF" uwsgi threads 4 iniset "$HEAT_API_UWSGI_CONF" uwsgi threads 4
write_uwsgi_config "$HEAT_CFN_API_UWSGI_CONF" "$HEAT_CFN_API_UWSGI" "/heat-api-cfn" "" "heat-api-cfn" write_uwsgi_config "$HEAT_CFN_API_UWSGI_CONF" "$HEAT_CFN_API_UWSGI" "/heat-api-cfn" "" "heat-api-cfn"
else
_config_heat_apache_wsgi
fi
fi
if [[ "$HEAT_STANDALONE" = "True" ]]; then if [[ "$HEAT_STANDALONE" = "True" ]]; then
iniset $HEAT_CONF paste_deploy flavor standalone iniset $HEAT_CONF paste_deploy flavor standalone
@ -193,7 +171,6 @@ function configure_heat {
# OpenStack API # OpenStack API
iniset $HEAT_CONF heat_api bind_port $HEAT_API_PORT iniset $HEAT_CONF heat_api bind_port $HEAT_API_PORT
iniset $HEAT_CONF heat_api workers "$API_WORKERS" iniset $HEAT_CONF heat_api workers "$API_WORKERS"
# Cloudformation API # Cloudformation API
iniset $HEAT_CONF heat_api_cfn bind_port $HEAT_API_CFN_PORT iniset $HEAT_CONF heat_api_cfn bind_port $HEAT_API_CFN_PORT
@ -288,13 +265,7 @@ function install_heatclient {
# install_heat() - Collect source and prepare # install_heat() - Collect source and prepare
function install_heat { function install_heat {
setup_develop $HEAT_DIR setup_develop $HEAT_DIR
if [[ "$HEAT_USE_APACHE" == "True" ]]; then
if [ "$WSGI_MODE" == "uwsgi" ]; then
pip_install uwsgi pip_install uwsgi
else
install_apache_wsgi
fi
fi
if [[ "$GLOBAL_VENV" == "True" ]] ; then if [[ "$GLOBAL_VENV" == "True" ]] ; then
# TODO(tkajinam): find a better solution for this # TODO(tkajinam): find a better solution for this
sudo ln -sf $HEAT_BIN_DIR/heat-manage /usr/local/bin sudo ln -sf $HEAT_BIN_DIR/heat-manage /usr/local/bin
@ -306,128 +277,33 @@ function start_heat {
run_process h-eng "$HEAT_BIN_DIR/heat-engine --config-file=$HEAT_CONF" run_process h-eng "$HEAT_BIN_DIR/heat-engine --config-file=$HEAT_CONF"
# If the site is not enabled then we are in a grenade scenario # If the site is not enabled then we are in a grenade scenario
local enabled_site_file
enabled_site_file=$(apache_site_config_for heat-api)
if [[ "$HEAT_USE_APACHE" == "True" ]]; then
if [[ -f ${enabled_site_file} && "$WSGI_MODE" != "uwsgi" ]]; then
enable_apache_site heat-api
enable_apache_site heat-api-cfn
restart_apache_server
else
run_process h-api "$HEAT_BIN_DIR/uwsgi --ini $HEAT_API_UWSGI_CONF" "" run_process h-api "$HEAT_BIN_DIR/uwsgi --ini $HEAT_API_UWSGI_CONF" ""
run_process h-api-cfn "$HEAT_BIN_DIR/uwsgi --ini $HEAT_CFN_API_UWSGI_CONF" "" run_process h-api-cfn "$HEAT_BIN_DIR/uwsgi --ini $HEAT_CFN_API_UWSGI_CONF" ""
fi
else
run_process h-api "$HEAT_BIN_DIR/heat-api --config-file=$HEAT_CONF"
run_process h-api-cfn "$HEAT_BIN_DIR/heat-api-cfn --config-file=$HEAT_CONF"
fi
}
function _stop_processes {
local serv
for serv in h-api h-api-cfn; do
stop_process $serv
done
} }
# stop_heat() - Stop running processes # stop_heat() - Stop running processes
function stop_heat { function stop_heat {
# Kill the screen windows # Kill the screen windows
stop_process h-api
stop_process h-api-cfn
stop_process h-eng stop_process h-eng
if [[ "$HEAT_USE_APACHE" == "True" ]]; then
if [[ "$WSGI_MODE" == "uwsgi" ]]; then
_stop_processes
else
disable_apache_site heat-api
disable_apache_site heat-api-cfn
restart_apache_server
fi
else
_stop_processes
fi
} }
# _cleanup_heat_apache_wsgi() - Remove wsgi files, disable and remove apache vhost file
function _cleanup_heat_apache_wsgi {
if [[ "$WSGI_MODE" == "uwsgi" ]]; then
remove_uwsgi_config "$HEAT_API_UWSGI_CONF" "$HEAT_API_UWSGI"
remove_uwsgi_config "$HEAT_CFN_API_UWSGI_CONF" "$HEAT_CFN_API_UWSGI"
fi
sudo rm -f $(apache_site_config_for heat-api)
sudo rm -f $(apache_site_config_for heat-api-cfn)
}
# _config_heat_apache_wsgi() - Set WSGI config files of Heat
function _config_heat_apache_wsgi {
local heat_apache_conf
heat_apache_conf=$(apache_site_config_for heat-api)
local heat_cfn_apache_conf
heat_cfn_apache_conf=$(apache_site_config_for heat-api-cfn)
local heat_ssl=""
local heat_certfile=""
local heat_keyfile=""
local heat_api_port=$HEAT_API_PORT
local heat_cfn_api_port=$HEAT_API_CFN_PORT
local venv_path=""
sudo cp $HEAT_HTTPD_VHOST_FILES_DIR/heat-api.conf $heat_apache_conf
sudo sed -e "
s|%PUBLICPORT%|$heat_api_port|g;
s|%APACHE_NAME%|$APACHE_NAME|g;
s|%HEAT_DIR%|$HEAT_DIR|g;
s|%API_WORKERS%|$API_WORKERS|g;
s|%SSLENGINE%|$heat_ssl|g;
s|%SSLCERTFILE%|$heat_certfile|g;
s|%SSLKEYFILE%|$heat_keyfile|g;
s|%USER%|$STACK_USER|g;
s|%VIRTUALENV%|$venv_path|g
" -i $heat_apache_conf
sudo cp $HEAT_HTTPD_VHOST_FILES_DIR/heat-api-cfn.conf $heat_cfn_apache_conf
sudo sed -e "
s|%PUBLICPORT%|$heat_cfn_api_port|g;
s|%APACHE_NAME%|$APACHE_NAME|g;
s|%HEAT_DIR%|$HEAT_DIR|g;
s|%API_WORKERS%|$API_WORKERS|g;
s|%SSLENGINE%|$heat_ssl|g;
s|%SSLCERTFILE%|$heat_certfile|g;
s|%SSLKEYFILE%|$heat_keyfile|g;
s|%USER%|$STACK_USER|g;
s|%VIRTUALENV%|$venv_path|g
" -i $heat_cfn_apache_conf
}
# create_heat_accounts() - Set up common required heat accounts # create_heat_accounts() - Set up common required heat accounts
function create_heat_accounts { function create_heat_accounts {
if [[ "$HEAT_STANDALONE" != "True" ]]; then if [[ "$HEAT_STANDALONE" != "True" ]]; then
local heat_api_service_url
local heat_cfn_api_service_url
if [[ "$HEAT_USE_APACHE" == "True" && "$WSGI_MODE" == "uwsgi" ]]; then
heat_api_service_url="$SERVICE_PROTOCOL://$HEAT_API_HOST/heat-api/v1/\$(project_id)s"
heat_cfn_api_service_url="$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST/heat-api-cfn/v1"
else
heat_api_service_url="$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(project_id)s"
heat_cfn_api_service_url="$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1"
fi
create_service_user "heat" "admin" create_service_user "heat" "admin"
get_or_create_service "heat" "orchestration" "Heat Orchestration Service" get_or_create_service "heat" "orchestration" "Heat Orchestration Service"
get_or_create_endpoint \ get_or_create_endpoint \
"orchestration" \ "orchestration" \
"$REGION_NAME" \ "$REGION_NAME" \
"$heat_api_service_url" "$SERVICE_PROTOCOL://$HEAT_API_HOST/heat-api/v1/\$(project_id)s"
get_or_create_service "heat-cfn" "cloudformation" "Heat CloudFormation Service" get_or_create_service "heat-cfn" "cloudformation" "Heat CloudFormation Service"
get_or_create_endpoint \ get_or_create_endpoint \
"cloudformation" \ "cloudformation" \
"$REGION_NAME" \ "$REGION_NAME" \
"$heat_cfn_api_service_url" "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST/heat-api-cfn/v1"
# heat_stack_user role is for users created by Heat # heat_stack_user role is for users created by Heat
get_or_create_role "heat_stack_user" get_or_create_role "heat_stack_user"