commit b41dd66f46ab80a5c5a871037af72bba1fd90479 parent 3ba68b669834b1db0cd6ce1af15ef7170309f571 Author: Jan Pobrislo <ccx@webprojekty.cz> Date: Thu, 26 Jun 2014 22:44:20 +0200 better checks for vserver changes, print reasons Diffstat:
| M | sbin/vserver-listconfigs | | | 2 | +- |
| M | zsh-functions/confz_vserver_init | | | 31 | +++++++++++++++++++++++-------- |
2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/sbin/vserver-listconfigs b/sbin/vserver-listconfigs @@ -16,6 +16,6 @@ vserver_name=${2:-${${PWD#/etc/vservers/}:h}} vdir=/etc/vservers/$vserver_name/vdir vdir=$vdir:A -print -rl - >/var/run/vservers/$vserver_name.files /etc/vservers/**/*(.) +print -rl - >/var/run/vservers/$vserver_name.files /etc/vservers/$vserver_name/**/* grep >/var/run/vservers/$vserver_name.mtab '^[^ ]* '$vdir'[/ ]' /etc/mtab true # don't fail if grep matches nothing diff --git a/zsh-functions/confz_vserver_init b/zsh-functions/confz_vserver_init @@ -117,22 +117,37 @@ confz_vserver_autorestart_check() { do_command=( vserver -- $vars[name] condrestart ) - local -a files mtab vdir + local -a files mtab vdir failures + local fname mtab_list files_list vdir=/etc/vservers/$vars[name]/vdir vdir=$vdir:A + mtab_list=/var/run/vservers/$vars[name].mtab + files_list=/var/run/vservers/$vars[name].files - [[ -f /var/run/vservers/$vars[name].mtab ]] || return 1 - [[ -f /var/run/vservers/$vars[name].files ]] || return 1 + if ! [[ -f $mtab_list ]]; then + fail_reason="file $mtab_list not found" + return 1 + fi + + if ! [[ -f $files_list ]]; then + fail_reason="file $files_list not found" + return 1 + fi - # TODO: diff here and prettyprint reason mtab="$(grep '^[^ ]* '$vdir'[/ ]' /etc/mtab)" [[ $mtab == "$(</var/run/vservers/$vars[name].mtab)" ]] || \ - return 2 + failures+=( "changes in mountpoints detected over ${(qqq)vdir}" ) + + while IFS= read fname; do + [[ -e $fname ]] || failures+=( "missing file: ${(qqq)fname}" ) + [[ $files_list -nt $fname ]] || failures+=( + "${(qqq)fname} changed since vserver start" + ) + done - files="$(print -rl - /etc/vservers/**/*(.))" - [[ $files == "$(</var/run/vservers/$vars[name].files)" ]] || \ - return 3 + fail_reason=${(j:, :)failures} + return $#failures }