diff options
author | Pavel Raiskup <praiskup@redhat.com> | 2014-10-23 15:13:36 +0200 |
---|---|---|
committer | Pavel Raiskup <praiskup@redhat.com> | 2014-10-23 15:15:18 +0200 |
commit | 83edd3a996c506b6a1988d0c68214e9a849397d8 (patch) | |
tree | 480d540ba768ccbdb4d730c3a422164c846058f5 /controller/bin/dtf-run-remote.in | |
parent | 3d7b436102772e5e9e146e45e8d52210ce7498b5 (diff) | |
download | postgresql-setup-tests-83edd3a996c506b6a1988d0c68214e9a849397d8.tar.gz postgresql-setup-tests-83edd3a996c506b6a1988d0c68214e9a849397d8.tar.xz postgresql-setup-tests-83edd3a996c506b6a1988d0c68214e9a849397d8.zip |
controller: autoconfiscate
First part of converting controller to autoconf/automake solution.
* .gitignore: New gitignore; autotools ignores.
* Makefile.am: New file.
* get_machine: Renamed to template bin/dtf-get-machine.in.
* bin/dtf-get-machine.in: New template based on get_machine.
* run_remote: Renamed to template bin/dtf-run-remote.in.
* bin/dtf-run-remote.in: New binary template from run_remote.
* build: New bootstrap like helper script (git-only).
* configure.ac: New file.
* etc/dtf.sh.in: Likewise.
* ansible_helpers/wait-for-ssh: Renamed to
libexec/dtf-wait-for-ssh.
* share/dtf-controller/parse_credsfile: Reworked script for
parsing OS credentials.
* parse_credsfile: Moved to share/dtf-controller.
* libexec/dtf-wait-for-ssh: Renamed from wait-for-ssh.
* ansible/*: Moved into share/dtf-controller/ansible/*.
* share/dtf-controller/ansible/vars/generated-vars.yml.in: New
template file exporting configure-time variables into playbooks.
Diffstat (limited to 'controller/bin/dtf-run-remote.in')
-rw-r--r-- | controller/bin/dtf-run-remote.in | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/controller/bin/dtf-run-remote.in b/controller/bin/dtf-run-remote.in new file mode 100644 index 0000000..276ad40 --- /dev/null +++ b/controller/bin/dtf-run-remote.in @@ -0,0 +1,111 @@ +#!/bin/bash + +. "@sysconfdir@/dtf.sh" || exit 1 + +longopts="verbose,help,force,testid:,listonly" + +run_playbook=${run_playbook-@ansibleplaybooksdir@/fedora.yml} + +opt_workdir= +opt_distro=fedora +opt_openstack_instance="$DTF_OPENSTACK_ID" +opt_distro_ver=20 +opt_extra_rpms= +opt_taskdir= + +die() { echo >&2 "$@" ; exit 1 ; } + +longopts="distro:,distro-version:,workdir:,openstack-instance:,extra-rpms-file:" +longopts+=",taskdir:" +ARGS=$(getopt -o "v" -l "$longopts" -n "getopt" -- "$@") \ + || exit 1 +eval set -- "$ARGS" + +while true; do + case "$1" in + --taskdir) + opt=$(sed -e 's/^--//' -e 's/[^[a-zA-Z0-9]/_/g'<<<"$1") + eval "opt_$opt=\"${2,,}\"" + shift 2 + ;; + + --distro) + opt_distro="$2" + shift 2 + ;; + + --distro-version) + opt_distro_ver="$2" + shift 2 + ;; + + --openstack-instance) + opt_openstack_instance="$2" + shift 2 + ;; + + --workdir) + # where the remote results are fetched into + opt_workdir="$2" + shift 2 + ;; + + --extra-rpms-file) + opt_extra_rpms="$(readlink -f "$2")" + shift 2 + ;; + + --) + shift + break + ;; + esac +done + +test -z "$opt_taskdir" && die "you must specify --taskdir" + +credsfile="$HOME/.dtf/private/os/$opt_openstack_instance.yml" +test ! -f "$credsfile" && die "file '$credsfile' not found" + +config_os_file="$HOME/.dtf/os/$opt_openstack_instance.sh" +test ! -r "$config_os_file" && die "file '$config_os_file' not found" +. "$config_os_file" + +config_os_id="$opt_distro$opt_distro_ver" + +workdir_prereq() +{ + if test -z "$opt_workdir"; then + opt_workdir="$(mktemp -d "/tmp/dtf-remoterun-workdir-XXXXXX")" \ + || die "can't create workdir '$opt_workdir'" + echo "temporary workdir created: $opt_workdir" + elif test ! -d "$opt_workdir"; then + mkdir -p "$opt_workdir" || die "can't create workdir '$opt_workdir'" + fi +} + +tarball() +( + testsuite_name="$(basename "$opt_taskdir")" + echo "$testsuite_name" + "$opt_taskdir/run" --dist | gzip > "$opt_workdir/$testsuite_name.tar.gz" +) + +workdir_prereq + +testsuite_name="$(tarball)" || die "can not create dist tarball" + +export ANSIBLE_HOST_KEY_CHECKING=False +ansible-playbook "$run_playbook" \ + --extra-vars "opt_generated_vars=@ansiblevarsdir@/generated-vars.yml" \ + --extra-vars "opt_distro=$opt_distro" \ + --extra-vars "opt_distro_ver=$opt_distro_ver" \ + --extra-vars "opt_workdir=$opt_workdir" \ + --extra-vars "opt_credsfile=$credsfile" \ + --extra-vars "os_flavor_id=${os_flavor_ids[$config_os_id]}" \ + --extra-vars "os_image_id=${os_image_ids[$config_os_id]}" \ + --extra-vars "os_keypair=${os_keypair}" \ + --extra-vars "os_security_group=${os_security_group}" \ + --extra-vars "os_network_dev=${os_network_dev}" \ + --extra-vars "opt_testsuite_name=${testsuite_name}" \ + --extra-vars "${opt_extra_rpms:+dtf_rpm_files_list=$opt_extra_rpms}" |