Cosmetic fixes for vsched.
[util-vserver.git] / doc / configuration.xml
index 8866b7a..d9f7c55 100644 (file)
@@ -37,6 +37,20 @@ the 'barrier' attribute. Else, common chroot(2) exploits are possible.
       </description>
     </boolean>
 
+    <boolean id="global-namespace-cleanup" name="namespace-cleanup">
+      <description>
+Enable namespace cleanup globally. It can be overridden for a single vserver
+by setting the <optionref ref="global-nonamespace-cleanup">nonamespace-cleanup</optionref> flag
+there.
+      </description>
+    </boolean>
+
+    <list id="global-namespace-cleanup-skip" name="namespace-cleanup-skip">
+      <description>
+List of paths to skip during namespace cleanup.
+      </description>
+    </list>
+
     <link name="run.rev">
       <description>
 Path of the vserver run reverse directory. This directory contains
@@ -53,7 +67,7 @@ a vserver specific setting.
       <collection name="pkgmgmt">
        <link name="base">
          <default>/vservers/.pkg</default>
-       </link> 
+       </link>
        <data name="apt.conf">
          <description>The default apt.conf which is going to be used. It is overridden by
 distribution specific configuration file.
@@ -117,7 +131,7 @@ skipped.
       <collection name="vprocunhide">
        <list name="files">
          <description>
-A list of files which will be made visibly by vprocunhide. Wildcards are
+A list of files which will be made visible 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'.
@@ -132,6 +146,13 @@ A symlink to the TTY device where input/output will be redirected from/to
 at startup via initscript.
           </description>
        </link>
+
+       <hash id="global-environment" name="environment" since="0.30.211">
+         <description>
+The environment to set when starting guests. Contains one VAR=VAL
+pair per line.
+         </description>
+       </hash>
       </collection>
       
       <collection name="vunify">
@@ -175,6 +196,23 @@ operation will fail. Most tools assume 'on' as the default value.
        </boolean>
 
       </collection>
+
+      <collection name="vlogin">
+       <boolean id="vlogin-disable" name="disable" since="0.30.212">
+         <description>
+When this file exists, vlogin isn't used on vserver &lt;guest&gt; enter.
+         </description>
+       </boolean>
+      </collection>
+    </collection>
+
+    <collection name="interfaces" use="optional">
+      <boolean id="global-vlandev" name="vlandev" since="0.30.211">
+       <description>
+When this file exists, the steps which setup and destroy a VLAN
+interface will be executed.
+       </description>
+      </boolean>
     </collection>
   </collection>
     
@@ -215,9 +253,9 @@ Script which will be executed before packages will be installed.
 The configuration directory of the vserver which is going to be set up.
             </description>
          </parameter>
-         <parameter name="vserver">
+         <parameter name="util-vserver-vars">
            <description>
-The pathname of the vserver binary.
+The pathname of the util-vserver-vars file.
             </description>
          </parameter>
        </parameterList>
@@ -234,7 +272,7 @@ The configuration directory of the vserver which is going to be set up.
          </parameter>
          <parameter name="vserver">
            <description>
-The pathname of the vserver binary.
+The pathname of the util-vserver-vars file.
             </description>
          </parameter>
        </parameterList>
@@ -301,7 +339,7 @@ Path of the storage area for cached information about this vserver.
     <link name="vdir">
       <default>../.defaults/vdirbase/VSERVERNAME</default>
       <description>
-Path of the vserver root directory
+Path of the vserver root directory.
       </description>
     </link>
 
@@ -314,16 +352,15 @@ the vserver is stopped, this can be a dangling symlink.
 
     <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>
+Contains the system capabilities. See
+<ulink url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/bcaps-v13.c">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>
+Contains the context capabilities. See <ulink
+url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/ccaps-v13.c">lib/ccaps-v13.c</ulink>
 for possible values.
       </description>
     </list>
@@ -344,6 +381,27 @@ the 'barrier' attribute. Else, common chroot(2) exploits are possible.
       </description>
     </boolean>
 
+    <boolean id="global-nonamespace-cleanup" name="nonamespace-cleanup">
+      <description>
+Overrides the global <optionref ref="global-namespace-cleanup">namespace-cleanup</optionref> flag and disables
+namespace cleanup for the current vserver.
+      </description>
+    </boolean>
+
+    <boolean name="namespace-cleanup">
+      <description>
+Enable namespace cleanup for the current vserver.
+      </description>
+    </boolean>
+
+    <list name="namespace-cleanup-skip">
+      <description>
+List of paths to skip during namespace cleanup. This overrides the 
+<optionref ref="global-namespace-cleanup-skip">global namespace-cleanup-skip</optionref>
+file.
+      </description>
+    </list>
+
     <hash name="schedule">
       <description>
 [experimental; name is subject of possible change] Contains the
@@ -429,7 +487,7 @@ values.
     <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>
+url="http://svn.linux-vserver.org/svn/util-vserver/trunk/lib/cflags-v13.c">lib/cflags-v13.c</ulink>
 for possible values.
       </description>
       <!--
@@ -456,7 +514,7 @@ The new process and its children will share a common
          <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.  
+With this flag, it becomes a per vserver thing.
           </description>
        </element>
        <element name="private">
@@ -511,7 +569,6 @@ Contains the init-style.
            <enumeration value="sysv"/>
            <enumeration value="plain"/>
            <enumeration value="minit"/>
-           <enumeration value="gento"/>
          </restriction>
        </scalar>
        
@@ -601,6 +658,13 @@ will be stopped before its dependencies. Content of this file are
 vserver ids (one name per line).
           </description>
        </list>
+
+       <hash name="environment" since="0.30.211">
+         <description>
+The environment to set when starting the guest. Contains one VAR=VAL
+pair per line.
+         </description>
+       </hash>
       </collection>
       
       <collection name="vshelper">
@@ -608,7 +672,7 @@ vserver ids (one name per line).
          <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
+startup/shutdown with the vshelper. When not set, 30 seconds will be
 assumed.
          </description>
        </scalar>
@@ -749,16 +813,16 @@ environment variable must be set by one of the in-shellcontext scripts
 (the non-executable ones).
       </description>
       
-      <program name="prepre-start">
+      <program name="initialize" since="0.30.211">
        <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.
+The scriptlet which will be executed before the root filesystem is mounted and
+the configuration has been loaded. Before executing the script, the
+configuration directory will be made the working directory.
         </description>
        <parameterList>
-         <parameter name="vserver-dir">
+         <parameter name="action">
            <description>
-The configuration directory of the current vserver.
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
             </description>
          </parameter>
          <parameter name="vserver-name">
@@ -766,24 +830,60 @@ The configuration directory of the current vserver.
 The name of the current vserver.
             </description>
          </parameter>
+       </parameterList>
+      </program>
+      <collection name="initialize.d" since="0.30.211">
+       <description>
+Repository of initialize like scripts.  Before executing the script,
+the configuration directory will be made the working directory.
+        </description>
+       <program name="script" type="symbolic">
+         <description>See initialize.</description>
+         <parameterList>
+           <parameter name="action">
+             <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+              </description>
+           </parameter>
+           <parameter name="vserver-name">
+             <description>
+The name of the current vserver.
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+      </collection>
+      
+      <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="action">
            <description>
 The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
             </description>
          </parameter>
+         <parameter name="vserver-name">
+           <description>
+The name of the current vserver.
+            </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>                                                                                                                 
+        </description>
        <program name="script" type="symbolic">
          <description>See prepre-start.</description>
          <parameterList>
-           <parameter name="vserver-dir">
+           <parameter name="action">
              <description>
-The configuration directory of the current vserver.
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
               </description>
            </parameter>
            <parameter name="vserver-name">
@@ -791,11 +891,6 @@ The configuration directory of the current vserver.
 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>
@@ -808,9 +903,9 @@ been started.  Before executing the script, the vserver root directory
 will be made the working directory.
         </description>
        <parameterList>
-         <parameter name="vserver-dir">
+         <parameter name="action">
            <description>
-The configuration directory of the current vserver.
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
             </description>
          </parameter>
          <parameter name="vserver-name">
@@ -818,32 +913,24 @@ The configuration directory of the current vserver.
 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>                                                                                                                 
+        </description>
        <program name="script" type="symbolic">
          <description>See pre-start.</description>
          <parameterList>
-           <parameter name="vserver-dir">
+           <parameter name="action">
              <description>
-The configuration directory of the current vserver.
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
               </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'...).
+The name of the current vserver.
               </description>
            </parameter>
          </parameterList>
@@ -858,17 +945,16 @@ 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>
+         <parameter name="vserver-name">
+           <description>
+The name of the current vserver.
+            </description>
+         </parameter>
        </parameterList>
       </program>
       <collection name="post-start.d">
@@ -879,17 +965,16 @@ the vserver root directory will be made the working directory.
        <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>
+           <parameter name="vserver-name">
+             <description>
+The name of the current vserver.
+              </description>
+           </parameter>
          </parameterList>
        </program>
       </collection>
@@ -902,38 +987,36 @@ 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>
+         <parameter name="vserver-name">
+           <description>
+The name of the current vserver.
+            </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>                                                                                                                 
+        </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>
+           <parameter name="vserver-name">
+             <description>
+The name of the current vserver.
+              </description>
+           </parameter>
          </parameterList>
        </program>
       </collection>
@@ -946,17 +1029,16 @@ 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>
+         <parameter name="vserver-name">
+           <description>
+The name of the current vserver.
+            </description>
+         </parameter>
        </parameterList>
       </program>
       <collection name="post-stop.d">
@@ -967,17 +1049,16 @@ vserver root directory will be made the working directory.
        <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>
+           <parameter name="vserver-name">
+             <description>
+The name of the current vserver.
+              </description>
+           </parameter>
          </parameterList>
        </program>
       </collection>
@@ -989,17 +1070,16 @@ 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>
+         <parameter name="vserver-name">
+           <description>
+The name of the current vserver.
+            </description>
+         </parameter>
        </parameterList>
       </program>
       <collection name="postpost-stop.d">
@@ -1010,17 +1090,16 @@ the vserver root directory will be made the working directory.
        <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>
+           <parameter name="vserver-name">
+             <description>
+The name of the current vserver.
+              </description>
+           </parameter>
          </parameterList>
        </program>
       </collection>
@@ -1042,6 +1121,20 @@ The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
       <scalar name="scope">
        <description>The default scope of the network interfaces.</description>
       </scalar>
+      <boolean id="local-vlandev" name="vlandev" since="0.30.211">
+       <description>
+When this file exists, the steps which setup and destroy a VLAN
+interface will be executed for all interfaces of this vserver.
+       </description>
+      </boolean>
+      <boolean id="local-novlandev" name="novlandev">
+       <description>
+When this file exists, the steps which setup and destroy a VLAN
+interface will be skipped. This overrides the global
+<optionref ref="global-vlandev">vlandev</optionref> setting for
+this vserver.
+       </description>
+      </boolean>
       
       <collection name="iface" type="symbolic">
        <description>
@@ -1091,8 +1184,15 @@ created by the host or another vserver.
        <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.
+interface will be skipped. This will override the global
+<optionref ref="global-vlandev">vlandev</optionref> and the per-guest
+<optionref ref="local-vlandev">vlandev</optionref>.
+         </description>
+       </boolean>
+       <boolean name="vlandev" since="0.30.211">
+         <description>
+When this file exists, the steps which setup and destroy a VLAN
+interface will be executed.
          </description>
        </boolean>
       </collection>
@@ -1101,21 +1201,20 @@ interface is used by multiple vservers or by the host.
     <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>                                                                                                                 
+locks, memlock, nofile, nproc, rss and/or stack.
+      </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>
       <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>
       <scalar name="resource.soft" type="symbolic">
        <description>
 A file which contains the soft- of the given resource in the first
@@ -1129,19 +1228,19 @@ line. The special keyword 'inf' is recognized.
 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>                                                                                                                 
+      </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>
       <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>
       <scalar name="resource.soft" type="symbolic">
        <description>
 A file which contains the soft- of the given resource in the first
@@ -1184,7 +1283,7 @@ tools and can *not* be modified.
       </scalar>
     </collection>
 
-    <collection name="dlimits">
+    <collection name="dlimits" since="0.30.210">
       <collection name="dlimit" type="symbolic">
         <scalar name="directory">
           <description>The directory to which the limit should be applied</description>
@@ -1200,5 +1299,92 @@ tools and can *not* be modified.
         </scalar>
       </collection>
     </collection>
+
+    <collection name="cpuset" since="0.30.211">
+      <scalar name="name">
+        <description>The name of the cpuset for this vserver</description>
+      </scalar>
+      <scalar name="cpus">
+        <description>The list of CPUs in this cpuset</description>
+      </scalar>
+      <scalar name="mems">
+        <description>The list of Memory Nodes in this cpuset</description>
+      </scalar>
+      <scalar name="cpu_exclusive">
+        <description>Is the CPU assignment exclusive?</description>
+      </scalar>
+      <scalar name="mems_exclusive">
+        <description>Is the memory node assignment exclusive?</description>
+      </scalar>
+      <scalar name="nocreate">
+        <description>When this file exists, the cpuset will be assumed to exist already</description>
+      </scalar>
+    </collection>
+
+    <collection name="sched" since="0.30.212">
+      <scalar id="global-tokens" name="tokens">
+        <description>The initial amount of tokens to put in the bucket</description>
+      </scalar>
+      <scalar id="global-tokens-min" name="tokens-min">
+        <description>The minimum amount of tokens required to unhold the context</description>
+      </scalar>
+      <scalar id="global-tokens-max" name="tokens-max">
+        <description>The bucket's size</description>
+      </scalar>
+      <scalar id="global-fill-rate" name="fill-rate">
+        <description>Amount of tokens to add each <optionref ref="global-interval">interval</optionref></description>
+      </scalar>
+      <scalar id="global-interval" name="interval">
+        <description>The interval between refills of the bucket</description>
+      </scalar>
+      <scalar id="global-priority-bias" name="priority-bias">
+        <description>Bias added to priorities calculated within the guest (result is clamped to -20/+19)</description>
+      </scalar>
+      <scalar id="global-fill-rate2" name="fill-rate2">
+        <description>Amount of tokens to add each <optionref ref="global-interval2">interval2</optionref> when advancing idle time</description>
+      </scalar>
+      <scalar id="global-interval2" name="interval2">
+        <description>The interval between refills of the bucket when advancing idle time</description>
+      </scalar>
+      <boolean id="global-idle-time" name="idle-time">
+        <description>When this file exists, advancing idle time is activated</description>
+      </boolean>
+      <collection name="cpu-id" type="symbolic">
+        <description>This directory contains per-CPU and/or per-bucket specific settings. Remember to set the <optionref ref="cpu-id">cpu-id</optionref> file. All CPUs inherit the global settings.</description>
+        <scalar name="tokens">
+          <description>The initial amount of tokens to put in the bucket</description>
+        </scalar>
+        <scalar name="tokens-min">
+          <description>The minimum amount of tokens required to unhold the context</description>
+        </scalar>
+        <scalar name="tokens-max">
+          <description>The bucket's size</description>
+        </scalar>
+        <scalar name="fill-rate">
+          <description>Amount of tokens to add each <optionref ref="interval">interval</optionref></description>
+        </scalar>
+        <scalar name="interval">
+          <description>The interval between refills of the bucket</description>
+        </scalar>
+        <scalar name="priority-bias">
+          <description>Bias added to priorities calculated within the guest (result is clamped to -20/+19)</description>
+        </scalar>
+        <scalar name="fill-rate2">
+          <description>Amount of tokens to add each <optionref ref="interval2">interval2</optionref> when advancing idle time</description>
+        </scalar>
+        <scalar name="interval2">
+          <description>The interval between refills of the bucket when advancing idle time</description>
+        </scalar>
+        <boolean name="idle-time">
+          <description>When this file exists, advancing idle time is activated</description>
+        </boolean>
+        <scalar name="cpu-id">
+          <description>The CPU to apply these settings to</description>
+        </scalar>
+        <scalar name="bucket-id">
+          <description>The bucket to apply these settings to</description>
+        </scalar>
+      </collection>
+    </collection>
   </collection>
   </database>