Merge "Enable DIB service to build with minimal net access"
diff --git a/docs/source/guides/multinode-lab.html b/docs/source/guides/multinode-lab.html
index db8be08..62232ef 100644
--- a/docs/source/guides/multinode-lab.html
+++ b/docs/source/guides/multinode-lab.html
@@ -247,7 +247,7 @@
The support in DevStack is geared toward a minimal installation but can be used for
testing. To implement a true multi-node test of Swift required more than DevStack provides.
Enabling it is as simple as enabling the <code>swift</code> service in <code>local.conf</code>:
- <pre>enable_service swift</pre>
+ <pre>enable_service s-proxy s-object s-container s-account</pre>
<p>Swift will put its data files in <code>SWIFT_DATA_DIR</code> (default <code>/opt/stack/data/swift</code>).
The size of the data 'partition' created (really a loop-mounted file) is set by
diff --git a/docs/source/stackrc.html b/docs/source/stackrc.html
index 23a48c5..d83fbc1 100644
--- a/docs/source/stackrc.html
+++ b/docs/source/stackrc.html
@@ -66,8 +66,8 @@
Certificate Authentication), Cinder (Scheduler, API, Volume), Horizon, MySQL, RabbitMQ, Tempest.
<pre>ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,$DATABASE_TYPE</pre>
Other services that are not enabled by default can be enabled in
- <code>localrc</code>. For example, to add Swift:
- <pre>enable_service swift</pre>
+ <code>localrc</code>. For example, to add Swift, use the following service names:
+ <pre>enable_service s-proxy s-object s-container s-account</pre>
A service can similarly be disabled:
<pre>disable_service horizon</pre></dd>
diff --git a/functions b/functions
index bbde27d..bb40a48 100644
--- a/functions
+++ b/functions
@@ -48,10 +48,10 @@
fi
image="$FILES/${image_fname}"
else
- # File based URL (RFC 1738): file://host/path
+ # File based URL (RFC 1738): ``file://host/path``
# Remote files are not considered here.
- # *nix: file:///home/user/path/file
- # windows: file:///C:/Documents%20and%20Settings/user/path/file
+ # unix: ``file:///home/user/path/file``
+ # windows: ``file:///C:/Documents%20and%20Settings/user/path/file``
image=$(echo $image_url | sed "s/^file:\/\///g")
if [[ ! -f $image || "$(stat -c "%s" $image)" == "0" ]]; then
echo "Not found: $image_url"
@@ -100,7 +100,7 @@
if [[ "$vmdk_create_type" = "monolithicSparse" ]]; then
vmdk_disktype="sparse"
elif [[ "$vmdk_create_type" = "monolithicFlat" || "$vmdk_create_type" = "vmfs" ]]; then
- # Attempt to retrieve the *-flat.vmdk
+ # Attempt to retrieve the ``*-flat.vmdk``
local flat_fname="$(head -25 $image | { grep -G 'RW\|RDONLY [0-9]+ FLAT\|VMFS' $image || true; })"
flat_fname="${flat_fname#*\"}"
flat_fname="${flat_fname%?}"
diff --git a/functions-common b/functions-common
index c597651..5b29fd3 100644
--- a/functions-common
+++ b/functions-common
@@ -31,6 +31,7 @@
# - ``TRACK_DEPENDS``
# - ``UNDO_REQUIREMENTS``
# - ``http_proxy``, ``https_proxy``, ``no_proxy``
+#
# Save trace setting
XTRACE=$(set +o | grep xtrace)
@@ -1270,7 +1271,8 @@
# - the pid of the background process is saved in the usual place
# - the server process is brought back to the foreground
# - if the server process exits prematurely the fg command errors
- # and a message is written to stdout and the service failure file
+ # and a message is written to stdout and the service failure file
+ #
# The pid saved can be used in stop_process() as a process group
# id to kill off all child processes
if [[ -n "$group" ]]; then
diff --git a/lib/cinder_backends/xiv b/lib/cinder_backends/xiv
index dbdb96c..ee5da2d 100644
--- a/lib/cinder_backends/xiv
+++ b/lib/cinder_backends/xiv
@@ -16,6 +16,7 @@
#
# Authors:
# Alon Marx <alonma@il.ibm.com>
+#
# lib/cinder_plugins/xiv
# Configure the xiv_ds8k driver for xiv testing
@@ -61,7 +62,7 @@
fi
# For reference:
- # XIV_DS8K_BACKEND='IBM-XIV_'${SAN_IP}'_'${SAN_CLUSTERNAME}'_'${CONNECTION_TYPE}
+ # ``XIV_DS8K_BACKEND='IBM-XIV_'${SAN_IP}'_'${SAN_CLUSTERNAME}'_'${CONNECTION_TYPE}``
iniset $CINDER_CONF DEFAULT xiv_ds8k_driver_version $XIV_DRIVER_VERSION
iniset $CINDER_CONF $be_name san_ip $SAN_IP
diff --git a/lib/config b/lib/config
index 0baa4cc..a0b9b0a 100644
--- a/lib/config
+++ b/lib/config
@@ -82,6 +82,8 @@
local matchgroup=$2
local configfile=$3
+ # note in the awk below, \x27 is ascii for ' -- this avoids
+ # having to do nasty quoting games
get_meta_section $file $matchgroup $configfile | \
$CONFIG_AWK_CMD -v configfile=$configfile '
BEGIN { section = "" }
@@ -95,7 +97,7 @@
}
/^[^ \t]+/ {
split($0, d, " *= *")
- print "iniset " configfile " " section " " d[1] " \"" d[2] "\""
+ print "iniset " configfile " " section " " d[1] " \x27" d[2] "\x27 "
}
' | while read a; do eval "$a"; done
diff --git a/lib/heat b/lib/heat
index 737598d..53eca25 100644
--- a/lib/heat
+++ b/lib/heat
@@ -276,7 +276,7 @@
--os-identity-api-version=3 domain create heat \
--description "Owns users and projects created by heat" \
| grep ' id ' | get_field 2)
- iniset $HEAT_CONF DEFAULT stack_user_domain ${D_ID}
+ iniset $HEAT_CONF DEFAULT stack_user_domain_id ${D_ID}
openstack --os-token $OS_TOKEN --os-url=$ks_endpoint_v3 \
--os-identity-api-version=3 user create --password $SERVICE_PASSWORD \
diff --git a/lib/neutron b/lib/neutron
index a48f519..2253eda 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -186,9 +186,10 @@
# Distributed Virtual Router (DVR) configuration
# Can be:
-# legacy - No DVR functionality
-# dvr_snat - Controller or single node DVR
-# dvr - Compute node in multi-node DVR
+# - ``legacy`` - No DVR functionality
+# - ``dvr_snat`` - Controller or single node DVR
+# - ``dvr`` - Compute node in multi-node DVR
+#
Q_DVR_MODE=${Q_DVR_MODE:-legacy}
if [[ "$Q_DVR_MODE" != "legacy" ]]; then
Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,linuxbridge,l2population
diff --git a/lib/neutron_plugins/oneconvergence b/lib/neutron_plugins/oneconvergence
index e5f0d71..4fd8c7c 100644
--- a/lib/neutron_plugins/oneconvergence
+++ b/lib/neutron_plugins/oneconvergence
@@ -1,5 +1,6 @@
# Neutron One Convergence plugin
-# ---------------------------
+# ------------------------------
+
# Save trace setting
OC_XTRACE=$(set +o | grep xtrace)
set +o xtrace
diff --git a/lib/nova b/lib/nova
index fa57432..122f17e 100644
--- a/lib/nova
+++ b/lib/nova
@@ -706,7 +706,7 @@
if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then
# The group **$LIBVIRT_GROUP** is added to the current user in this script.
- # sg' will be used in run_process to execute nova-compute as a member of the
+ # ``sg`` is used in run_process to execute nova-compute as a member of the
# **$LIBVIRT_GROUP** group.
run_process n-cpu "$NOVA_BIN_DIR/nova-compute --config-file $compute_cell_conf" $LIBVIRT_GROUP
elif [[ "$VIRT_DRIVER" = 'fake' ]]; then
@@ -763,7 +763,14 @@
}
function stop_nova_compute {
- stop_process n-cpu
+ if [ "$VIRT_DRIVER" == "fake" ]; then
+ local i
+ for i in `seq 1 $NUMBER_FAKE_NOVA_COMPUTE`; do
+ stop_process n-cpu-${i}
+ done
+ else
+ stop_process n-cpu
+ fi
if is_service_enabled n-cpu && [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then
stop_nova_hypervisor
fi
diff --git a/lib/nova_plugins/functions-libvirt b/lib/nova_plugins/functions-libvirt
index 6b9db48..d3c4eab 100644
--- a/lib/nova_plugins/functions-libvirt
+++ b/lib/nova_plugins/functions-libvirt
@@ -10,7 +10,7 @@
set +o xtrace
# Defaults
-# -------
+# --------
# if we should turn on massive libvirt debugging
DEBUG_LIBVIRT=$(trueorfalse False $DEBUG_LIBVIRT)
diff --git a/lib/opendaylight b/lib/opendaylight
index 1541ac1..cc29deb 100644
--- a/lib/opendaylight
+++ b/lib/opendaylight
@@ -3,9 +3,9 @@
# Dependencies:
#
-# - ``functions`` file
-# # ``DEST`` must be defined
-# # ``STACK_USER`` must be defined
+# ``functions`` file
+# ``DEST`` must be defined
+# ``STACK_USER`` must be defined
# ``stack.sh`` calls the entry points in this order:
#
@@ -55,7 +55,7 @@
# Default arguments for OpenDaylight. This is typically used to set
# Java memory options.
-# ODL_ARGS=Xmx1024m -XX:MaxPermSize=512m
+# ``ODL_ARGS=Xmx1024m -XX:MaxPermSize=512m``
ODL_ARGS=${ODL_ARGS:-"-XX:MaxPermSize=384m"}
# How long to pause after ODL starts to let it complete booting
@@ -64,8 +64,6 @@
# The physical provider network to device mapping
ODL_PROVIDER_MAPPINGS=${ODL_PROVIDER_MAPPINGS:-physnet1:eth1}
-# Set up default directories
-
# Entry Points
# ------------
@@ -139,6 +137,7 @@
# The flags to ODL have the following meaning:
# -of13: runs ODL using OpenFlow 1.3 protocol support.
# -virt ovsdb: Runs ODL in "virtualization" mode with OVSDB support
+
# NOTE(chdent): Leaving this as screen_it instead of run_process until
# the right thing for this service is determined.
screen_it odl-server "cd $ODL_DIR/opendaylight && JAVA_HOME=$JHOME ./run.sh $ODL_ARGS -of13 -virt ovsdb"
diff --git a/lib/tls b/lib/tls
index 15e8692..fdb798f 100644
--- a/lib/tls
+++ b/lib/tls
@@ -433,7 +433,7 @@
# Cleanup Functions
-# ===============
+# =================
# Stops all stud processes. This should be done only after all services
diff --git a/stack.sh b/stack.sh
index 0cec623..3b5fb74 100755
--- a/stack.sh
+++ b/stack.sh
@@ -234,15 +234,35 @@
if [[ is_fedora && ( $DISTRO == "rhel6" || $DISTRO == "rhel7" ) ]]; then
# RHEL requires EPEL for many Open Stack dependencies
- if [[ $DISTRO == "rhel7" ]]; then
- EPEL_RPM=${RHEL7_EPEL_RPM:-"http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-1.noarch.rpm"}
- elif [[ $DISTRO == "rhel6" ]]; then
- EPEL_RPM=${RHEL6_EPEL_RPM:-"http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"}
- fi
if ! sudo yum repolist enabled epel | grep -q 'epel'; then
echo "EPEL not detected; installing"
- yum_install ${EPEL_RPM} || \
+ # This trick installs the latest epel-release from a bootstrap
+ # repo, then removes itself (as epel-release installed the
+ # "real" repo).
+ #
+ # you would think that rather than this, you could use
+ # $releasever directly in .repo file we create below. However
+ # RHEL gives a $releasever of "6Server" which breaks the path;
+ # see https://bugzilla.redhat.com/show_bug.cgi?id=1150759
+ if [[ $DISTRO == "rhel7" ]]; then
+ epel_ver="7"
+ elif [[ $DISTRO == "rhel6" ]]; then
+ epel_ver="6"
+ fi
+
+ cat <<EOF | sudo tee /etc/yum.repos.d/epel-bootstrap.repo
+[epel]
+name=Bootstrap EPEL
+mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$epel_ver&arch=\$basearch
+failovermethod=priority
+enabled=0
+gpgcheck=0
+EOF
+ # bare yum call due to --enablerepo
+ sudo yum --enablerepo=epel -y install epel-release || \
die $LINENO "Error installing EPEL repo, cannot continue"
+ # epel rpm has installed it's version
+ sudo rm -f /etc/yum.repos.d/epel-bootstrap.repo
fi
# ... and also optional to be enabled
diff --git a/stackrc b/stackrc
index af45c77..3899525 100644
--- a/stackrc
+++ b/stackrc
@@ -120,7 +120,7 @@
# ------------
# Base GIT Repo URL
-# Another option is http://review.openstack.org/p
+# Another option is https://git.openstack.org
GIT_BASE=${GIT_BASE:-git://git.openstack.org}
##############
diff --git a/tests/test_config.sh b/tests/test_config.sh
index 2634ce0..7cf75d0 100755
--- a/tests/test_config.sh
+++ b/tests/test_config.sh
@@ -91,6 +91,10 @@
[[test4|\$TEST4_DIR/\$TEST4_FILE]]
[fff]
type=new
+
+[[test-quote|test-quote.conf]]
+[foo]
+foo="foo bar" "baz"
EOF
echo -n "get_meta_section_files: test0 doesn't exist: "
@@ -206,6 +210,15 @@
attribute = value"
check_result "$VAL" "$EXPECT_VAL"
+echo -n "merge_config_file test-quote: "
+rm -f test-quote.conf
+merge_config_file test.conf test-quote test-quote.conf
+VAL=$(cat test-quote.conf)
+EXPECT_VAL='
+[foo]
+foo = "foo bar" "baz"'
+check_result "$VAL" "$EXPECT_VAL"
+
echo -n "merge_config_group test4 variable filename: "
setup_test4
merge_config_group test.conf test4
@@ -225,5 +238,5 @@
type = new"
check_result "$VAL" "$EXPECT_VAL"
-rm -f test.conf test1c.conf test2a.conf test-space.conf
+rm -f test.conf test1c.conf test2a.conf test-quote.conf test-space.conf
rm -rf test-etc
diff --git a/tools/create_userrc.sh b/tools/create_userrc.sh
index 863fe03..6a07be4 100755
--- a/tools/create_userrc.sh
+++ b/tools/create_userrc.sh
@@ -245,7 +245,7 @@
}
if [ $MODE != "create" ]; then
-# looks like I can't ask for all tenant related to a specified user
+ # looks like I can't ask for all tenant related to a specified user
openstack project list --long --quote none -f csv | grep ',True' | grep -v "${SKIP_TENANT}" | while IFS=, read tenant_id tenant_name desc enabled; do
openstack user list --project $tenant_id --long --quote none -f csv | grep ',True' | while IFS=, read user_id user_name project email enabled; do
if [ $MODE = one -a "$user_name" != "$USER_NAME" ]; then
@@ -253,8 +253,7 @@
fi
# Checks for a specific password defined for an user.
- # Example for an username johndoe:
- # JOHNDOE_PASSWORD=1234
+ # Example for an username johndoe: JOHNDOE_PASSWORD=1234
eval SPECIFIC_UPASSWORD="\$${USER_NAME^^}_PASSWORD"
if [ -n "$SPECIFIC_UPASSWORD" ]; then
USER_PASS=$SPECIFIC_UPASSWORD