forked from ungleich-public/cdist
		
	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…
	
	Add table
		Add a link
		
	
		Reference in a new issue