diff options
Diffstat (limited to 'controller')
-rw-r--r-- | controller/.gitignore | 2 | ||||
-rw-r--r-- | controller/Makefile.am | 11 | ||||
-rw-r--r-- | controller/bin/dtf-get-machine.in | 1 | ||||
-rw-r--r-- | controller/bin/dtf-return-machine.in | 45 | ||||
-rw-r--r-- | controller/libexec/dtf-nova.in | 11 | ||||
-rw-r--r-- | controller/share/dtf-controller/ansible/playbooks/fedora.yml | 2 |
6 files changed, 70 insertions, 2 deletions
diff --git a/controller/.gitignore b/controller/.gitignore index aec98c7..316b505 100644 --- a/controller/.gitignore +++ b/controller/.gitignore @@ -8,7 +8,9 @@ dtf.sh dtf-commit-results dtf-controller dtf-get-machine +dtf-nova dtf-result-stats +dtf-return-machine dtf-run-remote generated-vars.yml Makefile diff --git a/controller/Makefile.am b/controller/Makefile.am index 80ecb63..d4d16a9 100644 --- a/controller/Makefile.am +++ b/controller/Makefile.am @@ -1,6 +1,7 @@ bin_SCRIPTS = \ bin/dtf-run-remote \ bin/dtf-get-machine \ + bin/dtf-return-machine \ bin/dtf-controller sysconf_DATA = etc/dtf.sh @@ -9,7 +10,9 @@ pkgdata_DATA = ./share/dtf-controller/parse_credsfile libexec_SCRIPTS = libexec/dtf-wait-for-ssh \ libexec/dtf-commit-results \ - libexec/dtf-result-stats + libexec/dtf-result-stats \ + libexec/dtf-nova + ansiblevarsdir = $(pkgdatadir)/ansible/vars ansibleplaybooksdir = $(pkgdatadir)/ansible/playbooks @@ -35,12 +38,18 @@ libexec/dtf-commit-results: libexec/dtf-commit-results.in .dep libexec/dtf-result-stats: libexec/dtf-result-stats.in .dep $(INSTANTIATE_SCRIPT) +libexec/dtf-nova: libexec/dtf-nova.in .dep + $(INSTANTIATE_SCRIPT) + bin/dtf-run-remote: bin/dtf-run-remote.in .dep $(INSTANTIATE_SCRIPT) bin/dtf-get-machine: bin/dtf-get-machine.in .dep $(INSTANTIATE_SCRIPT) +bin/dtf-return-machine: bin/dtf-return-machine.in .dep + $(INSTANTIATE_SCRIPT) + bin/dtf-controller: bin/dtf-controller.in .dep $(INSTANTIATE_SCRIPT) 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 diff --git a/controller/libexec/dtf-nova.in b/controller/libexec/dtf-nova.in new file mode 100644 index 0000000..e4a7791 --- /dev/null +++ b/controller/libexec/dtf-nova.in @@ -0,0 +1,11 @@ +#!/bin/bash + +set -o pipefail + +# Remove the boxing around raw nova output data +nova "$@" | sed \ + -e '1,3d' \ + -e '$d' \ + -e 's/^| //' \ + -e 's/[[:space:]]*|$//' \ + -e 's/[[:space:]]*|[[:space:]]*/\t/g' diff --git a/controller/share/dtf-controller/ansible/playbooks/fedora.yml b/controller/share/dtf-controller/ansible/playbooks/fedora.yml index 1d49671..ea39e70 100644 --- a/controller/share/dtf-controller/ansible/playbooks/fedora.yml +++ b/controller/share/dtf-controller/ansible/playbooks/fedora.yml @@ -51,5 +51,5 @@ - include: "{{ config_ansibleplaybooksdir }}/include/download-results.yml" - name: stop the vm - shell: echo "not implemented yet" + local_action: shell "{{ config_bindir }}/dtf-return-machine" {{ inventory_hostname }} when: test_result.rc == 0 |