summaryrefslogtreecommitdiffstats
path: root/controller/bin
diff options
context:
space:
mode:
authorPavel Raiskup <praiskup@redhat.com>2014-11-04 14:03:51 +0100
committerPavel Raiskup <praiskup@redhat.com>2014-11-04 14:03:51 +0100
commitb602b6772d364c40399f751b45206d6a2fe7ccb7 (patch)
tree4ef8feac3394411ae45aa81c95d1639372f03f10 /controller/bin
parent347e150a7bc60a1ed019877f2ae4cf2a3e51d22c (diff)
downloadpostgresql-setup-tests-b602b6772d364c40399f751b45206d6a2fe7ccb7.tar.gz
postgresql-setup-tests-b602b6772d364c40399f751b45206d6a2fe7ccb7.tar.xz
postgresql-setup-tests-b602b6772d364c40399f751b45206d6a2fe7ccb7.zip
controller: shutdown VM when run was successful
New script 'dtf-return-machine' returns the VM to OpenStack based on its public IP. In future, this may be abstracted to any VM provider (or VM pool or whatever), but that requires also some IP <=> VM mapping shared between dtf-get-machine and dtf-return-machine. * controller/.gitignore: Ignore new scripts. * controller/Makefile.am: Build new scripts. * controller/bin/dtf-return-machine.in: New script for VM * deletion. * controller/libexec/dtf-nova.in: New wrapper around 'nova' command, showing only data output where fields are separated by tabulator. * controller/share/dtf-controller/ansible/playbooks/fedora.yml: Finally call dtf-return-machine after successful test run.
Diffstat (limited to 'controller/bin')
-rw-r--r--controller/bin/dtf-get-machine.in1
-rw-r--r--controller/bin/dtf-return-machine.in45
2 files changed, 46 insertions, 0 deletions
diff --git a/controller/bin/dtf-get-machine.in b/controller/bin/dtf-get-machine.in
index 54a3253..0c51f11 100644
--- a/controller/bin/dtf-get-machine.in
+++ b/controller/bin/dtf-get-machine.in
@@ -26,6 +26,7 @@ Options:
--distro-version=VERSION E.g. 20 for Fedora 20
--openstack-instance=ID
--name=NAME Name of the machine
+ --quite Print only the VM IP address to stdout
EOHELP
test -n "$1" && exit "$1"
}
diff --git a/controller/bin/dtf-return-machine.in b/controller/bin/dtf-return-machine.in
new file mode 100644
index 0000000..799a1f4
--- /dev/null
+++ b/controller/bin/dtf-return-machine.in
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+. "@sysconfdir@/dtf.sh" || exit 1
+opt_openstack_instance="$DTF_OPENSTACK_DEFAULT_ID"
+
+die() { echo "$@" ; exit 1 ; }
+
+longopts="openstack-instance:"
+ARGS=$(getopt -o "" -l "help,$longopts" -n "$0" -- "$@") \
+ || exit 1
+eval set -- "$ARGS"
+while true; do
+ case "$1" in
+ --openstack-instance)
+ opt=$(sed -e 's/^--//' -e 's/[^[a-zA-Z0-9]/_/g'<<<"$1")
+ eval "opt_$opt=\"${2,,}\""
+ shift 2
+ ;;
+ --)
+ shift
+ break;
+ ;;
+ *)
+ echo >&2 "programmer mistake"
+ exit 1
+ ;;
+ esac
+done
+
+test -z "$opt_openstack_instance" && die "no openstack intance ID used"
+. "@pkgdatadir@/parse_credsfile" "$opt_openstack_instance" || exit 1
+
+IP="$1"
+
+test -z "$IP" && die "no IP passed"
+
+NOVACMD="@libexecdir@/dtf-nova"
+
+$NOVACMD list --fields 'networks' | \
+ while IFS=" " read id networks; do
+ if [[ "$networks" == *$IP* ]]; then
+ nova delete "$id"
+ exit $?
+ fi
+ done