#!/bin/sh

#  Copyright (C) 2014 Curt Brune <curt@cumulusnetworks.com>
#
#  SPDX-License-Identifier:     GPL-2.0

# Make a tarball of "interesting" system info.  This could be used by
# an installer to gather system info, saving it to document the
# install.

output_dir=$1

[ -d "$output_dir" ] || {
    echo "Error: Output directory does not exist: $output_dir"
    echo "Usage: $0 <output_directory>"
    exit 1
}

support_arch()
{
    save_dir="$1"
    # NO-OP
}

support_platform()
{
    save_dir="$1"
    # NO-OP
}

[ -r /lib/onie/support-arch ]     && . /lib/onie/support-arch
[ -r /lib/onie/support-platform ] && . /lib/onie/support-platform
[ -r /lib/onie/functions ] && . /lib/onie/functions

cleanup() {
    umount $tmpdir > /dev/null 2>&1
    rm -rf $tmpdir
    exit $1
}

tmpdir=$(mktemp -d)
mount -t tmpfs tmpfs $tmpdir || {
    echo "Error: Unable to mount tmpfs."
    cleanup 1
}

onie_support_name="onie-support-${onie_machine}.tar.bz2"
tarfile="$output_dir/$onie_support_name"

tar_dir="onie-support-${onie_machine}"
save_dir="$tmpdir/$tar_dir"
rm -rf $save_dir
mkdir -p $save_dir || {
    echo "Error: Unable to create onie save directory: $save_dir"
    cleanup 1
}
cp -a /var/log $save_dir
cat /proc/cmdline > $save_dir/kernel_cmdline.txt
export > $save_dir/runtime-export-env.txt
set > $save_dir/runtime-set-env.txt
ps w > $save_dir/runtime-process.txt
dmesg > $save_dir/dmesg.txt
if [ -x /usr/bin/onie-syseeprom ] ; then
    onie-syseeprom > $save_dir/onie-syseeprom.txt
fi
onie-sysinfo -a > $save_dir/onie-sysinfo.txt
cp /etc/machine*.conf $save_dir
blkid > $save_dir/blkid.txt
fdisk -l > $save_dir/fdisk.txt
support_arch
support_platform
tar -C $tmpdir -cjf $tarfile $tar_dir || {
    echo "Error: Unable to create ONIE save tar file: $tarfile"
    cleanup 1
}

echo "Success: Support tarball created: $tarfile"

cleanup 0