forked from ungleich-public/cdist
		
	Add debug dump script
This commit is contained in:
		
					parent
					
						
							
								cabb0be7b6
							
						
					
				
			
			
				commit
				
					
						9cd95f12dc
					
				
			
		
					 3 changed files with 344 additions and 1 deletions
				
			
		|  | @ -43,3 +43,21 @@ you write to use the -e flag: | |||
|     % cat ~/.cdist/manifest/special | ||||
|     #!/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", | ||||
|     packages=["cdist", "cdist.core", "cdist.exec", "cdist.util", ], | ||||
|     package_data={'cdist': package_data}, | ||||
|     scripts=["scripts/cdist"], | ||||
|     scripts=["scripts/cdist", "scripts/debug-dump.sh"], | ||||
|     version=cdist.version.VERSION, | ||||
|     description="A Usable Configuration Management System", | ||||
|     author="Nico Schottelius", | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue