diff --git a/slave_scripts/devstack-vm-gate.sh b/slave_scripts/devstack-vm-gate.sh index dccb13b3..224123f1 100755 --- a/slave_scripts/devstack-vm-gate.sh +++ b/slave_scripts/devstack-vm-gate.sh @@ -1,4 +1,4 @@ -#!/bin/bash -xe +#!/bin/bash -x # Gate commits to several projects on a VM running those projects # configured by devstack. @@ -42,8 +42,11 @@ do 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" @@ -59,8 +62,21 @@ done python $CI_SCRIPT_DIR/devstack-vm-launch.py || exit $? . $HOSTNAME.node.sh rm $HOSTNAME.node.sh -scp -C -q $CI_SCRIPT_DIR/devstack-vm-gate-host.sh $ipAddr: + +scp -C $CI_SCRIPT_DIR/devstack-vm-gate-host.sh $ipAddr: +RETVAL=$? +if [ $RETVAL != 0 ]; then + echo "Deleting host" + python $CI_SCRIPT_DIR/devstack-vm-delete.py +fi + scp -C -q -r $WORKSPACE/ $ipAddr:workspace +RETVAL=$? +if [ $RETVAL != 0 ]; then + echo "Deleting host" + python $CI_SCRIPT_DIR/devstack-vm-delete.py +fi + ssh $ipAddr ./devstack-vm-gate-host.sh RETVAL=$? if [ $RETVAL = 0 ]; then @@ -69,4 +85,5 @@ if [ $RETVAL = 0 ]; then else echo "Giving host to developer" python $CI_SCRIPT_DIR/devstack-vm-give.py + exit $RETVAL fi diff --git a/slave_scripts/devstack-vm-update-image.py b/slave_scripts/devstack-vm-update-image.py index bb9ab9b1..6609b1f7 100755 --- a/slave_scripts/devstack-vm-update-image.py +++ b/slave_scripts/devstack-vm-update-image.py @@ -30,7 +30,7 @@ import sys import os import commands import time -from paramiko import SSHClient +import paramiko CLOUD_SERVERS_DRIVER = os.environ.get('CLOUD_SERVERS_DRIVER','rackspace') CLOUD_SERVERS_USERNAME = os.environ['CLOUD_SERVERS_USERNAME'] @@ -39,7 +39,8 @@ CLOUD_SERVERS_API_KEY = os.environ['CLOUD_SERVERS_API_KEY'] SERVER_NAME = 'devstack-oneiric.template.openstack.org' IMAGE_NAME = 'devstack-oneiric' -debs = ' '.join(open(sys.argv[0]).read().split('\n')) +debs = ' '.join(open(sys.argv[1]).read().split('\n')) +pips = ' '.join(open(sys.argv[2]).read().split('\n')) if CLOUD_SERVERS_DRIVER == 'rackspace': Driver = get_driver(Provider.RACKSPACE) @@ -58,12 +59,14 @@ else: raise Exception ("Driver not supported") ip = node.public_ip[0] -client = SSHClient() +client = paramiko.SSHClient() client.load_system_host_keys() +client.set_missing_host_key_policy(paramiko.WarningPolicy()) client.connect(ip) def run(action, x): stdin, stdout, stderr = client.exec_command(x) + print x ret = stdout.channel.recv_exit_status() print stdout.read() print stderr.read() @@ -72,6 +75,7 @@ def run(action, x): run('update package list', 'sudo apt-get update') run('install packages', 'sudo DEBIAN_FRONTEND=noninteractive apt-get --option "Dpkg::Options::=--force-confold" --assume-yes install %s' % debs) +run('install pips', 'sudo pip install %s' % pips) run('upgrade server', 'sudo apt-get -y dist-upgrade') run('stop mysql', 'sudo /etc/init.d/mysql stop') run('stop rabbitmq', 'sudo /etc/init.d/rabbitmq-server stop') diff --git a/slave_scripts/devstack-vm-update-image.sh b/slave_scripts/devstack-vm-update-image.sh index 3b3019cd..44e0df0e 100755 --- a/slave_scripts/devstack-vm-update-image.sh +++ b/slave_scripts/devstack-vm-update-image.sh @@ -29,6 +29,7 @@ git remote update git pull --ff-only origin cd $WORKSPACE -cat devstack/files/apts/* | grep NOPRIME | cut -d\# -f1 > devstack-debs +cat devstack/files/apts/* | grep -v NOPRIME | cut -d\# -f1 > devstack-debs +cat devstack/files/pips/* > devstack-pips -$CI_SCRIPT_DIR/devstack-vm-update-image.py $WORKSPACE/devstack-debs +$CI_SCRIPT_DIR/devstack-vm-update-image.py $WORKSPACE/devstack-debs $WORKSPACE/devstack-pips