import time
import types
import yaml
+import base64
from subprocess import CalledProcessError
# user_data = os.path.join(os.path.dirname(__file__),
# '../..', self.user_data)
# template = open(user_data).read()
+ with open(os.path.dirname(__file__) + '/bootstrap-teuthology.sh', 'r') as f:
+ bootstrap_content = cmd_str(f.read().encode('base64'))
+
openrc = ''
cacert_cmd = None
for (var, value) in os.environ.items():
# upload = '--archive-upload ' + self.args.archive_upload
# else:
# upload = ''
- clone = teuth_config.openstack['clone']
network = OpenStack().get_network()
- log.debug('Default teuthology clone: %s' % clone)
- if self.args.teuthology_git_url:
- clone = "git clone -b {branch} {url}".format(
- branch=self.args.teuthology_branch,
- url=self.args.teuthology_git_url)
- log.debug('Overridden teuthology clone: %s' % clone)
ceph_workbench = ''
if self.args.ceph_workbench_git_url:
ceph_workbench += (" --ceph-workbench-branch " +
cmds = [
- "su - -c '(set -x ; %s && cd teuthology && ./bootstrap install)' "
- "%s >> /tmp/init.out 2>&1" % (clone, self.username),
+ cmd_str(
+ "su - -c 'bash /tmp/bootstrap-teuthology.sh "
+ "teuthology {url} {branch}' {user} >> "
+ "/tmp/init.out 2>&1".format(
+ url=self.args.teuthology_git_url,
+ branch=self.args.teuthology_branch,
+ user=self.username)),
#"echo 'export %s' | tee /home/%s/openrc.sh" % (openrc, self.username),
cmd_str(
"su - -c 'cat | tee $HOME/openrc.sh' {user} <<EOF\n"
'git',
'rsync',
],
+ 'write_files': [
+ {
+ 'path': '/tmp/bootstrap-teuthology.sh',
+ 'content': bootstrap_content,
+ 'encoding': 'b64',
+ 'permissions': '0755',
+ },
+ ],
'runcmd': cmds,
'final_message': 'teuthology is up and running after $UPTIME seconds'
}
--- /dev/null
+#!/bin/bash -ex
+TEUTH_PATH=${1:-"teuthology"}
+TEUTH_GIT=${2:-"https://github.com/ceph/teuthology"}
+TEUTH_BRANCH=${3:-"master"}
+
+mkdir -p $TEUTH_PATH
+git init $TEUTH_PATH
+
+pushd $TEUTH_PATH
+
+echo Fetch upstream changes from $TEUTH_GIT
+git fetch --tags --progress $TEUTH_GIT +refs/heads/*:refs/remotes/origin/*
+git config remote.origin.url $TEUTH_GIT
+git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
+git config remote.origin.url $TEUTH_GIT
+
+# Check if branch has form origin/pr/*/merge
+isPR="^origin\/pr\/"
+if [[ "$TEUTH_BRANCH" =~ $isPR ]] ; then
+
+git fetch --tags --progress https://github.com/suse/teuthology +refs/pull/*:refs/remotes/origin/pr/*
+rev=$(git rev-parse refs/remotes/$TEUTH_BRANCH^{commit})
+
+git config core.sparsecheckout
+git checkout -f $rev
+else
+git checkout $TEUTH_BRANCH
+fi
+
+./bootstrap install
+
+popd
+