From fd6796ad99b90371594c3068e6d8bbbdb2b1d1d5 Mon Sep 17 00:00:00 2001
From: intrigeri <intrigeri@boum.org>
Date: Tue, 24 Jun 2008 16:05:44 +0000
Subject: [PATCH] sys: support selection of VServers to run on with the new
 vsnames configuration option (Closes: Trac#45)

---
 ChangeLog              |  5 +++--
 examples/example.sys   |  3 +++
 handlers/sys.helper.in |  4 ++++
 handlers/sys.in        | 17 ++++++++++++-----
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 09c4747f..d9a6906a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -35,12 +35,13 @@ version 0.9.6 -- unreleased
 	 . make deleted maildirs record the date they were deleted
 	 . add destid_file configuration option to enable you to specify an alternate
 	   ssh public key authentication file (defaulting to /root/.ssh/id_rsa)
-	pgsql, mysql, svn:
+	pgsql, mysql, svn, sys:
 	 . use new vservers_running function from lib/vserver (factorization++)
 	sys:
 	 . update for 2.6 kernels: use /proc/kallsyms instead of /proc/ksyms
 	   (Closes: Trac#39)
-	 . use new vservers_running function from lib/vserver
+	 . support selection of VServers to run on, in the same way as in the
+	   dup handler, with the new vsnames configuration option ; (Closes: Trac#45)
 
 version 0.9.5 -- December 2, 2007
     backupninja changes
diff --git a/examples/example.sys b/examples/example.sys
index 90813347..2a6bf0f3 100644
--- a/examples/example.sys
+++ b/examples/example.sys
@@ -39,3 +39,6 @@
 # hardwarefile = /var/backups/hardware.txt
 # dohwinfo = yes
 
+# If vservers = yes in /etc/backupninja.conf then the following variables can
+# be used:
+# vsnames = all | <vserver1> <vserver2> ... (default = all)
diff --git a/handlers/sys.helper.in b/handlers/sys.helper.in
index 6451ae29..e39e5267 100644
--- a/handlers/sys.helper.in
+++ b/handlers/sys.helper.in
@@ -32,6 +32,10 @@ $hardware
 # packagesfile = /var/backups/dpkg-selections.txt
 # partitionsfile = /var/backups/partitions.__star__.txt
 # hardwarefile = /var/backups/hardware.txt
+
+# If vservers = yes in /etc/backupninja.conf then the following variables can
+# be used:
+# vsnames = all | <vserver1> <vserver2> ... (default = all)
 EOF
    chmod 600 $next_filename
 }
diff --git a/handlers/sys.in b/handlers/sys.in
index 0f863d7b..455234d8 100755
--- a/handlers/sys.in
+++ b/handlers/sys.in
@@ -73,11 +73,18 @@ getconf HWINFO `which hwinfo`
 getconf sfdisk_options ""
 getconf hwinfo_options ""
 
-# See if vservers are configured
+getconf vsnames all
+
+# If vservers are configured, check that the ones listed in $vsnames are running.
 local usevserver=no
-if [ $vservers_are_available = yes ]
-then
-   info "vserver method enabled"
+if [ $vservers_are_available = yes ]; then
+   if [ "$vsnames" = all ]; then
+      vsnames="$found_vservers"
+   fi
+   if ! vservers_running "$vsnames" ; then
+      fatal "At least one of the vservers listed in vsnames ($vsnames) is not running."
+   fi
+   info "Using vservers '$vsnames'"
    usevserver=yes
 fi
 
@@ -91,7 +98,7 @@ if [ "$packages" == "yes" ]; then
 
    if [ $usevserver = yes ]; then
       info "vserver root directory set to: $VROOTDIR"
-      for vserver in $found_vservers; do
+      for vserver in $vsnames; do
          info "examining vserver: $vserver"
          # is it running ?
          vservers_running $vserver
-- 
GitLab