function isAvoidNamespace
{
- $_VSERVER_INFO - FEATURE namespace || return 1
- 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
}
## Usage: getVserverCtx <vdir> <result-varname> [<procnumber-varname> [<do-cleanup>]]
+## Returns: 0 iff vserver is running
function getVserverStatus
{
test -r "$1"/run || return 1
local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$_ctx" | $_WC -l )
eval "$3"=\$_tmp
- test "$4" -a $_tmp = 0 || return 0
- _tmp=$($_READLINK "$1/run")
- test "$_tmp" || return 1
- rm -f "$_tmp"
+ if test "$_tmp" = 0; then
+ local runfile=$($_READLINK "$1/run")
+ test -z "$4" || rm -f "$runfile"
+ return 1
+ fi
+
return 0
}
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=
+
+ shift
+ if test "$ctx"; then
+ $_VNAMESPACE --enter "$ctx" -- "$@"
+ else
+ "$@"
+ fi
+}