| 155 | 159 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,16 @@ |
| 0 |
+Listen %PUBLICPORT% |
|
| 1 |
+ |
|
| 2 |
+<VirtualHost *:%PUBLICPORT%> |
|
| 3 |
+ WSGIDaemonProcess nova-api processes=5 threads=1 user=%USER% display-name=%{GROUP} %VIRTUALENV%
|
|
| 4 |
+ WSGIProcessGroup nova-api |
|
| 5 |
+ WSGIScriptAlias / %PUBLICWSGI% |
|
| 6 |
+ WSGIApplicationGroup %{GLOBAL}
|
|
| 7 |
+ WSGIPassAuthorization On |
|
| 8 |
+ <IfVersion >= 2.4> |
|
| 9 |
+ ErrorLogFormat "%{cu}t %M"
|
|
| 10 |
+ </IfVersion> |
|
| 11 |
+ ErrorLog /var/log/%APACHE_NAME%/nova-api.log |
|
| 12 |
+ %SSLENGINE% |
|
| 13 |
+ %SSLCERTFILE% |
|
| 14 |
+ %SSLKEYFILE% |
|
| 15 |
+</VirtualHost> |
|
| 0 | 16 |
\ No newline at end of file |
| 1 | 17 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,16 @@ |
| 0 |
+Listen %PUBLICPORT% |
|
| 1 |
+ |
|
| 2 |
+<VirtualHost *:%PUBLICPORT%> |
|
| 3 |
+ WSGIDaemonProcess nova-ec2-api processes=5 threads=1 user=%USER% display-name=%{GROUP} %VIRTUALENV%
|
|
| 4 |
+ WSGIProcessGroup nova-ec2-api |
|
| 5 |
+ WSGIScriptAlias / %PUBLICWSGI% |
|
| 6 |
+ WSGIApplicationGroup %{GLOBAL}
|
|
| 7 |
+ WSGIPassAuthorization On |
|
| 8 |
+ <IfVersion >= 2.4> |
|
| 9 |
+ ErrorLogFormat "%{cu}t %M"
|
|
| 10 |
+ </IfVersion> |
|
| 11 |
+ ErrorLog /var/log/%APACHE_NAME%/nova-ec2-api.log |
|
| 12 |
+ %SSLENGINE% |
|
| 13 |
+ %SSLCERTFILE% |
|
| 14 |
+ %SSLKEYFILE% |
|
| 15 |
+</VirtualHost> |
|
| 0 | 16 |
\ No newline at end of file |
| ... | ... |
@@ -16,6 +16,7 @@ |
| 16 | 16 |
# |
| 17 | 17 |
# - install_nova |
| 18 | 18 |
# - configure_nova |
| 19 |
+# - _config_nova_apache_wsgi |
|
| 19 | 20 |
# - create_nova_conf |
| 20 | 21 |
# - init_nova |
| 21 | 22 |
# - start_nova |
| ... | ... |
@@ -62,6 +63,15 @@ NOVA_API_PASTE_INI=${NOVA_API_PASTE_INI:-$NOVA_CONF_DIR/api-paste.ini}
|
| 62 | 62 |
# Expect to remove in L or M. |
| 63 | 63 |
NOVA_API_VERSION=${NOVA_API_VERSION-default}
|
| 64 | 64 |
|
| 65 |
+if is_suse; then |
|
| 66 |
+ NOVA_WSGI_DIR=${NOVA_WSGI_DIR:-/srv/www/htdocs/nova}
|
|
| 67 |
+else |
|
| 68 |
+ NOVA_WSGI_DIR=${NOVA_WSGI_DIR:-/var/www/nova}
|
|
| 69 |
+fi |
|
| 70 |
+ |
|
| 71 |
+# Toggle for deploying Nova-API under HTTPD + mod_wsgi |
|
| 72 |
+NOVA_USE_MOD_WSGI=${NOVA_USE_MOD_WSGI:-False}
|
|
| 73 |
+ |
|
| 65 | 74 |
if is_ssl_enabled_service "nova" || is_service_enabled tls-proxy; then |
| 66 | 75 |
NOVA_SERVICE_PROTOCOL="https" |
| 67 | 76 |
EC2_SERVICE_PROTOCOL="https" |
| ... | ... |
@@ -223,6 +233,64 @@ function cleanup_nova {
|
| 223 | 223 |
#fi |
| 224 | 224 |
} |
| 225 | 225 |
|
| 226 |
+# _cleanup_nova_apache_wsgi() - Remove wsgi files, disable and remove apache vhost file |
|
| 227 |
+function _cleanup_nova_apache_wsgi {
|
|
| 228 |
+ sudo rm -f $NOVA_WSGI_DIR/* |
|
| 229 |
+ sudo rm -f $(apache_site_config_for nova-api) |
|
| 230 |
+ sudo rm -f $(apache_site_config_for nova-ec2-api) |
|
| 231 |
+} |
|
| 232 |
+ |
|
| 233 |
+# _config_nova_apache_wsgi() - Set WSGI config files of Keystone |
|
| 234 |
+function _config_nova_apache_wsgi {
|
|
| 235 |
+ sudo mkdir -p $NOVA_WSGI_DIR |
|
| 236 |
+ |
|
| 237 |
+ local nova_apache_conf=$(apache_site_config_for nova-api) |
|
| 238 |
+ local nova_ec2_apache_conf=$(apache_site_config_for nova-ec2-api) |
|
| 239 |
+ local nova_ssl="" |
|
| 240 |
+ local nova_certfile="" |
|
| 241 |
+ local nova_keyfile="" |
|
| 242 |
+ local nova_api_port=$NOVA_SERVICE_PORT |
|
| 243 |
+ local nova_ec2_api_port=$EC2_SERVICE_PORT |
|
| 244 |
+ local venv_path="" |
|
| 245 |
+ |
|
| 246 |
+ if is_ssl_enabled_service nova-api; then |
|
| 247 |
+ nova_ssl="SSLEngine On" |
|
| 248 |
+ nova_certfile="SSLCertificateFile $NOVA_SSL_CERT" |
|
| 249 |
+ nova_keyfile="SSLCertificateKeyFile $NOVA_SSL_KEY" |
|
| 250 |
+ fi |
|
| 251 |
+ if [[ ${USE_VENV} = True ]]; then
|
|
| 252 |
+ venv_path="python-path=${PROJECT_VENV["nova"]}/lib/python2.7/site-packages"
|
|
| 253 |
+ fi |
|
| 254 |
+ |
|
| 255 |
+ # copy proxy vhost and wsgi helper files |
|
| 256 |
+ sudo cp $NOVA_DIR/nova/wsgi/nova-api.py $NOVA_WSGI_DIR/nova-api |
|
| 257 |
+ sudo cp $NOVA_DIR/nova/wsgi/nova-ec2-api.py $NOVA_WSGI_DIR/nova-ec2-api |
|
| 258 |
+ |
|
| 259 |
+ sudo cp $FILES/apache-nova-api.template $nova_apache_conf |
|
| 260 |
+ sudo sed -e " |
|
| 261 |
+ s|%PUBLICPORT%|$nova_api_port|g; |
|
| 262 |
+ s|%APACHE_NAME%|$APACHE_NAME|g; |
|
| 263 |
+ s|%PUBLICWSGI%|$NOVA_WSGI_DIR/nova-api|g; |
|
| 264 |
+ s|%SSLENGINE%|$nova_ssl|g; |
|
| 265 |
+ s|%SSLCERTFILE%|$nova_certfile|g; |
|
| 266 |
+ s|%SSLKEYFILE%|$nova_keyfile|g; |
|
| 267 |
+ s|%USER%|$STACK_USER|g; |
|
| 268 |
+ s|%VIRTUALENV%|$venv_path|g |
|
| 269 |
+ " -i $nova_apache_conf |
|
| 270 |
+ |
|
| 271 |
+ sudo cp $FILES/apache-nova-ec2-api.template $nova_ec2_apache_conf |
|
| 272 |
+ sudo sed -e " |
|
| 273 |
+ s|%PUBLICPORT%|$nova_ec2_api_port|g; |
|
| 274 |
+ s|%APACHE_NAME%|$APACHE_NAME|g; |
|
| 275 |
+ s|%PUBLICWSGI%|$NOVA_WSGI_DIR/nova-ec2-api|g; |
|
| 276 |
+ s|%SSLENGINE%|$nova_ssl|g; |
|
| 277 |
+ s|%SSLCERTFILE%|$nova_certfile|g; |
|
| 278 |
+ s|%SSLKEYFILE%|$nova_keyfile|g; |
|
| 279 |
+ s|%USER%|$STACK_USER|g; |
|
| 280 |
+ s|%VIRTUALENV%|$venv_path|g |
|
| 281 |
+ " -i $nova_ec2_apache_conf |
|
| 282 |
+} |
|
| 283 |
+ |
|
| 226 | 284 |
# configure_nova() - Set config files, create data dirs, etc |
| 227 | 285 |
function configure_nova {
|
| 228 | 286 |
# Put config files in ``/etc/nova`` for everyone to find |
| ... | ... |
@@ -453,12 +521,16 @@ function create_nova_conf {
|
| 453 | 453 |
iniset $NOVA_CONF DEFAULT force_config_drive "$FORCE_CONFIG_DRIVE" |
| 454 | 454 |
fi |
| 455 | 455 |
# Format logging |
| 456 |
- if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then |
|
| 456 |
+ if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ] && [ "$NOVA_USE_MOD_WSGI" == "False" ] ; then |
|
| 457 | 457 |
setup_colorized_logging $NOVA_CONF DEFAULT |
| 458 | 458 |
else |
| 459 | 459 |
# Show user_name and project_name instead of user_id and project_id |
| 460 | 460 |
iniset $NOVA_CONF DEFAULT logging_context_format_string "%(asctime)s.%(msecs)03d %(levelname)s %(name)s [%(request_id)s %(user_name)s %(project_name)s] %(instance)s%(message)s" |
| 461 | 461 |
fi |
| 462 |
+ if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
|
| 463 |
+ _config_nova_apache_wsgi |
|
| 464 |
+ fi |
|
| 465 |
+ |
|
| 462 | 466 |
if is_service_enabled ceilometer; then |
| 463 | 467 |
iniset $NOVA_CONF DEFAULT instance_usage_audit "True" |
| 464 | 468 |
iniset $NOVA_CONF DEFAULT instance_usage_audit_period "hour" |
| ... | ... |
@@ -655,6 +727,13 @@ function install_nova {
|
| 655 | 655 |
git_clone $NOVA_REPO $NOVA_DIR $NOVA_BRANCH |
| 656 | 656 |
setup_develop $NOVA_DIR |
| 657 | 657 |
sudo install -D -m 0644 -o $STACK_USER {$NOVA_DIR/tools/,/etc/bash_completion.d/}nova-manage.bash_completion
|
| 658 |
+ |
|
| 659 |
+ if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
|
| 660 |
+ install_apache_wsgi |
|
| 661 |
+ if is_ssl_enabled_service "nova-api"; then |
|
| 662 |
+ enable_mod_ssl |
|
| 663 |
+ fi |
|
| 664 |
+ fi |
|
| 658 | 665 |
} |
| 659 | 666 |
|
| 660 | 667 |
# start_nova_api() - Start the API process ahead of other things |
| ... | ... |
@@ -671,7 +750,18 @@ function start_nova_api {
|
| 671 | 671 |
local old_path=$PATH |
| 672 | 672 |
export PATH=$NOVA_BIN_DIR:$PATH |
| 673 | 673 |
|
| 674 |
- run_process n-api "$NOVA_BIN_DIR/nova-api" |
|
| 674 |
+ # If the site is not enabled then we are in a grenade scenario |
|
| 675 |
+ local enabled_site_file=$(apache_site_config_for nova-api) |
|
| 676 |
+ if [ -f ${enabled_site_file} ] && [ "$NOVA_USE_MOD_WSGI" == "True" ]; then
|
|
| 677 |
+ enable_apache_site nova-api |
|
| 678 |
+ enable_apache_site nova-ec2-api |
|
| 679 |
+ restart_apache_server |
|
| 680 |
+ tail_log nova /var/log/$APACHE_NAME/nova-api.log |
|
| 681 |
+ tail_log nova /var/log/$APACHE_NAME/nova-ec2-api.log |
|
| 682 |
+ else |
|
| 683 |
+ run_process n-api "$NOVA_BIN_DIR/nova-api" |
|
| 684 |
+ fi |
|
| 685 |
+ |
|
| 675 | 686 |
echo "Waiting for nova-api to start..." |
| 676 | 687 |
if ! wait_for_service $SERVICE_TIMEOUT $service_protocol://$SERVICE_HOST:$service_port; then |
| 677 | 688 |
die $LINENO "nova-api did not start" |
| ... | ... |
@@ -780,6 +870,13 @@ function stop_nova_compute {
|
| 780 | 780 |
} |
| 781 | 781 |
|
| 782 | 782 |
function stop_nova_rest {
|
| 783 |
+ if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
|
| 784 |
+ disable_apache_site nova-api |
|
| 785 |
+ disable_apache_site nova-ec2-api |
|
| 786 |
+ restart_apache_server |
|
| 787 |
+ else |
|
| 788 |
+ stop_process n-api |
|
| 789 |
+ fi |
|
| 783 | 790 |
# Kill the nova screen windows |
| 784 | 791 |
# Some services are listed here twice since more than one instance |
| 785 | 792 |
# of a service may be running in certain configs. |