From b225682189b872f490fa285a67e5d0d1e5351ed0 Mon Sep 17 00:00:00 2001
From: Anthony Young <sleepsonthefloor@gmail.com>
Date: Thu, 10 Nov 2011 12:57:59 -0800
Subject: [PATCH] progress on getting a working test configuration

---
 tools/build_uec.sh                          | 23 +++++++++++++++++++++
 tools/jenkins/adapters/euca.sh              |  7 ++++++-
 tools/jenkins/configurations/kvm.sh         |  3 +++
 tools/jenkins/jenkins_home/build_jenkins.sh |  7 +++++++
 tools/setup_stack_user.sh                   |  4 ----
 5 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/tools/build_uec.sh b/tools/build_uec.sh
index bbb8b37c79..2fb8b500a8 100755
--- a/tools/build_uec.sh
+++ b/tools/build_uec.sh
@@ -187,6 +187,29 @@ cat > localrc <<LOCAL_EOF
 ROOTSLEEP=0
 `cat $TOP_DIR/localrc`
 LOCAL_EOF
+EOF
+
+# Setup stack user with our key
+if [ -e ~/.ssh/id_rsa.pub ]; then
+    cat > $vm_dir/uec/user-data<<EOF
+mkdir -p /opt/stack
+useradd stack -s /bin/bash -d /opt/stack -G libvirtd || true
+echo stack:pass | chpasswd
+mkdir -p /opt/stack/.ssh
+echo `cat ~/.ssh/id_rsa.pub` > /opt/stack/.ssh/authorized_keys
+chown -R stack /opt/stack
+chmod 700 /opt/stack/.ssh
+chmod 600 /opt/stack/.ssh/authorized_keys
+
+grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers ||
+    echo "#includedir /etc/sudoers.d" >> /etc/sudoers
+( umask 226 && echo "stack ALL=(ALL) NOPASSWD:ALL" \
+    > /etc/sudoers.d/50_stack_sh )
+EOF
+fi
+
+# Run stack.sh
+cat > $vm_dir/uec/user-data<<EOF
 ./stack.sh
 EOF
 
diff --git a/tools/jenkins/adapters/euca.sh b/tools/jenkins/adapters/euca.sh
index 3cd971018f..b49ce9f21f 100755
--- a/tools/jenkins/adapters/euca.sh
+++ b/tools/jenkins/adapters/euca.sh
@@ -1,3 +1,8 @@
 #!/bin/bash
+# Echo commands, exit on error
+set -o xtrace
+set -o errexit
 
-echo "$0 SUCCESS!"
+TOP_DIR=$(cd ../../.. && pwd)
+HEAD_IP=`cat $TOP_DIR/addresses | grep HEAD | cut -d "=" -f2`
+ssh stack@$HEAD_IP 'cd devstack && source openrc && cd exercises &&  ./euca.sh'
diff --git a/tools/jenkins/configurations/kvm.sh b/tools/jenkins/configurations/kvm.sh
index 7c641d28e5..a6ac297623 100755
--- a/tools/jenkins/configurations/kvm.sh
+++ b/tools/jenkins/configurations/kvm.sh
@@ -49,3 +49,6 @@ $RC
 EOF
 cd tools
 sudo ./build_uec.sh
+
+# Make the address of the instances available to test runners
+echo HEAD=`cat /var/lib/libvirt/dnsmasq/$BASE_NAME.leases | cut -d " " -f3` > $TOP_DIR/addresses
diff --git a/tools/jenkins/jenkins_home/build_jenkins.sh b/tools/jenkins/jenkins_home/build_jenkins.sh
index 567a05629c..1a3407f200 100755
--- a/tools/jenkins/jenkins_home/build_jenkins.sh
+++ b/tools/jenkins/jenkins_home/build_jenkins.sh
@@ -10,6 +10,13 @@ if [[ $EUID -ne 0 ]]; then
    exit 1
 fi
 
+# Make sure user has configured an ssh pubkey
+if [ ! -e /root/.ssh/id_rsa.pub ]; then
+   echo "Public key is missing.  This is used to ssh into your instances."
+   echo "Please run ssh-keygen before proceeding"
+   exit 1
+fi
+
 # This directory
 CUR_DIR=$(cd $(dirname "$0") && pwd)
 
diff --git a/tools/setup_stack_user.sh b/tools/setup_stack_user.sh
index 231a20f332..fcb97333c2 100755
--- a/tools/setup_stack_user.sh
+++ b/tools/setup_stack_user.sh
@@ -49,10 +49,6 @@ grep -q "^#includedir.*/etc/sudoers.d" $STAGING_DIR/etc/sudoers ||
 cp $TOP_DIR/files/sudo/* $STAGING_DIR/etc/sudoers.d/
 sed -e "s,%USER%,$USER,g" -i $STAGING_DIR/etc/sudoers.d/*
 
-# and has sudo ability (in the future this should be limited to only what
-# stack requires)
-echo "stack ALL=(ALL) NOPASSWD: ALL" >> $STAGING_DIR/etc/sudoers
-
 # Gracefully cp only if source file/dir exists
 function cp_it {
     if [ -e $1 ] || [ -d $1 ]; then