-<?xml version="1.0"?>
-<!DOCTYPE cfgdirdoc SYSTEM "configuration.dtd" [
-<!ENTITY init-scriptlet-params
- "<params>
- <param id='vserver-dir'>
- <description>The configuration directory of the current vserver</description>
- </param>
- <param id='vserver-name'>
- <description>The name of the current vserver</description>
- </param>
- <param id='action'>
- <description>The fixed value of the current action (e.g. 'prepre-start', 'post-stop', ...).</description>
- </param>
- </params>">
-<!ENTITY init-script-text "The scriptlet">
-<!ENTITY init-dir-text "A directory with scriptlets">
-<!ENTITY init-dir-script-text "A scriptlet">
-
-<!ENTITY init-prepre-start "which will be executed before the network-interfaces are enabled
- and the directories are mounted.">
-<!ENTITY init-pre-start "which will be executed after network-interfaces were enabled and
- the directories mounted, but before the vserver itself has been
- started.">
-<!ENTITY init-post-start "which will be executed after the vserver has been started.">
-<!ENTITY init-pre-stop "which will be executed before the vserver will be stopped.">
-<!ENTITY init-post-stop "which will be executed after the vserver has been stopped, but
- before the directories will be umounted and the the interfaces
- disabled.">
-<!ENTITY init-postpost-stop "which will be executed after the vserver has been stopped
- completely.">
-]>
-
-<cfgdirdoc>
- <topleveldir type="confdir">
- <description>The base configuration directory.</description>
-
- <dir name=".defaults" type="fixed" optional="yes">
- <dir name="init" type="fixed">
- <file name="mtab">
- <description>Default mtab-file</description>
- </file>
- </dir>
-
- <symlink name="vdirbase">
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE database SYSTEM "configuration.dtd" []>
+<!-- $Id$ -->
+
+<database xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="file:configuration.xsd">
+
+ <!-- Global configuration -->
+ <collection name=".defaults" use="optional">
+ <collection name="init" type="fixed">
+ <data name="mtab">
+ <description>Default mtab file</description>
+ </data>
+ </collection>
+
+ <link name="vdirbase">
+ <default>/vservers</default>
+ <description>A link to the default vserver rootdirectory.</description>
+ </link>
+
+ <link name="cachebase">
+ <default>/var/cache/vservers</default>
+ <description>
+A link to the directory which will hold cached information about
+vservers.
+ </description>
+ </link>
+
+ <boolean id="global-nonamespace" name="nonamespace">
+ <description>
+Disable namespace usage globally. It can be overridden for a single vserver
+by setting the <optionref ref="global-namespace">namespace</optionref> flag
+there.
+
+In this mode the <directory>/vservers</directory> directory must have
+the 'barrier' attribute. Else, common chroot(2) exploits are possible.
+ </description>
+ </boolean>
+
+ <link name="run.rev">
+ <description>
+Path of the vserver run reverse directory. This directory contains
+symlinks named with XID numbers which point back to the configuration
+directory of vservers. Under kernel 2.4 this is required for the XID
+to VSERVER mapping; Under kernel 2.6 it is unused.
+
+NOTE: this link exists in 0.30.202+ only; in previous versions it was
+a vserver specific setting.
+ </description>
+ </link>
+
+ <collection name="apps">
+ <collection name="pkgmgmt">
+ <link name="base">
+ <default>/vservers/.pkg</default>
+ </link>
+ <data name="apt.conf">
+ <description>The default apt.conf which is going to be used. It is overridden by
+distribution specific configuration file.
+ </description>
+ </data>
+ </collection>
+
+ <collection name="debootstrap">
+ <scalar name="mirror">
+ <description>
+The Debian mirror to use with the <tool>debootstrap</tool> program
+ </description>
+ </scalar>
+ <scalar name="uri">
+ <description>
+When the <tool>debootstrap</tool> package is not installed; fetch it
+from this uri and install it at a temporary place.
+ </description>
+ </scalar>
+ </collection>
+
+ <collection name="vshelper">
+ <link name="logfile">
+ <description>
+The file where output will be logged to when <tool>vshelper</tool>
+is invoked from the kernel. This should point somewhere e.g. into
+<directory>/var/log</directory>.
+ </description>
+ </link>
+
+ <collection name="vshelper-methods">
+ <program name="handler" type="symbolic">
+ <description>
+See vshelper/action.
+ </description>
+ </program>
+ </collection>
+
+ <boolean name="disabled">
+ <description>
+When existing, the vshelper functionality will be disabled for all
+vservers.
+ </description>
+ </boolean>
+
+ <boolean name="debug">
+ <description>
+When existing, the vshelper execution will be traced.
+ </description>
+ </boolean>
+
+ <boolean name="warning-disabled">
+ <description>
+When existing, sanity checks for the vshelper functionality will be
+skipped.
+ </description>
+ </boolean>
+
+ </collection>
+
+ <collection name="vprocunhide">
+ <list name="files">
+ <description>
+A list of files which will be made visibly by vprocunhide. Wildcards are
+allowed and anything ending in '/' will be processed recursively. When this file exists,
+it overrides the defaults in SYSDEFAULTDIR/vprocunhide-files. The entries there must be
+absolute filenames inclusive the leading '/proc'.
+ </description>
+ </list>
+ </collection>
+
+ <collection name="init">
+ <link name="tty">
+ <description>
+A symlink to the TTY device where input/output will be redirected from/to
+at startup via initscript.
+ </description>
+ </link>
+ </collection>
+
+ <collection name="vunify">
+ <list name="exclude">
+ <description>Static list of excluded files.</description>
+ </list>
+
+ <collection name="hash" since="0.30.205">
+ <description>
+A directory which will be used as the storage place for the
+<tool>vhashify</tool> command.
+ </description>
+ <link name="id" type="symbolic">
+ <description>
+Points to a directory within the filesystems which are used for the
+vservers. There must be not more than one of such a directory per
+filesystem.
+ </description>
+ </link>
+
+ <scalar name="method" since="0.30.299">
+ <default>SHA1</default>
+ <description>The used hash method.</description>
+ </scalar>
+ </collection>
+
+ <boolean name="pkgmgmt-ignore" default="off" since="0.30.205">
+ <description>
+When existing, information from packagemanagement will not be used to
+create dynamic exclude-lists.
+ </description>
+ </boolean>
+
+ <boolean name="pgkmgmt-force" default="off" since="0.30.205">
+ <description>
+When existing, information from packagemanagement will be used to
+create dynamic exclude-lists. This option requires that (a known)
+packagemanagement is configured for the vserver; else the requested
+operation will fail. Most tools assume 'on' as the default value.
+ </description>
+ </boolean>
+
+ </collection>
+ </collection>
+ </collection>
+
+ <collection name=".distributions" use="optional">
+ <collection name="dist" type="symbolic">
+ <scalar name="dev">
<description></description>
- <default>/vservers</default>
- </symlink>
-
- <dir name="apps" type="fixed">
- <dir name="pkgmgmt" type="fixed">
- <symlink name="base">
- <description></description>
- <default>/vservers/.pkg</default>
- </symlink>
-
- <file name="apt.conf">
- <description>The default apt.conf which is going to be used. It is overridden by
- distribution specific configuration file.</description>
- </file>
- </dir>
-
- <dir name="debootstrap" type="fixed">
- <file name="mirror">
- <description>The Debian mirror which is used for 'debootstrap'.</description>
- </file>
-
- <file name="uri">
- <description>When the 'debootstrap' package is not installed; fetch it from this uri and
- install it at a temporary place.</description>
- </file>
- </dir>
-
- <dir name="vprocunhide" type="fixed">
- <file name="files">
- <description>A list of files which will be made visibly by vprocunhide. Wildcards are
- allowed and anything ending in '/' will be processed recursively. When this file exists,
- it overrides the defaults in SYSDEFAULTDIR/vprocunhide-files. The entries there must be
- absolute filenames inclusive the leading '/proc'.</description>
- </file>
- </dir>
-
- <dir name="init" type="fixed">
- <symlink name="tty">
- <description>A symlink to the TTY device where input/output will be redirected from/to
- at startup via initscript.</description>
- </symlink>
- </dir>
-
- <dir name="vunify" type="fixed">
- <file name="exclude">
- <description>Static list of excluded files.</description>
- </file>
- </dir>
- </dir>
- </dir>
-
- <dir name=".distributions" type="fixed" optional="yes">
- <dir name="dist" type="symbolic">
- <file name="dev">
- <description></description>
- </file>
-
- <file name="apt.conf">
- <description>The default apt.conf which is going to be used. It overrides the apt.conf
- from CONFDIR/.defaults/apps/pkgmgmt.</description>
- </file>
-
- <script name="initpre">
- <description>Script which will be executed before packages will be installed.</description>
- <params>
- <param id="confdir">
- <description>The configuration directory of the vserver which is going to be set
- up.</description>
- </param>
-
- <param id="vserver">
- <description>The pathname of the vserver binary.</description>
- </param>
- </params>
- </script>
-
- <script name="initpost">
- <description>Script which will be executed after packages are installed.</description>
- <params>
- <param id="confdir">
- <description>The configuration directory of the vserver which is going to be set
- up.</description>
- </param>
-
- <param id="vserver">
- <description>The pathname of the vserver binary.</description>
- </param>
- </params>
- </script>
-
- <dir name="pkgs" type="fixed">
- <description>Contains files with packages.</description>
- <file name="list" type="symbolic">
- <description>File which contains the name of packages. On top of file the special
- keywords '--reinstall' and '--can-fail' are possible.</description>
- </file>
- </dir>
-
- <dir name="pubkeys" type="fixed">
- <description>Directory with GPG pubkeys which are used to sign the packages of this
- distribution.</description>
- </dir>
-
- <dir name="apt" type="fixed">
- <description>Default content of the /etc/apt/ directory.</description>
- </dir>
-
- <dir name="rpm" type="fixed">
- <description>Default content of the /etc/rpm directory.</description>
- </dir>
-
- <symlink name="rpmlib">
- <description>Directory which overrides /usr/lib/rpm.</description>
- </symlink>
+ </scalar>
+ <collection name="yum">
+ <description>
+The default, yum-related content of the <directory>/etc</directory>
+directory.
+ </description>
+ <scalar name="yum.conf">
+ <description>
+The master yum configuration file. It supports the @YUMETCDIR@,
+@YUMCACHEDIR@ and @YUMLOGDIR@ placeholder which will be replaced at
+<command>vserver ... build</command> time.
+ </description>
+ </scalar>
+ </collection>
+ <collection name="yum.repos.d">
+ <description>A directory with yum repositories.</description>
+ </collection>
+ <data name="apt.conf">
+ <description>
+The default apt.conf which is going to be used. It overrides the
+apt.conf from CONFDIR/.defaults/apps/pkgmgmt.
+ </description>
+ </data>
+ <program name="initpre">
+ <description>
+Script which will be executed before packages will be installed.
+ </description>
+ <parameterList>
+ <parameter name="confdir">
+ <description>
+The configuration directory of the vserver which is going to be set up.
+ </description>
+ </parameter>
+ <parameter name="vserver">
+ <description>
+The pathname of the vserver binary.
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ <program name="initpost">
+ <description>
+Script which will be executed after packages are installed.
+ </description>
+ <parameterList>
+ <parameter name="confdir">
+ <description>
+The configuration directory of the vserver which is going to be set up.
+ </description>
+ </parameter>
+ <parameter name="vserver">
+ <description>
+The pathname of the vserver binary.
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+
+ <collection name="pkgs">
+ <description>
+Contains files with packagenames.
+ </description>
+ <list name="list">
+ <description>
+File which contains the name of packages. On top of file the special
+keywords '--reinstall' and '--can-fail' are possible.
+ </description>
+ </list>
+ </collection>
+
+ <collection name="pubkeys">
+ <description>
+Directory with GPG pubkeys which are used to sign the packages of this
+distribution.
+ </description>
+ </collection>
+
+ <collection name="apt">
+ <description>
+Default content of the <directory>/etc/apt/</directory> directory.
+ </description>
+ </collection>
+
+ <collection name="rpm">
+ <description>
+Default content of the <directory>/etc/rpm</directory> directory.
+ </description>
+ </collection>
+
+ <link name="rpmlib">
+ <description>
+Directory which overrides <directory>/usr/lib/rpm</directory>.
+ </description>
+ </link>
+ <link name="execdir">
+ <description>
+Directory with all executables and libraries which are required for
+this distribution.
+ </description>
+ </link>
+ </collection>
+ </collection>
+
+ <!-- Vserver configuration -->
+ <collection name="vserver-name" type="symbolic">
+ <description>
+The configuration directory for the vserver vserver-name.
+ </description>
+
+ <link name="cache">
+ <default>../.defaults/cachebase/VSERVERNAME</default>
+ <description>
+Path of the storage area for cached information about this vserver.
+ </description>
+ </link>
+
+ <link name="vdir">
+ <default>../.defaults/vdirbase/VSERVERNAME</default>
+ <description>
+Path of the vserver root directory
+ </description>
+ </link>
+
+ <link name="run">
+ <description>
+Points to a file which will contain the XID of the running vserver. When
+the vserver is stopped, this can be a dangling symlink.
+ </description>
+ </link>
+
+ <list id="bcapabilities" name="bcapabilities">
+ <description>
+[experimental; name is subject of possible change] Contains the system capabilities. See
+<ulink url="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/bcaps-v13.c?rev=HEAD">lib/bcaps-v13.c</ulink>
+for possible values.
+ </description>
+ </list>
+ <list name="ccapabilities">
+ <description>
+[experimental; name is subject of possible change] Contains the
+context capabilities. See <ulink
+url="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/ccaps-v13.c?rev=HEAD">lib/ccaps-v13.c</ulink>
+for possible values.
+ </description>
+ </list>
+
+ <boolean id="global-namespace" name="namespace">
+ <description>
+Overrides the global <optionref ref="global-nonamespace">nonamespace</optionref> flag and enables
+namespace usage for the current vserver.
+ </description>
+ </boolean>
+
+ <boolean name="nonamespace">
+ <description>
+Disables namespace usage for the current vserver.
+
+In this mode the <directory>/vservers</directory> directory must have
+the 'barrier' attribute. Else, common chroot(2) exploits are possible.
+ </description>
+ </boolean>
+
+ <hash name="schedule">
+ <description>
+[experimental; name is subject of possible change] Contains the
+scheduler parameters, one per line.
+
+The Hard CPU limit uses a mechanism called a Token Bucket. the
+concept is simple: you have a bucket of a certain size which is
+filled with a specified amount R of tokens each interval T until the
+maximum is reached (excess tokens are spilled). At each timer tick,
+a running process consumes one token from the bucket, unless the
+bucket is empty. If the bucket is empty the process is put in the
+hold queue. When the bucket has been refilled to at least M tokens,
+all on hold processes are rescheduled.
+
+See the <ulink url="http://linux-vserver.org/Scheduler+Parameters">Linux
+VServer Wiki</ulink> for more information about this file.
+ </description>
+ <keys>
+ <key id="fill_rate" name="fill-rate">
+ <description>
+Amount of tokens append to the bucket each interval.
+ </description>
+ </key>
+ <key name="interval">
+ <description>
+The intervall between refills of amount <optionref>fill_rate</optionref>. This
+value is express in ticks.
+ </description>
+ </key>
+ <key name="tokens">
+ <description>
+Initial bucket contents.
+ </description>
+ </key>
+ <key name="tokens-min">
+ <description>
+The minimum amount of tokens required to unhold processes
+ </description>
+ </key>
+ <key name="tokens-max">
+ <description>
+The bucket size.
+ </description>
+ </key>
+ <key name="priority-bias">
+ <description>
+???
+ </description>
+ </key>
+ </keys>
+ </hash>
+ <scalar name="name">
+ <description>
+Contains the name of the vserver. When not given, the basename of the directory
+will be assumed as this name.
+ </description>
+ </scalar>
+ <scalar name="nice">
+ <description>
+The nice-level on which the vserver will be started.
+ </description>
+ </scalar>
+ <list name="capabilities">
+ <description>
+Contains per line a capability. This file is used for the 2.4 kernel
+only; for 2.6 use <optionref>bcapabilities</optionref>.
+ </description>
+ </list>
+ <scalar name="shell">
+ <description>
+Contains the pathname of the shell which will be used by the "vserver
+... enter" command.
+ </description>
+ </scalar>
+ <list name="personality">
+ <description>
+Used to set the personality of the vserver. First line in the file
+is the personality-type followed by flags (one item per line). See
+<filename>/usr/include/linux/personality.h</filename> for possible
+values.
+ </description>
+ </list>
+ <list name="flags">
+ <description>
+Contains per line a flag. See <ulink
+url="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/cflags-v13.c?rev=HEAD">lib/cflags-v13.c</ulink>
+for possible values.
+ </description>
+ <!--
+ <elements>
+ <element name="fakeinit">
+ <description>
+The new process will believe it is process number 1. Useful to run a
+real /sbin/init in a vserver. Warning: this flag should not be used
+unless you know what you are doing. Often, it is better to use the
+'plain' initstyle.
+ </description>
+ </element>
+ <element name="lock">
+ <description>
+The new process is trapped and can't use chcontext anymore.
+ </description>
+ </element>
+ <element name="sched">
+ <description>
+The new process and its children will share a common
+ </description>
+ </element>
+ <element name="nproc">
+ <description>
+Limit the number of process in the vserver according to
+ulimit setting. Normally, ulimit is a per user thing.
+With this flag, it becomes a per vserver thing.
+ </description>
+ </element>
+ <element name="private">
+ <description>
+No one can join this security context once created.
+ </description>
+ </element>
+ <element name="ulimit">
+ <description>
+Apply the current ulimit to the whole context
+ </description>
+ </element>
+ </elements>
+ -->
+ </list>
+ <scalar name="context">
+ <description>
+Contains the context which shall be used for the vserver.
+ </description>
+ </scalar>
+ <data id="fstab" name="fstab">
+ <description>
+The fstab file for the vserver. Entries in this file will be mounted
+within the network context of the host. Use the
+<optionref>fstab.remote</optionref> file when you want that the
+mounting happens in the network context of the vserver. In most cases
+the 'fstab' file should be used.
+ </description>
+ </data>
+ <data id="fstab.remote" name="fstab.remote">
+ <description>
+The fstab file for the vserver. Entries in this file will be mounted
+within the network context of the host; this means that mount will be
+called as <command>chbind <options> mount ...</command>. See
+<optionref>fstab</optionref> also.
+ </description>
+ </data>
+
+ <collection name="apps">
+ <collection name="init">
+ <data name="mtab">
+ <description>
+The initial-mtab which will be used for the vserver.
+ </description>
+ </data>
+
+ <scalar name="style">
+ <description>
+Contains the init-style.
+ </description>
+ <restriction>
+ <enumeration value="sysv"/>
+ <enumeration value="plain"/>
+ <enumeration value="minit"/>
+ <enumeration value="gento"/>
+ </restriction>
+ </scalar>
+
+ <scalar name="runlevel">
+ <description>The start runlevel.</description>
+ </scalar>
+
+ <scalar name="runlevel.start">
+ <description>The start runlevel.</description>
+ </scalar>
+
+ <scalar name="runlevel.stop">
+ <description>The stop runlevel.</description>
+ </scalar>
+
+ <scalar name="killseq">
+ <description>
+Contains the 'signal [wait signal]*' sequence which is used to stop
+the vserver.
+ </description>
+ </scalar>
+
+ <list name="cmd.start">
+ <description>
+The command which is used to start the vserver. Each option must be on
+a separate line.
+ </description>
+ </list>
+
+ <list name="cmd.start-sync">
+ <description>
+The command which is used to wait on the vserver after it has been
+started. Each option must be on a separate line. This file will be
+ignored when the <optionref>sync</optionref> flag does not exist and the
+'--sync' option was not used.
+ </description>
+ </list>
+
+ <list name="cmd.stop">
+ <description>
+The command which is used to stop the vserver. Each option must be on
+a separate line.
+ </description>
+ </list>
+
+ <list name="cmd.stop-sync">
+ <description>
+The command which is used to wait on the vserver after it has been
+stopped. Each option must be on a separate line. This file will be
+ignored when the <optionref>sync</optionref> flag does not exist and the
+'--sync' option was not used.
+ </description>
+ </list>
+
+ <list name="cmd.prepare">
+ <description>
+The command which is used to setup the init-system (e.g. to set the
+runlevel in the utmp-file). Each option must be on a separate line.
+ </description>
+ </list>
- <symlink name="execdir">
- <description>Directory with all executables and libraries which are required for this
- distribution.</description>
- </symlink>
- </dir>
- </dir> <!-- .distributions -->
-
- <dir name="vserver-name" type="symbolic">
- <description>The configuration directory for the vserver vserver-name.</description>
-
- <file name="hostname">
- <description>Contains the hostname of the vserver.</description>
- </file>
-
- <file name="name">
- <description>Contains the name of the vserver. When not given, the basename of the directory
- will be assumed as this name.</description>
- </file>
-
- <file name="domainname">
- <description>The domainname of the vserver.</description>
- </file>
-
- <file name="nice">
- <description>The nice-level on which the vserver will be started.</description>
- </file>
-
- <file name="capabilities">
- <description>Contains per line a capability.</description>
- </file>
-
- <file name="shell">
- <description>Contains the pathname of the shell which will be used by the "vserver ... enter"
- command.</description>
- </file>
-
- <file name="flags">
- <description>Contains per line a flag.</description>
- </file>
-
- <file name="context">
- <description>Contains the context which shall be used for the vserver.</description>
- </file>
-
- <file name="fstab">
- <description>The fstab file for the vserver. Entries in this file will be mounted within the
- network context of the vserver; this means that mount will be called as 'chbind <options>
- mount ...'. Use the 'fstab.local' file when you do not want this behavior, but in most cases
- the 'fstab' file should be used.</description>
- </file>
-
- <file name="fstab.local">
- <description>The fstab file for the vserver. In opposite to the normal 'fstab' file, the
- mounting happens in the local network context. Currently there is no way to mix entries of
- both files; 'fstab' will be always processed before 'fstab.local'.</description>
- </file>
+ <boolean id="sync" name="sync">
+ <description>
+If this file is not present, all 'cmd.*-sync files will be ignored.
+ </description>
+ </boolean>
+
+ <link name="tty">
+ <description>
+A symlink to the TTY device where input/output will be redirected
+from/to at startup via initscript.
+ </description>
+ </link>
+
+ <scalar name="mark">
+ <description>
+This file is used to mark group of vservers which shall be started/stopped
+together by the initscript. Content is a simple string like 'default'.
+ </description>
+ </scalar>
+
+ <list name="depends">
+ <description>
+This file is used to configure vservers which must be running before
+the current vserver can be started. At shutdown, the current vserver
+will be stopped before its dependencies. Content of this file are
+vserver ids (one name per line).
+ </description>
+ </list>
+ </collection>
+
+ <collection name="vshelper">
+ <scalar name="sync-timeout">
+ <default>30</default>
+ <description>
+The timeout in seconds which is used when synchronising vserver
+startup/shutdown with the vshelper. When no set, 30 seconds will be
+assumed.
+ </description>
+ </scalar>
+
+ <scalar name="action">
+ <default>restart</default>
+ <description>
+The action which is going to be executed when a vshelper event
+occurs. The default value is 'restart', but there can be defined own
+methods by placing scripts into the
+<optionref>vshelper-methods</optionref> directories. These scripts are
+fed with the same arguments as the <tool>vshelper</tool> script.
+ </description>
+ </scalar>
+
+ <program name="event" type="symbolic">
+ <description>
+When existing, these scripts will be executed *instead* of the default
+handler defined in 'action'. Their name must match the event which caused
+the execution of <tool>vshelper</tool>; e.g. 'restart' or 'poweroff'. See
+the vs_reboot() function in the kernel for more details.
+ </description>
+ <parameterList>
+ <parameter name="xid">
+ <description>
+The xid of the context calling the vshelper
+ </description>
+ </parameter>
+ <parameter name="event">
+ <description>
+The reboot-event.
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+
+ <boolean name="disabled">
+ <description>
+When existing, the vshelper functionality will be disabled for this
+vserver.
+ </description>
+ </boolean>
+
+ <boolean name="debug">
+ <description>
+When existing, the vshelper execution will be traced for this vserver.
+ </description>
+ </boolean>
+
+ <boolean name="warning-disabled">
+ <description>
+When existing, sanity checks for the vshelper functionality will be
+skipped.
+ </description>
+ </boolean>
+
+ </collection>
+
+ <collection id="vshelper-methods" name="vshelper-methods">
+ <program name="handler" type="symbolic">
+ <description>
+See vshelper/action.
+ </description>
+ </program>
+ </collection>
+
+ <collection name="vunify">
+ <description>
+This directory contains configuration data required for vserver
+unification.
+ </description>
+
+ <list name="exclude">
+ <description>
+<p>Static list of files which are excluded for unification. This list
+supports an rsync-like syntax: when a file is prefixed by '+', it is a
+candidate for unification; when there is no prefix or a '-' or a '~' it
+will be excluded. Shell-wildcards are allowed for the filenames.</p>
+<p>When used with <tool>vcopy</tool>, the '~' prefix prevents copying
+of the file entirely (e.g. for keyfiles). With this tool, the file will
+be copied instead of hardlinked when the '-' prefix is used.</p>
+ </description>
+ </list>
+
+ <link name="refserver.X" type="symbolic">
+ <description>
+These are symlinks to the configuration directory
+(e.g. CONFDIR/vservers/<id>) of a refserver. There may be
+multiple such symlinks but they must be prefixed by 'refserver.' and
+will be processed in alphanumerical order.
+ </description>
+ </link>
+
+ <collection name="hash" since="0.30.205">
+ <description>
+A directory which will be used as the storage place for the
+<tool>vhashify</tool> command.
+ </description>
+ <link name="id" type="symbolic">
+ <description>
+Points to a directory within the filesystems which are used for the
+vservers. There must be not more than one of such a directory per
+filesystem.
+ </description>
+ </link>
+
+ <scalar name="method" since="0.30.299">
+ <default>SHA1</default>
+ <description>The used hash method.</description>
+ </scalar>
+ </collection>
+
+ <boolean name="pkgmgmt-ignore" default="off" since="0.30.205">
+ <description>
+When existing, information from packagemanagement will not be used to
+create dynamic exclude-lists.
+ </description>
+ </boolean>
+
+ <boolean name="pgkmgmt-force" default="off" since="0.30.205">
+ <description>
+When existing, information from packagemanagement will be used to
+create dynamic exclude-lists. This option requires that (a known)
+packagemanagement is configured for the vserver; else the requested
+operation will fail. Most tools assume 'on' as the default value.
+ </description>
+ </boolean>
+
+ </collection>
+ </collection>
+
+ <collection name="scripts">
+ <description>
+A directory for scripts. By default, when one of these scripts will be
+executed, the execution of defaultscripts (within .../.defaults/scripts)
+will be skipped. To execute them nevertheless, the $DONT_SKIP_DEFAULTS
+environment variable must be set by one of the in-shellcontext scripts
+(the non-executable ones).
+ </description>
+
+ <program name="prepre-start">
+ <description>
+The scriptlet which will be executed before the network-interfaces are
+enabled and the directories are mounted. Before executing the script,
+the configuration directory will be made the working directory.
+ </description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>
+The configuration directory of the current vserver.
+ </description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>
+The name of the current vserver.
+ </description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ <collection name="prepre-start.d">
+ <description>
+Repository of prepre-start like scripts. Before executing the script,
+the configuration directory will be made the working directory.
+ </description>
+ <program name="script" type="symbolic">
+ <description>See prepre-start.</description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>
+The configuration directory of the current vserver.
+ </description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>
+The name of the current vserver.
+ </description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ </collection>
+
+ <program name="pre-start">
+ <description>
+The scriptlet which will be executed after network-interfaces were
+enabled and the directories mounted, but before the vserver itself has
+been started. Before executing the script, the vserver root directory
+will be made the working directory.
+ </description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>
+The configuration directory of the current vserver.
+ </description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>
+The name of the current vserver.
+ </description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ <collection name="pre-start.d">
+ <description>
+Repository of pre-start like scripts. Before executing these scripts,
+the vserver root directory will be made the working directory.
+ </description>
+ <program name="script" type="symbolic">
+ <description>See pre-start.</description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>
+The configuration directory of the current vserver.
+ </description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ </collection>
- <dir name="apps" type="fixed">
- <dir name="init" type="fixed">
- <file name="mtab">
- <description>The initial-mtab which will be used for the vserver.</description>
- </file>
-
- <file name="style">
- <description>Contains the init-style; possible values are 'sysv', 'plain', 'minit' and
- 'gentoo'.</description>
- </file>
-
- <file name="runlevel">
- <description>The start runlevel.</description>
- </file>
-
- <file name="runlevel.start">
- <description>The start runlevel.</description>
- </file>
-
- <file name="runlevel.stop">
- <description>The stop runlevel.</description>
- </file>
-
- <file name="killseq">
- <description>Contains the 'signal [wait signal]*' sequence which is used to stop the
- vserver.</description>
- </file>
-
- <file name="cmd.start">
- <description>The command which is used to start the vserver. Each option must be on a
- separate line.</description>
- </file>
-
- <file name="cmd.start-sync">
- <description>The command which is used to wait on the vserver after it has been
- started. Each option must be on a separate line. This file will be ignored when the
- 'sync' does not exist and the '--sync' option was not used.</description>
- </file>
-
- <file name="cmd.stop">
- <description>The command which is used to stop the vserver. Each option must be on a
- separate line.</description>
- </file>
-
- <file name="cmd.stop-sync">
- <description>The command which is used to wait on the vserver after it has been
- stopped. Each option must be on a separate line. This file will be ignored when the
- 'sync' does not exist and the '--sync' option was not used.</description>
- </file>
-
- <file name="cmd.prepare">
- <description>The command which is used to setup the init-system (e.g. to set the runlevel
- in the utmp-file). Each option must be on a separate line.</description>
- </file>
-
- <file name="sync">
- <description>Without this file, the 'cmd.*-sync' files will be ignored.</description>
- </file>
-
- <symlink name="tty">
- <description>A symlink to the TTY device where input/output will be redirected from/to
- at startup via initscript.</description>
- </symlink>
-
- <file name="mark">
- <description>This file is used to mark group of vservers which shall be started/stopped
- together by the initscript. Content is a simple string like 'default'.</description>
- </file>
-
- <file name="depends">
- <description>This file is used to configure vservers which must be running before the
- current vserver can be started. At shutdown, the current vserver will be stopped before
- its dependencies. Content of this file are vserver ids (one name per line).</description>
- </file>
- </dir> <!-- ...apps/init -->
-
- <dir name="vunify" type="fixed">
- <description>This directory contains configuration data required for vserver
- unification.</description>
-
- <file name="exclude">
- <description>Static list of excluded files. This list supports an rsync syntax: when a
- file is prefixed by '+', it is a candidate for unification; when there is no prefix or a
- '-' it will be excluded. Shell-wildcards are allowed for the filenames.</description>
- </file>
-
- <symlink name="refserver.X">
- <description>These are symlinks to the configuration directory
- (e.g. CONFDIR/vservers/<idgt;) of a refserver. There may be multiple such symlinks
- but they must be prefixed by 'refserver.' and will be processed in alphanumerical
- order.</description>
- </symlink>
- </dir>
- </dir>
-
- <dir name="scripts" type="fixed">
- <script name="prepre-start">
- <description>&init-script-text; &init-prepre-start;</description>
- &init-scriptlet-params;
- </script>
- <dir name="prepre-start.d" type="fixed">
- <description>&init-dir-text; &init-prepre-start;</description>
-
- <script name="script">
- <description>&init-dir-script-text; &init-prepre-start;</description>
- &init-scriptlet-params;
- </script>
- </dir>
-
- <script name="pre-start">
- <description>&init-script-text; &init-pre-start;</description>
- &init-scriptlet-params;
- </script>
-
- <dir name="pre-start.d">
- <description>&init-dir-text; &init-pre-start;</description>
-
- <script name="script">
- <description>&init-dir-script-text; &init-pre-start;</description>
- &init-scriptlet-params;
- </script>
- </dir>
-
- <script name="post-start">
- <description>&init-script-text; &init-post-start;</description>
- &init-scriptlet-params;
- </script>
-
- <dir name="post-start.d">
- <description>&init-dir-text; &init-post-start;</description>
-
- <script name="script">
- <description>&init-dir-script-text; &init-post-start;</description>
- &init-scriptlet-params;
- </script>
- </dir>
-
- <script name="pre-stop">
- <description>&init-script-text; &init-pre-stop;</description>
- &init-scriptlet-params;
- </script>
-
- <dir name="pre-stop.d" type="fixed">
- <description>&init-dir-text; &init-pre-stop;</description>
- <script name="script">
- <description>&init-dir-script-text; &init-pre-stop;</description>
- &init-scriptlet-params;
- </script>
- </dir>
-
- <script name="post-stop">
- <description>&init-script-text; &init-post-stop;</description>
- &init-scriptlet-params;
- </script>
-
- <dir name="post-stop.d" type="fixed">
- <description>&init-dir-text; &init-post-stop;</description>
- <script name="script">
- <description>&init-dir-script-text; &init-post-stop;</description>
- &init-scriptlet-params;
- </script>
- </dir>
-
- <script name="postpost-stop">
- <description>&init-script-text; &init-postpost-stop;</description>
- &init-scriptlet-params;
- </script>
-
- <dir name="postpost-stop.d" type="fixed">
- <description>&init-dir-text; &init-postpost-stop;</description>
- <script name="script">
- <description>&init-dir-script-text; &init-postpost-stop;</description>
- &init-scriptlet-params;
- </script>
- </dir>
- </dir>
-
+ <program name="post-start">
+ <description>
+The scriptlet which will be executed after the vserver has been
+started. Before executing the script, the vserver root directory
+will be made the working directory.
+ </description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ <collection name="post-start.d">
+ <description>
+Repository of post-start like scripts. Before executing these scripts,
+the vserver root directory will be made the working directory.
+ </description>
+ <program name="script" type="symbolic">
+ <description>See post-start.</description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ </collection>
+
+
+ <program name="pre-stop">
+ <description>
+The scriptlet which will be executed before the vserver will be
+stopped. Before executing the script, the vserver root directory
+will be made the working directory.
+ </description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ <collection name="pre-stop.d">
+ <description>
+Repository of pre-stop like scripts. Before executing the script, the
+vserver root directory will be made the working directory.
+ </description>
+ <program name="script" type="symbolic">
+ <description>See pre-stop.</description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ </collection>
+
+ <program name="post-stop">
+ <description>
+The scriptlet which will be executed after the vserver has been
+stopped, but before the directories will be umounted and the the
+interfaces disabled. Before executing the script, the vserver root
+directory will be made the working directory.
+ </description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ <collection name="post-stop.d">
+ <description>
+Repository of post-stop like scripts. Before executing the script, the
+vserver root directory will be made the working directory.
+ </description>
+ <program name="script" type="symbolic">
+ <description>See post-stop.</description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ </collection>
+
+ <program name="postpost-stop">
+ <description>
+The scriptlet which will be executed after the vserver has been stopped
+completely. Before executing the script, the vserver root directory
+will be made the working directory.
+ </description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ <collection name="postpost-stop.d">
+ <description>
+Repository of postpost-stop like scripts. Before executing the script,
+the vserver root directory will be made the working directory.
+ </description>
+ <program name="script" type="symbolic">
+ <description>See postpost-stop.</description>
+ <parameterList>
+ <parameter name="vserver-dir">
+ <description>The configuration directory of the current vserver.</description>
+ </parameter>
+ <parameter name="vserver-name">
+ <description>The name of the current vserver.</description>
+ </parameter>
+ <parameter name="action">
+ <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+ </description>
+ </parameter>
+ </parameterList>
+ </program>
+ </collection>
+ </collection>
+
+ <collection name="interfaces">
+ <scalar name="bcast">
+ <description>The default broadcast address.</description>
+ </scalar>
+ <scalar name="dev">
+ <description>The default network device.</description>
+ </scalar>
+ <scalar name="prefix">
+ <description>The default network prefix-length.</description>
+ </scalar>
+ <scalar name="mask">
+ <description>The default network mask.</description>
+ </scalar>
+ <scalar name="scope">
+ <description>The default scope of the network interfaces.</description>
+ </scalar>
- <dir name="interfaces" type="fixed">
- <file name="bcast">
- <description>The deafult broadcast address.</description>
- </file>
- <file name="dev">
- <description>The default network-device.</description>
- </file>
- <file name="prefix">
- <description>The default network-prefix.</description>
- </file>
- <file name="mask">
- <description>The default network-mask.</description>
- </file>
- <file name="scope">
- <description>The default scope of the network interfaces.</description>
- </file>
-
- <dir name="iface" type="symbolic">
- <description>'iface' is an arbitrary name for the interface; the value itself is not important
- but may be interesting regarding interface-creation and usage with 'chbind'. Both happens in
- alphabetical order and numbers like '00' are good names for these directories.</description>
-
- <file name="disabled">
- <description>When this file exists, this interface will be ignored.</description>
- </file>
-
- <file name="ip">
- <description>The ip which will be assigned to this interface.</description>
- </file>
- <file name="bcast">
- <description>The broadcast address.</description>
- </file>
- <file name="dev">
- <description>The network-device.</description>
- </file>
- <file name="prefix">
- <description>The network-prefix.</description>
- </file>
- <file name="mask">
- <description>The network-mask.</description>
- </file>
- <file name="scope">
- <description>The scope of the network interface.</description>
- </file>
- <file name="name">
- <description>When this file exists, the interface will be named with the text in this file.</description>
- </file>
- <file name="nodev">
- <description>When this file exists, the interface will be assumed to exist already. A
- former name for this flag was 'only_ip' which is deprecated now.</description>
- </file>
- </dir>
- </dir>
-
- <dir name="ulimits" type="fixed">
- <description>A directory with ulimits. Possible resources are cpu, data, fsize, locks,
- memlock, nofile, nproc, rss and/or stack.</description>
-
- <file name="resource" type="symbolic">
- <description>A file which contains the hard- and soft-limit of the given resource in the
- first line. The special keyword 'inf' is recognized.</description>
- </file>
-
- <file name="resource.hard" type="symbolic">
- <description>A file which contains the hard- of the given resource in the first line. The
- special keyword 'inf' is recognized.</description>
- </file>
-
- <file name="resource.soft" type="symbolic">
- <description>A file which contains the soft- of the given resource in the first line. The
- special keyword 'inf' is recognized.</description>
- </file>
- </dir>
-
- <dir name="rlimits" type="fixed">
- <description>see ulimits</description>
- </dir>
-
- <dir name="uts" type="fixed">
- <file name="context">
- <description>The context-name of the vserver</description>
- </file>
- <file name="sysname">
- <description>The sysname of the vserver</description>
- </file>
- <file name="nodename">
- <description>The node-/hostname of the vserver</description>
- </file>
- <file name="release">
- <description>The OS-release of the vserver</description>
- </file>
- <file name="version">
- <description>The OS-version of the vserver</description>
- </file>
- <file name="machine">
- <description>The machine-type of the vserver</description>
- </file>
- <file name="domainname">
- <description>The NIS domainname of the vserver</description>
- </file>
- </dir>
- </dir>
- </topleveldir>
-</cfgdirdoc>
-
-
-<!--
-!! Local Variables:
-!! fill-column: 100
-!! End:
--->
+ <collection name="iface" type="symbolic">
+ <description>
+'iface' is an arbitrary name for the interface; the value itself is
+not important but may be interesting regarding interface-creation and
+usage with <tool>chbind</tool>. Both happens in alphabetical order and
+numbers like '00' are good names for these directories.
+ </description>
+
+ <boolean name="disabled">
+ <description>When this file exists, this interface will be ignored.</description>
+ </boolean>
+
+ <scalar name="ip">
+ <description>The ip which will be assigned to this interface.</description>
+ </scalar>
+ <scalar name="bcast">
+ <description>The broadcast address.</description>
+ </scalar>
+ <scalar name="dev">
+ <description>The network device.</description>
+ </scalar>
+ <scalar name="prefix">
+ <description>The network prefix-length.</description>
+ </scalar>
+ <scalar name="mask">
+ <description>The network mask.</description>
+ </scalar>
+ <scalar name="scope">
+ <description>The scope of the network interface.</description>
+ </scalar>
+ <scalar name="name">
+ <description>
+When this file exists, the interface will be named with the text in
+this file. Without such an entry, the IP will not be shown by
+<tool>ifconfig</tool> but by <command>ip addr ls</command> only. Such
+a labeled interface is known as an "alias" also (e.g. 'eth0:foo').
+ </description>
+ </scalar>
+ <boolean name="nodev">
+ <description>
+When this file exists, the interface will be assumed to exist
+already. This can be used to assign primary interfaces which are
+created by the host or another vserver.
+ </description>
+ </boolean>
+ <boolean name="novlandev">
+ <description>
+When this file exists, the steps which setup and destroy a VLAN
+interface will be skipped. This flag should be set when a VLAN
+interface is used by multiple vservers or by the host.
+ </description>
+ </boolean>
+ </collection>
+ </collection>
+
+ <collection name="ulimits">
+ <description>
+A directory with ulimits. Possible resources are cpu, data, fsize,
+locks, memlock, nofile, nproc, rss and/or stack. This configuration
+will be honored for kernel 2.4 only.
+ </description>
+ <scalar name="resource" type="symbolic">
+ <description>
+A file which contains the hard- and soft-limit of the given resource
+in the first line. The special keyword 'inf' is recognized.
+ </description>
+ </scalar>
+ <scalar name="resource.hard" type="symbolic">
+ <description>
+A file which contains the hard- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+ </description>
+ </scalar>
+ <scalar name="resource.soft" type="symbolic">
+ <description>
+A file which contains the soft- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+ </description>
+ </scalar>
+ </collection>
+
+ <collection name="rlimits">
+ <description>
+A directory with resource limits. Possible resources are cpu, fsize,
+data, stack, core, rss, nproc, nofile, memlock, as and locks. This
+configuration will be honored for kernel 2.6 only.
+ </description>
+ <scalar name="resource" type="symbolic">
+ <description>
+A file which contains the hard- and soft-limit of the given resource
+in the first line. The special keyword 'inf' is recognized.
+ </description>
+ </scalar>
+ <scalar name="resource.hard" type="symbolic">
+ <description>
+A file which contains the hard- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+ </description>
+ </scalar>
+ <scalar name="resource.soft" type="symbolic">
+ <description>
+A file which contains the soft- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+ </description>
+ </scalar>
+ <scalar name="resource.min" type="symbolic">
+ <description>
+A file which contains the guaranted minimum of the given resource in
+the first line. The special keyword 'inf' is recognized.
+ </description>
+ </scalar>
+ </collection>
+
+ <collection name="uts">
+ <scalar name="context">
+ <description>
+The context-name of the vserver. This file is listed for completeness
+only; the 'context' name is used and set internally by the util-vserver
+tools and can *not* be modified.
+ </description>
+ </scalar>
+ <scalar name="sysname">
+ <description>The sysname of the vserver</description>
+ </scalar>
+ <scalar name="nodename">
+ <description>The node-/hostname of the vserver</description>
+ </scalar>
+ <scalar name="release">
+ <description>The OS-release of the vserver</description>
+ </scalar>
+ <scalar name="version">
+ <description>The OS-version of the vserver</description>
+ </scalar>
+ <scalar name="machine">
+ <description>The machine-type of the vserver</description>
+ </scalar>
+ <scalar name="domainname">
+ <description>The NIS domainname of the vserver</description>
+ </scalar>
+ </collection>
+
+ <collection name="dlimits">
+ <collection name="dlimit" type="symbolic">
+ <scalar name="directory">
+ <description>The directory to which the limit should be applied</description>
+ </scalar>
+ <scalar name="inodes_total">
+ <description>The amount of inodes this vserver should be limited to</description>
+ </scalar>
+ <scalar name="space_total">
+ <description>The amount of space this vserver should be limited to (measured in blocks of 1024 bytes)</description>
+ </scalar>
+ <scalar name="reserved">
+ <description>How much space (percentage-wise) should be reserved for the root user</description>
+ </scalar>
+ </collection>
+ </collection>
+ </collection>
+ </database>