Merge pull request #749 from darko-poljak/feature/debug-dump-script
Add debug dump script
This commit is contained in:
commit
1402e3f084
3 changed files with 344 additions and 1 deletions
|
@ -43,3 +43,21 @@ you write to use the -e flag:
|
||||||
% cat ~/.cdist/manifest/special
|
% cat ~/.cdist/manifest/special
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
...
|
...
|
||||||
|
|
||||||
|
Using debug dump helper script
|
||||||
|
------------------------------
|
||||||
|
Since cdist stores data to local cache that can be used for debugging there
|
||||||
|
is a helper script that dumps data from local cache.
|
||||||
|
|
||||||
|
For more info see:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
debug-dump.sh -h
|
||||||
|
|
||||||
|
Or from cdist git cloned directory:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
./scripts/debug-dump.sh -h
|
||||||
|
|
||||||
|
|
325
scripts/debug-dump.sh
Executable file
325
scripts/debug-dump.sh
Executable file
|
@ -0,0 +1,325 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
VERSION="0.0.1"
|
||||||
|
RELEASE=""
|
||||||
|
|
||||||
|
set -u
|
||||||
|
# set -x
|
||||||
|
|
||||||
|
hosts=
|
||||||
|
cache_dir=~/.cdist/cache
|
||||||
|
|
||||||
|
do_all=1
|
||||||
|
do_global_explorer=
|
||||||
|
do_type_explorer=
|
||||||
|
do_script_stdout=
|
||||||
|
do_script_stderr=
|
||||||
|
do_gencode=
|
||||||
|
do_code=
|
||||||
|
do_messages=
|
||||||
|
do_parameter=
|
||||||
|
delimiter=':'
|
||||||
|
ln=
|
||||||
|
filename_prefix=1
|
||||||
|
verbose=0
|
||||||
|
|
||||||
|
myname=${0##*/}
|
||||||
|
|
||||||
|
print_version()
|
||||||
|
{
|
||||||
|
printf "%s %s %s\n" "${myname}" "${VERSION}" "${RELEASE}"
|
||||||
|
}
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
cat << eof
|
||||||
|
${myname}: [options] [host...]
|
||||||
|
eof
|
||||||
|
|
||||||
|
print_version
|
||||||
|
|
||||||
|
cat << eof
|
||||||
|
|
||||||
|
Dump data from cache directories.
|
||||||
|
|
||||||
|
host
|
||||||
|
Dump data for specified hosts. If not specified then all data
|
||||||
|
from cache directory is dumped.
|
||||||
|
|
||||||
|
Options
|
||||||
|
-a dump all
|
||||||
|
-C CACHE-DIR use specified CACHE-DIR (default: ~/.cdist/cache)
|
||||||
|
-c dump code-*
|
||||||
|
-d delimiter used for filename and line number prefix (default: ':')
|
||||||
|
-E dump global explorers
|
||||||
|
-e dump type explorers
|
||||||
|
-F disable filename prefix (enabled by default)
|
||||||
|
-f enable filename prefix (default)
|
||||||
|
-g dump gencode-*
|
||||||
|
-h show this help screen and exit
|
||||||
|
-L disable line number prefix (default)
|
||||||
|
-l enable line number prefix (disabled by default)
|
||||||
|
-m dump messages
|
||||||
|
-o dump executions' stdout
|
||||||
|
-p dump parameters
|
||||||
|
-r dump executions' stderr
|
||||||
|
-V show version and exit
|
||||||
|
-v increase verbosity
|
||||||
|
eof
|
||||||
|
}
|
||||||
|
|
||||||
|
exit_err()
|
||||||
|
{
|
||||||
|
printf "%s\n" "$1"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# parse options
|
||||||
|
while [ "$#" -ge 1 ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
-a)
|
||||||
|
do_all=1
|
||||||
|
;;
|
||||||
|
-C)
|
||||||
|
if [ "$#" -ge 2 ]
|
||||||
|
then
|
||||||
|
case "$2" in
|
||||||
|
-*)
|
||||||
|
exit_err "Missing cache directory"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
cache_dir="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
exit_err "Missing cache directory"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-c)
|
||||||
|
do_code=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-d)
|
||||||
|
if [ "$#" -ge 2 ]
|
||||||
|
then
|
||||||
|
case "$2" in
|
||||||
|
-*)
|
||||||
|
exit_err "Missing delimiter"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
delimiter="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
exit_err "Missing delimiter"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-E)
|
||||||
|
do_global_explorer=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-e)
|
||||||
|
do_type_explorer=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-F)
|
||||||
|
filename_prefix=
|
||||||
|
;;
|
||||||
|
-f)
|
||||||
|
filename_prefix=1
|
||||||
|
;;
|
||||||
|
-g)
|
||||||
|
do_gencode=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-h)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-L)
|
||||||
|
ln=
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
ln=1
|
||||||
|
;;
|
||||||
|
-m)
|
||||||
|
do_messages=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-o)
|
||||||
|
do_script_stdout=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-p)
|
||||||
|
do_parameter=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-r)
|
||||||
|
do_script_stderr=1
|
||||||
|
do_all=
|
||||||
|
;;
|
||||||
|
-V)
|
||||||
|
print_version
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-v)
|
||||||
|
verbose=$((verbose + 1))
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
hosts="${hosts} $1"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "${ln}" = "1" ]
|
||||||
|
then
|
||||||
|
ln="NR \"${delimiter}\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${filename_prefix}" = "1" ]
|
||||||
|
then
|
||||||
|
filename_prefix="{}${delimiter}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_all}" = "1" ]
|
||||||
|
then
|
||||||
|
do_global_explorer=1
|
||||||
|
do_type_explorer=1
|
||||||
|
do_script_stdout=1
|
||||||
|
do_script_stderr=1
|
||||||
|
do_gencode=1
|
||||||
|
do_code=1
|
||||||
|
do_messages=1
|
||||||
|
do_parameter=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -- -size +0
|
||||||
|
set -- "$@" \(
|
||||||
|
or=
|
||||||
|
|
||||||
|
print_verbose()
|
||||||
|
{
|
||||||
|
if [ ${verbose} -ge $1 ]
|
||||||
|
then
|
||||||
|
printf "%s\n" "$2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
hor_line()
|
||||||
|
{
|
||||||
|
if [ $# -gt 0 ]
|
||||||
|
then
|
||||||
|
c=$1
|
||||||
|
else
|
||||||
|
c='='
|
||||||
|
fi
|
||||||
|
printf "%78s\n" "" | tr ' ' "${c}"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "${do_global_explorer}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping global explorers"
|
||||||
|
set -- "$@" ${or} \( \
|
||||||
|
-path "*/explorer/*" -a \
|
||||||
|
! -path "*/conf/*" -a \
|
||||||
|
! -path "*/object/*/explorer/*" \
|
||||||
|
\)
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_type_explorer}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping type explorers"
|
||||||
|
set -- "$@" ${or} -path "*/object/*/explorer/*"
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_script_stdout}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping execution's stdout"
|
||||||
|
set -- "$@" ${or} -path "*/stdout/*"
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_script_stderr}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping execution's stderr"
|
||||||
|
set -- "$@" ${or} -path "*/stderr/*"
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_gencode}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping gencode-*"
|
||||||
|
set -- "$@" ${or} \( -name "gencode-*" -a ! -path "*/stdout/*" -a ! -path "*/stderr/*" \)
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_code}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping code-*"
|
||||||
|
set -- "$@" ${or} \( -name "code-*" -a ! -path "*/stdout/*" -a ! -path "*/stderr/*" \)
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_messages}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping messages"
|
||||||
|
set -- "$@" ${or} -name "messages"
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${do_parameter}" ]
|
||||||
|
then
|
||||||
|
print_verbose 2 "Dumping parameters"
|
||||||
|
set -- "$@" ${or} -path "*/parameter/*"
|
||||||
|
or="-o"
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -- "$@" \)
|
||||||
|
set -- '.' "$@" -exec awk -v prefix="${filename_prefix}" "{print prefix ${ln} \$0}" {} \;
|
||||||
|
|
||||||
|
# printf "+ %s\n" "$*"
|
||||||
|
|
||||||
|
print_verbose 2 "Using cache dir: ${cache_dir}"
|
||||||
|
|
||||||
|
OLD_PWD=$(pwd)
|
||||||
|
cd "${cache_dir}"
|
||||||
|
|
||||||
|
# If no host is specified then search all.
|
||||||
|
[ -z "${hosts}" ] && hosts="-"
|
||||||
|
|
||||||
|
for host in ${hosts}
|
||||||
|
do
|
||||||
|
[ "${host}" = "-" ] && host=
|
||||||
|
# find host cache directory
|
||||||
|
host_dir=$(find . -name target_host -exec grep -l "${host}" {} +)
|
||||||
|
print_verbose 3 "found host directory files:"
|
||||||
|
print_verbose 3 "${host_dir}"
|
||||||
|
|
||||||
|
OLD_IFS="${IFS}"
|
||||||
|
IFS="
|
||||||
|
"
|
||||||
|
|
||||||
|
for d in ${host_dir}
|
||||||
|
do
|
||||||
|
dir=$(dirname "${d}")
|
||||||
|
|
||||||
|
print_verbose 0 "target host: $(cat ${dir}/target_host), host directory: ${dir}"
|
||||||
|
hor_line
|
||||||
|
|
||||||
|
PREV_PWD=$(pwd)
|
||||||
|
cd "${dir}"
|
||||||
|
# set -x
|
||||||
|
find "$@"
|
||||||
|
# set +x
|
||||||
|
cd "${PREV_PWD}"
|
||||||
|
done
|
||||||
|
IFS="${OLD_IFS}"
|
||||||
|
done
|
||||||
|
cd "${OLD_PWD}"
|
2
setup.py
2
setup.py
|
@ -36,7 +36,7 @@ setup(
|
||||||
name="cdist",
|
name="cdist",
|
||||||
packages=["cdist", "cdist.core", "cdist.exec", "cdist.util", ],
|
packages=["cdist", "cdist.core", "cdist.exec", "cdist.util", ],
|
||||||
package_data={'cdist': package_data},
|
package_data={'cdist': package_data},
|
||||||
scripts=["scripts/cdist"],
|
scripts=["scripts/cdist", "scripts/debug-dump.sh"],
|
||||||
version=cdist.version.VERSION,
|
version=cdist.version.VERSION,
|
||||||
description="A Usable Configuration Management System",
|
description="A Usable Configuration Management System",
|
||||||
author="Nico Schottelius",
|
author="Nico Schottelius",
|
||||||
|
|
Loading…
Reference in a new issue