isAvoidNamespace(): determine full cfgdir path of vserver before checking for 'namesp...
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Wed, 10 Mar 2004 02:35:52 +0000 (02:35 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Wed, 10 Mar 2004 02:35:52 +0000 (02:35 +0000)
callInNamespace(): added

git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1197 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/scripts/functions

index 0581dd7..6c33047 100644 (file)
@@ -242,10 +242,13 @@ function pkgInit
 
 function isAvoidNamespace
 {
-    $_VSERVER_INFO - FEATURE namespace || return 0
-    test ! -e "$1"/namespace           || return 1
+    local cfgdir
+
+    $_VSERVER_INFO - FEATURE namespace   || return 0
+    cfgdir=$($_VSERVER_INFO "$1" CFGDIR) || return 0
+    test ! -e "$cfgdir"/namespace        || return 1
     test -e "$CONFDIR"/.defaults/nonamespace -o \
-         -e "$1"/nonamespace
+         -e "$cfgdir"/nonamespace
 }
 
 function getAllVservers
@@ -356,3 +359,18 @@ function isKernelAPI
     local api=$($_VSERVER_INFO - APIVER) || api=0
     test $[ $api ] -${2:-ge} $[ $1 ]
 }
+
+## Usage: callInNamespace <vserver> <command> <args>*
+function callInNamespace
+{
+    local ctx=
+    
+    isAvoidNamespace "$1" || \
+    ctx=$( $_VSERVER_INFO "$1" CONTEXT t ) || ctx=
+
+    if test "$ctx"; then
+       $_VNAMESPACE --enter "$ctx" -- "$@"
+    else
+       "$@"
+    fi
+}