19d22bd19a
The Cinder Cert script currently only runs the Tempest tests tagged with volume.api, should be all Volume tests to make sure we get things like attach and other commands fully tested. Change-Id: Ic15d2ad6d3616bfde4838873d0c79664b009ef1f
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 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
|