0ebf2dfe62
In cinder_driver_certs.sh, the tests are run and output is piped to "tee". Currently, checking the exit code of this command only checks that "tee" exited properly. Using the pipefail option for this script will ensure the entire pipe succeeds before passing a driver. Change-Id: I58311aa0e2c779467d39c4477c4ea39d14eda207 Closes-Bug: #1289129
107 lines
3.2 KiB
Bash
Executable File
107 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# **cinder_cert.sh**
|
|
|
|
# This script is a simple wrapper around the tempest volume api tests
|
|
# It requires that you have a working and functional devstack install
|
|
# and that you've enabled your device driver by making the necessary
|
|
# modifications to /etc/cinder/cinder.conf
|
|
|
|
# This script will refresh your openstack repo's and restart the cinder
|
|
# services to pick up your driver changes.
|
|
# please NOTE; this script assumes your devstack install is functional
|
|
# and includes tempest. A good first step is to make sure you can
|
|
# create volumes on your device before you even try and run this script.
|
|
|
|
# It also assumes default install location (/opt/stack/xxx)
|
|
# to aid in debug, you should also verify that you've added
|
|
# an output directory for screen logs:
|
|
#
|
|
# SCREEN_LOGDIR=/opt/stack/screen-logs
|
|
|
|
set -o pipefail
|
|
|
|
CERT_DIR=$(cd $(dirname "$0") && pwd)
|
|
TOP_DIR=$(cd $CERT_DIR/..; pwd)
|
|
|
|
source $TOP_DIR/functions
|
|
source $TOP_DIR/stackrc
|
|
source $TOP_DIR/openrc
|
|
source $TOP_DIR/lib/infra
|
|
source $TOP_DIR/lib/tempest
|
|
source $TOP_DIR/lib/cinder
|
|
|
|
TEMPFILE=`mktemp`
|
|
RECLONE=True
|
|
|
|
function log_message {
|
|
MESSAGE=$1
|
|
STEP_HEADER=$2
|
|
if [[ "$STEP_HEADER" = "True" ]]; then
|
|
echo -e "\n========================================================" | tee -a $TEMPFILE
|
|
fi
|
|
echo -e `date +%m/%d/%y/%T:`"${MESSAGE}" | tee -a $TEMPFILE
|
|
if [[ "$STEP_HEADER" = "True" ]]; then
|
|
echo -e "========================================================" | tee -a $TEMPFILE
|
|
fi
|
|
}
|
|
|
|
if [[ "$OFFLINE" = "True" ]]; then
|
|
echo "ERROR: Driver cert requires fresh clone/pull from ${CINDER_BRANCH}"
|
|
echo " Please set OFFLINE=False and retry."
|
|
exit 1
|
|
fi
|
|
|
|
log_message "RUNNING CINDER DRIVER CERTIFICATION CHECK", True
|
|
log_message "Output is being logged to: $TEMPFILE"
|
|
|
|
cd $CINDER_DIR
|
|
log_message "Cloning to ${CINDER_REPO}...", True
|
|
install_cinder
|
|
|
|
log_message "Pull a fresh Clone of cinder repo...", True
|
|
git status | tee -a $TEMPFILE
|
|
git log --pretty=oneline -n 1 | tee -a $TEMPFILE
|
|
|
|
log_message "Gathering copy of cinder.conf file (passwords will be scrubbed)...", True
|
|
cat /etc/cinder/cinder.conf | egrep -v "(^#.*|^$)" | tee -a $TEMPFILE
|
|
sed -i "s/\(.*password.*=\).*$/\1 xxx/i" $TEMPFILE
|
|
log_message "End of cinder.conf.", True
|
|
|
|
cd $TOP_DIR
|
|
# Verify tempest is installed/enabled
|
|
if ! is_service_enabled tempest; then
|
|
log_message "ERROR!!! Cert requires tempest in enabled_services!", True
|
|
log_message" Please add tempest to enabled_services and retry."
|
|
exit 1
|
|
fi
|
|
|
|
cd $TEMPEST_DIR
|
|
install_tempest
|
|
|
|
log_message "Verify tempest is current....", True
|
|
git status | tee -a $TEMPFILE
|
|
log_message "Check status and get latest commit..."
|
|
git log --pretty=oneline -n 1 | tee -a $TEMPFILE
|
|
|
|
|
|
#stop and restart cinder services
|
|
log_message "Restart Cinder services...", True
|
|
stop_cinder
|
|
sleep 1
|
|
start_cinder
|
|
sleep 5
|
|
|
|
# run tempest api/volume/test_*
|
|
log_message "Run the actual tempest volume tests (./tools/pretty_tox.sh api.volume)...", True
|
|
./tools/pretty_tox.sh api.volume 2>&1 | tee -a $TEMPFILE
|
|
if [[ $? = 0 ]]; then
|
|
log_message "CONGRATULATIONS!!! Device driver PASSED!", True
|
|
log_message "Submit output: ($TEMPFILE)"
|
|
exit 0
|
|
else
|
|
log_message "SORRY!!! Device driver FAILED!", True
|
|
log_message "Check output in $TEMPFILE"
|
|
exit 1
|
|
fi
|