diff options
Diffstat (limited to 'lib/vserver.in')
-rw-r--r-- | lib/vserver.in | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/lib/vserver.in b/lib/vserver.in deleted file mode 100644 index 153a9b0..0000000 --- a/lib/vserver.in +++ /dev/null @@ -1,250 +0,0 @@ -# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*- - -##################################################### -## VSERVERS RELATED FUNCTIONS FOR NINJAHELPER -## -## Depends on: -## - easydialog library -## - $conffile -## -## Global variables used and modified here: -## - $vservers_are_available (yes/no) -## - $found_vservers (list) -## - $selected_vservers (list) -## - $host_or_vservers (host/vservers/both) -## - -## -## Get vservers-related variables. -## Then, if Vservers are enabled, check that: -## - VROOTDIR is valid; -## - at least one vserver can be found. -## If, and only if, the above conditions are all true: -## - set $vservers_are_available to 'yes'; -## - set $found_vservers to the list of all vservers found on the system. -## This function has to be run once before a new helper is run. -## If the argument is "nodialog", use the backupninja's message functions -## instead of easydialog. -## -init_vservers() { - local arg=$1 - # get global variables from the conffile - setfile $conffile - getconf vservers no - getconf VSERVERINFO /usr/sbin/vserver-info - getconf VSERVER /usr/sbin/vserver - getconf VROOTDIR `if [ -x "$VSERVERINFO" ]; then $VSERVERINFO info SYSINFO | grep '^ *vserver-Rootdir' | @AWK@ '{print $2}'; fi` - # canonicalize VROOTDIR - [ -z "$VROOTDIR" ] || VROOTDIR=`readlink --canonicalize $VROOTDIR` - # init this library's global variables - vservers_are_available=no - found_vservers= - selected_vservers= - host_or_vservers=host - # check vservers real availability - if [ $vservers = yes ]; then - if [ ! -x "$VSERVERINFO" ]; then - `if [ "$arg" = nodialog ]; then echo fatal; else echo "msgBox warning"; fi` \ - "vservers enabled in $conffile, but vserver-info command was not found. Please set the VSERVERINFO configuration variable to its full path." - return - fi - if [ ! -x "$VSERVER" ]; then - `if [ "$arg" = nodialog ]; then echo fatal; else echo "msgBox warning"; fi` \ - "vservers enabled in $conffile, but vserver command was not found. Please set the VSERVER configuration variable to its full path." - return - fi - if [ -z "$VROOTDIR" ]; then - `if [ "$arg" = nodialog ]; then echo fatal; else echo "msgBox warning"; fi` \ - "vservers enabled in $conffile, but VROOTDIR is not set and could not be guessed." - return - fi - if [ ! -d "$VROOTDIR" ]; then - `if [ "$arg" = nodialog ]; then echo fatal; else echo "msgBox warning"; fi` \ - "vservers enabled in $conffile, but VROOTDIR ($VROOTDIR) does not exist."; - return - fi - found_vservers=`ls $VROOTDIR | grep -E -v "lost\+found|ARCHIVES" | tr "\n" " "` - if [ -z "$found_vservers" ]; then - `if [ "$arg" = nodialog ]; then echo warning; else echo "msgBox warning"; fi` \ - "vservers enabled in $conffile, but no vserver was found in $VROOTDIR."; - return - fi - vservers_are_available=yes - fi -} - -## -## If all the arguments are existing vservers names, returns 0. -## Else, returns 1. Also returns 1 if no argument is given. -## -vservers_exist() { - [ $# -ge 1 ] || return 1 - local args="$1" - local vserver i found - for vserver in $args ; do - found=no - for i in $found_vservers ; do - if [ $vserver = $i ]; then - found=yes - break - fi - done - [ $found = yes ] || return 1 - done - return 0 -} - -## -## If all the arguments are running vservers names, returns 0. -## Else, returns 1. Also returns 1 if no argument is given. -## -vservers_running() { - [ $# -ge 1 ] || return 1 - local args="$1" - local vserver - for vserver in $args ; do - $VSERVERINFO -q $vserver RUNNING || return 1 - done - return 0 -} - -## -## If the argument is the name of a vserver selected by the current helper, -## echoes 'on' and returns 0. -## Else, echoes 'off' and returns 1. -## -vserver_is_selected() { - local vserver=$1 - local vserver_is_selected=1 - local i - for i in $selected_vservers ; do - [ "$vserver" == "$i" ] && vserver_is_selected=0 - done - if [ $vserver_is_selected = 0 ]; then - echo on - else - echo off - fi - return $vserver_is_selected -} - -## -## Have the user choose one Vserver among the existing ones. -## Set $selected_vservers to the chosen one's name. -## Returns 1 if cancelled or if Vservers are not available. -## -choose_one_vserver() { - [ "$vservers_are_available" == "yes" ] || return 1 - local title=$1 - local i= - local vserver= - REPLY= - while [ -z "$REPLY" ]; do - [ -n "$selected_vservers" ] && setDefault $selected_vservers - listBegin "$title" "Choose at least one Linux-Vserver to backup:" - for vserver in $found_vservers; do - listItem "$vserver" "Backup $vserver vserver" - done - listDisplay menu - [ $? = 0 ] || return 1 - done - selected_vservers=$REPLY -} - -## -## If Vservers are not enabled, set host_or_vservers='host' and then return -## Else, have the user choose if he/she wants to perform the backup on the host -## system or on one Vserver. -## Set, respectively, $host_or_vservers to 'host' or 'vservers'. -## Returns 1 if cancelled. -## -choose_host_or_one_vserver() { - if [ "$vservers_are_available" != "yes" ] - then - host_or_vservers='host' - return - fi - local title=$1 - # if there is one, set the previously chosen item as the default - [ -n "$host_or_vservers" ] && setDefault $host_or_vservers - menuBox "$title - src" "Do you want to operate on the host system and/or on vservers?" \ - "host" "Host system" \ - "vserver" "One Vserver" - [ $? = 0 ] || return 1 - case $REPLY in - "host") - host_or_vservers='host' - ;; - "vserver") - host_or_vservers='vservers' - ;; - esac -} - -## -## If Vservers are not enabled, set host_or_vservers='host' and then return -## Else, have the user choose the target he/she wants to perform the backup on: -## - host system only; -## - some vservers only; -## - both the host system and some vservers. -## Set, respectively, $host_or_vservers to 'host', 'vservers', or 'both' -## Returns 1 if cancelled. -## -choose_host_or_vservers_or_both() { - if [ "$vservers_are_available" != "yes" ] - then - host_or_vservers='host' - return - fi - local title=$1 - # if there is one, set the previously chosen item as the default - [ -n "$host_or_vservers" ] && setDefault $host_or_vservers - menuBox "$title - src" "Do you want to operate on the host system and/or on vservers?" \ - "host" "Host system only" \ - "vservers" "Vservers only" \ - "both" "Host system and Vservers" - [ $? = 0 ] || return 1 - case $REPLY in - "host") - host_or_vservers='host' - ;; - "vservers") - host_or_vservers='vservers' - ;; - "both") - host_or_vservers='both' - ;; - esac -} - -## -## Have the user choose among "all vservers" and a not-empty subset of these. -## Set $selected_vservers to 'all' or to a space-separated name list. -## Returns 1 if cancelled or if Vservers are not available. -## -choose_one_or_more_vservers() { - [ "$vservers_are_available" == "yes" ] || return 1 - local title=$1 - local i= - # UI - booleanBox "$title" "Do you want to backup all vservers?" ` [ -z "$selected_vservers" -o "$selected_vservers" == "all" ] || echo no` - if [ $? = 0 ]; then - selected_vservers="all" - else - # choose among the existing vservers - local vserver= - local vserver_was_selected= - REPLY= - while [ -z "$REPLY" ]; do - listBegin "$title" "Choose at least one Linux-Vserver to backup:" - # list existing vservers, preselecting the previously selected ones - for vserver in $found_vservers; do - listItem "$vserver" "Backup $vserver vserver" `vserver_is_selected $vserver` - done - listDisplay checklist - [ $? = 0 ] || return 1 - done - # remove quotes around each vserver name - selected_vservers=`echo $REPLY | tr -d '"'` - fi -} |