Merge "Make changes such that -o nounset runs"
This commit is contained in:
commit
ca5b5485d9
2
clean.sh
2
clean.sh
@ -18,7 +18,7 @@ source $TOP_DIR/functions
|
|||||||
FILES=$TOP_DIR/files
|
FILES=$TOP_DIR/files
|
||||||
|
|
||||||
# Load local configuration
|
# Load local configuration
|
||||||
source $TOP_DIR/stackrc
|
source $TOP_DIR/openrc
|
||||||
|
|
||||||
# Get the variables that are set in stack.sh
|
# Get the variables that are set in stack.sh
|
||||||
if [[ -r $TOP_DIR/.stackenv ]]; then
|
if [[ -r $TOP_DIR/.stackenv ]]; then
|
||||||
|
@ -65,7 +65,7 @@ TUSKARCLIENT_BRANCH=${TUSKARCLIENT_BRANCH:-master}
|
|||||||
TUSKAR_DIR=$DEST/tuskar
|
TUSKAR_DIR=$DEST/tuskar
|
||||||
TUSKARCLIENT_DIR=$DEST/python-tuskarclient
|
TUSKARCLIENT_DIR=$DEST/python-tuskarclient
|
||||||
TUSKAR_AUTH_CACHE_DIR=${TUSKAR_AUTH_CACHE_DIR:-/var/cache/tuskar}
|
TUSKAR_AUTH_CACHE_DIR=${TUSKAR_AUTH_CACHE_DIR:-/var/cache/tuskar}
|
||||||
TUSKAR_STANDALONE=`trueorfalse False $TUSKAR_STANDALONE`
|
TUSKAR_STANDALONE=$(trueorfalse False TUSKAR_STANDALONE)
|
||||||
TUSKAR_CONF_DIR=/etc/tuskar
|
TUSKAR_CONF_DIR=/etc/tuskar
|
||||||
TUSKAR_CONF=$TUSKAR_CONF_DIR/tuskar.conf
|
TUSKAR_CONF=$TUSKAR_CONF_DIR/tuskar.conf
|
||||||
TUSKAR_API_HOST=${TUSKAR_API_HOST:-$HOST_IP}
|
TUSKAR_API_HOST=${TUSKAR_API_HOST:-$HOST_IP}
|
||||||
|
@ -353,7 +353,7 @@ function _ping_check_novanet {
|
|||||||
local boot_timeout=$3
|
local boot_timeout=$3
|
||||||
local expected=${4:-"True"}
|
local expected=${4:-"True"}
|
||||||
local check_command=""
|
local check_command=""
|
||||||
MULTI_HOST=`trueorfalse False $MULTI_HOST`
|
MULTI_HOST=$(trueorfalse False MULTI_HOST)
|
||||||
if [[ "$MULTI_HOST" = "True" && "$from_net" = "$PRIVATE_NETWORK_NAME" ]]; then
|
if [[ "$MULTI_HOST" = "True" && "$from_net" = "$PRIVATE_NETWORK_NAME" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#
|
#
|
||||||
# The following variables are assumed to be defined by certain functions:
|
# The following variables are assumed to be defined by certain functions:
|
||||||
#
|
#
|
||||||
# - ``GIT_DEPTH``
|
|
||||||
# - ``ENABLED_SERVICES``
|
# - ``ENABLED_SERVICES``
|
||||||
# - ``ERROR_ON_CLONE``
|
# - ``ERROR_ON_CLONE``
|
||||||
# - ``FILES``
|
# - ``FILES``
|
||||||
@ -43,6 +42,8 @@ declare -A GITREPO
|
|||||||
declare -A GITBRANCH
|
declare -A GITBRANCH
|
||||||
declare -A GITDIR
|
declare -A GITDIR
|
||||||
|
|
||||||
|
TRACK_DEPENDS=${TRACK_DEPENDS:-False}
|
||||||
|
|
||||||
# Config Functions
|
# Config Functions
|
||||||
# ================
|
# ================
|
||||||
|
|
||||||
@ -243,7 +244,8 @@ function trueorfalse {
|
|||||||
local xtrace=$(set +o | grep xtrace)
|
local xtrace=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
local default=$1
|
local default=$1
|
||||||
local testval=$2
|
local literal=$2
|
||||||
|
local testval=${!literal}
|
||||||
|
|
||||||
[[ -z "$testval" ]] && { echo "$default"; return; }
|
[[ -z "$testval" ]] && { echo "$default"; return; }
|
||||||
[[ "0 no No NO false False FALSE" =~ "$testval" ]] && { echo "False"; return; }
|
[[ "0 no No NO false False FALSE" =~ "$testval" ]] && { echo "False"; return; }
|
||||||
@ -252,6 +254,14 @@ function trueorfalse {
|
|||||||
$xtrace
|
$xtrace
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isset {
|
||||||
|
nounset=$(set +o | grep nounset)
|
||||||
|
set +o nounset
|
||||||
|
[[ -n "${!1+x}" ]]
|
||||||
|
result=$?
|
||||||
|
$nounset
|
||||||
|
return $result
|
||||||
|
}
|
||||||
|
|
||||||
# Control Functions
|
# Control Functions
|
||||||
# =================
|
# =================
|
||||||
@ -381,7 +391,11 @@ function warn {
|
|||||||
# ``os_UPDATE`` - update: ex. the ``5`` in ``RHEL6.5``
|
# ``os_UPDATE`` - update: ex. the ``5`` in ``RHEL6.5``
|
||||||
# ``os_PACKAGE`` - package type: ``deb`` or ``rpm``
|
# ``os_PACKAGE`` - package type: ``deb`` or ``rpm``
|
||||||
# ``os_CODENAME`` - vendor's codename for release: ``snow leopard``, ``trusty``
|
# ``os_CODENAME`` - vendor's codename for release: ``snow leopard``, ``trusty``
|
||||||
declare os_VENDOR os_RELEASE os_UPDATE os_PACKAGE os_CODENAME
|
os_VENDOR=""
|
||||||
|
os_RELEASE=""
|
||||||
|
os_UPDATE=""
|
||||||
|
os_PACKAGE=""
|
||||||
|
os_CODENAME=""
|
||||||
|
|
||||||
# GetOSVersion
|
# GetOSVersion
|
||||||
function GetOSVersion {
|
function GetOSVersion {
|
||||||
@ -577,8 +591,7 @@ function get_release_name_from_branch {
|
|||||||
# Set global ``RECLONE=yes`` to simulate a clone when dest-dir exists
|
# Set global ``RECLONE=yes`` to simulate a clone when dest-dir exists
|
||||||
# Set global ``ERROR_ON_CLONE=True`` to abort execution with an error if the git repo
|
# Set global ``ERROR_ON_CLONE=True`` to abort execution with an error if the git repo
|
||||||
# does not exist (default is False, meaning the repo will be cloned).
|
# does not exist (default is False, meaning the repo will be cloned).
|
||||||
# Set global ``GIT_DEPTH=<number>`` to limit the history depth of the git clone
|
# Uses globals ``ERROR_ON_CLONE``, ``OFFLINE``, ``RECLONE``
|
||||||
# Uses globals ``ERROR_ON_CLONE``, ``OFFLINE``, ``RECLONE``, ``GIT_DEPTH``
|
|
||||||
# git_clone remote dest-dir branch
|
# git_clone remote dest-dir branch
|
||||||
function git_clone {
|
function git_clone {
|
||||||
local git_remote=$1
|
local git_remote=$1
|
||||||
@ -587,8 +600,7 @@ function git_clone {
|
|||||||
local orig_dir=$(pwd)
|
local orig_dir=$(pwd)
|
||||||
local git_clone_flags=""
|
local git_clone_flags=""
|
||||||
|
|
||||||
RECLONE=$(trueorfalse False $RECLONE)
|
RECLONE=$(trueorfalse False RECLONE)
|
||||||
|
|
||||||
if [[ -n "${GIT_DEPTH}" ]]; then
|
if [[ -n "${GIT_DEPTH}" ]]; then
|
||||||
git_clone_flags="$git_clone_flags --depth $GIT_DEPTH"
|
git_clone_flags="$git_clone_flags --depth $GIT_DEPTH"
|
||||||
fi
|
fi
|
||||||
@ -995,9 +1007,10 @@ function apt_get {
|
|||||||
[[ "$(id -u)" = "0" ]] && sudo="env"
|
[[ "$(id -u)" = "0" ]] && sudo="env"
|
||||||
|
|
||||||
$xtrace
|
$xtrace
|
||||||
|
|
||||||
$sudo DEBIAN_FRONTEND=noninteractive \
|
$sudo DEBIAN_FRONTEND=noninteractive \
|
||||||
http_proxy=$http_proxy https_proxy=$https_proxy \
|
http_proxy=${http_proxy:-} https_proxy=${https_proxy:-} \
|
||||||
no_proxy=$no_proxy \
|
no_proxy=${no_proxy:-} \
|
||||||
apt-get --option "Dpkg::Options::=--force-confold" --assume-yes "$@"
|
apt-get --option "Dpkg::Options::=--force-confold" --assume-yes "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1016,10 +1029,10 @@ function get_packages {
|
|||||||
set +o xtrace
|
set +o xtrace
|
||||||
local services=$@
|
local services=$@
|
||||||
local package_dir=$(_get_package_dir)
|
local package_dir=$(_get_package_dir)
|
||||||
local file_to_parse
|
local file_to_parse=""
|
||||||
local service
|
local service=""
|
||||||
|
|
||||||
INSTALL_TESTONLY_PACKAGES=$(trueorfalse False $INSTALL_TESTONLY_PACKAGES)
|
INSTALL_TESTONLY_PACKAGES=$(trueorfalse False INSTALL_TESTONLY_PACKAGES)
|
||||||
|
|
||||||
if [[ -z "$package_dir" ]]; then
|
if [[ -z "$package_dir" ]]; then
|
||||||
echo "No package directory supplied"
|
echo "No package directory supplied"
|
||||||
@ -1129,6 +1142,10 @@ function get_packages {
|
|||||||
# Uses globals ``NO_UPDATE_REPOS``, ``REPOS_UPDATED``, ``RETRY_UPDATE``
|
# Uses globals ``NO_UPDATE_REPOS``, ``REPOS_UPDATED``, ``RETRY_UPDATE``
|
||||||
# install_package package [package ...]
|
# install_package package [package ...]
|
||||||
function update_package_repo {
|
function update_package_repo {
|
||||||
|
NO_UPDATE_REPOS=${NO_UPDATE_REPOS:-False}
|
||||||
|
REPOS_UPDATED=${REPOS_UPDATED:-False}
|
||||||
|
RETRY_UPDATE=${RETRY_UPDATE:-False}
|
||||||
|
|
||||||
if [[ "$NO_UPDATE_REPOS" = "True" ]]; then
|
if [[ "$NO_UPDATE_REPOS" = "True" ]]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
@ -1338,7 +1355,7 @@ function screen_process {
|
|||||||
|
|
||||||
SCREEN_NAME=${SCREEN_NAME:-stack}
|
SCREEN_NAME=${SCREEN_NAME:-stack}
|
||||||
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
||||||
USE_SCREEN=$(trueorfalse True $USE_SCREEN)
|
USE_SCREEN=$(trueorfalse True USE_SCREEN)
|
||||||
|
|
||||||
# Append the process to the screen rc file
|
# Append the process to the screen rc file
|
||||||
screen_rc "$name" "$command"
|
screen_rc "$name" "$command"
|
||||||
@ -1411,7 +1428,7 @@ function screen_stop_service {
|
|||||||
|
|
||||||
SCREEN_NAME=${SCREEN_NAME:-stack}
|
SCREEN_NAME=${SCREEN_NAME:-stack}
|
||||||
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
||||||
USE_SCREEN=$(trueorfalse True $USE_SCREEN)
|
USE_SCREEN=$(trueorfalse True USE_SCREEN)
|
||||||
|
|
||||||
if is_service_enabled $service; then
|
if is_service_enabled $service; then
|
||||||
# Clean up the screen window
|
# Clean up the screen window
|
||||||
@ -1429,7 +1446,7 @@ function stop_process {
|
|||||||
local service=$1
|
local service=$1
|
||||||
|
|
||||||
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
|
||||||
USE_SCREEN=$(trueorfalse True $USE_SCREEN)
|
USE_SCREEN=$(trueorfalse True USE_SCREEN)
|
||||||
|
|
||||||
if is_service_enabled $service; then
|
if is_service_enabled $service; then
|
||||||
# Kill via pid if we have one available
|
# Kill via pid if we have one available
|
||||||
@ -1479,7 +1496,7 @@ function tail_log {
|
|||||||
local name=$1
|
local name=$1
|
||||||
local logfile=$2
|
local logfile=$2
|
||||||
|
|
||||||
USE_SCREEN=$(trueorfalse True $USE_SCREEN)
|
USE_SCREEN=$(trueorfalse True USE_SCREEN)
|
||||||
if [[ "$USE_SCREEN" = "True" ]]; then
|
if [[ "$USE_SCREEN" = "True" ]]; then
|
||||||
screen_process "$name" "sudo tail -f $logfile"
|
screen_process "$name" "sudo tail -f $logfile"
|
||||||
fi
|
fi
|
||||||
@ -1589,7 +1606,8 @@ function get_python_exec_prefix {
|
|||||||
function pip_install {
|
function pip_install {
|
||||||
local xtrace=$(set +o | grep xtrace)
|
local xtrace=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
if [[ "$OFFLINE" = "True" || -z "$@" ]]; then
|
local offline=${OFFLINE:-False}
|
||||||
|
if [[ "$offline" == "True" || -z "$@" ]]; then
|
||||||
$xtrace
|
$xtrace
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@ -1618,20 +1636,20 @@ function pip_install {
|
|||||||
|
|
||||||
$xtrace
|
$xtrace
|
||||||
$sudo_pip \
|
$sudo_pip \
|
||||||
http_proxy=$http_proxy \
|
http_proxy=${http_proxy:-} \
|
||||||
https_proxy=$https_proxy \
|
https_proxy=${https_proxy:-} \
|
||||||
no_proxy=$no_proxy \
|
no_proxy=${no_proxy:-} \
|
||||||
$cmd_pip install \
|
$cmd_pip install \
|
||||||
$@
|
$@
|
||||||
|
|
||||||
INSTALL_TESTONLY_PACKAGES=$(trueorfalse False $INSTALL_TESTONLY_PACKAGES)
|
INSTALL_TESTONLY_PACKAGES=$(trueorfalse False INSTALL_TESTONLY_PACKAGES)
|
||||||
if [[ "$INSTALL_TESTONLY_PACKAGES" == "True" ]]; then
|
if [[ "$INSTALL_TESTONLY_PACKAGES" == "True" ]]; then
|
||||||
local test_req="$@/test-requirements.txt"
|
local test_req="$@/test-requirements.txt"
|
||||||
if [[ -e "$test_req" ]]; then
|
if [[ -e "$test_req" ]]; then
|
||||||
$sudo_pip \
|
$sudo_pip \
|
||||||
http_proxy=$http_proxy \
|
http_proxy=${http_proxy:-} \
|
||||||
https_proxy=$https_proxy \
|
https_proxy=${https_proxy:-} \
|
||||||
no_proxy=$no_proxy \
|
no_proxy=${no_proxy:-} \
|
||||||
$cmd_pip install \
|
$cmd_pip install \
|
||||||
-r $test_req
|
-r $test_req
|
||||||
fi
|
fi
|
||||||
@ -2101,13 +2119,13 @@ function cp_it {
|
|||||||
# http_proxy=http://proxy.example.com:3128/ no_proxy=repo.example.net ./stack.sh
|
# http_proxy=http://proxy.example.com:3128/ no_proxy=repo.example.net ./stack.sh
|
||||||
|
|
||||||
function export_proxy_variables {
|
function export_proxy_variables {
|
||||||
if [[ -n "$http_proxy" ]]; then
|
if isset http_proxy ; then
|
||||||
export http_proxy=$http_proxy
|
export http_proxy=$http_proxy
|
||||||
fi
|
fi
|
||||||
if [[ -n "$https_proxy" ]]; then
|
if isset https_proxy ; then
|
||||||
export https_proxy=$https_proxy
|
export https_proxy=$https_proxy
|
||||||
fi
|
fi
|
||||||
if [[ -n "$no_proxy" ]]; then
|
if isset no_proxy ; then
|
||||||
export no_proxy=$no_proxy
|
export no_proxy=$no_proxy
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -75,11 +75,14 @@ CEILOMETER_BACKEND=${CEILOMETER_BACKEND:-mysql}
|
|||||||
CEILOMETER_SERVICE_PROTOCOL=http
|
CEILOMETER_SERVICE_PROTOCOL=http
|
||||||
CEILOMETER_SERVICE_HOST=$SERVICE_HOST
|
CEILOMETER_SERVICE_HOST=$SERVICE_HOST
|
||||||
CEILOMETER_SERVICE_PORT=${CEILOMETER_SERVICE_PORT:-8777}
|
CEILOMETER_SERVICE_PORT=${CEILOMETER_SERVICE_PORT:-8777}
|
||||||
CEILOMETER_USE_MOD_WSGI=$(trueorfalse False $CEILOMETER_USE_MOD_WSGI)
|
CEILOMETER_USE_MOD_WSGI=$(trueorfalse False CEILOMETER_USE_MOD_WSGI)
|
||||||
|
|
||||||
# To enable OSprofiler change value of this variable to "notifications,profiler"
|
# To enable OSprofiler change value of this variable to "notifications,profiler"
|
||||||
CEILOMETER_NOTIFICATION_TOPICS=${CEILOMETER_NOTIFICATION_TOPICS:-notifications}
|
CEILOMETER_NOTIFICATION_TOPICS=${CEILOMETER_NOTIFICATION_TOPICS:-notifications}
|
||||||
|
|
||||||
|
CEILOMETER_COORDINATION_URL=${CEILOMETER_COORDINATION_URL:-}
|
||||||
|
CEILOMETER_PIPELINE_INTERVAL=${CEILOMETER_PIPELINE_INTERVAL:-}
|
||||||
|
|
||||||
# Tell Tempest this project is present
|
# Tell Tempest this project is present
|
||||||
TEMPEST_SERVICES+=,ceilometer
|
TEMPEST_SERVICES+=,ceilometer
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ fi
|
|||||||
# Maintain this here for backward-compatibility with the old configuration
|
# Maintain this here for backward-compatibility with the old configuration
|
||||||
# DEPRECATED: Use CINDER_ENABLED_BACKENDS instead
|
# DEPRECATED: Use CINDER_ENABLED_BACKENDS instead
|
||||||
# Support for multi lvm backend configuration (default is no support)
|
# Support for multi lvm backend configuration (default is no support)
|
||||||
CINDER_MULTI_LVM_BACKEND=$(trueorfalse False $CINDER_MULTI_LVM_BACKEND)
|
CINDER_MULTI_LVM_BACKEND=$(trueorfalse False CINDER_MULTI_LVM_BACKEND)
|
||||||
|
|
||||||
# Default backends
|
# Default backends
|
||||||
# The backend format is type:name where type is one of the supported backend
|
# The backend format is type:name where type is one of the supported backend
|
||||||
@ -85,7 +85,7 @@ fi
|
|||||||
# Should cinder perform secure deletion of volumes?
|
# Should cinder perform secure deletion of volumes?
|
||||||
# Defaults to true, can be set to False to avoid this bug when testing:
|
# Defaults to true, can be set to False to avoid this bug when testing:
|
||||||
# https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1023755
|
# https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1023755
|
||||||
CINDER_SECURE_DELETE=`trueorfalse True $CINDER_SECURE_DELETE`
|
CINDER_SECURE_DELETE=$(trueorfalse True CINDER_SECURE_DELETE)
|
||||||
|
|
||||||
# Cinder reports allocations back to the scheduler on periodic intervals
|
# Cinder reports allocations back to the scheduler on periodic intervals
|
||||||
# it turns out we can get an "out of space" issue when we run tests too
|
# it turns out we can get an "out of space" issue when we run tests too
|
||||||
|
@ -33,6 +33,7 @@ set +o xtrace
|
|||||||
# If ``VOLUME_GROUP`` is set, use it, otherwise we'll build a VG name based
|
# If ``VOLUME_GROUP`` is set, use it, otherwise we'll build a VG name based
|
||||||
# on ``VOLUME_GROUP_NAME`` that includes the backend name
|
# on ``VOLUME_GROUP_NAME`` that includes the backend name
|
||||||
# Grenade doesn't use ``VOLUME_GROUP2`` so it is left out
|
# Grenade doesn't use ``VOLUME_GROUP2`` so it is left out
|
||||||
|
VOLUME_GROUP=${VOLUME_GROUP:-}
|
||||||
VOLUME_GROUP_NAME=${VOLUME_GROUP:-${VOLUME_GROUP_NAME:-stack-volumes}}
|
VOLUME_GROUP_NAME=${VOLUME_GROUP:-${VOLUME_GROUP_NAME:-stack-volumes}}
|
||||||
|
|
||||||
# TODO: resurrect backing device...need to know how to set values
|
# TODO: resurrect backing device...need to know how to set values
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
XTRACE=$(set +o | grep xtrace)
|
XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
|
DATABASE_BACKENDS=""
|
||||||
|
|
||||||
# Register a database backend
|
# Register a database backend
|
||||||
#
|
#
|
||||||
@ -30,7 +31,7 @@ set +o xtrace
|
|||||||
#
|
#
|
||||||
# This is required to be defined before the specific database scripts are sourced
|
# This is required to be defined before the specific database scripts are sourced
|
||||||
function register_database {
|
function register_database {
|
||||||
[ -z "$DATABASE_BACKENDS" ] && DATABASE_BACKENDS=$1 || DATABASE_BACKENDS+=" $1"
|
DATABASE_BACKENDS+=" $1"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Sourcing the database libs sets DATABASE_BACKENDS with the available list
|
# Sourcing the database libs sets DATABASE_BACKENDS with the available list
|
||||||
|
@ -14,12 +14,22 @@ set +o xtrace
|
|||||||
|
|
||||||
register_database mysql
|
register_database mysql
|
||||||
|
|
||||||
|
# Linux distros, thank you for being incredibly consistent
|
||||||
|
MYSQL=mysql
|
||||||
|
if is_fedora; then
|
||||||
|
if [[ $DISTRO =~ (rhel6) ]]; then
|
||||||
|
MYSQL=mysqld
|
||||||
|
else
|
||||||
|
MYSQL=mariadb
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Functions
|
# Functions
|
||||||
# ---------
|
# ---------
|
||||||
|
|
||||||
# Get rid of everything enough to cleanly change database backends
|
# Get rid of everything enough to cleanly change database backends
|
||||||
function cleanup_database_mysql {
|
function cleanup_database_mysql {
|
||||||
|
stop_service $MYSQL
|
||||||
if is_ubuntu; then
|
if is_ubuntu; then
|
||||||
# Get ruthless with mysql
|
# Get ruthless with mysql
|
||||||
stop_service $MYSQL
|
stop_service $MYSQL
|
||||||
|
2
lib/dib
2
lib/dib
@ -26,7 +26,7 @@ TIE_DIR=$DEST/tripleo-image-elements
|
|||||||
# NOTE: Setting DIB_APT_SOURCES assumes you will be building
|
# NOTE: Setting DIB_APT_SOURCES assumes you will be building
|
||||||
# Debian/Ubuntu based images. Leave unset for other flavors.
|
# Debian/Ubuntu based images. Leave unset for other flavors.
|
||||||
DIB_APT_SOURCES=${DIB_APT_SOURCES:-""}
|
DIB_APT_SOURCES=${DIB_APT_SOURCES:-""}
|
||||||
DIB_BUILD_OFFLINE=$(trueorfalse False $DIB_BUILD_OFFLINE)
|
DIB_BUILD_OFFLINE=$(trueorfalse False DIB_BUILD_OFFLINE)
|
||||||
DIB_IMAGE_CACHE=$DATA_DIR/diskimage-builder/image-create
|
DIB_IMAGE_CACHE=$DATA_DIR/diskimage-builder/image-create
|
||||||
DIB_PIP_REPO=$DATA_DIR/diskimage-builder/pip-repo
|
DIB_PIP_REPO=$DATA_DIR/diskimage-builder/pip-repo
|
||||||
DIB_PIP_REPO_PORT=${DIB_PIP_REPO_PORT:-8899}
|
DIB_PIP_REPO_PORT=${DIB_PIP_REPO_PORT:-8899}
|
||||||
|
6
lib/heat
6
lib/heat
@ -37,13 +37,13 @@ HEAT_DIR=$DEST/heat
|
|||||||
HEAT_CFNTOOLS_DIR=$DEST/heat-cfntools
|
HEAT_CFNTOOLS_DIR=$DEST/heat-cfntools
|
||||||
HEAT_TEMPLATES_REPO_DIR=$DEST/heat-templates
|
HEAT_TEMPLATES_REPO_DIR=$DEST/heat-templates
|
||||||
HEAT_AUTH_CACHE_DIR=${HEAT_AUTH_CACHE_DIR:-/var/cache/heat}
|
HEAT_AUTH_CACHE_DIR=${HEAT_AUTH_CACHE_DIR:-/var/cache/heat}
|
||||||
HEAT_STANDALONE=`trueorfalse False $HEAT_STANDALONE`
|
HEAT_STANDALONE=$(trueorfalse False HEAT_STANDALONE)
|
||||||
HEAT_ENABLE_ADOPT_ABANDON=`trueorfalse False $HEAT_ENABLE_ADOPT_ABANDON`
|
HEAT_ENABLE_ADOPT_ABANDON=$(trueorfalse False HEAT_ENABLE_ADOPT_ABANDON)
|
||||||
HEAT_CONF_DIR=/etc/heat
|
HEAT_CONF_DIR=/etc/heat
|
||||||
HEAT_CONF=$HEAT_CONF_DIR/heat.conf
|
HEAT_CONF=$HEAT_CONF_DIR/heat.conf
|
||||||
HEAT_ENV_DIR=$HEAT_CONF_DIR/environment.d
|
HEAT_ENV_DIR=$HEAT_CONF_DIR/environment.d
|
||||||
HEAT_TEMPLATES_DIR=$HEAT_CONF_DIR/templates
|
HEAT_TEMPLATES_DIR=$HEAT_CONF_DIR/templates
|
||||||
HEAT_STACK_DOMAIN=`trueorfalse True $HEAT_STACK_DOMAIN`
|
HEAT_STACK_DOMAIN=$(trueorfalse True HEAT_STACK_DOMAIN)
|
||||||
HEAT_API_HOST=${HEAT_API_HOST:-$HOST_IP}
|
HEAT_API_HOST=${HEAT_API_HOST:-$HOST_IP}
|
||||||
HEAT_API_PORT=${HEAT_API_PORT:-8004}
|
HEAT_API_PORT=${HEAT_API_PORT:-8004}
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ function install_horizon {
|
|||||||
# Apache installation, because we mark it NOPRIME
|
# Apache installation, because we mark it NOPRIME
|
||||||
install_apache_wsgi
|
install_apache_wsgi
|
||||||
|
|
||||||
git_clone $HORIZON_REPO $HORIZON_DIR $HORIZON_BRANCH $HORIZON_TAG
|
git_clone $HORIZON_REPO $HORIZON_DIR $HORIZON_BRANCH
|
||||||
}
|
}
|
||||||
|
|
||||||
# start_horizon() - Start running processes, including screen
|
# start_horizon() - Start running processes, including screen
|
||||||
|
@ -60,7 +60,7 @@ IRONIC_IPMIINFO_FILE=${IRONIC_IPMIINFO_FILE:-$IRONIC_DATA_DIR/hardware_info}
|
|||||||
# Set up defaults for functional / integration testing
|
# Set up defaults for functional / integration testing
|
||||||
IRONIC_SCRIPTS_DIR=${IRONIC_SCRIPTS_DIR:-$TOP_DIR/tools/ironic/scripts}
|
IRONIC_SCRIPTS_DIR=${IRONIC_SCRIPTS_DIR:-$TOP_DIR/tools/ironic/scripts}
|
||||||
IRONIC_TEMPLATES_DIR=${IRONIC_TEMPLATES_DIR:-$TOP_DIR/tools/ironic/templates}
|
IRONIC_TEMPLATES_DIR=${IRONIC_TEMPLATES_DIR:-$TOP_DIR/tools/ironic/templates}
|
||||||
IRONIC_BAREMETAL_BASIC_OPS=$(trueorfalse False $IRONIC_BAREMETAL_BASIC_OPS)
|
IRONIC_BAREMETAL_BASIC_OPS=$(trueorfalse False IRONIC_BAREMETAL_BASIC_OPS)
|
||||||
IRONIC_ENABLED_DRIVERS=${IRONIC_ENABLED_DRIVERS:-fake,pxe_ssh,pxe_ipmitool}
|
IRONIC_ENABLED_DRIVERS=${IRONIC_ENABLED_DRIVERS:-fake,pxe_ssh,pxe_ipmitool}
|
||||||
IRONIC_SSH_USERNAME=${IRONIC_SSH_USERNAME:-`whoami`}
|
IRONIC_SSH_USERNAME=${IRONIC_SSH_USERNAME:-`whoami`}
|
||||||
IRONIC_SSH_KEY_DIR=${IRONIC_SSH_KEY_DIR:-$IRONIC_DATA_DIR/ssh_keys}
|
IRONIC_SSH_KEY_DIR=${IRONIC_SSH_KEY_DIR:-$IRONIC_DATA_DIR/ssh_keys}
|
||||||
@ -87,7 +87,7 @@ IRONIC_VM_LOG_CONSOLE=${IRONIC_VM_LOG_CONSOLE:-True}
|
|||||||
IRONIC_VM_LOG_DIR=${IRONIC_VM_LOG_DIR:-$IRONIC_DATA_DIR/logs/}
|
IRONIC_VM_LOG_DIR=${IRONIC_VM_LOG_DIR:-$IRONIC_DATA_DIR/logs/}
|
||||||
|
|
||||||
# Use DIB to create deploy ramdisk and kernel.
|
# Use DIB to create deploy ramdisk and kernel.
|
||||||
IRONIC_BUILD_DEPLOY_RAMDISK=`trueorfalse True $IRONIC_BUILD_DEPLOY_RAMDISK`
|
IRONIC_BUILD_DEPLOY_RAMDISK=$(trueorfalse True IRONIC_BUILD_DEPLOY_RAMDISK)
|
||||||
# If not use DIB, these files are used as deploy ramdisk/kernel.
|
# If not use DIB, these files are used as deploy ramdisk/kernel.
|
||||||
# (The value must be a absolute path)
|
# (The value must be a absolute path)
|
||||||
IRONIC_DEPLOY_RAMDISK=${IRONIC_DEPLOY_RAMDISK:-}
|
IRONIC_DEPLOY_RAMDISK=${IRONIC_DEPLOY_RAMDISK:-}
|
||||||
@ -116,7 +116,7 @@ IRONIC_HOSTPORT=${IRONIC_HOSTPORT:-$SERVICE_HOST:$IRONIC_SERVICE_PORT}
|
|||||||
TEMPEST_SERVICES+=,ironic
|
TEMPEST_SERVICES+=,ironic
|
||||||
|
|
||||||
# Enable iPXE
|
# Enable iPXE
|
||||||
IRONIC_IPXE_ENABLED=$(trueorfalse False $IRONIC_IPXE_ENABLED)
|
IRONIC_IPXE_ENABLED=$(trueorfalse False IRONIC_IPXE_ENABLED)
|
||||||
IRONIC_HTTP_DIR=${IRONIC_HTTP_DIR:-$IRONIC_DATA_DIR/httpboot}
|
IRONIC_HTTP_DIR=${IRONIC_HTTP_DIR:-$IRONIC_DATA_DIR/httpboot}
|
||||||
IRONIC_HTTP_SERVER=${IRONIC_HTTP_SERVER:-$HOST_IP}
|
IRONIC_HTTP_SERVER=${IRONIC_HTTP_SERVER:-$HOST_IP}
|
||||||
IRONIC_HTTP_PORT=${IRONIC_HTTP_PORT:-8088}
|
IRONIC_HTTP_PORT=${IRONIC_HTTP_PORT:-8088}
|
||||||
|
@ -71,6 +71,7 @@ KEYSTONE_ASSIGNMENT_BACKEND=${KEYSTONE_ASSIGNMENT_BACKEND:-sql}
|
|||||||
|
|
||||||
# Select Keystone's token format
|
# Select Keystone's token format
|
||||||
# Choose from 'UUID', 'PKI', or 'PKIZ'
|
# Choose from 'UUID', 'PKI', or 'PKIZ'
|
||||||
|
KEYSTONE_TOKEN_FORMAT=${KEYSTONE_TOKEN_FORMAT:-}
|
||||||
KEYSTONE_TOKEN_FORMAT=$(echo ${KEYSTONE_TOKEN_FORMAT} | tr '[:upper:]' '[:lower:]')
|
KEYSTONE_TOKEN_FORMAT=$(echo ${KEYSTONE_TOKEN_FORMAT} | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
# Set Keystone interface configuration
|
# Set Keystone interface configuration
|
||||||
|
10
lib/nova
10
lib/nova
@ -106,7 +106,7 @@ GUEST_INTERFACE_DEFAULT=$(ip link \
|
|||||||
|
|
||||||
# $NOVA_VNC_ENABLED can be used to forcibly enable vnc configuration.
|
# $NOVA_VNC_ENABLED can be used to forcibly enable vnc configuration.
|
||||||
# In multi-node setups allows compute hosts to not run n-novnc.
|
# In multi-node setups allows compute hosts to not run n-novnc.
|
||||||
NOVA_VNC_ENABLED=$(trueorfalse False $NOVA_VNC_ENABLED)
|
NOVA_VNC_ENABLED=$(trueorfalse False NOVA_VNC_ENABLED)
|
||||||
|
|
||||||
# Get hypervisor configuration
|
# Get hypervisor configuration
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
@ -145,11 +145,11 @@ FLAT_INTERFACE=${FLAT_INTERFACE:-$GUEST_INTERFACE_DEFAULT}
|
|||||||
# ``MULTI_HOST`` is a mode where each compute node runs its own network node. This
|
# ``MULTI_HOST`` is a mode where each compute node runs its own network node. This
|
||||||
# allows network operations and routing for a VM to occur on the server that is
|
# allows network operations and routing for a VM to occur on the server that is
|
||||||
# running the VM - removing a SPOF and bandwidth bottleneck.
|
# running the VM - removing a SPOF and bandwidth bottleneck.
|
||||||
MULTI_HOST=`trueorfalse False $MULTI_HOST`
|
MULTI_HOST=$(trueorfalse False MULTI_HOST)
|
||||||
|
|
||||||
# ``NOVA_ALLOW_MOVE_TO_SAME_HOST` can be set to False in multi node devstack,
|
# ``NOVA_ALLOW_MOVE_TO_SAME_HOST` can be set to False in multi node devstack,
|
||||||
# where there are at least two nova-computes.
|
# where there are at least two nova-computes.
|
||||||
NOVA_ALLOW_MOVE_TO_SAME_HOST=`trueorfalse True $NOVA_ALLOW_MOVE_TO_SAME_HOST`
|
NOVA_ALLOW_MOVE_TO_SAME_HOST=$(trueorfalse True NOVA_ALLOW_MOVE_TO_SAME_HOST)
|
||||||
|
|
||||||
# Test floating pool and range are used for testing. They are defined
|
# Test floating pool and range are used for testing. They are defined
|
||||||
# here until the admin APIs can replace nova-manage
|
# here until the admin APIs can replace nova-manage
|
||||||
@ -657,7 +657,7 @@ function install_nova {
|
|||||||
|
|
||||||
if is_service_enabled n-novnc; then
|
if is_service_enabled n-novnc; then
|
||||||
# a websockets/html5 or flash powered VNC console for vm instances
|
# a websockets/html5 or flash powered VNC console for vm instances
|
||||||
NOVNC_FROM_PACKAGE=`trueorfalse False $NOVNC_FROM_PACKAGE`
|
NOVNC_FROM_PACKAGE=$(trueorfalse False NOVNC_FROM_PACKAGE)
|
||||||
if [ "$NOVNC_FROM_PACKAGE" = "True" ]; then
|
if [ "$NOVNC_FROM_PACKAGE" = "True" ]; then
|
||||||
NOVNC_WEB_DIR=/usr/share/novnc
|
NOVNC_WEB_DIR=/usr/share/novnc
|
||||||
install_package novnc
|
install_package novnc
|
||||||
@ -669,7 +669,7 @@ function install_nova {
|
|||||||
|
|
||||||
if is_service_enabled n-spice; then
|
if is_service_enabled n-spice; then
|
||||||
# a websockets/html5 or flash powered SPICE console for vm instances
|
# a websockets/html5 or flash powered SPICE console for vm instances
|
||||||
SPICE_FROM_PACKAGE=`trueorfalse True $SPICE_FROM_PACKAGE`
|
SPICE_FROM_PACKAGE=$(trueorfalse True SPICE_FROM_PACKAGE)
|
||||||
if [ "$SPICE_FROM_PACKAGE" = "True" ]; then
|
if [ "$SPICE_FROM_PACKAGE" = "True" ]; then
|
||||||
SPICE_WEB_DIR=/usr/share/spice-html5
|
SPICE_WEB_DIR=/usr/share/spice-html5
|
||||||
install_package spice-html5
|
install_package spice-html5
|
||||||
|
@ -15,7 +15,7 @@ set +o xtrace
|
|||||||
# --------
|
# --------
|
||||||
|
|
||||||
# if we should turn on massive libvirt debugging
|
# if we should turn on massive libvirt debugging
|
||||||
DEBUG_LIBVIRT=$(trueorfalse False $DEBUG_LIBVIRT)
|
DEBUG_LIBVIRT=$(trueorfalse False DEBUG_LIBVIRT)
|
||||||
|
|
||||||
# Installs required distro-specific libvirt packages.
|
# Installs required distro-specific libvirt packages.
|
||||||
function install_libvirt {
|
function install_libvirt {
|
||||||
|
@ -54,7 +54,7 @@ function configure_nova_hypervisor {
|
|||||||
iniset $NOVA_CONF DEFAULT vnc_enabled "false"
|
iniset $NOVA_CONF DEFAULT vnc_enabled "false"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ENABLE_FILE_INJECTION=$(trueorfalse False $ENABLE_FILE_INJECTION)
|
ENABLE_FILE_INJECTION=$(trueorfalse False ENABLE_FILE_INJECTION)
|
||||||
if [[ "$ENABLE_FILE_INJECTION" = "True" ]] ; then
|
if [[ "$ENABLE_FILE_INJECTION" = "True" ]] ; then
|
||||||
# When libguestfs is available for file injection, enable using
|
# When libguestfs is available for file injection, enable using
|
||||||
# libguestfs to inspect the image and figure out the proper
|
# libguestfs to inspect the image and figure out the proper
|
||||||
|
@ -21,6 +21,11 @@
|
|||||||
XTRACE=$(set +o | grep xtrace)
|
XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
|
RPC_MESSAGING_PROTOCOL=${RPC_MESSAGING_PROTOCOL:-0.9}
|
||||||
|
|
||||||
|
# TODO(sdague): RPC backend selection is super wonky because we treat
|
||||||
|
# messaging server as a service, which it really isn't for multi host
|
||||||
|
QPID_HOST=${QPID_HOST:-}
|
||||||
|
|
||||||
# Functions
|
# Functions
|
||||||
# ---------
|
# ---------
|
||||||
@ -68,9 +73,6 @@ function check_rpc_backend {
|
|||||||
function cleanup_rpc_backend {
|
function cleanup_rpc_backend {
|
||||||
if is_service_enabled rabbit; then
|
if is_service_enabled rabbit; then
|
||||||
# Obliterate rabbitmq-server
|
# Obliterate rabbitmq-server
|
||||||
if [ -n "$RABBIT_USERID" ]; then
|
|
||||||
sudo rabbitmqctl delete_user "$RABBIT_USERID"
|
|
||||||
fi
|
|
||||||
uninstall_package rabbitmq-server
|
uninstall_package rabbitmq-server
|
||||||
sudo killall epmd || sudo killall -9 epmd
|
sudo killall epmd || sudo killall -9 epmd
|
||||||
if is_ubuntu; then
|
if is_ubuntu; then
|
||||||
|
@ -82,7 +82,7 @@ SWIFT_EXTRAS_MIDDLEWARE=${SWIFT_EXTRAS_MIDDLEWARE:-formpost staticweb}
|
|||||||
|
|
||||||
# Set ``SWIFT_EXTRAS_MIDDLEWARE_LAST`` to extras middlewares that need to be at
|
# Set ``SWIFT_EXTRAS_MIDDLEWARE_LAST`` to extras middlewares that need to be at
|
||||||
# the end of the pipeline.
|
# the end of the pipeline.
|
||||||
SWIFT_EXTRAS_MIDDLEWARE_LAST=${SWIFT_EXTRAS_MIDDLEWARE_LAST}
|
SWIFT_EXTRAS_MIDDLEWARE_LAST=${SWIFT_EXTRAS_MIDDLEWARE_LAST:-}
|
||||||
|
|
||||||
# Set ``SWIFT_EXTRAS_MIDDLEWARE_NO_AUTH`` to extras middlewares that need to be at
|
# Set ``SWIFT_EXTRAS_MIDDLEWARE_NO_AUTH`` to extras middlewares that need to be at
|
||||||
# the beginning of the pipeline, before authentication middlewares.
|
# the beginning of the pipeline, before authentication middlewares.
|
||||||
@ -127,7 +127,7 @@ ACCOUNT_PORT_BASE=${ACCOUNT_PORT_BASE:-6012}
|
|||||||
|
|
||||||
# Enable tempurl feature
|
# Enable tempurl feature
|
||||||
SWIFT_ENABLE_TEMPURLS=${SWIFT_ENABLE_TEMPURLS:-False}
|
SWIFT_ENABLE_TEMPURLS=${SWIFT_ENABLE_TEMPURLS:-False}
|
||||||
SWIFT_TEMPURL_KEY=${SWIFT_TEMPURL_KEY}
|
SWIFT_TEMPURL_KEY=${SWIFT_TEMPURL_KEY:-}
|
||||||
|
|
||||||
# Tell Tempest this project is present
|
# Tell Tempest this project is present
|
||||||
TEMPEST_SERVICES+=,swift
|
TEMPEST_SERVICES+=,swift
|
||||||
|
@ -75,8 +75,8 @@ TEMPEST_DEFAULT_STORAGE_PROTOCOL="iSCSI"
|
|||||||
TEMPEST_STORAGE_PROTOCOL=${TEMPEST_STORAGE_PROTOCOL:-$TEMPEST_DEFAULT_STORAGE_PROTOCOL}
|
TEMPEST_STORAGE_PROTOCOL=${TEMPEST_STORAGE_PROTOCOL:-$TEMPEST_DEFAULT_STORAGE_PROTOCOL}
|
||||||
|
|
||||||
# Neutron/Network variables
|
# Neutron/Network variables
|
||||||
IPV6_ENABLED=$(trueorfalse True $IPV6_ENABLED)
|
IPV6_ENABLED=$(trueorfalse True IPV6_ENABLED)
|
||||||
IPV6_SUBNET_ATTRIBUTES_ENABLED=$(trueorfalse True $IPV6_SUBNET_ATTRIBUTES_ENABLED)
|
IPV6_SUBNET_ATTRIBUTES_ENABLED=$(trueorfalse True IPV6_SUBNET_ATTRIBUTES_ENABLED)
|
||||||
|
|
||||||
# Functions
|
# Functions
|
||||||
# ---------
|
# ---------
|
||||||
|
72
stack.sh
72
stack.sh
@ -40,6 +40,12 @@ PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
|
|||||||
# Keep track of the devstack directory
|
# Keep track of the devstack directory
|
||||||
TOP_DIR=$(cd $(dirname "$0") && pwd)
|
TOP_DIR=$(cd $(dirname "$0") && pwd)
|
||||||
|
|
||||||
|
# Check for uninitialized variables, a big cause of bugs
|
||||||
|
NOUNSET=${NOUNSET:-}
|
||||||
|
if [[ -n "$NOUNSET" ]]; then
|
||||||
|
set -o nounset
|
||||||
|
fi
|
||||||
|
|
||||||
# Sanity Checks
|
# Sanity Checks
|
||||||
# -------------
|
# -------------
|
||||||
|
|
||||||
@ -79,6 +85,9 @@ fi
|
|||||||
# Prepare the environment
|
# Prepare the environment
|
||||||
# -----------------------
|
# -----------------------
|
||||||
|
|
||||||
|
# Initialize variables:
|
||||||
|
LAST_SPINNER_PID=""
|
||||||
|
|
||||||
# Import common functions
|
# Import common functions
|
||||||
source $TOP_DIR/functions
|
source $TOP_DIR/functions
|
||||||
|
|
||||||
@ -172,12 +181,12 @@ export_proxy_variables
|
|||||||
disable_negated_services
|
disable_negated_services
|
||||||
|
|
||||||
# Look for obsolete stuff
|
# Look for obsolete stuff
|
||||||
if [[ ,${ENABLED_SERVICES}, =~ ,"swift", ]]; then
|
# if [[ ,${ENABLED_SERVICES}, =~ ,"swift", ]]; then
|
||||||
echo "FATAL: 'swift' is not supported as a service name"
|
# echo "FATAL: 'swift' is not supported as a service name"
|
||||||
echo "FATAL: Use the actual swift service names to enable them as required:"
|
# echo "FATAL: Use the actual swift service names to enable them as required:"
|
||||||
echo "FATAL: s-proxy s-object s-container s-account"
|
# echo "FATAL: s-proxy s-object s-container s-account"
|
||||||
exit 1
|
# exit 1
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
# Configure sudo
|
# Configure sudo
|
||||||
# --------------
|
# --------------
|
||||||
@ -311,7 +320,7 @@ fi
|
|||||||
# -----------------
|
# -----------------
|
||||||
|
|
||||||
# Set up logging level
|
# Set up logging level
|
||||||
VERBOSE=$(trueorfalse True $VERBOSE)
|
VERBOSE=$(trueorfalse True VERBOSE)
|
||||||
|
|
||||||
# Draw a spinner so the user knows something is happening
|
# Draw a spinner so the user knows something is happening
|
||||||
function spinner {
|
function spinner {
|
||||||
@ -482,47 +491,6 @@ set -o errexit
|
|||||||
# an error. It is also useful for following along as the install occurs.
|
# an error. It is also useful for following along as the install occurs.
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
|
|
||||||
# Common Configuration
|
|
||||||
# --------------------
|
|
||||||
|
|
||||||
# Set ``OFFLINE`` to ``True`` to configure ``stack.sh`` to run cleanly without
|
|
||||||
# Internet access. ``stack.sh`` must have been previously run with Internet
|
|
||||||
# access to install prerequisites and fetch repositories.
|
|
||||||
OFFLINE=`trueorfalse False $OFFLINE`
|
|
||||||
|
|
||||||
# Set ``ERROR_ON_CLONE`` to ``True`` to configure ``stack.sh`` to exit if
|
|
||||||
# the destination git repository does not exist during the ``git_clone``
|
|
||||||
# operation.
|
|
||||||
ERROR_ON_CLONE=`trueorfalse False $ERROR_ON_CLONE`
|
|
||||||
|
|
||||||
# Whether to enable the debug log level in OpenStack services
|
|
||||||
ENABLE_DEBUG_LOG_LEVEL=`trueorfalse True $ENABLE_DEBUG_LOG_LEVEL`
|
|
||||||
|
|
||||||
# Set fixed and floating range here so we can make sure not to use addresses
|
|
||||||
# from either range when attempting to guess the IP to use for the host.
|
|
||||||
# Note that setting FIXED_RANGE may be necessary when running DevStack
|
|
||||||
# in an OpenStack cloud that uses either of these address ranges internally.
|
|
||||||
FLOATING_RANGE=${FLOATING_RANGE:-172.24.4.0/24}
|
|
||||||
FIXED_RANGE=${FIXED_RANGE:-10.0.0.0/24}
|
|
||||||
FIXED_NETWORK_SIZE=${FIXED_NETWORK_SIZE:-256}
|
|
||||||
|
|
||||||
HOST_IP=$(get_default_host_ip $FIXED_RANGE $FLOATING_RANGE "$HOST_IP_IFACE" "$HOST_IP")
|
|
||||||
if [ "$HOST_IP" == "" ]; then
|
|
||||||
die $LINENO "Could not determine host ip address. See local.conf for suggestions on setting HOST_IP."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Allow the use of an alternate hostname (such as localhost/127.0.0.1) for service endpoints.
|
|
||||||
SERVICE_HOST=${SERVICE_HOST:-$HOST_IP}
|
|
||||||
|
|
||||||
# Configure services to use syslog instead of writing to individual log files
|
|
||||||
SYSLOG=`trueorfalse False $SYSLOG`
|
|
||||||
SYSLOG_HOST=${SYSLOG_HOST:-$HOST_IP}
|
|
||||||
SYSLOG_PORT=${SYSLOG_PORT:-516}
|
|
||||||
|
|
||||||
# Use color for logging output (only available if syslog is not used)
|
|
||||||
LOG_COLOR=`trueorfalse True $LOG_COLOR`
|
|
||||||
|
|
||||||
# Reset the bundle of CA certificates
|
# Reset the bundle of CA certificates
|
||||||
SSL_BUNDLE_FILE="$DATA_DIR/ca-bundle.pem"
|
SSL_BUNDLE_FILE="$DATA_DIR/ca-bundle.pem"
|
||||||
rm -f $SSL_BUNDLE_FILE
|
rm -f $SSL_BUNDLE_FILE
|
||||||
@ -535,9 +503,6 @@ source $TOP_DIR/lib/rpc_backend
|
|||||||
# and the specified rpc backend is available on your platform.
|
# and the specified rpc backend is available on your platform.
|
||||||
check_rpc_backend
|
check_rpc_backend
|
||||||
|
|
||||||
# Use native SSL for servers in SSL_ENABLED_SERVICES
|
|
||||||
USE_SSL=$(trueorfalse False $USE_SSL)
|
|
||||||
|
|
||||||
# Service to enable with SSL if USE_SSL is True
|
# Service to enable with SSL if USE_SSL is True
|
||||||
SSL_ENABLED_SERVICES="key,nova,cinder,glance,s-proxy,neutron"
|
SSL_ENABLED_SERVICES="key,nova,cinder,glance,s-proxy,neutron"
|
||||||
|
|
||||||
@ -708,7 +673,7 @@ source $TOP_DIR/tools/install_prereqs.sh
|
|||||||
|
|
||||||
# Configure an appropriate python environment
|
# Configure an appropriate python environment
|
||||||
if [[ "$OFFLINE" != "True" ]]; then
|
if [[ "$OFFLINE" != "True" ]]; then
|
||||||
PYPI_ALTERNATIVE_URL=$PYPI_ALTERNATIVE_URL $TOP_DIR/tools/install_pip.sh
|
PYPI_ALTERNATIVE_URL=${PYPI_ALTERNATIVE_URL:-""} $TOP_DIR/tools/install_pip.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
TRACK_DEPENDS=${TRACK_DEPENDS:-False}
|
TRACK_DEPENDS=${TRACK_DEPENDS:-False}
|
||||||
@ -944,13 +909,14 @@ fi
|
|||||||
# Configure screen
|
# Configure screen
|
||||||
# ----------------
|
# ----------------
|
||||||
|
|
||||||
USE_SCREEN=$(trueorfalse True $USE_SCREEN)
|
USE_SCREEN=$(trueorfalse True USE_SCREEN)
|
||||||
if [[ "$USE_SCREEN" == "True" ]]; then
|
if [[ "$USE_SCREEN" == "True" ]]; then
|
||||||
# Create a new named screen to run processes in
|
# Create a new named screen to run processes in
|
||||||
screen -d -m -S $SCREEN_NAME -t shell -s /bin/bash
|
screen -d -m -S $SCREEN_NAME -t shell -s /bin/bash
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
# Set a reasonable status bar
|
# Set a reasonable status bar
|
||||||
|
SCREEN_HARDSTATUS=${SCREEN_HARDSTATUS-:}
|
||||||
if [ -z "$SCREEN_HARDSTATUS" ]; then
|
if [ -z "$SCREEN_HARDSTATUS" ]; then
|
||||||
SCREEN_HARDSTATUS='%{= .} %-Lw%{= .}%> %n%f %t*%{= .}%+Lw%< %-=%{g}(%{d}%H/%l%{g})'
|
SCREEN_HARDSTATUS='%{= .} %-Lw%{= .}%> %n%f %t*%{= .}%+Lw%< %-=%{g}(%{d}%H/%l%{g})'
|
||||||
fi
|
fi
|
||||||
|
62
stackrc
62
stackrc
@ -43,9 +43,17 @@ REGION_NAME=${REGION_NAME:-RegionOne}
|
|||||||
# enable_service q-meta
|
# enable_service q-meta
|
||||||
# # Optional, to enable tempest configuration as part of devstack
|
# # Optional, to enable tempest configuration as part of devstack
|
||||||
# enable_service tempest
|
# enable_service tempest
|
||||||
|
function isset {
|
||||||
|
local nounset=$(set +o | grep nounset)
|
||||||
|
set +o nounset
|
||||||
|
[[ -n "${!1+x}" ]]
|
||||||
|
result=$?
|
||||||
|
$nounset
|
||||||
|
return $result
|
||||||
|
}
|
||||||
|
|
||||||
# this allows us to pass ENABLED_SERVICES
|
# this allows us to pass ENABLED_SERVICES
|
||||||
if [[ -z "$ENABLED_SERVICES" ]]; then
|
if ! isset ENABLED_SERVICES ; then
|
||||||
# core compute (glance / keystone / nova (+ nova-network))
|
# core compute (glance / keystone / nova (+ nova-network))
|
||||||
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,n-sch,n-xvnc,n-cauth
|
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,n-sch,n-xvnc,n-cauth
|
||||||
# cinder
|
# cinder
|
||||||
@ -106,7 +114,7 @@ fi
|
|||||||
|
|
||||||
# This can be used to turn database query logging on and off
|
# This can be used to turn database query logging on and off
|
||||||
# (currently only implemented for MySQL backend)
|
# (currently only implemented for MySQL backend)
|
||||||
DATABASE_QUERY_LOGGING=$(trueorfalse True $DATABASE_QUERY_LOGGING)
|
DATABASE_QUERY_LOGGING=$(trueorfalse True DATABASE_QUERY_LOGGING)
|
||||||
|
|
||||||
# Set a timeout for git operations. If git is still running when the
|
# Set a timeout for git operations. If git is still running when the
|
||||||
# timeout expires, the command will be retried up to 3 times. This is
|
# timeout expires, the command will be retried up to 3 times. This is
|
||||||
@ -593,7 +601,7 @@ fi
|
|||||||
|
|
||||||
# Staging Area for New Images, have them here for at least 24hrs for nodepool
|
# Staging Area for New Images, have them here for at least 24hrs for nodepool
|
||||||
# to cache them otherwise the failure rates in the gate are too high
|
# to cache them otherwise the failure rates in the gate are too high
|
||||||
PRECACHE_IMAGES=$(trueorfalse False $PRECACHE_IMAGES)
|
PRECACHE_IMAGES=$(trueorfalse False PRECACHE_IMAGES)
|
||||||
if [[ "$PRECACHE_IMAGES" == "True" ]]; then
|
if [[ "$PRECACHE_IMAGES" == "True" ]]; then
|
||||||
# staging in update for nodepool
|
# staging in update for nodepool
|
||||||
IMAGE_URL="https://download.fedoraproject.org/pub/alt/openstack/20/x86_64/Fedora-x86_64-20-20140618-sda.qcow2"
|
IMAGE_URL="https://download.fedoraproject.org/pub/alt/openstack/20/x86_64/Fedora-x86_64-20-20140618-sda.qcow2"
|
||||||
@ -646,6 +654,54 @@ SERVICE_TIMEOUT=${SERVICE_TIMEOUT:-60}
|
|||||||
# till we get to the point we need to handle this automatically
|
# till we get to the point we need to handle this automatically
|
||||||
YUM=${YUM:-yum}
|
YUM=${YUM:-yum}
|
||||||
|
|
||||||
|
# Common Configuration
|
||||||
|
# --------------------
|
||||||
|
|
||||||
|
# Set ``OFFLINE`` to ``True`` to configure ``stack.sh`` to run cleanly without
|
||||||
|
# Internet access. ``stack.sh`` must have been previously run with Internet
|
||||||
|
# access to install prerequisites and fetch repositories.
|
||||||
|
OFFLINE=$(trueorfalse False OFFLINE)
|
||||||
|
|
||||||
|
# Set ``ERROR_ON_CLONE`` to ``True`` to configure ``stack.sh`` to exit if
|
||||||
|
# the destination git repository does not exist during the ``git_clone``
|
||||||
|
# operation.
|
||||||
|
ERROR_ON_CLONE=$(trueorfalse False ERROR_ON_CLONE)
|
||||||
|
|
||||||
|
# Whether to enable the debug log level in OpenStack services
|
||||||
|
ENABLE_DEBUG_LOG_LEVEL=$(trueorfalse True ENABLE_DEBUG_LOG_LEVEL)
|
||||||
|
|
||||||
|
# Set fixed and floating range here so we can make sure not to use addresses
|
||||||
|
# from either range when attempting to guess the IP to use for the host.
|
||||||
|
# Note that setting FIXED_RANGE may be necessary when running DevStack
|
||||||
|
# in an OpenStack cloud that uses either of these address ranges internally.
|
||||||
|
FLOATING_RANGE=${FLOATING_RANGE:-172.24.4.0/24}
|
||||||
|
FIXED_RANGE=${FIXED_RANGE:-10.0.0.0/24}
|
||||||
|
FIXED_NETWORK_SIZE=${FIXED_NETWORK_SIZE:-256}
|
||||||
|
HOST_IP_IFACE=${HOST_IP_IFACE:-}
|
||||||
|
HOST_IP=${HOST_IP:-}
|
||||||
|
|
||||||
|
HOST_IP=$(get_default_host_ip $FIXED_RANGE $FLOATING_RANGE "$HOST_IP_IFACE" "$HOST_IP")
|
||||||
|
if [ "$HOST_IP" == "" ]; then
|
||||||
|
die $LINENO "Could not determine host ip address. See local.conf for suggestions on setting HOST_IP."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Allow the use of an alternate hostname (such as localhost/127.0.0.1) for service endpoints.
|
||||||
|
SERVICE_HOST=${SERVICE_HOST:-$HOST_IP}
|
||||||
|
|
||||||
|
# Configure services to use syslog instead of writing to individual log files
|
||||||
|
SYSLOG=$(trueorfalse False SYSLOG)
|
||||||
|
SYSLOG_HOST=${SYSLOG_HOST:-$HOST_IP}
|
||||||
|
SYSLOG_PORT=${SYSLOG_PORT:-516}
|
||||||
|
|
||||||
|
# Use color for logging output (only available if syslog is not used)
|
||||||
|
LOG_COLOR=$(trueorfalse True LOG_COLOR)
|
||||||
|
|
||||||
|
# Set global ``GIT_DEPTH=<number>`` to limit the history depth of the git clone
|
||||||
|
GIT_DEPTH=${GIT_DEPTH:-1}
|
||||||
|
|
||||||
|
# Use native SSL for servers in SSL_ENABLED_SERVICES
|
||||||
|
USE_SSL=$(trueorfalse False USE_SSL)
|
||||||
|
|
||||||
# Following entries need to be last items in file
|
# Following entries need to be last items in file
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
|
34
tests/test_functions.sh
Executable file
34
tests/test_functions.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Tests for DevStack meta-config functions
|
||||||
|
|
||||||
|
TOP=$(cd $(dirname "$0")/.. && pwd)
|
||||||
|
|
||||||
|
# Import common functions
|
||||||
|
source $TOP/functions
|
||||||
|
source $TOP/tests/unittest.sh
|
||||||
|
|
||||||
|
function test_truefalse {
|
||||||
|
local one=1
|
||||||
|
local captrue=True
|
||||||
|
local lowtrue=true
|
||||||
|
local abrevtrue=t
|
||||||
|
local zero=0
|
||||||
|
local capfalse=False
|
||||||
|
local lowfalse=false
|
||||||
|
local abrevfalse=f
|
||||||
|
for against in True False; do
|
||||||
|
for name in one captrue lowtrue abrevtrue; do
|
||||||
|
assert_equal "True" $(trueorfalse $against $name) "\$(trueorfalse $against $name)"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for against in True False; do
|
||||||
|
for name in zero capfalse lowfalse abrevfalse; do
|
||||||
|
assert_equal "False" $(trueorfalse $against $name) "\$(trueorfalse $against $name)"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
test_truefalse
|
||||||
|
|
||||||
|
report_results
|
39
tests/unittest.sh
Normal file
39
tests/unittest.sh
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
# we always start with no errors
|
||||||
|
ERROR=0
|
||||||
|
FAILED_FUNCS=""
|
||||||
|
|
||||||
|
function assert_equal {
|
||||||
|
local lineno=`caller 0 | awk '{print $1}'`
|
||||||
|
local function=`caller 0 | awk '{print $2}'`
|
||||||
|
local msg=$3
|
||||||
|
if [[ "$1" != "$2" ]]; then
|
||||||
|
FAILED_FUNCS+="$function:L$lineno\n"
|
||||||
|
echo "ERROR: $1 != $2 in $function:L$lineno!"
|
||||||
|
echo " $msg"
|
||||||
|
ERROR=1
|
||||||
|
else
|
||||||
|
echo "$function:L$lineno - ok"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function report_results {
|
||||||
|
if [[ $ERROR -eq 1 ]]; then
|
||||||
|
echo "Tests FAILED"
|
||||||
|
echo $FAILED_FUNCS
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
@ -8,9 +8,15 @@
|
|||||||
#
|
#
|
||||||
# -f Force an install run now
|
# -f Force an install run now
|
||||||
|
|
||||||
if [[ -n "$1" && "$1" = "-f" ]]; then
|
FORCE_PREREQ=0
|
||||||
FORCE_PREREQ=1
|
|
||||||
fi
|
while getopts ":f" opt; do
|
||||||
|
case $opt in
|
||||||
|
f)
|
||||||
|
FORCE_PREREQ=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
# If TOP_DIR is set we're being sourced rather than running stand-alone
|
# If TOP_DIR is set we're being sourced rather than running stand-alone
|
||||||
# or in a sub-shell
|
# or in a sub-shell
|
||||||
|
19
unstack.sh
19
unstack.sh
@ -6,11 +6,22 @@
|
|||||||
# mysql and rabbit are left running as OpenStack code refreshes
|
# mysql and rabbit are left running as OpenStack code refreshes
|
||||||
# do not require them to be restarted.
|
# do not require them to be restarted.
|
||||||
#
|
#
|
||||||
# Stop all processes by setting ``UNSTACK_ALL`` or specifying ``--all``
|
# Stop all processes by setting ``UNSTACK_ALL`` or specifying ``-a``
|
||||||
# on the command line
|
# on the command line
|
||||||
|
|
||||||
|
UNSTACK_ALL=""
|
||||||
|
|
||||||
|
while getopts ":a" opt; do
|
||||||
|
case $opt in
|
||||||
|
a)
|
||||||
|
UNSTACK_ALL=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
# Keep track of the current devstack directory.
|
# Keep track of the current devstack directory.
|
||||||
TOP_DIR=$(cd $(dirname "$0") && pwd)
|
TOP_DIR=$(cd $(dirname "$0") && pwd)
|
||||||
|
FILES=$TOP_DIR/files
|
||||||
|
|
||||||
# Import common functions
|
# Import common functions
|
||||||
source $TOP_DIR/functions
|
source $TOP_DIR/functions
|
||||||
@ -19,7 +30,7 @@ source $TOP_DIR/functions
|
|||||||
source $TOP_DIR/lib/database
|
source $TOP_DIR/lib/database
|
||||||
|
|
||||||
# Load local configuration
|
# Load local configuration
|
||||||
source $TOP_DIR/stackrc
|
source $TOP_DIR/openrc
|
||||||
|
|
||||||
# Destination path for service data
|
# Destination path for service data
|
||||||
DATA_DIR=${DATA_DIR:-${DEST}/data}
|
DATA_DIR=${DATA_DIR:-${DEST}/data}
|
||||||
@ -72,10 +83,6 @@ load_plugin_settings
|
|||||||
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
|
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
|
||||||
GetOSVersion
|
GetOSVersion
|
||||||
|
|
||||||
if [[ "$1" == "--all" ]]; then
|
|
||||||
UNSTACK_ALL=${UNSTACK_ALL:-1}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Run extras
|
# Run extras
|
||||||
# ==========
|
# ==========
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user