| ... | ... |
@@ -250,7 +250,6 @@ function write_uwsgi_config {
|
| 250 | 250 |
# always cleanup given that we are using iniset here |
| 251 | 251 |
rm -rf $file |
| 252 | 252 |
iniset "$file" uwsgi wsgi-file "$wsgi" |
| 253 |
- iniset "$file" uwsgi socket "$socket" |
|
| 254 | 253 |
iniset "$file" uwsgi processes $API_WORKERS |
| 255 | 254 |
# This is running standalone |
| 256 | 255 |
iniset "$file" uwsgi master true |
| ... | ... |
@@ -267,7 +266,6 @@ function write_uwsgi_config {
|
| 267 | 267 |
iniset "$file" uwsgi add-header "Connection: close" |
| 268 | 268 |
# This ensures that file descriptors aren't shared between processes. |
| 269 | 269 |
iniset "$file" uwsgi lazy-apps true |
| 270 |
- iniset "$file" uwsgi chmod-socket 666 |
|
| 271 | 270 |
|
| 272 | 271 |
# If we said bind directly to http, then do that and don't start the apache proxy |
| 273 | 272 |
if [[ -n "$http" ]]; then |
| ... | ... |
@@ -276,6 +274,8 @@ function write_uwsgi_config {
|
| 276 | 276 |
local apache_conf="" |
| 277 | 277 |
apache_conf=$(apache_site_config_for $name) |
| 278 | 278 |
echo "SetEnv proxy-sendcl 1" | sudo tee $apache_conf |
| 279 |
+ iniset "$file" uwsgi socket "$socket" |
|
| 280 |
+ iniset "$file" uwsgi chmod-socket 666 |
|
| 279 | 281 |
echo "ProxyPass \"${url}\" \"unix:${socket}|uwsgi://uwsgi-uds-${name}/\" retry=0 " | sudo tee -a $apache_conf
|
| 280 | 282 |
enable_apache_site $name |
| 281 | 283 |
restart_apache_server |
| ... | ... |
@@ -17,7 +17,6 @@ |
| 17 | 17 |
# |
| 18 | 18 |
# - install_nova |
| 19 | 19 |
# - configure_nova |
| 20 |
-# - _config_nova_apache_wsgi |
|
| 21 | 20 |
# - create_nova_conf |
| 22 | 21 |
# - init_nova |
| 23 | 22 |
# - start_nova |
| ... | ... |
@@ -28,7 +27,6 @@ |
| 28 | 28 |
_XTRACE_LIB_NOVA=$(set +o | grep xtrace) |
| 29 | 29 |
set +o xtrace |
| 30 | 30 |
|
| 31 |
- |
|
| 32 | 31 |
# Defaults |
| 33 | 32 |
# -------- |
| 34 | 33 |
|
| ... | ... |
@@ -56,17 +54,20 @@ NOVA_CELLS_CONF=$NOVA_CONF_DIR/nova-cells.conf |
| 56 | 56 |
NOVA_FAKE_CONF=$NOVA_CONF_DIR/nova-fake.conf |
| 57 | 57 |
NOVA_CELLS_DB=${NOVA_CELLS_DB:-nova_cell}
|
| 58 | 58 |
NOVA_API_DB=${NOVA_API_DB:-nova_api}
|
| 59 |
+NOVA_UWSGI=$NOVA_BIN_DIR/nova-api-wsgi |
|
| 60 |
+NOVA_METADATA_UWSGI=$NOVA_BIN_DIR/nova-metadata-wsgi |
|
| 61 |
+NOVA_UWSGI_CONF=$NOVA_CONF_DIR/nova-api-uwsgi.ini |
|
| 62 |
+NOVA_METADATA_UWSGI_CONF=$NOVA_CONF_DIR/nova-metadata-uwsgi.ini |
|
| 59 | 63 |
|
| 60 | 64 |
NOVA_API_PASTE_INI=${NOVA_API_PASTE_INI:-$NOVA_CONF_DIR/api-paste.ini}
|
| 61 | 65 |
|
| 62 |
-if is_suse; then |
|
| 63 |
- NOVA_WSGI_DIR=${NOVA_WSGI_DIR:-/srv/www/htdocs/nova}
|
|
| 64 |
-else |
|
| 65 |
- NOVA_WSGI_DIR=${NOVA_WSGI_DIR:-/var/www/nova}
|
|
| 66 |
-fi |
|
| 67 |
- |
|
| 68 |
-# Toggle for deploying Nova-API under HTTPD + mod_wsgi |
|
| 69 |
-NOVA_USE_MOD_WSGI=${NOVA_USE_MOD_WSGI:-False}
|
|
| 66 |
+# Toggle for deploying Nova-API under a wsgi server. We default to |
|
| 67 |
+# true to use UWSGI, but allow False so that fall back to the |
|
| 68 |
+# eventlet server can happen for grenade runs. |
|
| 69 |
+# NOTE(cdent): We can adjust to remove the eventlet-base api service |
|
| 70 |
+# after pike, at which time we can stop using NOVA_USE_MOD_WSGI to |
|
| 71 |
+# mean "use uwsgi" because we'll be always using uwsgi. |
|
| 72 |
+NOVA_USE_MOD_WSGI=${NOVA_USE_MOD_WSGI:-True}
|
|
| 70 | 73 |
|
| 71 | 74 |
if is_service_enabled tls-proxy; then |
| 72 | 75 |
NOVA_SERVICE_PROTOCOL="https" |
| ... | ... |
@@ -236,66 +237,10 @@ function cleanup_nova {
|
| 236 | 236 |
# cleanup_nova_hypervisor |
| 237 | 237 |
#fi |
| 238 | 238 |
|
| 239 |
- if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
|
| 240 |
- _cleanup_nova_apache_wsgi |
|
| 241 |
- fi |
|
| 242 |
-} |
|
| 243 |
- |
|
| 244 |
-# _cleanup_nova_apache_wsgi() - Remove wsgi files, disable and remove apache vhost file |
|
| 245 |
-function _cleanup_nova_apache_wsgi {
|
|
| 246 |
- sudo rm -f $NOVA_WSGI_DIR/* |
|
| 247 |
- sudo rm -f $(apache_site_config_for nova-api) |
|
| 248 |
- sudo rm -f $(apache_site_config_for nova-metadata) |
|
| 249 |
-} |
|
| 250 |
- |
|
| 251 |
-# _config_nova_apache_wsgi() - Set WSGI config files of Nova API |
|
| 252 |
-function _config_nova_apache_wsgi {
|
|
| 253 |
- sudo mkdir -p $NOVA_WSGI_DIR |
|
| 254 |
- |
|
| 255 |
- local nova_apache_conf |
|
| 256 |
- nova_apache_conf=$(apache_site_config_for nova-api) |
|
| 257 |
- local nova_metadata_apache_conf |
|
| 258 |
- nova_metadata_apache_conf=$(apache_site_config_for nova-metadata) |
|
| 259 |
- local nova_ssl="" |
|
| 260 |
- local nova_certfile="" |
|
| 261 |
- local nova_keyfile="" |
|
| 262 |
- local nova_api_port=$NOVA_SERVICE_PORT |
|
| 263 |
- local nova_metadata_port=$METADATA_SERVICE_PORT |
|
| 264 |
- local venv_path="" |
|
| 265 |
- |
|
| 266 |
- if [[ ${USE_VENV} = True ]]; then
|
|
| 267 |
- venv_path="python-path=${PROJECT_VENV["nova"]}/lib/$(python_version)/site-packages"
|
|
| 268 |
- fi |
|
| 269 |
- |
|
| 270 |
- # copy proxy vhost and wsgi helper files |
|
| 271 |
- sudo cp $NOVA_DIR/nova/wsgi/nova-api.py $NOVA_WSGI_DIR/nova-api |
|
| 272 |
- sudo cp $NOVA_DIR/nova/wsgi/nova-metadata.py $NOVA_WSGI_DIR/nova-metadata |
|
| 273 |
- |
|
| 274 |
- sudo cp $FILES/apache-nova-api.template $nova_apache_conf |
|
| 275 |
- sudo sed -e " |
|
| 276 |
- s|%PUBLICPORT%|$nova_api_port|g; |
|
| 277 |
- s|%APACHE_NAME%|$APACHE_NAME|g; |
|
| 278 |
- s|%PUBLICWSGI%|$NOVA_WSGI_DIR/nova-api|g; |
|
| 279 |
- s|%SSLENGINE%|$nova_ssl|g; |
|
| 280 |
- s|%SSLCERTFILE%|$nova_certfile|g; |
|
| 281 |
- s|%SSLKEYFILE%|$nova_keyfile|g; |
|
| 282 |
- s|%USER%|$STACK_USER|g; |
|
| 283 |
- s|%VIRTUALENV%|$venv_path|g |
|
| 284 |
- s|%APIWORKERS%|$API_WORKERS|g |
|
| 285 |
- " -i $nova_apache_conf |
|
| 286 |
- |
|
| 287 |
- sudo cp $FILES/apache-nova-metadata.template $nova_metadata_apache_conf |
|
| 288 |
- sudo sed -e " |
|
| 289 |
- s|%PUBLICPORT%|$nova_metadata_port|g; |
|
| 290 |
- s|%APACHE_NAME%|$APACHE_NAME|g; |
|
| 291 |
- s|%PUBLICWSGI%|$NOVA_WSGI_DIR/nova-metadata|g; |
|
| 292 |
- s|%SSLENGINE%|$nova_ssl|g; |
|
| 293 |
- s|%SSLCERTFILE%|$nova_certfile|g; |
|
| 294 |
- s|%SSLKEYFILE%|$nova_keyfile|g; |
|
| 295 |
- s|%USER%|$STACK_USER|g; |
|
| 296 |
- s|%VIRTUALENV%|$venv_path|g |
|
| 297 |
- s|%APIWORKERS%|$API_WORKERS|g |
|
| 298 |
- " -i $nova_metadata_apache_conf |
|
| 239 |
+ stop_process "n-api" |
|
| 240 |
+ stop_process "n-api-meta" |
|
| 241 |
+ remove_uwsgi_config "$NOVA_UWSGI_CONF" "$NOVA_UWSGI" |
|
| 242 |
+ remove_uwsgi_config "$NOVA_METADATA_UWSGI_CONF" "$NOVA_METADATA_UWSGI" |
|
| 299 | 243 |
} |
| 300 | 244 |
|
| 301 | 245 |
# configure_nova() - Set config files, create data dirs, etc |
| ... | ... |
@@ -489,7 +434,7 @@ function create_nova_conf {
|
| 489 | 489 |
NOVA_ENABLED_APIS=$(echo $NOVA_ENABLED_APIS | sed "s/,metadata//") |
| 490 | 490 |
fi |
| 491 | 491 |
iniset $NOVA_CONF DEFAULT enabled_apis "$NOVA_ENABLED_APIS" |
| 492 |
- if is_service_enabled tls-proxy; then |
|
| 492 |
+ if is_service_enabled tls-proxy && [ "$NOVA_USE_MOD_WSGI" == "False" ]; then |
|
| 493 | 493 |
# Set the service port for a proxy to take the original |
| 494 | 494 |
iniset $NOVA_CONF DEFAULT osapi_compute_listen_port "$NOVA_SERVICE_PORT_INT" |
| 495 | 495 |
iniset $NOVA_CONF DEFAULT osapi_compute_link_prefix $NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT |
| ... | ... |
@@ -524,11 +469,10 @@ function create_nova_conf {
|
| 524 | 524 |
iniset $NOVA_CONF DEFAULT force_config_drive "$FORCE_CONFIG_DRIVE" |
| 525 | 525 |
fi |
| 526 | 526 |
# Format logging |
| 527 |
- setup_logging $NOVA_CONF $NOVA_USE_MOD_WSGI |
|
| 527 |
+ setup_logging $NOVA_CONF |
|
| 528 | 528 |
|
| 529 |
- if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
|
| 530 |
- _config_nova_apache_wsgi |
|
| 531 |
- fi |
|
| 529 |
+ write_uwsgi_config "$NOVA_UWSGI_CONF" "$NOVA_UWSGI" "/compute" |
|
| 530 |
+ write_uwsgi_config "$NOVA_METADATA_UWSGI_CONF" "$NOVA_METADATA_UWSGI" "" ":${METADATA_SERVICE_PORT}"
|
|
| 532 | 531 |
|
| 533 | 532 |
if is_service_enabled ceilometer; then |
| 534 | 533 |
iniset $NOVA_CONF DEFAULT instance_usage_audit "True" |
| ... | ... |
@@ -777,10 +721,6 @@ function install_nova {
|
| 777 | 777 |
git_clone $NOVA_REPO $NOVA_DIR $NOVA_BRANCH |
| 778 | 778 |
setup_develop $NOVA_DIR |
| 779 | 779 |
sudo install -D -m 0644 -o $STACK_USER {$NOVA_DIR/tools/,/etc/bash_completion.d/}nova-manage.bash_completion
|
| 780 |
- |
|
| 781 |
- if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
|
| 782 |
- install_apache_wsgi |
|
| 783 |
- fi |
|
| 784 | 780 |
} |
| 785 | 781 |
|
| 786 | 782 |
# start_nova_api() - Start the API process ahead of other things |
| ... | ... |
@@ -788,6 +728,7 @@ function start_nova_api {
|
| 788 | 788 |
# Get right service port for testing |
| 789 | 789 |
local service_port=$NOVA_SERVICE_PORT |
| 790 | 790 |
local service_protocol=$NOVA_SERVICE_PROTOCOL |
| 791 |
+ local nova_url |
|
| 791 | 792 |
if is_service_enabled tls-proxy; then |
| 792 | 793 |
service_port=$NOVA_SERVICE_PORT_INT |
| 793 | 794 |
service_protocol="http" |
| ... | ... |
@@ -797,29 +738,23 @@ function start_nova_api {
|
| 797 | 797 |
local old_path=$PATH |
| 798 | 798 |
export PATH=$NOVA_BIN_DIR:$PATH |
| 799 | 799 |
|
| 800 |
- # If the site is not enabled then we are in a grenade scenario |
|
| 801 |
- local enabled_site_file |
|
| 802 |
- enabled_site_file=$(apache_site_config_for nova-api) |
|
| 803 |
- if [ -f ${enabled_site_file} ] && [ "$NOVA_USE_MOD_WSGI" == "True" ]; then
|
|
| 804 |
- enable_apache_site nova-api |
|
| 805 |
- enable_apache_site nova-metadata |
|
| 806 |
- restart_apache_server |
|
| 807 |
- tail_log nova-api /var/log/$APACHE_NAME/nova-api.log |
|
| 808 |
- tail_log nova-metadata /var/log/$APACHE_NAME/nova-metadata.log |
|
| 809 |
- else |
|
| 800 |
+ if [ "$NOVA_USE_MOD_WSGI" == "False" ]; then |
|
| 810 | 801 |
run_process n-api "$NOVA_BIN_DIR/nova-api" |
| 802 |
+ nova_url=$service_protocol://$SERVICE_HOST:$service_port |
|
| 803 |
+ # Start proxy if tsl enabled |
|
| 804 |
+ if is_service_enabled tls-proxy; then |
|
| 805 |
+ start_tls_proxy nova '*' $NOVA_SERVICE_PORT $NOVA_SERVICE_HOST $NOVA_SERVICE_PORT_INT |
|
| 806 |
+ fi |
|
| 807 |
+ else |
|
| 808 |
+ run_process "n-api" "$NOVA_BIN_DIR/uwsgi --ini $NOVA_UWSGI_CONF" |
|
| 809 |
+ nova_url=$service_protocol://$SERVICE_HOST/compute/v2.1/ |
|
| 811 | 810 |
fi |
| 812 | 811 |
|
| 813 | 812 |
echo "Waiting for nova-api to start..." |
| 814 |
- if ! wait_for_service $SERVICE_TIMEOUT $service_protocol://$SERVICE_HOST:$service_port; then |
|
| 813 |
+ if ! wait_for_service $SERVICE_TIMEOUT $nova_url; then |
|
| 815 | 814 |
die $LINENO "nova-api did not start" |
| 816 | 815 |
fi |
| 817 | 816 |
|
| 818 |
- # Start proxies if enabled |
|
| 819 |
- if is_service_enabled tls-proxy; then |
|
| 820 |
- start_tls_proxy nova '*' $NOVA_SERVICE_PORT $NOVA_SERVICE_HOST $NOVA_SERVICE_PORT_INT |
|
| 821 |
- fi |
|
| 822 |
- |
|
| 823 | 817 |
export PATH=$old_path |
| 824 | 818 |
} |
| 825 | 819 |
|
| ... | ... |
@@ -890,7 +825,11 @@ function start_nova_rest {
|
| 890 | 890 |
run_process n-net "$NOVA_BIN_DIR/nova-network --config-file $compute_cell_conf" |
| 891 | 891 |
|
| 892 | 892 |
run_process n-sch "$NOVA_BIN_DIR/nova-scheduler --config-file $compute_cell_conf" |
| 893 |
- run_process n-api-meta "$NOVA_BIN_DIR/nova-api-metadata --config-file $compute_cell_conf" |
|
| 893 |
+ if [ "$NOVA_USE_MOD_WSGI" == "False" ]; then |
|
| 894 |
+ run_process n-api-meta "$NOVA_BIN_DIR/nova-api-metadata --config-file $compute_cell_conf" |
|
| 895 |
+ else |
|
| 896 |
+ run_process n-api-meta "$NOVA_BIN_DIR/uwsgi --ini $NOVA_METADATA_UWSGI_CONF" |
|
| 897 |
+ fi |
|
| 894 | 898 |
|
| 895 | 899 |
run_process n-novnc "$NOVA_BIN_DIR/nova-novncproxy --config-file $api_cell_conf --web $NOVNC_WEB_DIR" |
| 896 | 900 |
run_process n-xvnc "$NOVA_BIN_DIR/nova-xvpvncproxy --config-file $api_cell_conf" |
| ... | ... |
@@ -921,17 +860,8 @@ function stop_nova_compute {
|
| 921 | 921 |
} |
| 922 | 922 |
|
| 923 | 923 |
function stop_nova_rest {
|
| 924 |
- if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
|
| 925 |
- disable_apache_site nova-api |
|
| 926 |
- disable_apache_site nova-metadata |
|
| 927 |
- restart_apache_server |
|
| 928 |
- else |
|
| 929 |
- stop_process n-api |
|
| 930 |
- fi |
|
| 931 |
- # Kill the nova screen windows |
|
| 932 |
- # Some services are listed here twice since more than one instance |
|
| 933 |
- # of a service may be running in certain configs. |
|
| 934 |
- for serv in n-api n-net n-sch n-novnc n-xvnc n-cauth n-spice n-cond n-cell n-cell n-api-meta n-sproxy; do |
|
| 924 |
+ # Kill the non-compute nova processes |
|
| 925 |
+ for serv in n-api n-api-meta n-net n-sch n-novnc n-xvnc n-cauth n-spice n-cond n-cell n-cell n-sproxy; do |
|
| 935 | 926 |
stop_process $serv |
| 936 | 927 |
done |
| 937 | 928 |
} |
| ... | ... |
@@ -53,7 +53,7 @@ if ! isset ENABLED_SERVICES ; then |
| 53 | 53 |
# Keystone - nothing works without keystone |
| 54 | 54 |
ENABLED_SERVICES=key |
| 55 | 55 |
# Nova - services to support libvirt based openstack clouds |
| 56 |
- ENABLED_SERVICES+=,n-api,n-cpu,n-cond,n-sch,n-novnc,n-cauth |
|
| 56 |
+ ENABLED_SERVICES+=,n-api,n-cpu,n-cond,n-sch,n-novnc,n-cauth,n-api-meta |
|
| 57 | 57 |
# Placement service needed for Nova |
| 58 | 58 |
ENABLED_SERVICES+=,placement-api,placement-client |
| 59 | 59 |
# Glance services needed for Nova |