This is the semi-irregular comment and docs cleanup.
No functional changes should be here although some code is moved in a
small attempt to sort functions and get things where they need to be.
Change-Id: Ib4a3e2590c6fbd016c391acc7aef6421e91c0dca
| ... | ... |
@@ -200,6 +200,7 @@ function _get_package_dir() {
|
| 200 | 200 |
echo "$pkg_dir" |
| 201 | 201 |
} |
| 202 | 202 |
|
| 203 |
+ |
|
| 203 | 204 |
# get_packages() collects a list of package names of any type from the |
| 204 | 205 |
# prerequisite files in ``files/{apts|rpms}``. The list is intended
|
| 205 | 206 |
# to be passed to a package installer such as apt or yum. |
| ... | ... |
@@ -390,42 +391,6 @@ GetOSVersion() {
|
| 390 | 390 |
export os_VENDOR os_RELEASE os_UPDATE os_PACKAGE os_CODENAME |
| 391 | 391 |
} |
| 392 | 392 |
|
| 393 |
-# git update using reference as a branch. |
|
| 394 |
-# git_update_branch ref |
|
| 395 |
-function git_update_branch() {
|
|
| 396 |
- |
|
| 397 |
- GIT_BRANCH=$1 |
|
| 398 |
- |
|
| 399 |
- git checkout -f origin/$GIT_BRANCH |
|
| 400 |
- # a local branch might not exist |
|
| 401 |
- git branch -D $GIT_BRANCH || true |
|
| 402 |
- git checkout -b $GIT_BRANCH |
|
| 403 |
-} |
|
| 404 |
- |
|
| 405 |
- |
|
| 406 |
-# git update using reference as a tag. Be careful editing source at that repo |
|
| 407 |
-# as working copy will be in a detached mode |
|
| 408 |
-# git_update_tag ref |
|
| 409 |
-function git_update_tag() {
|
|
| 410 |
- |
|
| 411 |
- GIT_TAG=$1 |
|
| 412 |
- |
|
| 413 |
- git tag -d $GIT_TAG |
|
| 414 |
- # fetching given tag only |
|
| 415 |
- git fetch origin tag $GIT_TAG |
|
| 416 |
- git checkout -f $GIT_TAG |
|
| 417 |
-} |
|
| 418 |
- |
|
| 419 |
- |
|
| 420 |
-# git update using reference as a branch. |
|
| 421 |
-# git_update_remote_branch ref |
|
| 422 |
-function git_update_remote_branch() {
|
|
| 423 |
- |
|
| 424 |
- GIT_BRANCH=$1 |
|
| 425 |
- |
|
| 426 |
- git checkout -b $GIT_BRANCH -t origin/$GIT_BRANCH |
|
| 427 |
-} |
|
| 428 |
- |
|
| 429 | 393 |
|
| 430 | 394 |
# Translate the OS version values into common nomenclature |
| 431 | 395 |
# Sets ``DISTRO`` from the ``os_*`` values |
| ... | ... |
@@ -457,19 +422,8 @@ function GetDistro() {
|
| 457 | 457 |
} |
| 458 | 458 |
|
| 459 | 459 |
|
| 460 |
-# Determine if current distribution is an Ubuntu-based distribution. |
|
| 461 |
-# It will also detect non-Ubuntu but Debian-based distros; this is not an issue |
|
| 462 |
-# since Debian and Ubuntu should be compatible. |
|
| 463 |
-# is_ubuntu |
|
| 464 |
-function is_ubuntu {
|
|
| 465 |
- if [[ -z "$os_PACKAGE" ]]; then |
|
| 466 |
- GetOSVersion |
|
| 467 |
- fi |
|
| 468 |
- [ "$os_PACKAGE" = "deb" ] |
|
| 469 |
-} |
|
| 470 |
- |
|
| 471 | 460 |
# Determine if current distribution is a Fedora-based distribution |
| 472 |
-# (Fedora, RHEL, CentOS). |
|
| 461 |
+# (Fedora, RHEL, CentOS, etc). |
|
| 473 | 462 |
# is_fedora |
| 474 | 463 |
function is_fedora {
|
| 475 | 464 |
if [[ -z "$os_VENDOR" ]]; then |
| ... | ... |
@@ -479,6 +433,7 @@ function is_fedora {
|
| 479 | 479 |
[ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || [ "$os_VENDOR" = "CentOS" ] |
| 480 | 480 |
} |
| 481 | 481 |
|
| 482 |
+ |
|
| 482 | 483 |
# Determine if current distribution is a SUSE-based distribution |
| 483 | 484 |
# (openSUSE, SLE). |
| 484 | 485 |
# is_suse |
| ... | ... |
@@ -491,6 +446,17 @@ function is_suse {
|
| 491 | 491 |
} |
| 492 | 492 |
|
| 493 | 493 |
|
| 494 |
+# Determine if current distribution is an Ubuntu-based distribution |
|
| 495 |
+# It will also detect non-Ubuntu but Debian-based distros |
|
| 496 |
+# is_ubuntu |
|
| 497 |
+function is_ubuntu {
|
|
| 498 |
+ if [[ -z "$os_PACKAGE" ]]; then |
|
| 499 |
+ GetOSVersion |
|
| 500 |
+ fi |
|
| 501 |
+ [ "$os_PACKAGE" = "deb" ] |
|
| 502 |
+} |
|
| 503 |
+ |
|
| 504 |
+ |
|
| 494 | 505 |
# Exit after outputting a message about the distribution not being supported. |
| 495 | 506 |
# exit_distro_not_supported [optional-string-telling-what-is-missing] |
| 496 | 507 |
function exit_distro_not_supported {
|
| ... | ... |
@@ -565,6 +531,43 @@ function git_clone {
|
| 565 | 565 |
} |
| 566 | 566 |
|
| 567 | 567 |
|
| 568 |
+# git update using reference as a branch. |
|
| 569 |
+# git_update_branch ref |
|
| 570 |
+function git_update_branch() {
|
|
| 571 |
+ |
|
| 572 |
+ GIT_BRANCH=$1 |
|
| 573 |
+ |
|
| 574 |
+ git checkout -f origin/$GIT_BRANCH |
|
| 575 |
+ # a local branch might not exist |
|
| 576 |
+ git branch -D $GIT_BRANCH || true |
|
| 577 |
+ git checkout -b $GIT_BRANCH |
|
| 578 |
+} |
|
| 579 |
+ |
|
| 580 |
+ |
|
| 581 |
+# git update using reference as a branch. |
|
| 582 |
+# git_update_remote_branch ref |
|
| 583 |
+function git_update_remote_branch() {
|
|
| 584 |
+ |
|
| 585 |
+ GIT_BRANCH=$1 |
|
| 586 |
+ |
|
| 587 |
+ git checkout -b $GIT_BRANCH -t origin/$GIT_BRANCH |
|
| 588 |
+} |
|
| 589 |
+ |
|
| 590 |
+ |
|
| 591 |
+# git update using reference as a tag. Be careful editing source at that repo |
|
| 592 |
+# as working copy will be in a detached mode |
|
| 593 |
+# git_update_tag ref |
|
| 594 |
+function git_update_tag() {
|
|
| 595 |
+ |
|
| 596 |
+ GIT_TAG=$1 |
|
| 597 |
+ |
|
| 598 |
+ git tag -d $GIT_TAG |
|
| 599 |
+ # fetching given tag only |
|
| 600 |
+ git fetch origin tag $GIT_TAG |
|
| 601 |
+ git checkout -f $GIT_TAG |
|
| 602 |
+} |
|
| 603 |
+ |
|
| 604 |
+ |
|
| 568 | 605 |
# Comment an option in an INI file |
| 569 | 606 |
# inicomment config-file section option |
| 570 | 607 |
function inicomment() {
|
| ... | ... |
@@ -1020,6 +1023,7 @@ function screen_rc {
|
| 1020 | 1020 |
fi |
| 1021 | 1021 |
} |
| 1022 | 1022 |
|
| 1023 |
+ |
|
| 1023 | 1024 |
# Helper to remove the *.failure files under $SERVICE_DIR/$SCREEN_NAME |
| 1024 | 1025 |
# This is used for service_check when all the screen_it are called finished |
| 1025 | 1026 |
# init_service_check |
| ... | ... |
@@ -1034,6 +1038,7 @@ function init_service_check() {
|
| 1034 | 1034 |
rm -f "$SERVICE_DIR/$SCREEN_NAME"/*.failure |
| 1035 | 1035 |
} |
| 1036 | 1036 |
|
| 1037 |
+ |
|
| 1037 | 1038 |
# Helper to get the status of each running service |
| 1038 | 1039 |
# service_check |
| 1039 | 1040 |
function service_check() {
|
| ... | ... |
@@ -1062,6 +1067,7 @@ function service_check() {
|
| 1062 | 1062 |
fi |
| 1063 | 1063 |
} |
| 1064 | 1064 |
|
| 1065 |
+ |
|
| 1065 | 1066 |
# ``pip install`` the dependencies of the package before ``setup.py develop`` |
| 1066 | 1067 |
# so pip and not distutils processes the dependency chain |
| 1067 | 1068 |
# Uses globals ``TRACK_DEPENDES``, ``*_proxy` |
| ... | ... |
@@ -1242,6 +1248,7 @@ function upload_image() {
|
| 1242 | 1242 |
fi |
| 1243 | 1243 |
} |
| 1244 | 1244 |
|
| 1245 |
+ |
|
| 1245 | 1246 |
# Set the database backend to use |
| 1246 | 1247 |
# When called from stackrc/localrc DATABASE_BACKENDS has not been |
| 1247 | 1248 |
# initialized yet, just save the configuration selection and call back later |
| ... | ... |
@@ -1259,6 +1266,7 @@ function use_database {
|
| 1259 | 1259 |
fi |
| 1260 | 1260 |
} |
| 1261 | 1261 |
|
| 1262 |
+ |
|
| 1262 | 1263 |
# Toggle enable/disable_service for services that must run exclusive of each other |
| 1263 | 1264 |
# $1 The name of a variable containing a space-separated list of services |
| 1264 | 1265 |
# $2 The name of a variable in which to store the enabled service's name |
| ... | ... |
@@ -1275,6 +1283,7 @@ function use_exclusive_service {
|
| 1275 | 1275 |
return 0 |
| 1276 | 1276 |
} |
| 1277 | 1277 |
|
| 1278 |
+ |
|
| 1278 | 1279 |
# Wait for an HTTP server to start answering requests |
| 1279 | 1280 |
# wait_for_service timeout url |
| 1280 | 1281 |
function wait_for_service() {
|
| ... | ... |
@@ -1283,6 +1292,7 @@ function wait_for_service() {
|
| 1283 | 1283 |
timeout $timeout sh -c "while ! http_proxy= https_proxy= curl -s $url >/dev/null; do sleep 1; done" |
| 1284 | 1284 |
} |
| 1285 | 1285 |
|
| 1286 |
+ |
|
| 1286 | 1287 |
# Wrapper for ``yum`` to set proxy environment variables |
| 1287 | 1288 |
# Uses globals ``OFFLINE``, ``*_proxy` |
| 1288 | 1289 |
# yum_install package [package ...] |
| ... | ... |
@@ -1295,8 +1305,21 @@ function yum_install() {
|
| 1295 | 1295 |
yum install -y "$@" |
| 1296 | 1296 |
} |
| 1297 | 1297 |
|
| 1298 |
+ |
|
| 1299 |
+# zypper wrapper to set arguments correctly |
|
| 1300 |
+# zypper_install package [package ...] |
|
| 1301 |
+function zypper_install() {
|
|
| 1302 |
+ [[ "$OFFLINE" = "True" ]] && return |
|
| 1303 |
+ local sudo="sudo" |
|
| 1304 |
+ [[ "$(id -u)" = "0" ]] && sudo="env" |
|
| 1305 |
+ $sudo http_proxy=$http_proxy https_proxy=$https_proxy \ |
|
| 1306 |
+ zypper --non-interactive install --auto-agree-with-licenses "$@" |
|
| 1307 |
+} |
|
| 1308 |
+ |
|
| 1309 |
+ |
|
| 1298 | 1310 |
# ping check |
| 1299 | 1311 |
# Uses globals ``ENABLED_SERVICES`` |
| 1312 |
+# ping_check from-net ip boot-timeout expected |
|
| 1300 | 1313 |
function ping_check() {
|
| 1301 | 1314 |
if is_service_enabled quantum; then |
| 1302 | 1315 |
_ping_check_quantum "$1" $2 $3 $4 |
| ... | ... |
@@ -1333,8 +1356,10 @@ function _ping_check_novanet() {
|
| 1333 | 1333 |
fi |
| 1334 | 1334 |
} |
| 1335 | 1335 |
|
| 1336 |
+ |
|
| 1336 | 1337 |
# ssh check |
| 1337 | 1338 |
|
| 1339 |
+# ssh_check net-name key-file floating-ip default-user active-timeout |
|
| 1338 | 1340 |
function ssh_check() {
|
| 1339 | 1341 |
if is_service_enabled quantum; then |
| 1340 | 1342 |
_ssh_check_quantum "$1" $2 $3 $4 $5 |
| ... | ... |
@@ -1356,17 +1381,6 @@ function _ssh_check_novanet() {
|
| 1356 | 1356 |
} |
| 1357 | 1357 |
|
| 1358 | 1358 |
|
| 1359 |
-# zypper wrapper to set arguments correctly |
|
| 1360 |
-# zypper_install package [package ...] |
|
| 1361 |
-function zypper_install() {
|
|
| 1362 |
- [[ "$OFFLINE" = "True" ]] && return |
|
| 1363 |
- local sudo="sudo" |
|
| 1364 |
- [[ "$(id -u)" = "0" ]] && sudo="env" |
|
| 1365 |
- $sudo http_proxy=$http_proxy https_proxy=$https_proxy \ |
|
| 1366 |
- zypper --non-interactive install --auto-agree-with-licenses "$@" |
|
| 1367 |
-} |
|
| 1368 |
- |
|
| 1369 |
- |
|
| 1370 | 1359 |
# Add a user to a group. |
| 1371 | 1360 |
# add_user_to_group user group |
| 1372 | 1361 |
function add_user_to_group() {
|
| ... | ... |
@@ -1396,6 +1410,7 @@ function get_python_exec_prefix() {
|
| 1396 | 1396 |
fi |
| 1397 | 1397 |
} |
| 1398 | 1398 |
|
| 1399 |
+ |
|
| 1399 | 1400 |
# Get the location of the $module-rootwrap executables, where module is cinder |
| 1400 | 1401 |
# or nova. |
| 1401 | 1402 |
# get_rootwrap_location module |
| ... | ... |
@@ -1405,6 +1420,7 @@ function get_rootwrap_location() {
|
| 1405 | 1405 |
echo "$(get_python_exec_prefix)/$module-rootwrap" |
| 1406 | 1406 |
} |
| 1407 | 1407 |
|
| 1408 |
+ |
|
| 1408 | 1409 |
# Get the path to the pip command. |
| 1409 | 1410 |
# get_pip_command |
| 1410 | 1411 |
function get_pip_command() {
|
| ... | ... |
@@ -1419,6 +1435,7 @@ function get_pip_command() {
|
| 1419 | 1419 |
fi |
| 1420 | 1420 |
} |
| 1421 | 1421 |
|
| 1422 |
+ |
|
| 1422 | 1423 |
# Path permissions sanity check |
| 1423 | 1424 |
# check_path_perm_sanity path |
| 1424 | 1425 |
function check_path_perm_sanity() {
|
| ... | ... |
@@ -1448,6 +1465,7 @@ function check_path_perm_sanity() {
|
| 1448 | 1448 |
done |
| 1449 | 1449 |
} |
| 1450 | 1450 |
|
| 1451 |
+ |
|
| 1451 | 1452 |
# Restore xtrace |
| 1452 | 1453 |
$XTRACE |
| 1453 | 1454 |
|
| ... | ... |
@@ -74,13 +74,20 @@ function _horizon_config_set() {
|
| 74 | 74 |
} |
| 75 | 75 |
|
| 76 | 76 |
|
| 77 |
+ |
|
| 77 | 78 |
# Entry Points |
| 78 | 79 |
# ------------ |
| 79 | 80 |
|
| 80 | 81 |
# cleanup_horizon() - Remove residual data files, anything left over from previous |
| 81 | 82 |
# runs that a clean run would need to clean up |
| 82 | 83 |
function cleanup_horizon() {
|
| 83 |
- : |
|
| 84 |
+ if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then |
|
| 85 |
+ # If ``/usr/bin/node`` points into ``$DEST`` |
|
| 86 |
+ # we installed it via ``install_nodejs`` |
|
| 87 |
+ if [[ $(readlink -f /usr/bin/node) =~ ($DEST) ]]; then |
|
| 88 |
+ sudo rm /usr/bin/node |
|
| 89 |
+ fi |
|
| 90 |
+ fi |
|
| 84 | 91 |
} |
| 85 | 92 |
|
| 86 | 93 |
# configure_horizon() - Set config files, create data dirs, etc |
| ... | ... |
@@ -111,7 +118,6 @@ function init_horizon() {
|
| 111 | 111 |
# Create an empty directory that apache uses as docroot |
| 112 | 112 |
sudo mkdir -p $HORIZON_DIR/.blackhole |
| 113 | 113 |
|
| 114 |
- |
|
| 115 | 114 |
HORIZON_REQUIRE='' |
| 116 | 115 |
if is_ubuntu; then |
| 117 | 116 |
# Clean up the old config name |
| ... | ... |
@@ -148,7 +154,6 @@ function init_horizon() {
|
| 148 | 148 |
s,%DEST%,$DEST,g; |
| 149 | 149 |
s,%HORIZON_REQUIRE%,$HORIZON_REQUIRE,g; |
| 150 | 150 |
\" $FILES/apache-horizon.template >/etc/$APACHE_NAME/$APACHE_CONF" |
| 151 |
- |
|
| 152 | 151 |
} |
| 153 | 152 |
|
| 154 | 153 |
# install_horizon() - Collect source and prepare |
| ... | ... |
@@ -193,6 +198,7 @@ function stop_horizon() {
|
| 193 | 193 |
fi |
| 194 | 194 |
} |
| 195 | 195 |
|
| 196 |
+ |
|
| 196 | 197 |
# Restore xtrace |
| 197 | 198 |
$XTRACE |
| 198 | 199 |
|
| ... | ... |
@@ -178,7 +178,6 @@ function configure_keystone() {
|
| 178 | 178 |
cp $KEYSTONE_DIR/etc/logging.conf.sample $KEYSTONE_CONF_DIR/logging.conf |
| 179 | 179 |
iniset $KEYSTONE_CONF_DIR/logging.conf logger_root level "DEBUG" |
| 180 | 180 |
iniset $KEYSTONE_CONF_DIR/logging.conf logger_root handlers "devel,production" |
| 181 |
- |
|
| 182 | 181 |
} |
| 183 | 182 |
|
| 184 | 183 |
# create_keystone_accounts() - Sets up common required keystone accounts |
| ... | ... |
@@ -254,25 +253,6 @@ create_keystone_accounts() {
|
| 254 | 254 |
--adminurl "$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v2.0" \ |
| 255 | 255 |
--internalurl "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0" |
| 256 | 256 |
fi |
| 257 |
- |
|
| 258 |
- # TODO(dtroyer): This is part of a series of changes...remove these when |
|
| 259 |
- # complete if they are really unused |
|
| 260 |
-# KEYSTONEADMIN_ROLE=$(keystone role-create \ |
|
| 261 |
-# --name KeystoneAdmin \ |
|
| 262 |
-# | grep " id " | get_field 2) |
|
| 263 |
-# KEYSTONESERVICE_ROLE=$(keystone role-create \ |
|
| 264 |
-# --name KeystoneServiceAdmin \ |
|
| 265 |
-# | grep " id " | get_field 2) |
|
| 266 |
- |
|
| 267 |
- # TODO(termie): these two might be dubious |
|
| 268 |
-# keystone user-role-add \ |
|
| 269 |
-# --user_id $ADMIN_USER \ |
|
| 270 |
-# --role_id $KEYSTONEADMIN_ROLE \ |
|
| 271 |
-# --tenant_id $ADMIN_TENANT |
|
| 272 |
-# keystone user-role-add \ |
|
| 273 |
-# --user_id $ADMIN_USER \ |
|
| 274 |
-# --role_id $KEYSTONESERVICE_ROLE \ |
|
| 275 |
-# --tenant_id $ADMIN_TENANT |
|
| 276 | 257 |
} |
| 277 | 258 |
|
| 278 | 259 |
# init_keystone() - Initialize databases, etc. |
| ... | ... |
@@ -339,6 +319,7 @@ function stop_keystone() {
|
| 339 | 339 |
screen -S $SCREEN_NAME -p key -X kill |
| 340 | 340 |
} |
| 341 | 341 |
|
| 342 |
+ |
|
| 342 | 343 |
# Restore xtrace |
| 343 | 344 |
$XTRACE |
| 344 | 345 |
|
| ... | ... |
@@ -300,7 +300,7 @@ EOF |
| 300 | 300 |
fi |
| 301 | 301 |
|
| 302 | 302 |
if is_fedora || is_suse; then |
| 303 |
- if is_fedora && [[ $DISTRO =~ (rhel6) || "$os_RELEASE" -le "17" ]]; then |
|
| 303 |
+ if is_fedora && [[ $DISTRO =~ (rhel6) || "$os_RELEASE" -le "17" ]]; then |
|
| 304 | 304 |
sudo bash -c "cat <<EOF >/etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla |
| 305 | 305 |
[libvirt Management Access] |
| 306 | 306 |
Identity=unix-group:$LIBVIRT_GROUP |
| ... | ... |
@@ -352,7 +352,6 @@ EOF" |
| 352 | 352 |
restart_service $LIBVIRT_DAEMON |
| 353 | 353 |
fi |
| 354 | 354 |
|
| 355 |
- |
|
| 356 | 355 |
# Instance Storage |
| 357 | 356 |
# ---------------- |
| 358 | 357 |
|
| ... | ... |
@@ -494,7 +493,6 @@ function create_nova_conf() {
|
| 494 | 494 |
iniset_multiline $NOVA_CONF DEFAULT notification_driver "nova.openstack.common.notifier.rpc_notifier" "ceilometer.compute.nova_notifier" |
| 495 | 495 |
fi |
| 496 | 496 |
|
| 497 |
- |
|
| 498 | 497 |
# Provide some transition from ``EXTRA_FLAGS`` to ``EXTRA_OPTS`` |
| 499 | 498 |
if [[ -z "$EXTRA_OPTS" && -n "$EXTRA_FLAGS" ]]; then |
| 500 | 499 |
EXTRA_OPTS=$EXTRA_FLAGS |
| ... | ... |
@@ -112,18 +112,18 @@ if is_service_enabled quantum; then |
| 112 | 112 |
# The following variables control the Quantum openvswitch and |
| 113 | 113 |
# linuxbridge plugins' allocation of tenant networks and |
| 114 | 114 |
# availability of provider networks. If these are not configured |
| 115 |
- # in localrc, tenant networks will be local to the host (with no |
|
| 115 |
+ # in ``localrc``, tenant networks will be local to the host (with no |
|
| 116 | 116 |
# remote connectivity), and no physical resources will be |
| 117 | 117 |
# available for the allocation of provider networks. |
| 118 | 118 |
|
| 119 | 119 |
# To use GRE tunnels for tenant networks, set to True in |
| 120 |
- # localrc. GRE tunnels are only supported by the openvswitch |
|
| 120 |
+ # ``localrc``. GRE tunnels are only supported by the openvswitch |
|
| 121 | 121 |
# plugin, and currently only on Ubuntu. |
| 122 | 122 |
ENABLE_TENANT_TUNNELS=${ENABLE_TENANT_TUNNELS:-False}
|
| 123 | 123 |
|
| 124 | 124 |
# If using GRE tunnels for tenant networks, specify the range of |
| 125 | 125 |
# tunnel IDs from which tenant networks are allocated. Can be |
| 126 |
- # overriden in localrc in necesssary. |
|
| 126 |
+ # overriden in ``localrc`` in necesssary. |
|
| 127 | 127 |
TENANT_TUNNEL_RANGES=${TENANT_TUNNEL_RANGE:-1:1000}
|
| 128 | 128 |
|
| 129 | 129 |
# To use VLANs for tenant networks, set to True in localrc. VLANs |
| ... | ... |
@@ -131,7 +131,7 @@ if is_service_enabled quantum; then |
| 131 | 131 |
# requiring additional configuration described below. |
| 132 | 132 |
ENABLE_TENANT_VLANS=${ENABLE_TENANT_VLANS:-False}
|
| 133 | 133 |
|
| 134 |
- # If using VLANs for tenant networks, set in localrc to specify |
|
| 134 |
+ # If using VLANs for tenant networks, set in ``localrc`` to specify |
|
| 135 | 135 |
# the range of VLAN VIDs from which tenant networks are |
| 136 | 136 |
# allocated. An external network switch must be configured to |
| 137 | 137 |
# trunk these VLANs between hosts for multi-host connectivity. |
| ... | ... |
@@ -140,16 +140,16 @@ if is_service_enabled quantum; then |
| 140 | 140 |
TENANT_VLAN_RANGE=${TENANT_VLAN_RANGE:-}
|
| 141 | 141 |
|
| 142 | 142 |
# If using VLANs for tenant networks, or if using flat or VLAN |
| 143 |
- # provider networks, set in localrc to the name of the physical |
|
| 144 |
- # network, and also configure OVS_PHYSICAL_BRIDGE for the |
|
| 145 |
- # openvswitch agent or LB_PHYSICAL_INTERFACE for the linuxbridge |
|
| 143 |
+ # provider networks, set in ``localrc`` to the name of the physical |
|
| 144 |
+ # network, and also configure ``OVS_PHYSICAL_BRIDGE`` for the |
|
| 145 |
+ # openvswitch agent or ``LB_PHYSICAL_INTERFACE`` for the linuxbridge |
|
| 146 | 146 |
# agent, as described below. |
| 147 | 147 |
# |
| 148 | 148 |
# Example: ``PHYSICAL_NETWORK=default`` |
| 149 | 149 |
PHYSICAL_NETWORK=${PHYSICAL_NETWORK:-}
|
| 150 | 150 |
|
| 151 | 151 |
# With the openvswitch plugin, if using VLANs for tenant networks, |
| 152 |
- # or if using flat or VLAN provider networks, set in localrc to |
|
| 152 |
+ # or if using flat or VLAN provider networks, set in ``localrc`` to |
|
| 153 | 153 |
# the name of the OVS bridge to use for the physical network. The |
| 154 | 154 |
# bridge will be created if it does not already exist, but a |
| 155 | 155 |
# physical interface must be manually added to the bridge as a |
| ... | ... |
@@ -159,28 +159,29 @@ if is_service_enabled quantum; then |
| 159 | 159 |
OVS_PHYSICAL_BRIDGE=${OVS_PHYSICAL_BRIDGE:-}
|
| 160 | 160 |
|
| 161 | 161 |
# With the linuxbridge plugin, if using VLANs for tenant networks, |
| 162 |
- # or if using flat or VLAN provider networks, set in localrc to |
|
| 162 |
+ # or if using flat or VLAN provider networks, set in ``localrc`` to |
|
| 163 | 163 |
# the name of the network interface to use for the physical |
| 164 | 164 |
# network. |
| 165 | 165 |
# |
| 166 | 166 |
# Example: ``LB_PHYSICAL_INTERFACE=eth1`` |
| 167 | 167 |
LB_PHYSICAL_INTERFACE=${LB_PHYSICAL_INTERFACE:-}
|
| 168 | 168 |
|
| 169 |
- # With the openvswitch plugin, set to True in localrc to enable |
|
| 169 |
+ # With the openvswitch plugin, set to True in ``localrc`` to enable |
|
| 170 | 170 |
# provider GRE tunnels when ``ENABLE_TENANT_TUNNELS`` is False. |
| 171 | 171 |
# |
| 172 | 172 |
# Example: ``OVS_ENABLE_TUNNELING=True`` |
| 173 | 173 |
OVS_ENABLE_TUNNELING=${OVS_ENABLE_TUNNELING:-$ENABLE_TENANT_TUNNELS}
|
| 174 | 174 |
fi |
| 175 | 175 |
|
| 176 |
- |
|
| 177 | 176 |
# Quantum plugin specific functions |
| 178 | 177 |
# --------------------------------- |
| 179 |
-# Please refer to lib/quantum_plugins/README.md for details. |
|
| 178 |
+ |
|
| 179 |
+# Please refer to ``lib/quantum_plugins/README.md`` for details. |
|
| 180 | 180 |
source $TOP_DIR/lib/quantum_plugins/$Q_PLUGIN |
| 181 | 181 |
|
| 182 | 182 |
# Agent loadbalancer service plugin functions |
| 183 | 183 |
# ------------------------------------------- |
| 184 |
+ |
|
| 184 | 185 |
# Hardcoding for 1 service plugin for now |
| 185 | 186 |
source $TOP_DIR/lib/quantum_plugins/services/agent_loadbalancer |
| 186 | 187 |
|
| ... | ... |
@@ -191,7 +192,6 @@ else |
| 191 | 191 |
Q_USE_SECGROUP=False |
| 192 | 192 |
fi |
| 193 | 193 |
|
| 194 |
- |
|
| 195 | 194 |
# Functions |
| 196 | 195 |
# --------- |
| 197 | 196 |
|
| ... | ... |
@@ -423,7 +423,7 @@ function cleanup_quantum() {
|
| 423 | 423 |
|
| 424 | 424 |
# _configure_quantum_common() |
| 425 | 425 |
# Set common config for all quantum server and agents. |
| 426 |
-# This MUST be called before other _configure_quantum_* functions. |
|
| 426 |
+# This MUST be called before other ``_configure_quantum_*`` functions. |
|
| 427 | 427 |
function _configure_quantum_common() {
|
| 428 | 428 |
# Put config files in ``QUANTUM_CONF_DIR`` for everyone to find |
| 429 | 429 |
if [[ ! -d $QUANTUM_CONF_DIR ]]; then |
| ... | ... |
@@ -433,11 +433,11 @@ function _configure_quantum_common() {
|
| 433 | 433 |
|
| 434 | 434 |
cp $QUANTUM_DIR/etc/quantum.conf $QUANTUM_CONF |
| 435 | 435 |
|
| 436 |
- # Set plugin-specific variables Q_DB_NAME, Q_PLUGIN_CLASS. |
|
| 437 |
- # For main plugin config file, set Q_PLUGIN_CONF_PATH, Q_PLUGIN_CONF_FILENAME. |
|
| 438 |
- # For addition plugin config files, set Q_PLUGIN_EXTRA_CONF_PATH, |
|
| 439 |
- # Q_PLUGIN_EXTRA_CONF_FILES. For example: |
|
| 440 |
- # Q_PLUGIN_EXTRA_CONF_FILES=(file1, file2) |
|
| 436 |
+ # Set plugin-specific variables ``Q_DB_NAME``, ``Q_PLUGIN_CLASS``. |
|
| 437 |
+ # For main plugin config file, set ``Q_PLUGIN_CONF_PATH``, ``Q_PLUGIN_CONF_FILENAME``. |
|
| 438 |
+ # For addition plugin config files, set ``Q_PLUGIN_EXTRA_CONF_PATH``, |
|
| 439 |
+ # ``Q_PLUGIN_EXTRA_CONF_FILES``. For example: |
|
| 440 |
+ # ``Q_PLUGIN_EXTRA_CONF_FILES=(file1, file2)`` |
|
| 441 | 441 |
quantum_plugin_configure_common |
| 442 | 442 |
|
| 443 | 443 |
if [[ $Q_PLUGIN_CONF_PATH == '' || $Q_PLUGIN_CONF_FILENAME == '' || $Q_PLUGIN_CLASS == '' ]]; then |
| ... | ... |
@@ -543,8 +543,7 @@ function _configure_quantum_metadata_agent() {
|
| 543 | 543 |
_quantum_setup_keystone $Q_META_CONF_FILE DEFAULT set_auth_url |
| 544 | 544 |
} |
| 545 | 545 |
|
| 546 |
-function _configure_quantum_lbaas() |
|
| 547 |
-{
|
|
| 546 |
+function _configure_quantum_lbaas() {
|
|
| 548 | 547 |
quantum_agent_lbaas_install_agent_packages |
| 549 | 548 |
quantum_agent_lbaas_configure_common |
| 550 | 549 |
quantum_agent_lbaas_configure_agent |
| ... | ... |
@@ -606,17 +605,17 @@ function _quantum_setup_rootwrap() {
|
| 606 | 606 |
return |
| 607 | 607 |
fi |
| 608 | 608 |
# Deploy new rootwrap filters files (owned by root). |
| 609 |
- # Wipe any existing rootwrap.d files first |
|
| 609 |
+ # Wipe any existing ``rootwrap.d`` files first |
|
| 610 | 610 |
Q_CONF_ROOTWRAP_D=$QUANTUM_CONF_DIR/rootwrap.d |
| 611 | 611 |
if [[ -d $Q_CONF_ROOTWRAP_D ]]; then |
| 612 | 612 |
sudo rm -rf $Q_CONF_ROOTWRAP_D |
| 613 | 613 |
fi |
| 614 |
- # Deploy filters to $QUANTUM_CONF_DIR/rootwrap.d |
|
| 614 |
+ # Deploy filters to ``$QUANTUM_CONF_DIR/rootwrap.d`` |
|
| 615 | 615 |
mkdir -p -m 755 $Q_CONF_ROOTWRAP_D |
| 616 | 616 |
cp -pr $QUANTUM_DIR/etc/quantum/rootwrap.d/* $Q_CONF_ROOTWRAP_D/ |
| 617 | 617 |
sudo chown -R root:root $Q_CONF_ROOTWRAP_D |
| 618 | 618 |
sudo chmod 644 $Q_CONF_ROOTWRAP_D/* |
| 619 |
- # Set up rootwrap.conf, pointing to $QUANTUM_CONF_DIR/rootwrap.d |
|
| 619 |
+ # Set up ``rootwrap.conf``, pointing to ``$QUANTUM_CONF_DIR/rootwrap.d`` |
|
| 620 | 620 |
# location moved in newer versions, prefer new location |
| 621 | 621 |
if test -r $QUANTUM_DIR/etc/quantum/rootwrap.conf; then |
| 622 | 622 |
sudo cp -p $QUANTUM_DIR/etc/quantum/rootwrap.conf $Q_RR_CONF_FILE |
| ... | ... |
@@ -626,7 +625,7 @@ function _quantum_setup_rootwrap() {
|
| 626 | 626 |
sudo sed -e "s:^filters_path=.*$:filters_path=$Q_CONF_ROOTWRAP_D:" -i $Q_RR_CONF_FILE |
| 627 | 627 |
sudo chown root:root $Q_RR_CONF_FILE |
| 628 | 628 |
sudo chmod 0644 $Q_RR_CONF_FILE |
| 629 |
- # Specify rootwrap.conf as first parameter to quantum-rootwrap |
|
| 629 |
+ # Specify ``rootwrap.conf`` as first parameter to quantum-rootwrap |
|
| 630 | 630 |
ROOTWRAP_SUDOER_CMD="$QUANTUM_ROOTWRAP $Q_RR_CONF_FILE *" |
| 631 | 631 |
|
| 632 | 632 |
# Set up the rootwrap sudoers for quantum |
| ... | ... |
@@ -743,7 +742,8 @@ function _ssh_check_quantum() {
|
| 743 | 743 |
|
| 744 | 744 |
# Quantum 3rd party programs |
| 745 | 745 |
#--------------------------- |
| 746 |
-# please refer to lib/quantum_thirdparty/README.md for details |
|
| 746 |
+ |
|
| 747 |
+# please refer to ``lib/quantum_thirdparty/README.md`` for details |
|
| 747 | 748 |
QUANTUM_THIRD_PARTIES="" |
| 748 | 749 |
for f in $TOP_DIR/lib/quantum_thirdparty/*; do |
| 749 | 750 |
third_party=$(basename $f) |
| ... | ... |
@@ -3,7 +3,7 @@ |
| 3 | 3 |
# ``stack.sh`` is an opinionated OpenStack developer installation. It |
| 4 | 4 |
# installs and configures various combinations of **Ceilometer**, **Cinder**, |
| 5 | 5 |
# **Glance**, **Heat**, **Horizon**, **Keystone**, **Nova**, **Quantum** |
| 6 |
-# and **Swift** |
|
| 6 |
+# and **Swift**. |
|
| 7 | 7 |
|
| 8 | 8 |
# This script allows you to specify configuration options of what git |
| 9 | 9 |
# repositories to use, enabled services, network configuration and various |
| ... | ... |
@@ -12,9 +12,11 @@ |
| 12 | 12 |
# developer install. |
| 13 | 13 |
|
| 14 | 14 |
# To keep this script simple we assume you are running on a recent **Ubuntu** |
| 15 |
-# (12.04 Precise or newer) or **Fedora** (F16 or newer) machine. It |
|
| 16 |
-# should work in a VM or physical server. Additionally we put the list of |
|
| 17 |
-# ``apt`` and ``rpm`` dependencies and other configuration files in this repo. |
|
| 15 |
+# (12.04 Precise or newer) or **Fedora** (F16 or newer) machine. (It may work |
|
| 16 |
+# on other platforms but support for those platforms is left to those who added |
|
| 17 |
+# them to DevStack.) It should work in a VM or physical server. Additionally |
|
| 18 |
+# we maintain a list of ``apt`` and ``rpm`` dependencies and other configuration |
|
| 19 |
+# files in this repo. |
|
| 18 | 20 |
|
| 19 | 21 |
# Learn more and get the most recent version at http://devstack.org |
| 20 | 22 |
|
| ... | ... |
@@ -33,55 +35,20 @@ source $TOP_DIR/functions |
| 33 | 33 |
GetDistro |
| 34 | 34 |
|
| 35 | 35 |
|
| 36 |
-# Configure non-default repos |
|
| 37 |
-# =========================== |
|
| 38 |
- |
|
| 39 |
-# Repo configuration needs to occur before package installation. |
|
| 40 |
- |
|
| 41 |
-# Some dependencies are not available in Debian Wheezy official |
|
| 42 |
-# repositories. However, it's possible to run OpenStack from gplhost |
|
| 43 |
-# repository. |
|
| 44 |
-if [[ "$os_VENDOR" =~ (Debian) ]]; then |
|
| 45 |
- echo 'deb http://archive.gplhost.com/debian grizzly main' | sudo tee /etc/apt/sources.list.d/gplhost_wheezy-backports.list |
|
| 46 |
- echo 'deb http://archive.gplhost.com/debian grizzly-backports main' | sudo tee -a /etc/apt/sources.list.d/gplhost_wheezy-backports.list |
|
| 47 |
- apt_get update |
|
| 48 |
- apt_get install --force-yes gplhost-archive-keyring |
|
| 49 |
-fi |
|
| 50 |
- |
|
| 51 |
-# Installing Open vSwitch on RHEL6 requires enabling the RDO repo. |
|
| 52 |
-RHEL6_RDO_REPO_RPM=${RHEL6_RDO_REPO_RPM:-"http://rdo.fedorapeople.org/openstack/openstack-grizzly/rdo-release-grizzly-3.noarch.rpm"}
|
|
| 53 |
-RHEL6_RDO_REPO_ID=${RHEL6_RDO_REPO_ID:-"openstack-grizzly"}
|
|
| 54 |
-# RHEL6 requires EPEL for many Open Stack dependencies |
|
| 55 |
-RHEL6_EPEL_RPM=${RHEL6_EPEL_RPM:-"http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"}
|
|
| 56 |
- |
|
| 57 |
-if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then |
|
| 58 |
- |
|
| 59 |
- if ! yum repolist enabled $RHEL6_RDO_REPO_ID | grep -q $RHEL6_RDO_REPO_ID; then |
|
| 60 |
- echo "RDO repo not detected; installing" |
|
| 61 |
- yum_install $RHEL6_RDO_REPO_RPM || \ |
|
| 62 |
- die $LINENO "Error installing RDO repo, cannot continue" |
|
| 63 |
- fi |
|
| 64 |
- |
|
| 65 |
- if ! yum repolist enabled epel | grep -q 'epel'; then |
|
| 66 |
- echo "EPEL not detected; installing" |
|
| 67 |
- yum_install ${RHEL6_EPEL_RPM} || \
|
|
| 68 |
- die $LINENO "Error installing EPEL repo, cannot continue" |
|
| 69 |
- fi |
|
| 70 |
- |
|
| 71 |
-fi |
|
| 72 |
- |
|
| 73 | 36 |
# Global Settings |
| 74 | 37 |
# =============== |
| 75 | 38 |
|
| 76 |
-# ``stack.sh`` is customizable through setting environment variables. If you |
|
| 77 |
-# want to override a setting you can set and export it:: |
|
| 39 |
+# ``stack.sh`` is customizable by setting environment variables. Override a |
|
| 40 |
+# default setting via export:: |
|
| 78 | 41 |
# |
| 79 | 42 |
# export DATABASE_PASSWORD=anothersecret |
| 80 | 43 |
# ./stack.sh |
| 81 | 44 |
# |
| 82 |
-# You can also pass options on a single line ``DATABASE_PASSWORD=simple ./stack.sh`` |
|
| 45 |
+# or by setting the variable on the command line:: |
|
| 83 | 46 |
# |
| 84 |
-# Additionally, you can put any local variables into a ``localrc`` file:: |
|
| 47 |
+# DATABASE_PASSWORD=simple ./stack.sh |
|
| 48 |
+# |
|
| 49 |
+# Persistent variables can be placed in a ``localrc`` file:: |
|
| 85 | 50 |
# |
| 86 | 51 |
# DATABASE_PASSWORD=anothersecret |
| 87 | 52 |
# DATABASE_USER=hellaroot |
| ... | ... |
@@ -166,6 +133,41 @@ fi |
| 166 | 166 |
VERBOSE=$(trueorfalse True $VERBOSE) |
| 167 | 167 |
|
| 168 | 168 |
|
| 169 |
+# Additional repos |
|
| 170 |
+# ================ |
|
| 171 |
+ |
|
| 172 |
+# Some distros need to add repos beyond the defaults provided by the vendor |
|
| 173 |
+# to pick up required packages. |
|
| 174 |
+ |
|
| 175 |
+# The Debian Wheezy official repositories do not contain all required packages, |
|
| 176 |
+# add gplhost repository. |
|
| 177 |
+if [[ "$os_VENDOR" =~ (Debian) ]]; then |
|
| 178 |
+ echo 'deb http://archive.gplhost.com/debian grizzly main' | sudo tee /etc/apt/sources.list.d/gplhost_wheezy-backports.list |
|
| 179 |
+ echo 'deb http://archive.gplhost.com/debian grizzly-backports main' | sudo tee -a /etc/apt/sources.list.d/gplhost_wheezy-backports.list |
|
| 180 |
+ apt_get update |
|
| 181 |
+ apt_get install --force-yes gplhost-archive-keyring |
|
| 182 |
+fi |
|
| 183 |
+ |
|
| 184 |
+if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then |
|
| 185 |
+ # Installing Open vSwitch on RHEL6 requires enabling the RDO repo. |
|
| 186 |
+ RHEL6_RDO_REPO_RPM=${RHEL6_RDO_REPO_RPM:-"http://rdo.fedorapeople.org/openstack/openstack-grizzly/rdo-release-grizzly-3.noarch.rpm"}
|
|
| 187 |
+ RHEL6_RDO_REPO_ID=${RHEL6_RDO_REPO_ID:-"openstack-grizzly"}
|
|
| 188 |
+ if ! yum repolist enabled $RHEL6_RDO_REPO_ID | grep -q $RHEL6_RDO_REPO_ID; then |
|
| 189 |
+ echo "RDO repo not detected; installing" |
|
| 190 |
+ yum_install $RHEL6_RDO_REPO_RPM || \ |
|
| 191 |
+ die $LINENO "Error installing RDO repo, cannot continue" |
|
| 192 |
+ fi |
|
| 193 |
+ |
|
| 194 |
+ # RHEL6 requires EPEL for many Open Stack dependencies |
|
| 195 |
+ RHEL6_EPEL_RPM=${RHEL6_EPEL_RPM:-"http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"}
|
|
| 196 |
+ if ! yum repolist enabled epel | grep -q 'epel'; then |
|
| 197 |
+ echo "EPEL not detected; installing" |
|
| 198 |
+ yum_install ${RHEL6_EPEL_RPM} || \
|
|
| 199 |
+ die $LINENO "Error installing EPEL repo, cannot continue" |
|
| 200 |
+ fi |
|
| 201 |
+fi |
|
| 202 |
+ |
|
| 203 |
+ |
|
| 169 | 204 |
# root Access |
| 170 | 205 |
# ----------- |
| 171 | 206 |
|
| ... | ... |
@@ -296,7 +298,7 @@ SERVICE_TIMEOUT=${SERVICE_TIMEOUT:-60}
|
| 296 | 296 |
# Configure Projects |
| 297 | 297 |
# ================== |
| 298 | 298 |
|
| 299 |
-# Get project function libraries |
|
| 299 |
+# Source project function libraries |
|
| 300 | 300 |
source $TOP_DIR/lib/tls |
| 301 | 301 |
source $TOP_DIR/lib/horizon |
| 302 | 302 |
source $TOP_DIR/lib/keystone |
| ... | ... |
@@ -310,7 +312,7 @@ source $TOP_DIR/lib/quantum |
| 310 | 310 |
source $TOP_DIR/lib/baremetal |
| 311 | 311 |
source $TOP_DIR/lib/ldap |
| 312 | 312 |
|
| 313 |
-# Set the destination directories for OpenStack projects |
|
| 313 |
+# Set the destination directories for other OpenStack projects |
|
| 314 | 314 |
OPENSTACKCLIENT_DIR=$DEST/python-openstackclient |
| 315 | 315 |
PBR_DIR=$DEST/pbr |
| 316 | 316 |
|
| ... | ... |
@@ -565,6 +567,7 @@ failed() {
|
| 565 | 565 |
# an error. It is also useful for following along as the install occurs. |
| 566 | 566 |
set -o xtrace |
| 567 | 567 |
|
| 568 |
+ |
|
| 568 | 569 |
# Install Packages |
| 569 | 570 |
# ================ |
| 570 | 571 |
|
| ... | ... |
@@ -585,61 +588,51 @@ if is_service_enabled q-agt; then |
| 585 | 585 |
install_quantum_agent_packages |
| 586 | 586 |
fi |
| 587 | 587 |
|
| 588 |
-# |
|
| 588 |
+ |
|
| 589 | 589 |
# System-specific preconfigure |
| 590 | 590 |
# ============================ |
| 591 | 591 |
|
| 592 | 592 |
if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then |
| 593 |
- # Avoid having to configure selinux to allow things like httpd to |
|
| 594 |
- # access horizion files or run binaries like nodejs (LP#1175444) |
|
| 593 |
+ # Disable selinux to avoid configuring to allow Apache access |
|
| 594 |
+ # to Horizon files or run nodejs (LP#1175444) |
|
| 595 | 595 |
if selinuxenabled; then |
| 596 | 596 |
sudo setenforce 0 |
| 597 | 597 |
fi |
| 598 | 598 |
|
| 599 |
- # An old version (2.0.1) of python-crypto is probably installed on |
|
| 600 |
- # a fresh system, via the dependency chain |
|
| 601 |
- # cas->python-paramiko->python-crypto (related to anaconda). |
|
| 602 |
- # Unfortunately, "pip uninstall pycrypto" will remove the |
|
| 603 |
- # .egg-info file for this rpm-installed version, but leave most of |
|
| 604 |
- # the actual library files behind in /usr/lib64/python2.6/Crypto. |
|
| 605 |
- # When later "pip install pycrypto" happens, the built library |
|
| 606 |
- # will be installed over these existing files; the result is a |
|
| 607 |
- # useless mess of old, rpm-packaged files and pip-installed files. |
|
| 608 |
- # Unsurprisingly, the end result is it doesn't work. Thus we have |
|
| 609 |
- # to get rid of it now so that any packages that pip-install |
|
| 610 |
- # pycrypto get a "clean slate". |
|
| 611 |
- # (note, we have to be careful about other RPM packages specified |
|
| 612 |
- # pulling in python-crypto as well. That's why RHEL6 doesn't |
|
| 613 |
- # install python-paramiko packages for example...) |
|
| 599 |
+ # An old version of ``python-crypto`` (2.0.1) may be installed on a |
|
| 600 |
+ # fresh system via Anaconda and the dependency chain |
|
| 601 |
+ # ``cas`` -> ``python-paramiko`` -> ``python-crypto``. |
|
| 602 |
+ # ``pip uninstall pycrypto`` will remove the packaged ``.egg-info`` file |
|
| 603 |
+ # but leave most of the actual library files behind in ``/usr/lib64/python2.6/Crypto``. |
|
| 604 |
+ # Later ``pip install pycrypto`` will install over the packaged files resulting |
|
| 605 |
+ # in a useless mess of old, rpm-packaged files and pip-installed files. |
|
| 606 |
+ # Remove the package so that ``pip install python-crypto`` installs cleanly. |
|
| 607 |
+ # Note: other RPM packages may require ``python-crypto`` as well. For example, |
|
| 608 |
+ # RHEL6 does not install ``python-paramiko packages``. |
|
| 614 | 609 |
uninstall_package python-crypto |
| 615 | 610 |
|
| 616 |
- # A similar thing happens for python-lxml (a dependency of |
|
| 617 |
- # ipa-client, an auditing thing we don't care about). We have the |
|
| 618 |
- # build-dependencies the lxml pip-install will need (gcc, |
|
| 619 |
- # libxml2-dev & libxslt-dev) in the "general" rpm lists |
|
| 611 |
+ # A similar situation occurs with ``python-lxml``, which is required by |
|
| 612 |
+ # ``ipa-client``, an auditing package we don't care about. The |
|
| 613 |
+ # build-dependencies needed for ``pip install lxml`` (``gcc``, |
|
| 614 |
+ # ``libxml2-dev`` and ``libxslt-dev``) are present in ``files/rpms/general``. |
|
| 620 | 615 |
uninstall_package python-lxml |
| 621 | 616 |
|
| 622 |
- # If the dbus rpm was installed by the devstack rpm dependencies |
|
| 623 |
- # then you may hit a bug where the uuid isn't generated because |
|
| 624 |
- # the service was never started (PR#598200), causing issues for |
|
| 625 |
- # Nova stopping later on complaining that |
|
| 626 |
- # '/var/lib/dbus/machine-id' doesn't exist. |
|
| 617 |
+ # If the ``dbus`` package was installed by DevStack dependencies the |
|
| 618 |
+ # uuid may not be generated because the service was never started (PR#598200), |
|
| 619 |
+ # causing Nova to stop later on complaining that ``/var/lib/dbus/machine-id`` |
|
| 620 |
+ # does not exist. |
|
| 627 | 621 |
sudo service messagebus restart |
| 628 | 622 |
|
| 629 |
- # In setup.py, a "setup_requires" package is supposed to |
|
| 630 |
- # transient. However there is a bug with rhel6 distribute where |
|
| 631 |
- # setup_requires packages can register entry points that aren't |
|
| 632 |
- # cleared out properly after the setup-phase; the end result is |
|
| 633 |
- # installation failures (bz#924038). Thus we pre-install the |
|
| 634 |
- # problem package here; this way the setup_requires dependency is |
|
| 635 |
- # already satisfied and it will not need to be installed |
|
| 636 |
- # transiently, meaning we avoid the issue of it not being cleaned |
|
| 637 |
- # out properly. Note we do this before the track-depends below. |
|
| 623 |
+ # ``setup.py`` contains a ``setup_requires`` package that is supposed |
|
| 624 |
+ # to be transient. However, RHEL6 distribute has a bug where |
|
| 625 |
+ # ``setup_requires`` registers entry points that are not cleaned |
|
| 626 |
+ # out properly after the setup-phase resulting in installation failures |
|
| 627 |
+ # (bz#924038). Pre-install the problem package so the ``setup_requires`` |
|
| 628 |
+ # dependency is satisfied and it will not be installed transiently. |
|
| 629 |
+ # Note we do this before the track-depends below. |
|
| 638 | 630 |
pip_install hgtools |
| 639 | 631 |
|
| 640 |
- # The version of python-nose in the RHEL6 repo is incompatible |
|
| 641 |
- # with Tempest. As a workaround: |
|
| 642 |
- |
|
| 632 |
+ # RHEL6's version of ``python-nose`` is incompatible with Tempest. |
|
| 643 | 633 |
# Install nose 1.1 (Tempest-compatible) from EPEL |
| 644 | 634 |
install_package python-nose1.1 |
| 645 | 635 |
# Add a symlink for the new nosetests to allow tox for Tempest to |
| ... | ... |
@@ -850,10 +843,10 @@ fi |
| 850 | 850 |
init_service_check |
| 851 | 851 |
|
| 852 | 852 |
|
| 853 |
-# Kick off Sysstat |
|
| 854 |
-# ------------------------ |
|
| 855 |
-# run sysstat if it is enabled, this has to be early as daemon |
|
| 856 |
-# startup is one of the things to track. |
|
| 853 |
+# Sysstat |
|
| 854 |
+# ------- |
|
| 855 |
+ |
|
| 856 |
+# If enabled, systat has to start early to track OpenStack service startup. |
|
| 857 | 857 |
if is_service_enabled sysstat;then |
| 858 | 858 |
if [[ -n ${SCREEN_LOGDIR} ]]; then
|
| 859 | 859 |
screen_it sysstat "sar -o $SCREEN_LOGDIR/$SYSSTAT_FILE $SYSSTAT_INTERVAL" |
| ... | ... |
@@ -967,7 +960,7 @@ if is_service_enabled n-net q-dhcp; then |
| 967 | 967 |
rm -rf ${NOVA_STATE_PATH}/networks
|
| 968 | 968 |
sudo mkdir -p ${NOVA_STATE_PATH}/networks
|
| 969 | 969 |
sudo chown -R ${USER} ${NOVA_STATE_PATH}/networks
|
| 970 |
- # Force IP forwarding on, just on case |
|
| 970 |
+ # Force IP forwarding on, just in case |
|
| 971 | 971 |
sudo sysctl -w net.ipv4.ip_forward=1 |
| 972 | 972 |
fi |
| 973 | 973 |
|
| ... | ... |
@@ -1018,6 +1011,7 @@ if is_service_enabled nova; then |
| 1018 | 1018 |
XEN_FIREWALL_DRIVER=${XEN_FIREWALL_DRIVER:-"nova.virt.firewall.IptablesFirewallDriver"}
|
| 1019 | 1019 |
iniset $NOVA_CONF DEFAULT firewall_driver "$XEN_FIREWALL_DRIVER" |
| 1020 | 1020 |
|
| 1021 |
+ |
|
| 1021 | 1022 |
# OpenVZ |
| 1022 | 1023 |
# ------ |
| 1023 | 1024 |
|
| ... | ... |
@@ -1028,6 +1022,7 @@ if is_service_enabled nova; then |
| 1028 | 1028 |
LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"}
|
| 1029 | 1029 |
iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER" |
| 1030 | 1030 |
|
| 1031 |
+ |
|
| 1031 | 1032 |
# Bare Metal |
| 1032 | 1033 |
# ---------- |
| 1033 | 1034 |
|
| ... | ... |
@@ -1050,6 +1045,7 @@ if is_service_enabled nova; then |
| 1050 | 1050 |
iniset $NOVA_CONF baremetal ${I/=/ }
|
| 1051 | 1051 |
done |
| 1052 | 1052 |
|
| 1053 |
+ |
|
| 1053 | 1054 |
# PowerVM |
| 1054 | 1055 |
# ------- |
| 1055 | 1056 |
|
| ... | ... |
@@ -1069,8 +1065,9 @@ if is_service_enabled nova; then |
| 1069 | 1069 |
iniset $NOVA_CONF DEFAULT powervm_img_remote_path $POWERVM_IMG_REMOTE_PATH |
| 1070 | 1070 |
iniset $NOVA_CONF DEFAULT powervm_img_local_path $POWERVM_IMG_LOCAL_PATH |
| 1071 | 1071 |
|
| 1072 |
+ |
|
| 1072 | 1073 |
# vSphere API |
| 1073 |
- # ------- |
|
| 1074 |
+ # ----------- |
|
| 1074 | 1075 |
|
| 1075 | 1076 |
elif [ "$VIRT_DRIVER" = 'vsphere' ]; then |
| 1076 | 1077 |
echo_summary "Using VMware vCenter driver" |
| ... | ... |
@@ -1081,8 +1078,9 @@ if is_service_enabled nova; then |
| 1081 | 1081 |
iniset $NOVA_CONF DEFAULT vmwareapi_host_password "$VMWAREAPI_PASSWORD" |
| 1082 | 1082 |
iniset $NOVA_CONF DEFAULT vmwareapi_cluster_name "$VMWAREAPI_CLUSTER" |
| 1083 | 1083 |
|
| 1084 |
+ |
|
| 1084 | 1085 |
# fake |
| 1085 |
- # ----- |
|
| 1086 |
+ # ---- |
|
| 1086 | 1087 |
|
| 1087 | 1088 |
elif [ "$VIRT_DRIVER" = 'fake' ]; then |
| 1088 | 1089 |
echo_summary "Using fake Virt driver" |
| ... | ... |
@@ -1102,8 +1100,8 @@ if is_service_enabled nova; then |
| 1102 | 1102 |
iniset $NOVA_CONF DEFAULT scheduler_default_filters "RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter" |
| 1103 | 1103 |
|
| 1104 | 1104 |
|
| 1105 |
- # Default |
|
| 1106 |
- # ------- |
|
| 1105 |
+ # Default libvirt |
|
| 1106 |
+ # --------------- |
|
| 1107 | 1107 |
|
| 1108 | 1108 |
else |
| 1109 | 1109 |
echo_summary "Using libvirt virtualization driver" |
| ... | ... |
@@ -1296,7 +1294,6 @@ if is_service_enabled nova && is_baremetal; then |
| 1296 | 1296 |
screen_it baremetal "nova-baremetal-deploy-helper" |
| 1297 | 1297 |
fi |
| 1298 | 1298 |
|
| 1299 |
- |
|
| 1300 | 1299 |
# Save some values we generated for later use |
| 1301 | 1300 |
CURRENT_RUN_TIME=$(date "+$TIMESTAMP_FORMAT") |
| 1302 | 1301 |
echo "# $CURRENT_RUN_TIME" >$TOP_DIR/.stackenv |
| ... | ... |
@@ -73,20 +73,6 @@ CINDER_BRANCH=${CINDER_BRANCH:-master}
|
| 73 | 73 |
CINDERCLIENT_REPO=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
|
| 74 | 74 |
CINDERCLIENT_BRANCH=${CINDERCLIENT_BRANCH:-master}
|
| 75 | 75 |
|
| 76 |
-# compute service |
|
| 77 |
-NOVA_REPO=${NOVA_REPO:-${GIT_BASE}/openstack/nova.git}
|
|
| 78 |
-NOVA_BRANCH=${NOVA_BRANCH:-master}
|
|
| 79 |
- |
|
| 80 |
-# storage service |
|
| 81 |
-SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
|
|
| 82 |
-SWIFT_BRANCH=${SWIFT_BRANCH:-master}
|
|
| 83 |
-SWIFT3_REPO=${SWIFT3_REPO:-${GIT_BASE}/fujita/swift3.git}
|
|
| 84 |
-SWIFT3_BRANCH=${SWIFT3_BRANCH:-master}
|
|
| 85 |
- |
|
| 86 |
-# python swift client library |
|
| 87 |
-SWIFTCLIENT_REPO=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
|
|
| 88 |
-SWIFTCLIENT_BRANCH=${SWIFTCLIENT_BRANCH:-master}
|
|
| 89 |
- |
|
| 90 | 76 |
# image catalog service |
| 91 | 77 |
GLANCE_REPO=${GLANCE_REPO:-${GIT_BASE}/openstack/glance.git}
|
| 92 | 78 |
GLANCE_BRANCH=${GLANCE_BRANCH:-master}
|
| ... | ... |
@@ -95,22 +81,30 @@ GLANCE_BRANCH=${GLANCE_BRANCH:-master}
|
| 95 | 95 |
GLANCECLIENT_REPO=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
|
| 96 | 96 |
GLANCECLIENT_BRANCH=${GLANCECLIENT_BRANCH:-master}
|
| 97 | 97 |
|
| 98 |
-# unified auth system (manages accounts/tokens) |
|
| 99 |
-KEYSTONE_REPO=${KEYSTONE_REPO:-${GIT_BASE}/openstack/keystone.git}
|
|
| 100 |
-KEYSTONE_BRANCH=${KEYSTONE_BRANCH:-master}
|
|
| 101 |
- |
|
| 102 |
-# a websockets/html5 or flash powered VNC console for vm instances |
|
| 103 |
-NOVNC_REPO=${NOVNC_REPO:-${GIT_BASE}/kanaka/noVNC.git}
|
|
| 104 |
-NOVNC_BRANCH=${NOVNC_BRANCH:-master}
|
|
| 98 |
+# heat service |
|
| 99 |
+HEAT_REPO=${HEAT_REPO:-${GIT_BASE}/openstack/heat.git}
|
|
| 100 |
+HEAT_BRANCH=${HEAT_BRANCH:-master}
|
|
| 105 | 101 |
|
| 106 |
-# a websockets/html5 or flash powered SPICE console for vm instances |
|
| 107 |
-SPICE_REPO=${SPICE_REPO:-http://anongit.freedesktop.org/git/spice/spice-html5.git}
|
|
| 108 |
-SPICE_BRANCH=${SPICE_BRANCH:-master}
|
|
| 102 |
+# python heat client library |
|
| 103 |
+HEATCLIENT_REPO=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
|
|
| 104 |
+HEATCLIENT_BRANCH=${HEATCLIENT_BRANCH:-master}
|
|
| 109 | 105 |
|
| 110 | 106 |
# django powered web control panel for openstack |
| 111 | 107 |
HORIZON_REPO=${HORIZON_REPO:-${GIT_BASE}/openstack/horizon.git}
|
| 112 | 108 |
HORIZON_BRANCH=${HORIZON_BRANCH:-master}
|
| 113 | 109 |
|
| 110 |
+# unified auth system (manages accounts/tokens) |
|
| 111 |
+KEYSTONE_REPO=${KEYSTONE_REPO:-${GIT_BASE}/openstack/keystone.git}
|
|
| 112 |
+KEYSTONE_BRANCH=${KEYSTONE_BRANCH:-master}
|
|
| 113 |
+ |
|
| 114 |
+# python keystone client library to nova that horizon uses |
|
| 115 |
+KEYSTONECLIENT_REPO=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
|
|
| 116 |
+KEYSTONECLIENT_BRANCH=${KEYSTONECLIENT_BRANCH:-master}
|
|
| 117 |
+ |
|
| 118 |
+# compute service |
|
| 119 |
+NOVA_REPO=${NOVA_REPO:-${GIT_BASE}/openstack/nova.git}
|
|
| 120 |
+NOVA_BRANCH=${NOVA_BRANCH:-master}
|
|
| 121 |
+ |
|
| 114 | 122 |
# python client library to nova that horizon (and others) use |
| 115 | 123 |
NOVACLIENT_REPO=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
|
| 116 | 124 |
NOVACLIENT_BRANCH=${NOVACLIENT_BRANCH:-master}
|
| ... | ... |
@@ -119,9 +113,9 @@ NOVACLIENT_BRANCH=${NOVACLIENT_BRANCH:-master}
|
| 119 | 119 |
OPENSTACKCLIENT_REPO=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
|
| 120 | 120 |
OPENSTACKCLIENT_BRANCH=${OPENSTACKCLIENT_BRANCH:-master}
|
| 121 | 121 |
|
| 122 |
-# python keystone client library to nova that horizon uses |
|
| 123 |
-KEYSTONECLIENT_REPO=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
|
|
| 124 |
-KEYSTONECLIENT_BRANCH=${KEYSTONECLIENT_BRANCH:-master}
|
|
| 122 |
+# pbr drives the setuptools configs |
|
| 123 |
+PBR_REPO=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
|
|
| 124 |
+PBR_BRANCH=${PBR_BRANCH:-master}
|
|
| 125 | 125 |
|
| 126 | 126 |
# quantum service |
| 127 | 127 |
QUANTUM_REPO=${QUANTUM_REPO:-${GIT_BASE}/openstack/quantum.git}
|
| ... | ... |
@@ -131,21 +125,20 @@ QUANTUM_BRANCH=${QUANTUM_BRANCH:-master}
|
| 131 | 131 |
QUANTUMCLIENT_REPO=${QUANTUMCLIENT_REPO:-${GIT_BASE}/openstack/python-quantumclient.git}
|
| 132 | 132 |
QUANTUMCLIENT_BRANCH=${QUANTUMCLIENT_BRANCH:-master}
|
| 133 | 133 |
|
| 134 |
+# storage service |
|
| 135 |
+SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
|
|
| 136 |
+SWIFT_BRANCH=${SWIFT_BRANCH:-master}
|
|
| 137 |
+SWIFT3_REPO=${SWIFT3_REPO:-${GIT_BASE}/fujita/swift3.git}
|
|
| 138 |
+SWIFT3_BRANCH=${SWIFT3_BRANCH:-master}
|
|
| 139 |
+ |
|
| 140 |
+# python swift client library |
|
| 141 |
+SWIFTCLIENT_REPO=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
|
|
| 142 |
+SWIFTCLIENT_BRANCH=${SWIFTCLIENT_BRANCH:-master}
|
|
| 143 |
+ |
|
| 134 | 144 |
# Tempest test suite |
| 135 | 145 |
TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
|
| 136 | 146 |
TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
|
| 137 | 147 |
|
| 138 |
-# heat service |
|
| 139 |
-HEAT_REPO=${HEAT_REPO:-${GIT_BASE}/openstack/heat.git}
|
|
| 140 |
-HEAT_BRANCH=${HEAT_BRANCH:-master}
|
|
| 141 |
- |
|
| 142 |
-# python heat client library |
|
| 143 |
-HEATCLIENT_REPO=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
|
|
| 144 |
-HEATCLIENT_BRANCH=${HEATCLIENT_BRANCH:-master}
|
|
| 145 |
- |
|
| 146 |
-# ryu service |
|
| 147 |
-RYU_REPO=${RYU_REPO:-${GIT_BASE}/osrg/ryu.git}
|
|
| 148 |
-RYU_BRANCH=${RYU_BRANCH:-master}
|
|
| 149 | 148 |
|
| 150 | 149 |
# diskimage-builder |
| 151 | 150 |
BM_IMAGE_BUILD_REPO=${BM_IMAGE_BUILD_REPO:-${GIT_BASE}/stackforge/diskimage-builder.git}
|
| ... | ... |
@@ -157,10 +150,18 @@ BM_IMAGE_BUILD_BRANCH=${BM_IMAGE_BUILD_BRANCH:-master}
|
| 157 | 157 |
BM_POSEUR_REPO=${BM_POSEUR_REPO:-${GIT_BASE}/tripleo/bm_poseur.git}
|
| 158 | 158 |
BM_POSEUR_BRANCH=${BM_POSEUR_BRANCH:-master}
|
| 159 | 159 |
|
| 160 |
-# pbr |
|
| 161 |
-# Used to drive the setuptools configs |
|
| 162 |
-PBR_REPO=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
|
|
| 163 |
-PBR_BRANCH=${PBR_BRANCH:-master}
|
|
| 160 |
+# a websockets/html5 or flash powered VNC console for vm instances |
|
| 161 |
+NOVNC_REPO=${NOVNC_REPO:-${GIT_BASE}/kanaka/noVNC.git}
|
|
| 162 |
+NOVNC_BRANCH=${NOVNC_BRANCH:-master}
|
|
| 163 |
+ |
|
| 164 |
+# ryu service |
|
| 165 |
+RYU_REPO=${RYU_REPO:-${GIT_BASE}/osrg/ryu.git}
|
|
| 166 |
+RYU_BRANCH=${RYU_BRANCH:-master}
|
|
| 167 |
+ |
|
| 168 |
+# a websockets/html5 or flash powered SPICE console for vm instances |
|
| 169 |
+SPICE_REPO=${SPICE_REPO:-http://anongit.freedesktop.org/git/spice/spice-html5.git}
|
|
| 170 |
+SPICE_BRANCH=${SPICE_BRANCH:-master}
|
|
| 171 |
+ |
|
| 164 | 172 |
|
| 165 | 173 |
# Nova hypervisor configuration. We default to libvirt with **kvm** but will |
| 166 | 174 |
# drop back to **qemu** if we are unable to load the kvm module. ``stack.sh`` can |
| ... | ... |
@@ -184,18 +185,22 @@ case "$VIRT_DRIVER" in |
| 184 | 184 |
;; |
| 185 | 185 |
esac |
| 186 | 186 |
|
| 187 |
-# Specify a comma-separated list of UEC images to download and install into glance. |
|
| 188 |
-# supported urls here are: |
|
| 187 |
+ |
|
| 188 |
+# Images |
|
| 189 |
+# ------ |
|
| 190 |
+ |
|
| 191 |
+# Specify a comma-separated list of images to download and install into glance. |
|
| 192 |
+# Supported urls here are: |
|
| 189 | 193 |
# * "uec-style" images: |
| 190 | 194 |
# If the file ends in .tar.gz, uncompress the tarball and and select the first |
| 191 | 195 |
# .img file inside it as the image. If present, use "*-vmlinuz*" as the kernel |
| 192 | 196 |
# and "*-initrd*" as the ramdisk |
| 193 |
-# example: http://cloud-images.ubuntu.com/releases/oneiric/release/ubuntu-11.10-server-cloudimg-amd64.tar.gz |
|
| 197 |
+# example: http://cloud-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-amd64.tar.gz |
|
| 194 | 198 |
# * disk image (*.img,*.img.gz) |
| 195 | 199 |
# if file ends in .img, then it will be uploaded and registered as a to |
| 196 | 200 |
# glance as a disk image. If it ends in .gz, it is uncompressed first. |
| 197 | 201 |
# example: |
| 198 |
-# http://cloud-images.ubuntu.com/releases/oneiric/release/ubuntu-11.10-server-cloudimg-armel-disk1.img |
|
| 202 |
+# http://cloud-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-armel-disk1.img |
|
| 199 | 203 |
# http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-rootfs.img.gz |
| 200 | 204 |
# * OpenVZ image: |
| 201 | 205 |
# OpenVZ uses its own format of image, and does not support UEC style images |
| ... | ... |
@@ -222,11 +227,12 @@ case "$VIRT_DRIVER" in |
| 222 | 222 |
;; |
| 223 | 223 |
vsphere) |
| 224 | 224 |
IMAGE_URLS="";; |
| 225 |
- *) # otherwise, use the uec style image (with kernel, ramdisk, disk) |
|
| 225 |
+ *) # Default to Cirros with kernel, ramdisk and disk image |
|
| 226 | 226 |
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros-0.3.1-x86_64-uec}
|
| 227 | 227 |
IMAGE_URLS=${IMAGE_URLS:-"http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz"};;
|
| 228 | 228 |
esac |
| 229 | 229 |
|
| 230 |
+ |
|
| 230 | 231 |
# 5Gb default volume backing file size |
| 231 | 232 |
VOLUME_BACKING_FILE_SIZE=${VOLUME_BACKING_FILE_SIZE:-5130M}
|
| 232 | 233 |
|