Merge "xenapi: kernel_cmdline moved out from template"
diff --git a/.mailmap b/.mailmap
index d5ad780..a49875d 100644
--- a/.mailmap
+++ b/.mailmap
@@ -2,3 +2,4 @@
# <preferred e-mail> <other e-mail 1>
# <preferred e-mail> <other e-mail 2>
Jiajun Liu <jiajun@unitedstack.com> <iamljj@gmail.com>
+Jian Wen <jian.wen@canonical.com> <wenjianhn@gmail.com>
\ No newline at end of file
diff --git a/AUTHORS b/AUTHORS
index 6b6a85f..c6b40d8 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -26,6 +26,7 @@
Jason Cannavale <jason.cannavale@rackspace.com>
Jay Pipes <jaypipes@gmail.com>
Jesse Andrews <anotherjesse@gmail.com>
+Jian Wen <jian.wen@canonical.com>
Joe Gordon <jogo@cloudscaling.com>
Johannes Erdfelt <johannes.erdfelt@rackspace.com>
John Postlethwait <john.postlethwait@nebula.com>
diff --git a/README.md b/README.md
index 1987db8..8573638 100644
--- a/README.md
+++ b/README.md
@@ -153,6 +153,7 @@
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
Q_HOST=$SERVICE_HOST
+ MATCHMAKER_REDIS_HOST=$SERVICE_HOST
# Cells
diff --git a/files/rpms/horizon b/files/rpms/horizon
index d50482e..cf16cdb 100644
--- a/files/rpms/horizon
+++ b/files/rpms/horizon
@@ -3,6 +3,7 @@
gcc
httpd # NOPRIME
mod_wsgi # NOPRIME
+nodejs # NOPRIME
pylint
python-anyjson
python-BeautifulSoup
@@ -16,8 +17,7 @@
python-migrate
python-mox
python-netaddr
-# RHEL6's python-nose is incompatible with Tempest
-python-nose #dist:f16,f17,f18
+python-nose
python-paste #dist:f16,f17,f18
python-paste-deploy #dist:f16,f17,f18
python-pep8
diff --git a/files/rpms/quantum b/files/rpms/quantum
index 32c6f62..8827d5a 100644
--- a/files/rpms/quantum
+++ b/files/rpms/quantum
@@ -4,6 +4,7 @@
iptables
iputils
mysql-server # NOPRIME
+openvswitch # NOPRIME
python-boto
python-eventlet
python-greenlet
diff --git a/files/rpms/swift b/files/rpms/swift
index c626d8e..1b36e34 100644
--- a/files/rpms/swift
+++ b/files/rpms/swift
@@ -7,8 +7,7 @@
python-eventlet
python-greenlet
python-netifaces
-# RHEL6's python-nose is incompatible with Tempest
-python-nose # dist:f16,f17,f18
+python-nose
python-paste-deploy # dist:f16,f17,f18
python-setuptools # dist:f16,f17,f18
python-simplejson
diff --git a/functions b/functions
index 669fa69..dfde7dc 100644
--- a/functions
+++ b/functions
@@ -1413,6 +1413,10 @@
else
which pip
fi
+
+ if [ $? -ne 0 ]; then
+ die $LINENO "Unable to find pip; cannot continue"
+ fi
}
# Path permissions sanity check
diff --git a/lib/ceilometer b/lib/ceilometer
index 90a1884..50060a7 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -91,6 +91,8 @@
iniset $CEILOMETER_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
iniset $CEILOMETER_CONF keystone_authtoken signing_dir $CEILOMETER_AUTH_CACHE_DIR
+ iniset $CEILOMETER_CONF database connection mongodb://localhost:27017/ceilometer
+
configure_mongodb
cleanup_ceilometer
diff --git a/lib/heat b/lib/heat
index 0c95ebb..4d2f84e 100644
--- a/lib/heat
+++ b/lib/heat
@@ -2,7 +2,7 @@
# Install and start **Heat** service
# To enable, add the following to localrc
-# ENABLED_SERVICES+=,heat,h-api-cfn,h-api-cw,h-eng
+# ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
# Dependencies:
# - functions
@@ -193,8 +193,8 @@
# stop_heat() - Stop running processes
function stop_heat() {
- # Kill the cinder screen windows
- for serv in h-eng h-api-cfn h-api-cw; do
+ # Kill the screen windows
+ for serv in h-eng h-api h-api-cfn h-api-cw; do
screen -S $SCREEN_NAME -p $serv -X kill
done
}
diff --git a/lib/horizon b/lib/horizon
index 1ee530e..ab11399 100644
--- a/lib/horizon
+++ b/lib/horizon
@@ -73,31 +73,6 @@
fi
}
-# Basic install of upstream nodejs for platforms that want it
-function install_nodejs() {
- if [[ $(which node) ]]; then
- echo "You already appear to have nodejs, skipping install"
- return
- fi
-
- # There are several node deployment scripts; one may be more
- # appropriate at some future point, but for now direct download is
- # the simplest way. The version barely matters for lesscss which
- # doesn't use anything fancy.
- local ver=0.10.1
- local nodejs=node-v${ver}-linux-x64
- local tar=$nodejs.tar.gz
- local nodejs_url=http://nodejs.org/dist/v${ver}/${tar}
-
- curl -Ss ${nodejs_url} | tar -C ${DEST} -xz
- if [ $? -ne 0 ]; then
- echo "*** Download of nodejs failed"
- return 1
- fi
-
- # /usr/bin so it gets found in the PATH available to horizon
- sudo ln -s $DEST/$nodejs/bin/node /usr/bin/node
-}
# Entry Points
# ------------
@@ -105,15 +80,7 @@
# cleanup_horizon() - Remove residual data files, anything left over from previous
# runs that a clean run would need to clean up
function cleanup_horizon() {
-
- if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then
- # if the /usr/bin/node link looks like it's pointing into $DEST,
- # then we installed it via install_nodejs
- if [[ $(readlink -f /usr/bin/node) =~ ($DEST) ]]; then
- sudo rm /usr/bin/node
- fi
- fi
-
+ :
}
# configure_horizon() - Set config files, create data dirs, etc
@@ -199,21 +166,12 @@
exit_distro_not_supported "apache installation"
fi
- if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then
- # RHEL6 currently has no native way to get nodejs, so we do a
- # basic install here (see cleanup_horizon too).
- # TODO: does nova have a better way that we can limit
- # requirement of site-wide nodejs install?
- install_nodejs
- fi
-
# NOTE(sdague) quantal changed the name of the node binary
if is_ubuntu; then
if [[ ! -e "/usr/bin/node" ]]; then
install_package nodejs-legacy
fi
- elif is_fedora && [[ "$os_RELEASE" -ge "18" ]]; then
- # fedora 18 and higher gets nodejs
+ elif is_fedora && [[ $DISTRO =~ (rhel6) || "$os_RELEASE" -ge "18" ]]; then
install_package nodejs
fi
diff --git a/lib/nova b/lib/nova
index ea932a3..809f56c 100644
--- a/lib/nova
+++ b/lib/nova
@@ -439,6 +439,7 @@
iniset $NOVA_CONF DEFAULT libvirt_type "$LIBVIRT_TYPE"
iniset $NOVA_CONF DEFAULT libvirt_cpu_mode "none"
iniset $NOVA_CONF DEFAULT instance_name_template "${INSTANCE_NAME_PREFIX}%08x"
+ iniset $NOVA_CONF DEFAULT osapi_v3_enabled "True"
if is_service_enabled n-api; then
iniset $NOVA_CONF DEFAULT enabled_apis "$NOVA_ENABLED_APIS"
@@ -693,7 +694,7 @@
# The group **$LIBVIRT_GROUP** is added to the current user in this script.
# Use 'sg' to execute nova-compute as a member of the **$LIBVIRT_GROUP** group.
- screen_it n-cpu "cd $NOVA_DIR && sg $LIBVIRT_GROUP \"$NOVA_BIN_DIR/nova-compute --config-file $NOVA_CONF_BOTTOM\""
+ screen_it n-cpu "cd $NOVA_DIR && sg $LIBVIRT_GROUP '$NOVA_BIN_DIR/nova-compute --config-file $NOVA_CONF_BOTTOM'"
screen_it n-crt "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-cert"
screen_it n-net "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-network --config-file $NOVA_CONF_BOTTOM"
screen_it n-sch "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-scheduler --config-file $NOVA_CONF_BOTTOM"
diff --git a/lib/quantum_plugins/linuxbridge b/lib/quantum_plugins/linuxbridge
index b4b52e9..980df5f 100644
--- a/lib/quantum_plugins/linuxbridge
+++ b/lib/quantum_plugins/linuxbridge
@@ -74,6 +74,11 @@
if [[ "$LB_VLAN_RANGES" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE VLANS network_vlan_ranges $LB_VLAN_RANGES
fi
+ if [[ "$Q_USE_SECGROUP" == "True" ]]; then
+ iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver quantum.agent.linux.iptables_firewall.IptablesFirewallDriver
+ else
+ iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver quantum.agent.firewall.NoopFirewallDriver
+ fi
}
function quantum_plugin_setup_interface_driver() {
diff --git a/lib/quantum_plugins/nec b/lib/quantum_plugins/nec
index 411f5a4..608e267 100644
--- a/lib/quantum_plugins/nec
+++ b/lib/quantum_plugins/nec
@@ -82,6 +82,8 @@
iniset /$Q_PLUGIN_CONF_FILE OFC driver $OFC_DRIVER
iniset /$Q_PLUGIN_CONF_FILE OFC api_retry_max OFC_RETRY_MAX
iniset /$Q_PLUGIN_CONF_FILE OFC api_retry_interval OFC_RETRY_INTERVAL
+
+ _quantum_ovs_base_configure_firewall_driver
}
function quantum_plugin_setup_interface_driver() {
diff --git a/lib/quantum_plugins/openvswitch b/lib/quantum_plugins/openvswitch
index 7b9835d..d5d4f10 100644
--- a/lib/quantum_plugins/openvswitch
+++ b/lib/quantum_plugins/openvswitch
@@ -137,6 +137,8 @@
if [[ $OVS_ENABLE_TUNNELING = "True" ]]; then
iniset /$Q_PLUGIN_CONF_FILE OVS enable_tunneling True
fi
+
+ _quantum_ovs_base_configure_firewall_driver
}
function quantum_plugin_setup_interface_driver() {
diff --git a/lib/quantum_plugins/ryu b/lib/quantum_plugins/ryu
index c482747..dcdccb7 100644
--- a/lib/quantum_plugins/ryu
+++ b/lib/quantum_plugins/ryu
@@ -57,6 +57,8 @@
function quantum_plugin_configure_service() {
iniset /$Q_PLUGIN_CONF_FILE OVS openflow_rest_api $RYU_API_HOST:$RYU_API_PORT
+
+ _quantum_ovs_base_configure_firewall_driver
}
function quantum_plugin_setup_interface_driver() {
diff --git a/lib/rpc_backend b/lib/rpc_backend
index fc439ec..4b04053 100644
--- a/lib/rpc_backend
+++ b/lib/rpc_backend
@@ -78,14 +78,18 @@
fi
elif is_service_enabled zeromq; then
if is_fedora; then
- uninstall_package zeromq python-zmq
+ uninstall_package zeromq python-zmq redis
elif is_ubuntu; then
- uninstall_package libzmq1 python-zmq
+ uninstall_package libzmq1 python-zmq redis-server
elif is_suse; then
- uninstall_package libzmq1 python-pyzmq
+ uninstall_package libzmq1 python-pyzmq redis
else
exit_distro_not_supported "zeromq installation"
fi
+
+ # Necessary directory for socket location.
+ sudo mkdir -p /var/run/openstack
+ sudo chown $STACK_USER /var/run/openstack
fi
}
@@ -115,12 +119,15 @@
exit_distro_not_supported "qpid installation"
fi
elif is_service_enabled zeromq; then
+ # NOTE(ewindisch): Redis is not strictly necessary
+ # but there is a matchmaker driver that works
+ # really well & out of the box for multi-node.
if is_fedora; then
- install_package zeromq python-zmq
+ install_package zeromq python-zmq redis
elif is_ubuntu; then
- install_package libzmq1 python-zmq
+ install_package libzmq1 python-zmq redis-server
elif is_suse; then
- install_package libzmq1 python-pyzmq
+ install_package libzmq1 python-pyzmq redis
else
exit_distro_not_supported "zeromq installation"
fi
@@ -158,6 +165,11 @@
local section=$3
if is_service_enabled zeromq; then
iniset $file $section rpc_backend ${package}.openstack.common.rpc.impl_zmq
+ iniset $file $section rpc_zmq_matchmaker \
+ ${package}.openstack.common.rpc.matchmaker_redis.MatchMakerRedis
+ # Set MATCHMAKER_REDIS_HOST if running multi-node.
+ MATCHMAKER_REDIS_HOST=${MATCHMAKER_REDIS_HOST:-127.0.0.1}
+ iniset $file matchmaker_redis host $MATCHMAKER_REDIS_HOST
elif is_service_enabled qpid; then
iniset $file $section rpc_backend ${package}.openstack.common.rpc.impl_qpid
if is_ubuntu; then
diff --git a/openrc b/openrc
index 8af2854..f1026a5 100644
--- a/openrc
+++ b/openrc
@@ -80,7 +80,3 @@
export NOVA_VERSION=${NOVA_VERSION:-1.1}
# In the future this will change names:
export COMPUTE_API_VERSION=${COMPUTE_API_VERSION:-$NOVA_VERSION}
-
-# set log level to DEBUG (helps debug issues)
-# export KEYSTONECLIENT_DEBUG=1
-# export NOVACLIENT_DEBUG=1
diff --git a/rejoin-stack.sh b/rejoin-stack.sh
index a82c73c..c452694 100755
--- a/rejoin-stack.sh
+++ b/rejoin-stack.sh
@@ -5,13 +5,15 @@
TOP_DIR=`dirname $0`
+source $TOP_DIR/stackrc
+
# if screenrc exists, run screen
if [[ -e $TOP_DIR/stack-screenrc ]]; then
if screen -ls | egrep -q "[0-9].stack"; then
echo "Attaching to already started screen session.."
exec screen -r stack
fi
- exec screen -c $TOP_DIR/stack-screenrc
+ exec screen -c $TOP_DIR/stack-screenrc -S $SCREEN_NAME
fi
echo "Couldn't find $TOP_DIR/stack-screenrc file; have you run stack.sh yet?"
diff --git a/stack.sh b/stack.sh
index 5dea000..92d17b8 100755
--- a/stack.sh
+++ b/stack.sh
@@ -32,6 +32,12 @@
# and ``DISTRO``
GetDistro
+
+# Configure non-default repos
+# ===========================
+
+# Repo configuration needs to occur before package installation.
+
# Some dependencies are not available in Debian Wheezy official
# repositories. However, it's possible to run OpenStack from gplhost
# repository.
@@ -42,6 +48,28 @@
apt_get install --force-yes gplhost-archive-keyring
fi
+# Installing Open vSwitch on RHEL6 requires enabling the RDO repo.
+RHEL6_RDO_REPO_RPM=${RHEL6_RDO_REPO_RPM:-"http://rdo.fedorapeople.org/openstack/openstack-grizzly/rdo-release-grizzly-3.noarch.rpm"}
+RHEL6_RDO_REPO_ID=${RHEL6_RDO_REPO_ID:-"openstack-grizzly"}
+# RHEL6 requires EPEL for many Open Stack dependencies
+RHEL6_EPEL_RPM=${RHEL6_EPEL_RPM:-"http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"}
+
+if [[ is_fedora && $DISTRO =~ (rhel6) ]]; then
+
+ if ! yum repolist enabled $RHEL6_RDO_REPO_ID | grep -q $RHEL6_RDO_REPO_ID; then
+ echo "RDO repo not detected; installing"
+ yum_install $RHEL6_RDO_REPO_RPM || \
+ die $LINENO "Error installing RDO repo, cannot continue"
+ fi
+
+ if ! yum repolist enabled epel | grep -q 'epel'; then
+ echo "EPEL not detected; installing"
+ yum_install ${RHEL6_EPEL_RPM} || \
+ die $LINENO "Error installing EPEL repo, cannot continue"
+ fi
+
+fi
+
# Global Settings
# ===============
@@ -125,7 +153,6 @@
# and the specified rpc backend is available on your platform.
check_rpc_backend
-SCREEN_NAME=${SCREEN_NAME:-stack}
# Check to see if we are already running DevStack
# Note that this may fail if USE_SCREEN=False
if type -p screen >/dev/null && screen -ls | egrep -q "[0-9].$SCREEN_NAME"; then
@@ -609,6 +636,15 @@
# transiently, meaning we avoid the issue of it not being cleaned
# out properly. Note we do this before the track-depends below.
pip_install hgtools
+
+ # The version of python-nose in the RHEL6 repo is incompatible
+ # with Tempest. As a workaround:
+
+ # Install nose 1.1 (Tempest-compatible) from EPEL
+ install_package python-nose1.1
+ # Add a symlink for the new nosetests to allow tox for Tempest to
+ # work unmolested.
+ sudo ln -sf /usr/bin/nosetests1.1 /usr/local/bin/nosetests
fi
TRACK_DEPENDS=${TRACK_DEPENDS:-False}
diff --git a/stackrc b/stackrc
index edf5a82..2ac564c 100644
--- a/stackrc
+++ b/stackrc
@@ -245,6 +245,9 @@
# Compatibility until it's eradicated from CI
USE_SCREEN=${SCREEN_DEV:-$USE_SCREEN}
+# Set default screen name
+SCREEN_NAME=${SCREEN_NAME:-stack}
+
# Local variables:
# mode: shell-script
# End: