|  | #!/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 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 |