#!/bin/bash function run_tempest { local message=$1 local tempest_regex=$2 sudo -H -u tempest tox -eall -- $tempest_regex --concurrency=$TEMPEST_CONCURRENCY exitcode=$? if [[ $exitcode -ne 0 ]]; then die $LINENO "$message failure" fi } function populate_start_script { SCREEN_NAME=${SCREEN_NAME:-stack} DEST=${DEST:-/opt/stack} SERVICE_DIR=${SERVICE_DIR:-${DEST}/status} ENABLED_SERVICES=${ENABLED_SERVICES:-n-cpu,g-api,c-vol} LIBVIRT_GROUP=${LIBVIRT_GROUP:-libvirtd} TIMESTAMP_FORMAT=${TIMESTAMP_FORMAT:-"%F-%H%M%S"} LOGDAYS=${LOGDAYS:-7} CURRENT_LOG_TIME=$(date "+$TIMESTAMP_FORMAT") #creates script for starting process without screen and copies it to all # nodes # # args: # $1 - service name to start # $2 - command to execute # $3 - group to run under cat > /tmp/start_process.sh <&"\$REAL_LOG_FILE" 2>&1 ln -sf "\$REAL_LOG_FILE" \$LOGDIR/\$service.log export PYTHONUNBUFFERED=1 fi if [[ -n "\$sg" ]]; then setsid sg \$sg -c "\$command" & echo \$! >\$SERVICE_DIR/\$SCREEN_NAME/\$service.pid else setsid \$command & echo \$! >\$SERVICE_DIR/\$SCREEN_NAME/\$service.pid fi exit 0 EOF chmod +x /tmp/start_process.sh $ANSIBLE subnodes --sudo -f 5 -i "$WORKSPACE/inventory" -m copy -a "src=/tmp/start_process.sh dest=/tmp/start_process.sh owner=$STACK_USER group=$STACK_USER mode=0777" $ANSIBLE subnodes --sudo -f 5 -i "$WORKSPACE/inventory" -m shell -a "ls -la /tmp/start_process.sh" } function stop { local target=$1 local service=$2 $ANSIBLE $target --sudo -f 5 -i "$WORKSPACE/inventory" -m shell -a " executable=/bin/bash BASE\=$BASE source $BASE/new/devstack/functions-common ENABLED_SERVICES\=$ENABLED_SERVICES SCREEN_NAME\=$SCREEN_NAME SERVICE_DIR\=$SERVICE_DIR stop_process $service " }