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 |     % 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue