Files
devstack-gate/slave_scripts/devstack-vm-gate.sh
James E. Blair 3e0dbeae87 Several improvements to integration testing.
Change libcloud imports to remove deprecated module paths.

Actually move the pip cache into the place devstack expects on
the devstack host.

As soon as the new version of openstack-ci is checked out, start
using it for the scripts in the currently running test, so that
we are testing as much of the test infrastructure itself as
possible.

Allow the update and launch scripts to have the server/image name
specified in an environment variable for easier
testing/upgrading.

Change-Id: Iee0a946afa80929e99c08e5a6b0504c1d8dd0093
2012-01-05 01:05:21 +00:00

101 lines
2.8 KiB
Bash
Executable File

#!/bin/bash -x
# Gate commits to several projects on a VM running those projects
# configured by devstack.
# Copyright (C) 2011 OpenStack LLC.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
#
# See the License for the specific language governing permissions and
# limitations under the License.
PROJECTS="openstack/nova openstack/glance openstack/keystone openstack/python-novaclient openstack-dev/devstack openstack/openstack-ci"
# Set this to 1 to always keep the host around
ALWAYS_KEEP=${ALWAYS_KEEP:-0}
cd $WORKSPACE
mkdir -p logs
rm -f logs/*
for PROJECT in $PROJECTS
do
echo "Setting up $PROJECT"
SHORT_PROJECT=`basename $PROJECT`
if [[ ! -e $SHORT_PROJECT ]]; then
echo " Need to clone"
git clone https://review.openstack.org/p/$PROJECT
fi
cd $SHORT_PROJECT
BRANCH=$GERRIT_BRANCH
# See if this project has this branch, if not, use master
git remote update
if ! git branch -a |grep remotes/origin/$GERRIT_BRANCH>/dev/null; then
BRANCH=master
fi
git reset --hard
git clean -x -f
git checkout $BRANCH
git reset --hard remotes/origin/$BRANCH
git clean -x -f
if [[ $GERRIT_PROJECT == $PROJECT ]]; then
echo " Merging proposed change"
git fetch https://review.openstack.org/p/$PROJECT $GERRIT_REFSPEC
git merge FETCH_HEAD
else
echo " Updating from origin"
git pull --ff-only origin $BRANCH
fi
cd $WORKSPACE
done
# Set CI_SCRIPT_DIR to point to opestack-ci in the workspace so that
# we are testing the proposed change from this point forward.
CI_SCRIPT_DIR=$WORKSPACE/openstack-ci/slave-scripts
eval `$CI_SCRIPT_DIR/devstack-vm-fetch.py` || exit $?
scp -C $CI_SCRIPT_DIR/devstack-vm-gate-host.sh $NODE_IP_ADDR:
RETVAL=$?
if [ $RETVAL != 0 ]; then
echo "Deleting host"
$CI_SCRIPT_DIR/devstack-vm-delete.py $NODE_UUID
exit $RETVAL
fi
scp -C -q -r $WORKSPACE/ $NODE_IP_ADDR:workspace
RETVAL=$?
if [ $RETVAL != 0 ]; then
echo "Deleting host"
$CI_SCRIPT_DIR/devstack-vm-delete.py $NODE_UUID
exit $RETVAL
fi
ssh $NODE_IP_ADDR ./devstack-vm-gate-host.sh
RETVAL=$?
# No matter what, archive logs
scp -C -q $NODE_IP_ADDR:/var/log/syslog $WORKSPACE/logs/syslog.txt
# Now check whether the run was a success
if [ $RETVAL = 0 ] && [ $ALWAYS_KEEP = 0 ]; then
echo "Deleting host"
$CI_SCRIPT_DIR/devstack-vm-delete.py $NODE_UUID
exit $RETVAL
else
#echo "Giving host to developer"
#$CI_SCRIPT_DIR/devstack-vm-give.py $NODE_UUID
exit $RETVAL
fi