Merge "Cleanup tools scripts"
diff --git a/files/keystone_data.sh b/files/keystone_data.sh
index 7886072..ba14a47 100755
--- a/files/keystone_data.sh
+++ b/files/keystone_data.sh
@@ -283,4 +283,16 @@
keystone user-role-add --tenant_id $SERVICE_TENANT \
--user_id $CINDER_USER \
--role_id $ADMIN_ROLE
+ if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
+ CINDER_SERVICE=$(get_id keystone service-create \
+ --name=cinder \
+ --type=volume \
+ --description="Cinder Service")
+ keystone endpoint-create \
+ --region RegionOne \
+ --service_id $CINDER_SERVICE \
+ --publicurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s" \
+ --adminurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s" \
+ --internalurl "http://$SERVICE_HOST:8776/v1/\$(tenant_id)s"
+ fi
fi
diff --git a/functions b/functions
index a3e9537..8cf7c74 100644
--- a/functions
+++ b/functions
@@ -73,6 +73,91 @@
}
+# get_packages() collects a list of package names of any type from the
+# prerequisite files in ``files/{apts|pips}``. The list is intended
+# to be passed to a package installer such as apt or pip.
+#
+# Only packages required for the services in ENABLED_SERVICES will be
+# included. Two bits of metadata are recognized in the prerequisite files:
+# - ``# NOPRIME`` defers installation to be performed later in stack.sh
+# - ``# dist:DISTRO`` or ``dist:DISTRO1,DISTRO2`` limits the selection
+# of the package to the distros listed. The distro names are case insensitive.
+#
+# get_packages dir
+function get_packages() {
+ local package_dir=$1
+ local file_to_parse
+ local service
+
+ if [[ -z "$package_dir" ]]; then
+ echo "No package directory supplied"
+ return 1
+ fi
+ if [[ -z "$DISTRO" ]]; then
+ echo "No distro set in DISTRO"
+ return 1
+ fi
+ for service in general ${ENABLED_SERVICES//,/ }; do
+ # Allow individual services to specify dependencies
+ if [[ -e ${package_dir}/${service} ]]; then
+ file_to_parse="${file_to_parse} $service"
+ fi
+ # NOTE(sdague) n-api needs glance for now because that's where
+ # glance client is
+ if [[ $service == n-api ]]; then
+ if [[ ! $file_to_parse =~ nova ]]; then
+ file_to_parse="${file_to_parse} nova"
+ fi
+ if [[ ! $file_to_parse =~ glance ]]; then
+ file_to_parse="${file_to_parse} glance"
+ fi
+ elif [[ $service == c-* ]]; then
+ if [[ ! $file_to_parse =~ cinder ]]; then
+ file_to_parse="${file_to_parse} cinder"
+ fi
+ elif [[ $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
+ fi
+ done
+
+ for file in ${file_to_parse}; do
+ local fname=${package_dir}/${file}
+ local OIFS line package distros distro
+ [[ -e $fname ]] || continue
+
+ 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]}
+ # In bash ${VAR,,} will lowecase VAR
+ [[ ${distros,,} =~ ${DISTRO,,} ]] && echo $package
+ continue
+ fi
+
+ echo ${line%#*}
+ done
+ IFS=$OIFS
+ done
+}
+
+
# Determine OS Vendor, Release and Update
# Tested with OS/X, Ubuntu, RedHat, CentOS, Fedora
# Returns results in global variables:
diff --git a/stack.sh b/stack.sh
index ade8710..f71283e 100755
--- a/stack.sh
+++ b/stack.sh
@@ -168,14 +168,12 @@
# ability to run sudo
if [[ "$os_PACKAGE" = "deb" ]]; then
dpkg -l sudo || apt_get update && install_package sudo
- STACK_GROUP=sudo
else
rpm -qa | grep sudo || install_package sudo
- STACK_GROUP=wheel
fi
if ! getent passwd stack >/dev/null; then
echo "Creating a user called stack"
- useradd -U -G $STACK_GROUP -s /bin/bash -d $DEST -m stack
+ useradd -U -s /bin/bash -d $DEST -m stack
fi
echo "Giving stack user passwordless sudo priviledges"
@@ -219,6 +217,12 @@
sudo rm -f /etc/sudoers.d/stack_sh_nova
fi
+# Create the destination directory and ensure it is writable by the user
+sudo mkdir -p $DEST
+if [ ! -w $DEST ]; then
+ sudo chown `whoami` $DEST
+fi
+
# Set 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 initialize ``$DEST``.
@@ -292,7 +296,7 @@
HOST_IP_IFACE=${HOST_IP_IFACE:-eth0}
# Use the eth0 IP unless an explicit is set by ``HOST_IP`` environment variable
if [ -z "$HOST_IP" -o "$HOST_IP" == "dhcp" ]; then
- HOST_IP=`LC_ALL=C /sbin/ifconfig ${HOST_IP_IFACE} | grep -m 1 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
+ HOST_IP=`LC_ALL=C ip -f inet addr show ${HOST_IP_IFACE} | awk '/inet/ {split($2,parts,"/"); print parts[1]}' | head -n1`
if [ "$HOST_IP" = "" ]; then
echo "Could not determine host ip address."
echo "Either localrc specified dhcp on ${HOST_IP_IFACE} or defaulted to eth0"
@@ -602,98 +606,12 @@
# an error. It is also useful for following along as the install occurs.
set -o xtrace
-# create the destination directory and ensure it is writable by the user
-sudo mkdir -p $DEST
-if [ ! -w $DEST ]; then
- sudo chown `whoami` $DEST
-fi
-
# Install Packages
# ================
#
# Openstack uses a fair number of other projects.
-# get_packages() collects a list of package names of any type from the
-# prerequisite files in ``files/{apts|pips}``. The list is intended
-# to be passed to a package installer such as apt or pip.
-#
-# Only packages required for the services in ENABLED_SERVICES will be
-# included. Two bits of metadata are recognized in the prerequisite files:
-# - ``# NOPRIME`` defers installation to be performed later in stack.sh
-# - ``# dist:DISTRO`` or ``dist:DISTRO1,DISTRO2`` limits the selection
-# of the package to the distros listed. The distro names are case insensitive.
-#
-# get_packages dir
-function get_packages() {
- local package_dir=$1
- local file_to_parse
- local service
-
- if [[ -z "$package_dir" ]]; then
- echo "No package directory supplied"
- return 1
- fi
- for service in general ${ENABLED_SERVICES//,/ }; do
- # Allow individual services to specify dependencies
- if [[ -e ${package_dir}/${service} ]]; then
- file_to_parse="${file_to_parse} $service"
- fi
- # NOTE(sdague) n-api needs glance for now because that's where
- # glance client is
- if [[ $service == n-api ]]; then
- if [[ ! $file_to_parse =~ nova ]]; then
- file_to_parse="${file_to_parse} nova"
- fi
- if [[ ! $file_to_parse =~ glance ]]; then
- file_to_parse="${file_to_parse} glance"
- fi
- elif [[ $service == c-* ]]; then
- if [[ ! $file_to_parse =~ cinder ]]; then
- file_to_parse="${file_to_parse} cinder"
- fi
- elif [[ $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
- fi
- done
-
- for file in ${file_to_parse}; do
- local fname=${package_dir}/${file}
- local OIFS line package distros distro
- [[ -e $fname ]] || continue
-
- 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]}
- # In bash ${VAR,,} will lowecase VAR
- [[ ${distros,,} =~ ${DISTRO,,} ]] && echo $package
- continue
- fi
-
- echo ${line%#*}
- done
- IFS=$OIFS
- done
-}
-
# install package requirements
if [[ "$os_PACKAGE" = "deb" ]]; then
apt_get update
@@ -900,7 +818,7 @@
sudo sed -i '/^bind-address/s/127.0.0.1/0.0.0.0/g' $MY_CONF
# Set default db type to InnoDB
- if grep -q "default-storage-engine" $MY_CONF; then
+ if sudo grep -q "default-storage-engine" $MY_CONF; then
# Change it
sudo bash -c "source $TOP_DIR/functions; iniset $MY_CONF mysqld default-storage-engine InnoDB"
else
@@ -2026,11 +1944,17 @@
DEVSTACK_DIR=$TOP_DIR ENABLED_SERVICES=$ENABLED_SERVICES \
bash $FILES/keystone_data.sh
+ # Set up auth creds now that keystone is bootstrapped
+ export OS_AUTH_URL=$SERVICE_ENDPOINT
+ export OS_TENANT_NAME=admin
+ export OS_USERNAME=admin
+ export OS_PASSWORD=$ADMIN_PASSWORD
+
# create an access key and secret key for nova ec2 register image
if is_service_enabled swift && is_service_enabled nova; then
NOVA_USER_ID=$(keystone user-list | grep ' nova ' | get_field 1)
NOVA_TENANT_ID=$(keystone tenant-list | grep " $SERVICE_TENANT_NAME " | get_field 1)
- CREDS=$(keystone ec2-credentials-create --user $NOVA_USER_ID --tenant_id $NOVA_TENANT_ID)
+ CREDS=$(keystone ec2-credentials-create --user_id $NOVA_USER_ID --tenant_id $NOVA_TENANT_ID)
ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')
add_nova_opt "s3_access_key=$ACCESS_KEY"
@@ -2108,9 +2032,7 @@
# Create a directory for the downloaded image tarballs.
mkdir -p $FILES/images
- ADMIN_USER=admin
- ADMIN_TENANT=admin
- TOKEN=$(keystone --os_tenant_name $ADMIN_TENANT --os_username $ADMIN_USER --os_password $ADMIN_PASSWORD --os_auth_url http://$HOST_IP:5000/v2.0 token-get | grep ' id ' | get_field 2)
+ TOKEN=$(keystone token-get | grep ' id ' | get_field 2)
# Option to upload legacy ami-tty, which works with xenserver
if [[ -n "$UPLOAD_LEGACY_TTY" ]]; then
diff --git a/tools/configure_tempest.sh b/tools/configure_tempest.sh
index bfb552d..bb995f8 100755
--- a/tools/configure_tempest.sh
+++ b/tools/configure_tempest.sh
@@ -164,9 +164,13 @@
s,%IMAGE_HOST%,$IMAGE_HOST,g;
s,%IMAGE_PORT%,$IMAGE_PORT,g;
s,%IMAGE_API_VERSION%,$IMAGE_API_VERSION,g;
- s,%ADMIN_USERNAME%,$ADMIN_USERNAME,g;
- s,%ADMIN_PASSWORD%,$ADMIN_PASSWORD,g;
- s,%ADMIN_TENANT_NAME%,$ADMIN_TENANT_NAME,g;
+ s,%COMPUTE_ADMIN_USERNAME%,$ADMIN_USERNAME,g;
+ s,%COMPUTE_ADMIN_PASSWORD%,$ADMIN_PASSWORD,g;
+ s,%COMPUTE_ADMIN_TENANT_NAME%,$ADMIN_TENANT_NAME,g;
+ s,%IDENTITY_ADMIN_USERNAME%,$ADMIN_USERNAME,g;
+ s,%IDENTITY_ADMIN_PASSWORD%,$ADMIN_PASSWORD,g;
+ s,%IDENTITY_ADMIN_TENANT_NAME%,$ADMIN_TENANT_NAME,g;
+ s,%COMPUTE_ALLOW_TENANT_ISOLATION%,true,g;
" -i $TEMPEST_CONF
echo "Created tempest configuration file:"
diff --git a/tools/xen/scripts/install-os-vpx.sh b/tools/xen/scripts/install-os-vpx.sh
index 7f2f3e6..241296b 100755
--- a/tools/xen/scripts/install-os-vpx.sh
+++ b/tools/xen/scripts/install-os-vpx.sh
@@ -19,12 +19,7 @@
set -eux
-if [ -a /etc/xensource-inventory]
-then
- . /etc/xensource-inventory
-else
- . /etc/xcp/inventory
-fi
+[[ -f "/etc/xensource-inventory" ]] && source "/etc/xensource-inventory" || source "/etc/xcp/inventory"
NAME="XenServer OpenStack VPX"
DATA_VDI_SIZE="500MiB"