9
if ! which jq >/dev/null; then
10
echo 'jq command is required to run juju-sosreport.'
11
[ "`lsb_release -sc`" = 'precise' ] && echo 'You can install "jq" package from backports repository.'
15
# extract service units
16
units=`juju status --format json | jq '.services | .[] | .units | keys[]' 2>/dev/null | tr -d '\"'`
18
if [ -z "$units" ]; then
19
echo 'failed to get units.'
23
# prepare script for ssh
26
# if sosreport package is not available, enable backports
27
if ! apt-cache show sosreport >/dev/null 2>&1 && [ "`lsb_release -sc`" = 'precise' ]; then
28
sudo apt-add-repository -y 'deb http://archive.ubuntu.com/ubuntu precise-backports main universe'
32
# install sosreport package
33
which sosreport >/dev/null || sudo apt-get install -y sosreport
36
sudo sosreport --batch
40
# create directory to save results
41
SOSREPORT_DIR=`mktemp -d /tmp/juju-sosreport_XXXXXXXX`
42
juju status > "$SOSREPORT_DIR"/juju-status.txt
44
# ssh into bootstrap node and all other units
45
for unit in 0 $units; do
46
if [ "$unit" = '0' ]; then
52
echo "$unit_name: executing sosreport..."
53
report=`juju ssh "$unit" "$SCRIPT" "$@" 2>/dev/null | grep -A1 '^Your sosreport has been generated and saved in:' | tail -n1 | tr -d '\r\ '`
55
echo "$unit_name: retrieving the result..."
56
juju ssh "$unit" "sudo chown ubuntu: $report" 2>/dev/null
57
juju scp "$unit":"$report" "$SOSREPORT_DIR"/"${unit_name/\//_}_`basename $report`" >/dev/null
58
juju scp "$unit":"$report".md5 "$SOSREPORT_DIR"/"${unit_name/\//_}_`basename $report`.md5" >/dev/null
63
echo "Your sosreports have been saved in:"
64
echo " $SOSREPORT_DIR/"