summaryrefslogtreecommitdiffstats
path: root/ci/util.sh
diff options
context:
space:
mode:
authorTim Rozet <trozet@redhat.com>2016-04-11 14:22:27 -0400
committerDan Radez <dradez@redhat.com>2016-04-19 13:14:38 -0400
commit92e4b9310b8582bcd751ce0f8fe3fab98d195d71 (patch)
tree8e45801af0a170213cc9adb7e5451a297acd1b55 /ci/util.sh
parent9c61a258f48ab463bde4b06045b49a64de1d6336 (diff)
Adds Utility functions and failure logging
Patch adds helpful utility functions and automatic parsing of heat output into a readable format indicating where a failure is in a deployment. Example: http://fpaste.org/354210/ New opnfv-util function allows a user to interact with a deployment easily: - opnfv-util undercloud <user> connects user to undercloud VM - opnfv-util debug-stack parses the heat failure output Above arguments also accept partial matches. JIRA: APEX-75 Change-Id: I5ccfee64ee2958de0d00a3b25cd9b29de60c9e20 Signed-off-by: Tim Rozet <trozet@redhat.com> (cherry picked from commit 0717bc3c56ab294f860ef99116754c1fd786cae7)
Diffstat (limited to 'ci/util.sh')
-rw-r--r--ci/util.sh75
1 files changed, 75 insertions, 0 deletions
diff --git a/ci/util.sh b/ci/util.sh
new file mode 100644
index 00000000..4f795456
--- /dev/null
+++ b/ci/util.sh
@@ -0,0 +1,75 @@
+#!/usr/bin/env bash
+# Utility script used to interact with a deployment
+# @author Tim Rozet (trozet@redhat.com)
+
+CONFIG=/var/opt/opnfv
+VALID_CMDS="undercloud debug-stack -h --help"
+
+source $CONFIG/utility-functions.sh
+
+resolve_cmd() {
+ local given=$1
+ shift
+ local list=($*)
+ local inv=(${list[*]##${given}*})
+ local OIFS=$IFS; IFS='|'; local pat="${inv[*]}"; IFS=$OIFS
+ shopt -s extglob
+ echo "${list[*]##+($pat)}"
+ shopt -u extglob
+}
+
+display_usage() {
+ echo -e "Usage:\n$0 [arguments] \n"
+ echo -e " undercloud <user> : Connect to Undercloud VM as <user>\n"
+ echo -e " debug_stack : Print parsed deployment failures to stdout \n"
+}
+
+##translates the command line argument
+##params: $@ the entire command line is passed
+##usage: parse_cmd_line() "$@"
+parse_cmdline() {
+ local match
+
+ match=($(resolve_cmd $1 $VALID_CMDS))
+ if [ ${#match[*]} -gt 1 ]; then
+ echo "$1 is ambiguous, possible matches: ${match[*]}" >&2
+ exit 1
+ elif [ ${#match[*]} -lt 1 ]; then
+ echo "$1 is not a recognized command. Use -h to see acceptable list" >&2
+ exit 1
+ else
+ match=$(echo $match | tr -d ' ')
+ fi
+
+ case "$match" in
+ -h|--help)
+ display_usage
+ exit 0
+ ;;
+ undercloud)
+ if [ -z "$2" ]; then
+ # connect as stack by default
+ undercloud_connect stack
+ else
+ undercloud_connect $2
+ fi
+ exit 0
+ ;;
+ debug-stack)
+ undercloud_connect stack "$(typeset -f debug_stack); debug_stack"
+ exit 0
+ ;;
+ *)
+ echo -e "\n\nThis script is used to interact with Apex deployments\n\n"
+ echo "Use -h to display help"
+ exit 1
+ ;;
+ esac
+}
+
+
+main() {
+ parse_cmdline "$@"
+}
+
+main "$@" \ No newline at end of file