Merge "Remove prettytable pin to 0.5"
diff --git a/files/apts/nova b/files/apts/nova
index 8a3ca4c..3ebf57c 100644
--- a/files/apts/nova
+++ b/files/apts/nova
@@ -19,6 +19,7 @@
vlan
curl
rabbitmq-server # NOPRIME
+qpidd # NOPRIME
socat # used by ajaxterm
python-mox
python-paste
@@ -42,3 +43,4 @@
python-kombu
python-feedparser
python-iso8601
+python-qpid # dist:precise
diff --git a/files/keystone_data.sh b/files/keystone_data.sh
index a49eb42..2cdc2fa 100755
--- a/files/keystone_data.sh
+++ b/files/keystone_data.sh
@@ -12,6 +12,8 @@
# demo admin admin
# demo demo Member, anotherrole
# invisible_to_admin demo Member
+# Tempest Only:
+# alt_demo alt_demo Member
#
# Variables set before calling this script:
# SERVICE_TOKEN - aka admin_token in keystone.conf
@@ -56,19 +58,19 @@
# Add Roles to Users in Tenants
-keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $ADMIN_TENANT
-keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $DEMO_TENANT
-keystone user-role-add --user $DEMO_USER --role $ANOTHER_ROLE --tenant_id $DEMO_TENANT
+keystone user-role-add --user_id $ADMIN_USER --role_id $ADMIN_ROLE --tenant_id $ADMIN_TENANT
+keystone user-role-add --user_id $ADMIN_USER --role_id $ADMIN_ROLE --tenant_id $DEMO_TENANT
+keystone user-role-add --user_id $DEMO_USER --role_id $ANOTHER_ROLE --tenant_id $DEMO_TENANT
# TODO(termie): these two might be dubious
-keystone user-role-add --user $ADMIN_USER --role $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT
-keystone user-role-add --user $ADMIN_USER --role $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT
+keystone user-role-add --user_id $ADMIN_USER --role_id $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT
+keystone user-role-add --user_id $ADMIN_USER --role_id $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT
# The Member role is used by Horizon and Swift so we need to keep it:
MEMBER_ROLE=$(get_id keystone role-create --name=Member)
-keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $DEMO_TENANT
-keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $INVIS_TENANT
+keystone user-role-add --user_id $DEMO_USER --role_id $MEMBER_ROLE --tenant_id $DEMO_TENANT
+keystone user-role-add --user_id $DEMO_USER --role_id $MEMBER_ROLE --tenant_id $INVIS_TENANT
# Configure service users/roles
@@ -77,16 +79,16 @@
--tenant_id $SERVICE_TENANT \
--email=nova@example.com)
keystone user-role-add --tenant_id $SERVICE_TENANT \
- --user $NOVA_USER \
- --role $ADMIN_ROLE
+ --user_id $NOVA_USER \
+ --role_id $ADMIN_ROLE
GLANCE_USER=$(get_id keystone user-create --name=glance \
--pass="$SERVICE_PASSWORD" \
--tenant_id $SERVICE_TENANT \
--email=glance@example.com)
keystone user-role-add --tenant_id $SERVICE_TENANT \
- --user $GLANCE_USER \
- --role $ADMIN_ROLE
+ --user_id $GLANCE_USER \
+ --role_id $ADMIN_ROLE
if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
SWIFT_USER=$(get_id keystone user-create --name=swift \
@@ -94,8 +96,8 @@
--tenant_id $SERVICE_TENANT \
--email=swift@example.com)
keystone user-role-add --tenant_id $SERVICE_TENANT \
- --user $SWIFT_USER \
- --role $ADMIN_ROLE
+ --user_id $SWIFT_USER \
+ --role_id $ADMIN_ROLE
# Nova needs ResellerAdmin role to download images when accessing
# swift through the s3 api. The admin role in swift allows a user
# to act as an admin for their tenant, but ResellerAdmin is needed
@@ -103,8 +105,8 @@
# configurable in swift-proxy.conf
RESELLER_ROLE=$(get_id keystone role-create --name=ResellerAdmin)
keystone user-role-add --tenant_id $SERVICE_TENANT \
- --user $NOVA_USER \
- --role $RESELLER_ROLE
+ --user_id $NOVA_USER \
+ --role_id $RESELLER_ROLE
fi
if [[ "$ENABLED_SERVICES" =~ "quantum" ]]; then
@@ -113,6 +115,16 @@
--tenant_id $SERVICE_TENANT \
--email=quantum@example.com)
keystone user-role-add --tenant_id $SERVICE_TENANT \
- --user $QUANTUM_USER \
- --role $ADMIN_ROLE
+ --user_id $QUANTUM_USER \
+ --role_id $ADMIN_ROLE
+fi
+
+if [[ "$ENABLED_SERVICES" =~ "tempest" ]]; then
+ # Tempest has some tests that validate various authorization checks
+ # between two regular users in separate tenants
+ ALT_DEMO_TENANT=$(get_id keystone tenant-create --name=alt_demo)
+ ALT_DEMO_USER=$(get_id keystone user-create --name=alt_demo \
+ --pass="$ADMIN_PASSWORD" \
+ --email=alt_demo@example.com)
+ keystone user-role-add --user $ALT_DEMO_USER --role $MEMBER_ROLE --tenant_id $ALT_DEMO_TENANT
fi
diff --git a/files/rpms/nova b/files/rpms/nova
index 1b1d47f..bb92026 100644
--- a/files/rpms/nova
+++ b/files/rpms/nova
@@ -29,11 +29,13 @@
python-paramiko
python-paste
python-paste-deploy
+python-qpid
python-routes
python-sqlalchemy
python-suds
python-tempita
rabbitmq-server # NOPRIME
+qpid-cpp-server # NOPRIME
sqlite
sudo
vconfig
diff --git a/stack.sh b/stack.sh
index 0ee2ab8..df26027 100755
--- a/stack.sh
+++ b/stack.sh
@@ -94,6 +94,12 @@
fi
fi
+if [ "${DISTRO}" = "oneiric" ] && is_service_enabled qpid ; then
+ # Qpid was introduced in precise
+ echo "You must use Ubuntu Precise or newer for Qpid support."
+ exit 1
+fi
+
# Set the paths of certain binaries
if [[ "$os_PACKAGE" = "deb" ]]; then
NOVA_ROOTWRAP=/usr/local/bin/nova-rootwrap
@@ -381,8 +387,8 @@
# host.
-# MySQL & RabbitMQ
-# ----------------
+# MySQL & (RabbitMQ or Qpid)
+# --------------------------
# We configure Nova, Horizon, Glance and Keystone to use MySQL as their
# database server. While they share a single server, each has their own
@@ -400,8 +406,10 @@
BASE_SQL_CONN=${BASE_SQL_CONN:-mysql://$MYSQL_USER:$MYSQL_PASSWORD@$MYSQL_HOST}
# Rabbit connection info
-RABBIT_HOST=${RABBIT_HOST:-localhost}
-read_password RABBIT_PASSWORD "ENTER A PASSWORD TO USE FOR RABBIT."
+if is_service_enabled rabbit; then
+ RABBIT_HOST=${RABBIT_HOST:-localhost}
+ read_password RABBIT_PASSWORD "ENTER A PASSWORD TO USE FOR RABBIT."
+fi
# Glance connection info. Note the port must be specified.
GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$SERVICE_HOST:9292}
@@ -756,8 +764,8 @@
fi
-# Rabbit
-# ------
+# Rabbit or Qpid
+# --------------
if is_service_enabled rabbit; then
# Install and start rabbitmq-server
@@ -772,6 +780,13 @@
fi
# change the rabbit password since the default is "guest"
sudo rabbitmqctl change_password guest $RABBIT_PASSWORD
+elif is_service_enabled qpid; then
+ if [[ "$os_PACKAGE" = "rpm" ]]; then
+ install_package qpid-cpp-server
+ restart_service qpidd
+ else
+ install_package qpidd
+ fi
fi
@@ -1653,8 +1668,12 @@
add_nova_opt "api_paste_config=$NOVA_CONF_DIR/api-paste.ini"
add_nova_opt "image_service=nova.image.glance.GlanceImageService"
add_nova_opt "ec2_dmz_host=$EC2_DMZ_HOST"
-add_nova_opt "rabbit_host=$RABBIT_HOST"
-add_nova_opt "rabbit_password=$RABBIT_PASSWORD"
+if is_service_enabled rabbit ; then
+ add_nova_opt "rabbit_host=$RABBIT_HOST"
+ add_nova_opt "rabbit_password=$RABBIT_PASSWORD"
+elif is_service_enabled qpid ; then
+ add_nova_opt "rpc_backend=nova.rpc.impl_qpid"
+fi
add_nova_opt "glance_api_servers=$GLANCE_HOSTPORT"
add_nova_opt "force_dhcp_release=True"
if [ -n "$INSTANCES_PATH" ]; then
diff --git a/stackrc b/stackrc
index 092ba9e..41a399a 100644
--- a/stackrc
+++ b/stackrc
@@ -30,7 +30,7 @@
KEYSTONE_BRANCH=master
# a websockets/html5 or flash powered VNC console for vm instances
-NOVNC_REPO=https://github.com/cloudbuilders/noVNC.git
+NOVNC_REPO=https://github.com/kanaka/noVNC.git
NOVNC_BRANCH=master
# django powered web control panel for openstack
diff --git a/tools/configure_tempest.sh b/tools/configure_tempest.sh
index a84c42b..2c06934 100755
--- a/tools/configure_tempest.sh
+++ b/tools/configure_tempest.sh
@@ -93,6 +93,10 @@
# copy every time, because the image UUIDS are going to change
cp $TEMPEST_CONF.tpl $TEMPEST_CONF
+ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
+ADMIN_PASSWORD=${ADMIN_PASSWORD:-secrete}
+ADMIN_TENANT_NAME=${ADMIN_TENANT:-admin}
+
IDENTITY_USE_SSL=${IDENTITY_USE_SSL:-False}
IDENTITY_HOST=${IDENTITY_HOST:-127.0.0.1}
IDENTITY_PORT=${IDENTITY_PORT:-5000}
@@ -107,22 +111,18 @@
# OS_USERNAME et all should be defined in openrc.
OS_USERNAME=${OS_USERNAME:-demo}
OS_TENANT_NAME=${OS_TENANT_NAME:-demo}
-OS_PASSWORD=${OS_PASSWORD:-secrete}
+OS_PASSWORD=${OS_PASSWORD:$ADMIN_PASSWORD}
-# TODO(jaypipes): Support multiple regular user accounts instead
-# of using the same regular user account for the alternate user...
-ALT_USERNAME=$OS_USERNAME
+# See files/keystone_data.sh where alt_demo user
+# and tenant are set up...
+ALT_USERNAME=${ALT_USERNAME:-alt_demo}
+ALT_TENANT_NAME=${ALT_TENANT_NAME:-alt_demo}
ALT_PASSWORD=$OS_PASSWORD
-ALT_TENANT_NAME=$OS_TENANT_NAME
# TODO(jaypipes): Support configurable flavor refs here...
FLAVOR_REF=1
FLAVOR_REF_ALT=2
-ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
-ADMIN_PASSWORD=${ADMIN_PASSWORD:-secrete}
-ADMIN_TENANT_NAME=${ADMIN_TENANT:-admin}
-
# Do any of the following need to be configurable?
COMPUTE_CATALOG_TYPE=compute
COMPUTE_CREATE_IMAGE_ENABLED=True
diff --git a/tools/xen/install_os_domU.sh b/tools/xen/install_os_domU.sh
index 3c25d4a..088748f 100755
--- a/tools/xen/install_os_domU.sh
+++ b/tools/xen/install_os_domU.sh
@@ -174,13 +174,16 @@
templateuuid=$(xe template-list name-label="$TNAME")
if [ -n "$templateuuid" ]
then
- vm_uuid=$(xe vm-install template="$TNAME" new-name-label="$GUEST_NAME")
+ vm_uuid=$(xe vm-install template="$TNAME" new-name-label="$GUEST_NAME")
else
template=$(xe_min template-list name-label="Ubuntu 11.10 (64-bit)")
if [ -z "$template" ]
then
cp $TOP_DIR/devstackubuntupreseed.cfg /opt/xensource/www/
$TOP_DIR/scripts/xenoneirictemplate.sh "${HOST_IP}/devstackubuntupreseed.cfg"
+ MIRROR=${MIRROR:-archive.ubuntu.com}
+ sed -e "s,d-i mirror/http/hostname string .*,d-i mirror/http/hostname string $MIRROR," \
+ -i /opt/xensource/www/devstackubuntupreseed.cfg
fi
$TOP_DIR/scripts/install-os-vpx.sh -t "Ubuntu 11.10 (64-bit)" -v $VM_BR -m $MGT_BR -p $PUB_BR -l $GUEST_NAME -r $OSDOMU_MEM_MB -k "flat_network_bridge=${VM_BR}"
diff --git a/tools/xen/prepare_dom0.sh b/tools/xen/prepare_dom0.sh
deleted file mode 100755
index 71e9d6d..0000000
--- a/tools/xen/prepare_dom0.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#i!/bin/sh
-set -o xtrace
-set -o errexit
-
-# Install basics for vi and git
-yum -y --enablerepo=base install gcc make vim-enhanced zlib-devel openssl-devel curl-devel.i386
-
-# Simple but usable vimrc
-if [ ! -e /root/.vimrc ]; then
- cat > /root/.vimrc <<EOF
-syntax on
-se ts=4
-se expandtab
-se shiftwidth=4
-EOF
-fi
-
-# Use the pretty vim
-if [ -e /usr/bin/vim ]; then
- rm /bin/vi
- ln -s /usr/bin/vim /bin/vi
-fi
-
-# Install git
-if ! which git; then
- DEST=/tmp/
- GITDIR=$DEST/git-1.7.7
- cd $DEST
- rm -rf $GITDIR*
- wget http://git-core.googlecode.com/files/git-1.7.7.tar.gz
- tar xfv git-1.7.7.tar.gz
- cd $GITDIR
- ./configure --with-curl --with-expat
- make install
-fi
-
-# Clone devstack
-DEVSTACK=${DEVSTACKROOT:-"/root/devstack"}
-if [ ! -d $DEVSTACK ]; then
- git clone git://github.com/openstack-dev/devstack.git $DEVSTACK
-fi
diff --git a/tools/xen/prepare_guest.sh b/tools/xen/prepare_guest.sh
index 5d39ac6..74efaff 100755
--- a/tools/xen/prepare_guest.sh
+++ b/tools/xen/prepare_guest.sh
@@ -7,18 +7,6 @@
STAGING_DIR=${STAGING_DIR:-stage}
DO_TGZ=${DO_TGZ:-1}
-# Sources.list
-cat <<EOF >$STAGING_DIR/etc/apt/sources.list
-deb http://us.archive.ubuntu.com/ubuntu/ oneiric main restricted
-deb-src http://us.archive.ubuntu.com/ubuntu/ oneiric main restricted
-deb http://us.archive.ubuntu.com/ubuntu/ oneiric-updates main restricted
-deb-src http://us.archive.ubuntu.com/ubuntu/ oneiric-updates main restricted
-deb http://us.archive.ubuntu.com/ubuntu/ oneiric universe
-deb http://us.archive.ubuntu.com/ubuntu/ oneiric-updates universe
-deb http://us.archive.ubuntu.com/ubuntu/ oneiric multiverse
-deb http://us.archive.ubuntu.com/ubuntu/ oneiric-updates multiverse
-EOF
-
# Install basics
chroot $STAGING_DIR apt-get update
chroot $STAGING_DIR apt-get install -y cracklib-runtime curl wget ssh openssh-server tcpdump ethtool
diff --git a/tools/xen/scripts/templatedelete.sh b/tools/xen/scripts/templatedelete.sh
new file mode 100755
index 0000000..66765b2
--- /dev/null
+++ b/tools/xen/scripts/templatedelete.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+#Usage: ./templatedelete.sh <template-uuid>
+
+templateuuid="$1"
+
+xe template-param-set other-config:default_template=false uuid="$templateuuid"
+xe template-param-set is-a-template=false uuid="$templateuuid"
+xe vm-destroy uuid="$templateuuid"