driver_certs/cinder_driver_cert.sh
4debfe2b
 #!/usr/bin/env bash
 
 # **cinder_cert.sh**
 
fe4c4f7a
 # 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:
d8864fea
 #
fe4c4f7a
 #     SCREEN_LOGDIR=/opt/stack/screen-logs
 
0ebf2dfe
 set -o pipefail
 
4debfe2b
 CERT_DIR=$(cd $(dirname "$0") && pwd)
 TOP_DIR=$(cd $CERT_DIR/..; pwd)
 
 source $TOP_DIR/functions
 source $TOP_DIR/stackrc
 source $TOP_DIR/openrc
75dbd9b1
 source $TOP_DIR/lib/infra
4debfe2b
 source $TOP_DIR/lib/tempest
 source $TOP_DIR/lib/cinder
 
 TEMPFILE=`mktemp`
 RECLONE=True
 
aee18c74
 function log_message {
4debfe2b
     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_*
19d22bd1
 log_message "Run the actual tempest volume tests (./tools/pretty_tox.sh volume)...", True
5107556a
 ./tools/pretty_tox.sh volume 2>&1 | tee -a $TEMPFILE
4debfe2b
 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