Merge remote-tracking branch 'origin/master'
diff --git a/files/000-default.template b/files/000-default.template
index fa8a86a..43013df 100644
--- a/files/000-default.template
+++ b/files/000-default.template
@@ -7,6 +7,7 @@
DocumentRoot %HORIZON_DIR%/.blackhole/
Alias /media %HORIZON_DIR%/openstack-dashboard/media
+ Alias /vpn /opt/stack/vpn
<Directory />
Options FollowSymLinks
diff --git a/files/apts/nova b/files/apts/nova
index 77622a8..32b7b37 100644
--- a/files/apts/nova
+++ b/files/apts/nova
@@ -1,5 +1,5 @@
dnsmasq-base
-dnsmasq-utils # for dhcp_release
+dnsmasq-utils # for dhcp_release only available in dist:oneiric
kpartx
parted
arping # used for send_arp_for_ha option in nova-network
diff --git a/stack.sh b/stack.sh
index 6479d1d..a468980 100755
--- a/stack.sh
+++ b/stack.sh
@@ -22,7 +22,9 @@
# Warn users who aren't on natty, but allow them to override check and attempt
# installation with ``FORCE=yes ./stack``
-if ! egrep -q 'natty|oneiric' /etc/lsb-release; then
+DISTRO=$(lsb_release -c -s)
+
+if [[ ! ${DISTRO} =~ (natty|oneiric) ]]; then
echo "WARNING: this script has only been tested on natty and oneiric"
if [[ "$FORCE" != "yes" ]]; then
echo "If you wish to run this script anyway run with FORCE=yes"
@@ -372,10 +374,65 @@
#
# Openstack uses a fair number of other projects.
+# - We are going to install packages only for the services needed.
+# - We are parsing the packages files and detecting metadatas.
+# - If there is a NOPRIME as comment mean we are not doing the install
+# just yet.
+# - If we have the meta-keyword distro:DISTRO or
+# distro:DISTRO1,DISTRO2 it will be installed only for those
+# distros (case insensitive).
+function get_packages() {
+ local file_to_parse="general"
+ local service
+
+ for service in ${ENABLED_SERVICES//,/ }; do
+ if [[ $service == n-* ]]; then
+ if [[ ! $file_to_parse =~ nova ]]; then
+ file_to_parse="${file_to_parse} nova"
+ fi
+ elif [[ $service == g-* ]]; then
+ if [[ ! $file_to_parse =~ glance ]]; then
+ file_to_parse="${file_to_parse} glance"
+ fi
+ elif [[ $service == key* ]]; then
+ if [[ ! $file_to_parse =~ keystone ]]; then
+ file_to_parse="${file_to_parse} keystone"
+ fi
+ elif [[ -e $FILES/apts/${service} ]]; then
+ file_to_parse="${file_to_parse} $service"
+ fi
+ done
+
+ for file in ${file_to_parse}; do
+ local fname=${FILES}/apts/${file}
+ local OIFS line package distros distro
+ [[ -e $fname ]] || { echo "missing: $fname"; exit 1 ;}
+
+ OIFS=$IFS
+ IFS=$'\n'
+ for line in $(<${fname}); do
+ if [[ $line =~ "NOPRIME" ]]; then
+ continue
+ fi
+
+ if [[ $line =~ (.*)#.*dist:([^ ]*) ]]; then # We are using BASH regexp matching feature.
+ package=${BASH_REMATCH[1]}
+ distros=${BASH_REMATCH[2]}
+ for distro in ${distros//,/ }; do #In bash ${VAR,,} will lowecase VAR
+ [[ ${distro,,} == ${DISTRO,,} ]] && echo $package
+ done
+ continue
+ fi
+
+ echo ${line%#*}
+ done
+ IFS=$OIFS
+ done
+}
# install apt requirements
apt_get update
-apt_get install `cat $FILES/apts/* | cut -d\# -f1 | grep -Ev "mysql-server|rabbitmq-server|memcached"`
+apt_get install $(get_packages)
# install python requirements
sudo PIP_DOWNLOAD_CACHE=/var/cache/pip pip install --use-mirrors `cat $FILES/pips/*`
@@ -689,7 +746,7 @@
sudo chown -R $USER:${USER_GROUP} ${SWIFT_DATA_LOCATION}/drives
# We then create a loopback disk and format it to XFS.
- if [[ ! -e ${SWIFT_DATA_LOCATION}/drives/images/swift.img ]];then
+ if [[ ! -e ${SWIFT_DATA_LOCATION}/drives/images/swift.img ]]; then
mkdir -p ${SWIFT_DATA_LOCATION}/drives/images
sudo touch ${SWIFT_DATA_LOCATION}/drives/images/swift.img
sudo chown $USER: ${SWIFT_DATA_LOCATION}/drives/images/swift.img
@@ -702,7 +759,7 @@
# After the drive being created we mount the disk with a few mount
# options to make it most efficient as possible for swift.
mkdir -p ${SWIFT_DATA_LOCATION}/drives/sdb1
- if ! egrep -q ${SWIFT_DATA_LOCATION}/drives/sdb1 /proc/mounts;then
+ if ! egrep -q ${SWIFT_DATA_LOCATION}/drives/sdb1 /proc/mounts; then
sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8 \
${SWIFT_DATA_LOCATION}/drives/images/swift.img ${SWIFT_DATA_LOCATION}/drives/sdb1
fi
@@ -716,7 +773,7 @@
tmpd=""
for d in ${SWIFT_DATA_LOCATION}/drives/sdb1/{1..4} \
${SWIFT_CONFIG_LOCATION}/{object,container,account}-server \
- ${SWIFT_DATA_LOCATION}/{1..4}/node/sdb1 /var/run/swift ;do
+ ${SWIFT_DATA_LOCATION}/{1..4}/node/sdb1 /var/run/swift; do
[[ -d $d ]] && continue
sudo install -o ${USER} -g $USER_GROUP -d $d
done
@@ -770,7 +827,7 @@
local log_facility=$3
local node_number
- for node_number in {1..4};do
+ for node_number in {1..4}; do
node_path=${SWIFT_DATA_LOCATION}/${node_number}
sed -e "s,%SWIFT_CONFIG_LOCATION%,${SWIFT_CONFIG_LOCATION},;s,%USER%,$USER,;s,%NODE_PATH%,${node_path},;s,%BIND_PORT%,${bind_port},;s,%LOG_FACILITY%,${log_facility}," \
$FILES/swift/${server_type}-server.conf > ${SWIFT_CONFIG_LOCATION}/${server_type}-server/${node_number}.conf