commit 7ec34505e392ae837934ec0cdfc96b46ae44e081 parent e5712474c904289dd969782a81a23402acdde78a Author: Jan Pobrislo <ccx@webprojekty.cz> Date: Wed, 25 Jun 2014 10:57:27 +0200 auto(re)start for all vservers marked "default" Diffstat:
| M | zsh-functions/confz_vserver_init | | | 53 | ++++++++++++++++++++++++++++++++++++++++++++++------- |
1 file changed, 46 insertions(+), 7 deletions(-)
diff --git a/zsh-functions/confz_vserver_init b/zsh-functions/confz_vserver_init @@ -92,17 +92,56 @@ confz_vserver_stopped_check() { (( $? == 1 )) } +confz_vserver_listconfigs_hook_check() { + checkvars name + (($+commands[vserver-listconfigs])) || \ + die "can't find vserver-listconfigs in \$PATH" + do_command=( + ln -s $commands[vserver-listconfigs] + /etc/vservers/$vars[name]/scripts/post-start.d/vserver-listconfigs + ) + + [[ -x /etc/vservers/$vars[name]/scripts/post-start.d/vserver-listconfigs ]] +} + +confz_vserver_listconfigs_hook_do() { + local lnk + lnk=/etc/vservers/$vars[name]/scripts/post-start.d/vserver-listconfigs + mkdir -p $lnk:h || return $? + ln -s $commands[vserver-listconfigs] $lnk || return $? +} + + confz_vserver_autorestart() { checkvars name + require vserver_listconfigs_hook :name require vserver_started :name %context_id - # local key val bias btime - # while read key val; do - # [[ $key == btime ]] && btime=$val - # done</proc/stat + do_command=( vserver -- $vars[name] condrestart ) + + local -a files mtab vdir - # while read key val; do - # [[ $key == BiasUptime: ]] && bias=$val - # done </proc/virtual/10/cvirt + vdir=/etc/vservers/$vserver_name/vdir + vdir=$vdir:A + + # TODO: diff here and prettyprint reason + mtab="$(grep '^[^ ]* '$vdir'[/ ]' /etc/mtab)" + [[ $mtab == "$(</var/run/vservers/$vars[name].mtab)" ]] || \ + return 1 + + files="$(print -rl - /etc/vservers/**/*(.))" + [[ $files == "$(</var/run/vservers/$vars[name].files)" ]] || \ + return 2 +} + + +confz_autorestart_default() { + local mark + + for mark in /etc/vservers/*/apps/init/mark; do + if [[ $(<$mark) == default ]]; then + require vserver_autorestart name=$mark:h:h:h:t + fi + done }