Merge "Add driver parameter for PLUMgrid configuration file"
diff --git a/README.md b/README.md
index 89e3855..f9a996e 100644
--- a/README.md
+++ b/README.md
@@ -124,7 +124,7 @@
`APACHE_ENABLED_SERVICES` in your ``localrc`` section. Remember to
enable these services at first as above.
- APACHE_ENABLED_SERVICES+=keystone,swift
+ APACHE_ENABLED_SERVICES+=key,swift
# Swift
diff --git a/clean.sh b/clean.sh
index 8bafcad..7851da3 100755
--- a/clean.sh
+++ b/clean.sh
@@ -102,7 +102,7 @@
fi
# Clean out /etc
-sudo rm -rf /etc/keystone /etc/glance /etc/nova /etc/cinder /etc/swift /etc/heat
+sudo rm -rf /etc/keystone /etc/glance /etc/nova /etc/cinder /etc/swift /etc/heat /etc/neutron
# Clean out tgt
sudo rm -f /etc/tgt/conf.d/*
diff --git a/files/apts/ironic b/files/apts/ironic
index a749ad7..b77a6b1 100644
--- a/files/apts/ironic
+++ b/files/apts/ironic
@@ -1,3 +1,4 @@
+iptables
libguestfs0
libvirt-bin
openssh-client
diff --git a/files/patches/unittest2-discover.patch b/files/patches/unittest2-discover.patch
new file mode 100644
index 0000000..347300d
--- /dev/null
+++ b/files/patches/unittest2-discover.patch
@@ -0,0 +1,16 @@
+diff -r b2efb7df637b discover.py
+--- a/discover.py Thu Mar 24 00:31:02 2011 -0400
++++ b/discover.py Thu Nov 28 12:02:19 2013 +0000
+@@ -82,7 +82,11 @@
+ """
+ testMethodPrefix = 'test'
+ sortTestMethodsUsing = cmp
+- suiteClass = unittest.TestSuite
++ try:
++ import unittest2
++ suiteClass = unittest2.TestSuite
++ except ImportError:
++ suiteClass = unittest.TestSuite
+ _top_level_dir = None
+
+ def loadTestsFromTestCase(self, testCaseClass):
diff --git a/files/rpms/ironic b/files/rpms/ironic
index 54b9829..6534095 100644
--- a/files/rpms/ironic
+++ b/files/rpms/ironic
@@ -1,6 +1,8 @@
+iptables
libguestfs
libvirt
libvirt-python
+net-tools
openssh-clients
openvswitch
python-libguestfs
diff --git a/lib/databases/mysql b/lib/databases/mysql
index 0a96cf8..ea22d14 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -47,6 +47,7 @@
}
function configure_database_mysql {
+ local slow_log
echo_summary "Configuring and starting MySQL"
if is_ubuntu; then
@@ -92,7 +93,11 @@
if [[ "$DATABASE_QUERY_LOGGING" == "True" ]]; then
echo_summary "Enabling MySQL query logging"
-
+ if is_fedora && ! [[ $DISTRO =~ (rhel6) ]]; then
+ slow_log=/var/log/mariadb/mariadb-slow.log
+ else
+ slow_log=/var/log/mysql/mysql-slow.log
+ fi
sudo sed -e '/log.slow.queries/d' \
-e '/long.query.time/d' \
-e '/log.queries.not.using.indexes/d' \
@@ -102,7 +107,7 @@
# 0 seconds) and log all non-indexed queries
sudo bash -c "source $TOP_DIR/functions && \
iniset $MY_CONF mysqld slow-query-log 1 && \
- iniset $MY_CONF mysqld slow-query-log-file /var/log/mysql/mysql-slow.log && \
+ iniset $MY_CONF mysqld slow-query-log-file $slow_log && \
iniset $MY_CONF mysqld long-query-time 0 && \
iniset $MY_CONF mysqld log-queries-not-using-indexes 1"
diff --git a/lib/ironic b/lib/ironic
index 0528610..389040c 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -60,6 +60,7 @@
# older and newer kernels.
IRONIC_VM_SPECS_RAM=${IRONIC_VM_SPECS_RAM:-1024}
IRONIC_VM_SPECS_DISK=${IRONIC_VM_SPECS_DISK:-10}
+IRONIC_VM_EPHEMERAL_DISK=${IRONIC_VM_EPHEMERAL_DISK:-0}
IRONIC_VM_EMULATOR=${IRONIC_VM_EMULATOR:-/usr/bin/qemu-system-x86_64}
IRONIC_VM_NETWORK_BRIDGE=${IRONIC_VM_NETWORK_BRIDGE:-brbm}
IRONIC_VM_NETWORK_RANGE=${IRONIC_VM_NETWORK_RANGE:-192.0.2.0/24}
@@ -369,7 +370,8 @@
done < $IRONIC_VM_MACS_CSV_FILE
# create the nova flavor
- nova flavor-create baremetal auto $IRONIC_VM_SPECS_RAM $IRONIC_VM_SPECS_DISK $IRONIC_VM_SPECS_CPU
+ adjusted_disk=$(($IRONIC_VM_SPECS_DISK - $IRONIC_VM_EPHEMERAL_DISK))
+ nova flavor-create --ephemeral $IRONIC_VM_EPHEMERAL_DISK baremetal auto $IRONIC_VM_SPECS_RAM $adjusted_disk $IRONIC_VM_SPECS_CPU
nova flavor-key baremetal set "cpu_arch"="x86_64" "baremetal:deploy_kernel_id"="$IRONIC_DEPLOY_KERNEL_ID" "baremetal:deploy_ramdisk_id"="$IRONIC_DEPLOY_RAMDISK_ID"
# intentional sleep to make sure the tag has been set to port
@@ -393,11 +395,16 @@
neutron port-delete $PORT_ID
}
-function configure_tftpd {
- # enable tftp natting for allowing connections to SERVICE_HOST's tftp server
+function configure_iptables {
+ # enable tftp natting for allowing connections to HOST_IP's tftp server
sudo modprobe nf_conntrack_tftp
sudo modprobe nf_nat_tftp
+ # nodes boot from TFTP and callback to the API server listening on $HOST_IP
+ sudo iptables -I INPUT -d $HOST_IP -p udp --dport 69 -j ACCEPT || true
+ sudo iptables -I INPUT -d $HOST_IP -p tcp --dport 6385 -j ACCEPT || true
+}
+function configure_tftpd {
if is_ubuntu; then
PXEBIN=/usr/lib/syslinux/pxelinux.0
elif is_fedora; then
@@ -520,6 +527,7 @@
create_bridge_and_vms
enroll_vms
configure_tftpd
+ configure_iptables
# restart nova-compute to ensure its resource tracking is up to
# date with newly enrolled nodes
@@ -539,6 +547,10 @@
sudo su $STACK_USER -c "$IRONIC_SCRIPTS_DIR/cleanup-nodes $IRONIC_VM_COUNT $IRONIC_VM_NETWORK_BRIDGE"
sudo rm -rf /etc/xinetd.d/tftp /etc/init/tftpd-hpa.override
restart_service xinetd
+ sudo iptables -D INPUT -d $HOST_IP -p udp --dport 69 -j ACCEPT || true
+ sudo iptables -D INPUT -d $HOST_IP -p tcp --dport 6385 -j ACCEPT || true
+ sudo rmmod nf_conntrack_tftp || true
+ sudo rmmod nf_nat_tftp || true
}
# Restore xtrace + pipefail
diff --git a/lib/keystone b/lib/keystone
index b31cc57..f8e92f4 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -253,11 +253,17 @@
fi
# Format logging
- if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then
+ if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ] && ! is_apache_enabled_service key ; then
setup_colorized_logging $KEYSTONE_CONF DEFAULT
fi
if is_apache_enabled_service key; then
+ iniset $KEYSTONE_CONF DEFAULT debug "True"
+ # Eliminate the %(asctime)s.%(msecs)03d from the log format strings
+ iniset $KEYSTONE_CONF DEFAULT logging_context_format_string "%(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s"
+ iniset $KEYSTONE_CONF DEFAULT logging_default_format_string "%(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s"
+ iniset $KEYSTONE_CONF DEFAULT logging_debug_format_suffix "%(funcName)s %(pathname)s:%(lineno)d"
+ iniset $KEYSTONE_CONF DEFAULT logging_exception_prefix "%(process)d TRACE %(name)s %(instance)s"
_config_keystone_apache_wsgi
fi
}
@@ -450,6 +456,8 @@
function stop_keystone {
# Kill the Keystone screen window
screen_stop key
+ # Cleanup the WSGI files and VHOST
+ _cleanup_keystone_apache_wsgi
}
diff --git a/lib/sahara b/lib/sahara
index 55131f9..d56cf1b 100644
--- a/lib/sahara
+++ b/lib/sahara
@@ -166,7 +166,7 @@
# start_sahara() - Start running processes, including screen
function start_sahara {
- screen_it sahara "cd $SAHARA_DIR && $SAHARA_BIN_DIR/sahara-api --config-file $SAHARA_CONF_FILE"
+ screen_it sahara "cd $SAHARA_DIR && $SAHARA_BIN_DIR/sahara-all --config-file $SAHARA_CONF_FILE"
}
# stop_sahara() - Stop running processes
diff --git a/lib/tempest b/lib/tempest
index 2125f88..e899443 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -88,9 +88,6 @@
local boto_instance_type="m1.tiny"
local ssh_connect_method="fixed"
- # TODO(afazekas):
- # sudo python setup.py deploy
-
# Save IFS
ifs=$IFS
@@ -406,6 +403,7 @@
# install_tempest() - Collect source and prepare
function install_tempest {
git_clone $TEMPEST_REPO $TEMPEST_DIR $TEMPEST_BRANCH
+ pip_install "tox<1.7"
}
# init_tempest() - Initialize ec2 images
diff --git a/stack.sh b/stack.sh
index 7da1fb9..19d47d6 100755
--- a/stack.sh
+++ b/stack.sh
@@ -494,14 +494,18 @@
done
}
+function kill_spinner {
+ if [ ! -z "$LAST_SPINNER_PID" ]; then
+ kill >/dev/null 2>&1 $LAST_SPINNER_PID
+ printf "\b\b\bdone\n" >&3
+ fi
+}
+
# Echo text to the log file, summary log file and stdout
# echo_summary "something to say"
function echo_summary {
if [[ -t 3 && "$VERBOSE" != "True" ]]; then
- kill >/dev/null 2>&1 $LAST_SPINNER_PID
- if [ ! -z "$LAST_SPINNER_PID" ]; then
- printf "\b\b\bdone\n" >&3
- fi
+ kill_spinner
echo -n -e $@ >&6
spinner &
LAST_SPINNER_PID=$!
@@ -539,10 +543,11 @@
# Redirect output according to config
- # Copy stdout to fd 3
+ # Set fd 3 to a copy of stdout. So we can set fd 1 without losing
+ # stdout later.
exec 3>&1
if [[ "$VERBOSE" == "True" ]]; then
- # Redirect stdout/stderr to tee to write the log file
+ # Set fd 1 and 2 to write the log file
exec 1> >( awk -v logfile=${LOGFILE} '
/((set \+o$)|xtrace)/ { next }
{
@@ -555,7 +560,7 @@
print
fflush("")
}' ) 2>&1
- # Set up a second fd for output
+ # Set fd 6 to summary log file
exec 6> >( tee "${SUMFILE}" )
else
# Set fd 1 and 2 to primary logfile
@@ -570,7 +575,8 @@
ln -sf $SUMFILE $LOGDIR/$LOGFILENAME.summary
else
# Set up output redirection without log files
- # Copy stdout to fd 3
+ # Set fd 3 to a copy of stdout. So we can set fd 1 without losing
+ # stdout later.
exec 3>&1
if [[ "$VERBOSE" != "True" ]]; then
# Throw away stdout and stderr
@@ -612,6 +618,10 @@
echo "exit_trap: cleaning up child processes"
kill 2>&1 $jobs
fi
+
+ # Kill the last spinner process
+ kill_spinner
+
exit $r
}
diff --git a/tools/fixup_stuff.sh b/tools/fixup_stuff.sh
index 7833278..e6a6a79 100755
--- a/tools/fixup_stuff.sh
+++ b/tools/fixup_stuff.sh
@@ -145,4 +145,11 @@
# work unmolested.
sudo ln -sf /usr/bin/nosetests1.1 /usr/local/bin/nosetests
+ # workaround for https://code.google.com/p/unittest-ext/issues/detail?id=79
+ install_package python-unittest2 patch
+ pip_install discover
+ (cd /usr/lib/python2.6/site-packages/; sudo patch <"$FILES/patches/unittest2-discover.patch" || echo 'Assume already applied')
+ # Make sure the discover.pyc is up to date
+ sudo rm /usr/lib/python2.6/site-packages/discover.pyc || true
+ sudo python -c 'import discover'
fi
diff --git a/tools/ironic/templates/tftpd-xinetd.template b/tools/ironic/templates/tftpd-xinetd.template
index 7b9b0f8..5f3d03f 100644
--- a/tools/ironic/templates/tftpd-xinetd.template
+++ b/tools/ironic/templates/tftpd-xinetd.template
@@ -8,4 +8,7 @@
server = /usr/sbin/in.tftpd
server_args = -v -v -v -v -v --map-file %TFTPBOOT_DIR%/map-file %TFTPBOOT_DIR%
disable = no
+ # This is a workaround for Fedora, where TFTP will listen only on
+ # IPv6 endpoint, if IPv4 flag is not used.
+ flags = IPv4
}