|
...
|
...
|
@@ -55,6 +55,8 @@ CINDER_AUTH_CACHE_DIR=${CINDER_AUTH_CACHE_DIR:-/var/cache/cinder}
|
|
55
|
55
|
|
|
56
|
56
|
CINDER_CONF_DIR=/etc/cinder
|
|
57
|
57
|
CINDER_CONF=$CINDER_CONF_DIR/cinder.conf
|
|
|
58
|
+CINDER_UWSGI=$CINDER_BIN_DIR/cinder-wsgi
|
|
|
59
|
+CINDER_UWSGI_CONF=$CINDER_CONF_DIR/cinder-api-uwsgi.ini
|
|
58
|
60
|
CINDER_API_PASTE_INI=$CINDER_CONF_DIR/api-paste.ini
|
|
59
|
61
|
|
|
60
|
62
|
# Public facing bits
|
|
...
|
...
|
@@ -106,8 +108,9 @@ else
|
|
106
|
106
|
CINDER_ISCSI_HELPER=${CINDER_ISCSI_HELPER:-tgtadm}
|
|
107
|
107
|
fi
|
|
108
|
108
|
|
|
109
|
|
-# Toggle for deploying Cinder under HTTPD + mod_wsgi
|
|
110
|
|
-CINDER_USE_MOD_WSGI=${CINDER_USE_MOD_WSGI:-False}
|
|
|
109
|
+# Toggle for deploying Cinder under a wsgi server. Legacy mod_wsgi
|
|
|
110
|
+# reference should be cleaned up to more accurately refer to uwsgi.
|
|
|
111
|
+CINDER_USE_MOD_WSGI=${CINDER_USE_MOD_WSGI:-True}
|
|
111
|
112
|
|
|
112
|
113
|
# Source the enabled backends
|
|
113
|
114
|
if is_service_enabled c-vol && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
|
|
...
|
...
|
@@ -196,38 +199,8 @@ function cleanup_cinder {
|
|
196
|
196
|
done
|
|
197
|
197
|
fi
|
|
198
|
198
|
|
|
199
|
|
- if [ "$CINDER_USE_MOD_WSGI" == "True" ]; then
|
|
200
|
|
- _cinder_cleanup_apache_wsgi
|
|
201
|
|
- fi
|
|
202
|
|
-}
|
|
203
|
|
-
|
|
204
|
|
-# _cinder_config_apache_wsgi() - Set WSGI config files
|
|
205
|
|
-function _cinder_config_apache_wsgi {
|
|
206
|
|
- local cinder_apache_conf
|
|
207
|
|
- cinder_apache_conf=$(apache_site_config_for osapi-volume)
|
|
208
|
|
- local cinder_ssl=""
|
|
209
|
|
- local cinder_certfile=""
|
|
210
|
|
- local cinder_keyfile=""
|
|
211
|
|
- local cinder_api_port=$CINDER_SERVICE_PORT
|
|
212
|
|
- local venv_path=""
|
|
213
|
|
-
|
|
214
|
|
- if [[ ${USE_VENV} = True ]]; then
|
|
215
|
|
- venv_path="python-path=${PROJECT_VENV["cinder"]}/lib/python2.7/site-packages"
|
|
216
|
|
- fi
|
|
217
|
|
-
|
|
218
|
|
- # copy proxy vhost file
|
|
219
|
|
- sudo cp $FILES/apache-cinder-api.template $cinder_apache_conf
|
|
220
|
|
- sudo sed -e "
|
|
221
|
|
- s|%PUBLICPORT%|$cinder_api_port|g;
|
|
222
|
|
- s|%APACHE_NAME%|$APACHE_NAME|g;
|
|
223
|
|
- s|%APIWORKERS%|$API_WORKERS|g
|
|
224
|
|
- s|%CINDER_BIN_DIR%|$CINDER_BIN_DIR|g;
|
|
225
|
|
- s|%SSLENGINE%|$cinder_ssl|g;
|
|
226
|
|
- s|%SSLCERTFILE%|$cinder_certfile|g;
|
|
227
|
|
- s|%SSLKEYFILE%|$cinder_keyfile|g;
|
|
228
|
|
- s|%USER%|$STACK_USER|g;
|
|
229
|
|
- s|%VIRTUALENV%|$venv_path|g
|
|
230
|
|
- " -i $cinder_apache_conf
|
|
|
199
|
+ stop_process "c-api"
|
|
|
200
|
+ remove_uwsgi_config "$CINDER_UWSGI_CONF" "$CINDER_UWSGI"
|
|
231
|
201
|
}
|
|
232
|
202
|
|
|
233
|
203
|
# configure_cinder() - Set config files, create data dirs, etc
|
|
...
|
...
|
@@ -319,9 +292,18 @@ function configure_cinder {
|
|
319
|
319
|
fi
|
|
320
|
320
|
|
|
321
|
321
|
if is_service_enabled tls-proxy; then
|
|
322
|
|
- # Set the service port for a proxy to take the original
|
|
323
|
|
- iniset $CINDER_CONF DEFAULT osapi_volume_listen_port $CINDER_SERVICE_PORT_INT
|
|
324
|
|
- iniset $CINDER_CONF DEFAULT public_endpoint $CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT
|
|
|
322
|
+ if [[ "$ENABLED_SERVICES" =~ "c-api" ]]; then
|
|
|
323
|
+ # Set the service port for a proxy to take the original
|
|
|
324
|
+ if [ "$CINDER_USE_MOD_WSGI" == "True" ]; then
|
|
|
325
|
+ iniset $CINDER_CONF DEFAULT osapi_volume_listen_port $CINDER_SERVICE_PORT_INT
|
|
|
326
|
+ iniset $CINDER_CONF DEFAULT public_endpoint $CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST
|
|
|
327
|
+ iniset $CINDER_CONF DEFAULT osapi_volume_base_URL $CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST
|
|
|
328
|
+ else
|
|
|
329
|
+ iniset $CINDER_CONF DEFAULT osapi_volume_listen_port $CINDER_SERVICE_PORT_INT
|
|
|
330
|
+ iniset $CINDER_CONF DEFAULT public_endpoint $CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT
|
|
|
331
|
+ iniset $CINDER_CONF DEFAULT osapi_volume_base_URL $CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT
|
|
|
332
|
+ fi
|
|
|
333
|
+ fi
|
|
325
|
334
|
fi
|
|
326
|
335
|
|
|
327
|
336
|
if [ "$SYSLOG" != "False" ]; then
|
|
...
|
...
|
@@ -333,9 +315,7 @@ function configure_cinder {
|
|
333
|
333
|
# Format logging
|
|
334
|
334
|
setup_logging $CINDER_CONF $CINDER_USE_MOD_WSGI
|
|
335
|
335
|
|
|
336
|
|
- if [ "$CINDER_USE_MOD_WSGI" == "True" ]; then
|
|
337
|
|
- _cinder_config_apache_wsgi
|
|
338
|
|
- fi
|
|
|
336
|
+ write_uwsgi_config "$CINDER_UWSGI_CONF" "$CINDER_UWSGI" "/volume"
|
|
339
|
337
|
|
|
340
|
338
|
if [[ -r $CINDER_PLUGINS/$CINDER_DRIVER ]]; then
|
|
341
|
339
|
configure_cinder_driver
|
|
...
|
...
|
@@ -374,29 +354,47 @@ function configure_cinder {
|
|
374
|
374
|
|
|
375
|
375
|
# Migrated from keystone_data.sh
|
|
376
|
376
|
function create_cinder_accounts {
|
|
377
|
|
-
|
|
378
|
377
|
# Cinder
|
|
379
|
378
|
if [[ "$ENABLED_SERVICES" =~ "c-api" ]]; then
|
|
380
|
379
|
|
|
381
|
380
|
create_service_user "cinder"
|
|
382
|
381
|
|
|
383
|
382
|
get_or_create_service "cinder" "volume" "Cinder Volume Service"
|
|
384
|
|
- get_or_create_endpoint \
|
|
385
|
|
- "volume" \
|
|
386
|
|
- "$REGION_NAME" \
|
|
387
|
|
- "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(project_id)s"
|
|
388
|
|
-
|
|
389
|
|
- get_or_create_service "cinderv2" "volumev2" "Cinder Volume Service V2"
|
|
390
|
|
- get_or_create_endpoint \
|
|
391
|
|
- "volumev2" \
|
|
392
|
|
- "$REGION_NAME" \
|
|
393
|
|
- "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(project_id)s"
|
|
394
|
|
-
|
|
395
|
|
- get_or_create_service "cinderv3" "volumev3" "Cinder Volume Service V3"
|
|
396
|
|
- get_or_create_endpoint \
|
|
397
|
|
- "volumev3" \
|
|
398
|
|
- "$REGION_NAME" \
|
|
399
|
|
- "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v3/\$(project_id)s"
|
|
|
383
|
+ if [ "$CINDER_USE_MOD_WSGI" == "False" ]; then
|
|
|
384
|
+ get_or_create_endpoint \
|
|
|
385
|
+ "volume" \
|
|
|
386
|
+ "$REGION_NAME" \
|
|
|
387
|
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(project_id)s"
|
|
|
388
|
+
|
|
|
389
|
+ get_or_create_service "cinderv2" "volumev2" "Cinder Volume Service V2"
|
|
|
390
|
+ get_or_create_endpoint \
|
|
|
391
|
+ "volumev2" \
|
|
|
392
|
+ "$REGION_NAME" \
|
|
|
393
|
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(project_id)s"
|
|
|
394
|
+
|
|
|
395
|
+ get_or_create_service "cinderv3" "volumev3" "Cinder Volume Service V3"
|
|
|
396
|
+ get_or_create_endpoint \
|
|
|
397
|
+ "volumev3" \
|
|
|
398
|
+ "$REGION_NAME" \
|
|
|
399
|
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v3/\$(project_id)s"
|
|
|
400
|
+ else
|
|
|
401
|
+ get_or_create_endpoint \
|
|
|
402
|
+ "volume" \
|
|
|
403
|
+ "$REGION_NAME" \
|
|
|
404
|
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST/volume/v1/\$(project_id)s"
|
|
|
405
|
+
|
|
|
406
|
+ get_or_create_service "cinderv2" "volumev2" "Cinder Volume Service V2"
|
|
|
407
|
+ get_or_create_endpoint \
|
|
|
408
|
+ "volumev2" \
|
|
|
409
|
+ "$REGION_NAME" \
|
|
|
410
|
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST/volume/v2/\$(project_id)s"
|
|
|
411
|
+
|
|
|
412
|
+ get_or_create_service "cinderv3" "volumev3" "Cinder Volume Service V3"
|
|
|
413
|
+ get_or_create_endpoint \
|
|
|
414
|
+ "volumev3" \
|
|
|
415
|
+ "$REGION_NAME" \
|
|
|
416
|
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST/volume/v3/\$(project_id)s"
|
|
|
417
|
+ fi
|
|
400
|
418
|
|
|
401
|
419
|
configure_cinder_internal_tenant
|
|
402
|
420
|
fi
|
|
...
|
...
|
@@ -449,10 +447,6 @@ function install_cinder {
|
|
449
|
449
|
elif [[ "$CINDER_ISCI_HELPER" == "lioadm" ]]; then
|
|
450
|
450
|
install_package targetcli
|
|
451
|
451
|
fi
|
|
452
|
|
-
|
|
453
|
|
- if [ "$CINDER_USE_MOD_WSGI" == "True" ]; then
|
|
454
|
|
- install_apache_wsgi
|
|
455
|
|
- fi
|
|
456
|
452
|
}
|
|
457
|
453
|
|
|
458
|
454
|
# install_cinderclient() - Collect source and prepare
|
|
...
|
...
|
@@ -483,7 +477,8 @@ function _configure_tgt_for_config_d {
|
|
483
|
483
|
function start_cinder {
|
|
484
|
484
|
local service_port=$CINDER_SERVICE_PORT
|
|
485
|
485
|
local service_protocol=$CINDER_SERVICE_PROTOCOL
|
|
486
|
|
- if is_service_enabled tls-proxy; then
|
|
|
486
|
+ local cinder_url
|
|
|
487
|
+ if is_service_enabled tls-proxy && ["$CINDER_USE_MOD_WSGI" == "False"]; then
|
|
487
|
488
|
service_port=$CINDER_SERVICE_PORT_INT
|
|
488
|
489
|
service_protocol="http"
|
|
489
|
490
|
fi
|
|
...
|
...
|
@@ -507,24 +502,23 @@ function start_cinder {
|
|
507
|
507
|
fi
|
|
508
|
508
|
fi
|
|
509
|
509
|
|
|
510
|
|
- if is_service_enabled c-api ; then
|
|
511
|
|
- if [ "$CINDER_USE_MOD_WSGI" == "True" ]; then
|
|
512
|
|
- enable_apache_site osapi-volume
|
|
513
|
|
- restart_apache_server
|
|
514
|
|
- tail_log c-api /var/log/$APACHE_NAME/c-api.log
|
|
515
|
|
- else
|
|
|
510
|
+ if [[ "$ENABLED_SERVICES" =~ "c-api" ]]; then
|
|
|
511
|
+ if [ "$CINDER_USE_MOD_WSGI" == "False" ]; then
|
|
516
|
512
|
run_process c-api "$CINDER_BIN_DIR/cinder-api --config-file $CINDER_CONF"
|
|
|
513
|
+ cinder_url=$service_protocol://$SERVICE_HOST:$service_port
|
|
|
514
|
+ # Start proxy if tsl enabled
|
|
|
515
|
+ if is_service_enabled tls_proxy; then
|
|
|
516
|
+ start_tls_proxy cinder '*' $CINDER_SERVICE_PORT $CINDER_SERVICE_HOST $CINDER_SERVICE_POR_INT
|
|
|
517
|
+ fi
|
|
|
518
|
+ else
|
|
|
519
|
+ run_process "c-api" "$CINDER_BIN_DIR/uwsgi --ini $CINDER_UWSGI_CONF"
|
|
|
520
|
+ cinder_url=$service_protocol://$SERVICE_HOST/volume/v3
|
|
517
|
521
|
fi
|
|
|
522
|
+ fi
|
|
518
|
523
|
|
|
519
|
|
- echo "Waiting for Cinder API to start..."
|
|
520
|
|
- if ! wait_for_service $SERVICE_TIMEOUT $service_protocol://$CINDER_SERVICE_HOST:$service_port; then
|
|
521
|
|
- die $LINENO "c-api did not start"
|
|
522
|
|
- fi
|
|
523
|
|
-
|
|
524
|
|
- # Start proxies if enabled
|
|
525
|
|
- if is_service_enabled tls-proxy; then
|
|
526
|
|
- start_tls_proxy cinder '*' $CINDER_SERVICE_PORT $CINDER_SERVICE_HOST $CINDER_SERVICE_PORT_INT
|
|
527
|
|
- fi
|
|
|
524
|
+ echo "Waiting for Cinder API to start..."
|
|
|
525
|
+ if ! wait_for_service $SERVICE_TIMEOUT $cinder_url; then
|
|
|
526
|
+ die $LINENO "c-api did not start"
|
|
528
|
527
|
fi
|
|
529
|
528
|
|
|
530
|
529
|
run_process c-sch "$CINDER_BIN_DIR/cinder-scheduler --config-file $CINDER_CONF"
|
|
...
|
...
|
@@ -538,12 +532,7 @@ function start_cinder {
|
|
538
|
538
|
|
|
539
|
539
|
# stop_cinder() - Stop running processes
|
|
540
|
540
|
function stop_cinder {
|
|
541
|
|
- if [ "$CINDER_USE_MOD_WSGI" == "True" ]; then
|
|
542
|
|
- disable_apache_site osapi-volume
|
|
543
|
|
- restart_apache_server
|
|
544
|
|
- else
|
|
545
|
|
- stop_process c-api
|
|
546
|
|
- fi
|
|
|
541
|
+ stop_process c-api
|
|
547
|
542
|
|
|
548
|
543
|
# Kill the cinder screen windows
|
|
549
|
544
|
local serv
|