You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by bu...@apache.org on 2013/01/08 17:38:17 UTC

svn commit: r845507 [10/17] - in /websites/staging/vcl/trunk/content: ./ confluence_export/

Added: websites/staging/vcl/trunk/content/confluence_export/lab.pm-provisioning-module.html
==============================================================================
--- websites/staging/vcl/trunk/content/confluence_export/lab.pm-provisioning-module.html (added)
+++ websites/staging/vcl/trunk/content/confluence_export/lab.pm-provisioning-module.html Tue Jan  8 16:38:15 2013
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/vcl.css" rel="stylesheet" type="text/css">
+  <link href="/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache VCL - Lab.pm provisioning module</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="sitetitle">
+    <table width="100%" border="0" cellspacing="0" cellpadding="5">
+      <tr>
+         <td><a href="/index.html"><img src="/img/vcl-logo.png" height="100" align="left" alt="Apache VCL logo"></a></td>
+         <td><a href="http://www.apache.org"><img src="/img/asf-logo.png" align="right" alt="Apache Software Foundation logo"></a></td>
+      </tr>
+    </table>
+  </div>
+
+  <div id="navigation"> 
+  <ul>
+<li>Information<ul>
+<li><a href="/info/about.html">What is VCL?</a></li>
+<li><a href="/info/features.html">Features</a></li>
+<li><a href="/info/architecture.html">Architecture</a></li>
+<li><a href="/info/use-cases.html">Use Cases</a></li>
+<li><a href="/downloads/download.cgi">Download</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></li>
+<li><a href="/info/faq.html">FAQ</a></li>
+</ul>
+</li>
+<li><a href="/docs/index.html">Documentation</a><ul>
+<li><a href="/docs/using-vcl.html">Using VCL</a></li>
+<li><a href="/docs/image-creation.html">Image Creation</a></li>
+<li><a href="/docs/administration.html">Administration</a></li>
+<li><a href="/docs/installation.html">Installation</a></li>
+<li><a href="/docs/deployment-planning.html">Deployment Planning</a></li>
+</ul>
+</li>
+<li><a href="/comm/index.html">Community</a><ul>
+<li><a href="/comm/index.html#getInvolved">Getting Involved</a></li>
+<li><a href="/comm/index.html#mail-list">Mailing Lists</a></li>
+<li><a href="/comm/index.html#how-do-i-join-the-project">How can I Join</a></li>
+<li><a href="/comm/wiki.html">Wiki</a></li>
+<li><a href="/dev/index.html">Development</a><ul>
+<li><a href="/dev/jira.html">Issue Tracking</a></li>
+<li><a href="/dev/code-documentation.html">Code Documentation</a></li>
+<li><a href="/dev/roadmap.html">Roadmap</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="http://www.apache.org">Apache Software Foundation</a><ul>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+</ul>
+</li>
+</ul>
+  </div>
+  
+  <div id="content">
+    <h1 class="title">Lab.pm provisioning module</h1>
+    <p>The Lab.pm provisioning module is used to broker access to standalone
+pre-installed Linux or Solaris machines. These machines could be in an
+existing walk-in computer lab or racked in a server room.</p>
+<p>There are four main parts needed to setup a standalone machine to use with
+the Lab.pm module.
+1. a non-root account called vclstaff on the target machines
+1. ssh idenitity key for vclstaff account, this key is used by the vcld
+process on the management node
+1. ssh service running on port 24 of the target machines
+1. vclclientd running on the target machines, vclclientd in the bin
+directory of the vcld release</p>
+<p>For distribution to a large set of machines, an rpm or package could be
+created to distribute vclclientd and related files.</p>
+<p><a name="Lab.pmprovisioningmodule-Howitworks."></a></p>
+<h1 id="how-it-works">How it works.</h1>
+<p>The Lab.pm module confirms an assigned node or lab machine is accessible
+using the ssh identity key on port 24. If this succeeds, then a small
+configuration file with the state, user's id and the users' remote IP
+address is sent to the node along with a flag to trigger the vclclientd
+process to either open or close the remote access port. Currently this
+module only supports Linux and Solaris lab machines. </p>
+<p><a name="Lab.pmprovisioningmodule-"></a></p>
+<h1></h1>
+<p><a name="Lab.pmprovisioningmodule-Howtosetup:"></a></p>
+<h1 id="how-to-setup">How to setup:</h1>
+<p>All commands are run as root.</p>
+<p><em>1.</em> Create the non-root vclstaff account on target machine</p>
+<div class="codehilite"><pre> <span class="n">on</span> <span class="n">linux:</span> <span class="n">useradd</span> <span class="o">-</span><span class="n">d</span> <span class="sr">/home/</span><span class="n">vclstaff</span> <span class="o">-</span><span class="n">m</span> <span class="n">vclstaff</span>
+</pre></div>
+
+
+<p><em>2.</em> Generate ssh identity keys for vclstaff account. Do not enter a
+passphrase for the key, just hit enter when prompted.</p>
+<div class="codehilite"><pre><span class="n">su</span> <span class="o">-</span> <span class="n">vclstaff</span>
+<span class="n">ssh</span><span class="o">-</span><span class="n">keygen</span> <span class="o">-</span><span class="n">t</span> <span class="n">rsa</span>
+<span class="n">Generating</span> <span class="n">public</span><span class="o">/</span><span class="n">private</span> <span class="n">rsa</span> <span class="n">key</span> <span class="n">pair</span><span class="o">.</span>
+<span class="n">Enter</span> <span class="n">file</span> <span class="n">in</span> <span class="n">which</span> <span class="n">to</span> <span class="n">save</span> <span class="n">the</span> <span class="n">key</span> <span class="p">(</span><span class="sr">/home/</span><span class="n">vclstaff</span><span class="sr">/.ssh/i</span><span class="n">d_rsa</span><span class="p">):</span>
+<span class="n">Created</span> <span class="n">directory</span> <span class="s">&#39;/home/vclstaff/.ssh&#39;</span><span class="o">.</span>
+<span class="n">Enter</span> <span class="n">passphrase</span> <span class="p">(</span><span class="n">empty</span> <span class="k">for</span> <span class="nb">no</span> <span class="n">passphrase</span><span class="p">):</span>
+<span class="n">Enter</span> <span class="n">same</span> <span class="n">passphrase</span> <span class="n">again:</span>
+<span class="n">Your</span> <span class="n">identification</span> <span class="n">has</span> <span class="n">been</span> <span class="n">saved</span> <span class="n">in</span> <span class="sr">/home/</span><span class="n">vclstaff</span><span class="sr">/.ssh/i</span><span class="n">d_rsa</span><span class="o">.</span>
+<span class="n">Your</span> <span class="n">public</span> <span class="n">key</span> <span class="n">has</span> <span class="n">been</span> <span class="n">saved</span> <span class="n">in</span> <span class="sr">/home/</span><span class="n">vclstaff</span><span class="sr">/.ssh/i</span><span class="n">d_rsa</span><span class="o">.</span><span class="n">pub</span><span class="o">.</span>
+<span class="n">The</span> <span class="n">key</span> <span class="n">fingerprint</span> <span class="n">is:</span>
+</pre></div>
+
+
+<p>At this point we have created a private key /home/vclstaff/.ssh/id_rsa and
+the public key /home/vclstaff/.ssh/id_rsa.pub.</p>
+<p>Copy the public key to /home/vclstaff/.ssh/authorized_keys file</p>
+<div class="codehilite"><pre><span class="n">cat</span> <span class="sr">/home/</span><span class="n">vclstaff</span><span class="sr">/.ssh/i</span><span class="n">d_rsa</span><span class="o">.</span><span class="n">pub</span> <span class="o">&gt;</span> <span class="sr">/home/</span><span class="n">vclstaff</span><span class="sr">/.ssh/</span><span class="n">authorized_keys</span>
+</pre></div>
+
+
+<p>Copy the private key to the management node. This can be stored in
+/etc/vcl/lab.key. This private key is used by vcld to remotely log into the
+the lab machine.</p>
+<div class="codehilite"><pre><span class="n">Edit</span> <span class="sr">/etc/</span><span class="n">vcld</span><span class="o">.</span><span class="n">conf</span>
+<span class="n">Set</span> <span class="n">the</span> <span class="n">variables</span> <span class="n">IDENTITY_linux_lab</span> <span class="ow">and</span> <span class="n">IDENTITY_solaris_lab</span> <span class="n">to</span> <span class="k">use</span> <span class="n">this</span>
+</pre></div>
+
+
+<p>new key.
+    It should look like:
+    IDENTITY_solaris_lab=/etc/vcl/lab.key
+    IDENTITY_linux_lab=/etc/vcl/lab.key</p>
+<p>Test out the newly created key from the vcl management node:
+ssh -i /etc/vcl/lab.key vclstaff@target_lab_machine</p>
+<p><em>3.</em> Set ssh server on target machine to listen on port 24. Edit
+/etc/ssh/sshd_config on target lab machine(s).</p>
+<div class="codehilite"><pre><span class="n">echo</span> <span class="s">&quot;Port 24&quot;</span> <span class="o">&gt;&gt;</span> <span class="sr">/etc/ss</span><span class="n">h</span><span class="o">/</span><span class="n">sshd_config</span>
+</pre></div>
+
+
+<p>For advanced ssh configurations one may need to also add vclstaff to the
+AllowUsers directive or some other group which would work with ones
+existing campus ssh login restrictions, if any.</p>
+<div class="codehilite"><pre><span class="n">Restart</span> <span class="n">sshd:</span> <span class="sr">/etc/i</span><span class="n">nit</span><span class="o">.</span><span class="n">d</span><span class="o">/</span><span class="n">sshd</span> <span class="n">restart</span>
+</pre></div>
+
+
+<p>retest to make sure sshd is accessible on port 24</p>
+<div class="codehilite"><pre><span class="n">ssh</span> <span class="o">-</span><span class="n">p24</span> <span class="o">-</span><span class="n">i</span> <span class="sr">/etc/</span><span class="n">vcl</span><span class="o">/</span><span class="n">lab</span><span class="o">.</span><span class="n">key</span> <span class="n">vclstaff</span><span class="nv">@target_lab_machine</span>
+</pre></div>
+
+
+<p><em>4.</em> Copy vclclientd and vclclientd init script to target_lab_machine, from
+managenment node:</p>
+<div class="codehilite"><pre><span class="n">scp</span> <span class="o">-</span><span class="n">P24</span> <span class="sr">/usr/</span><span class="nb">local</span><span class="sr">/vcl/</span><span class="n">bin</span><span class="o">/</span><span class="n">vclclientd</span>
+</pre></div>
+
+
+<p>vclstaff@target_lab_machine:/home/vclstaff</p>
+<div class="codehilite"><pre><span class="n">scp</span> <span class="o">-</span><span class="n">P24</span> <span class="sr">/usr/</span><span class="nb">local</span><span class="sr">/vcl/</span><span class="n">bin</span><span class="o">/</span><span class="n">S99vclclient</span><span class="o">.</span><span class="n">linux</span>
+</pre></div>
+
+
+<p>target_lab_machine:/etc/init.d/S99vclclient.linux</p>
+<div class="codehilite"><pre><span class="n">add</span> <span class="n">this</span> <span class="n">start</span> <span class="n">up</span> <span class="n">script</span> <span class="n">to</span> <span class="n">the</span> <span class="n">appropriate</span> <span class="n">run</span> <span class="nb">time</span> <span class="n">levels</span>
+</pre></div>
+
+
+<p>Start vclclientd :
+/etc/init.d/S99vclclient.linux start{<em>}5.</em> Add computers to the VCL
+database as one normally would.</p>
+<p>Make sure to select the Lab provisioning module it is labeled as "Computing
+Lab"</p>
+<p><em>6.</em> Insert an image into the image table for this lab machine:</p>
+<div class="codehilite"><pre><span class="n">INSERT</span> <span class="n">INTO</span> <span class="sb">`vcl`</span><span class="o">.</span><span class="sb">`image`</span>
+<span class="p">(</span><span class="sb">`id`</span> <span class="p">,</span>
+<span class="sb">`name`</span> <span class="p">,</span>
+<span class="sb">`prettyname`</span> <span class="p">,</span>
+<span class="sb">`ownerid`</span> <span class="p">,</span>
+<span class="sb">`platformid`</span> <span class="p">,</span>
+<span class="sb">`OSid`</span> <span class="p">,</span>
+<span class="sb">`imagemetaid`</span> <span class="p">,</span>
+<span class="sb">`minram`</span> <span class="p">,</span>
+<span class="sb">`minprocnumber`</span> <span class="p">,</span>
+<span class="sb">`minprocspeed`</span> <span class="p">,</span>
+<span class="sb">`minnetwork`</span> <span class="p">,</span>
+<span class="sb">`maxconcurrent`</span> <span class="p">,</span>
+<span class="sb">`reloadtime`</span> <span class="p">,</span>
+<span class="sb">`deleted`</span> <span class="p">,</span>
+<span class="sb">`test`</span> <span class="p">,</span>
+<span class="sb">`lastupdate`</span> <span class="p">,</span>
+<span class="sb">`forcheckout`</span> <span class="p">,</span>
+<span class="sb">`maxinitialtime`</span> <span class="p">,</span>
+<span class="sb">`project`</span> <span class="p">,</span>
+<span class="sb">`size`</span> <span class="p">,</span>
+<span class="sb">`architecture`</span> <span class="p">,</span>
+<span class="sb">`description`</span> <span class="p">,</span>
+<span class="sb">`usage`</span> <span class="p">,</span>
+<span class="sb">`basedoffrevisionid`</span><span class="p">)</span>
+<span class="n">VALUES</span>
+<span class="p">(</span><span class="s">&#39;8&#39;</span> <span class="p">,</span> <span class="s">&#39;lab-machine-image1&#39;</span><span class="p">,</span> <span class="s">&#39;Lab Machine image&#39;</span><span class="p">,</span> <span class="s">&#39;1&#39;</span><span class="p">,</span> <span class="s">&#39;1&#39;</span><span class="p">,</span> <span class="s">&#39;15&#39;</span><span class="p">,</span> <span class="n">NULL</span><span class="p">,</span>
+<span class="s">&#39;512&#39;</span><span class="p">,</span> <span class="s">&#39;1&#39;</span><span class="p">,</span> <span class="s">&#39;1024&#39;</span><span class="p">,</span> <span class="s">&#39;100&#39;</span><span class="p">,</span> <span class="n">NULL</span> <span class="p">,</span> <span class="s">&#39;5&#39;</span><span class="p">,</span> <span class="s">&#39;0&#39;</span><span class="p">,</span> <span class="s">&#39;0&#39;</span><span class="p">,</span> <span class="n">NOW</span><span class="p">(),</span> <span class="s">&#39;1&#39;</span><span class="p">,</span> <span class="s">&#39;0&#39;</span><span class="p">,</span> <span class="s">&#39;vcl&#39;</span><span class="p">,</span>
+</pre></div>
+
+
+<p>'1500',
+    'x86', NULL , NULL , '0'
+    );</p>
+<p>Insert information into the imagerevision table. Note 'Lab Machine image'
+can be what ever you want.</p>
+<div class="codehilite"><pre><span class="n">INSERT</span> <span class="n">INTO</span> <span class="sb">`vcl`</span><span class="o">.</span><span class="sb">`imagerevision`</span> <span class="p">(</span>
+<span class="sb">`id`</span> <span class="p">,</span>
+<span class="sb">`imageid`</span> <span class="p">,</span>
+<span class="sb">`revision`</span> <span class="p">,</span>
+<span class="sb">`userid`</span> <span class="p">,</span>
+<span class="sb">`datecreated`</span> <span class="p">,</span>
+<span class="sb">`deleted`</span> <span class="p">,</span>
+<span class="sb">`datedeleted`</span> <span class="p">,</span>
+<span class="sb">`production`</span> <span class="p">,</span>
+<span class="sb">`comments`</span> <span class="p">,</span>
+<span class="sb">`imagename`</span>
+<span class="p">)</span>
+<span class="n">VALUES</span> <span class="p">(</span>
+<span class="n">NULL</span> <span class="p">,</span> <span class="s">&#39;8&#39;</span><span class="p">,</span> <span class="s">&#39;1&#39;</span><span class="p">,</span> <span class="s">&#39;1&#39;</span><span class="p">,</span> <span class="n">NOW</span><span class="p">(),</span> <span class="s">&#39;0&#39;</span><span class="p">,</span> <span class="n">NULL</span> <span class="p">,</span> <span class="s">&#39;1&#39;</span><span class="p">,</span> <span class="n">NULL</span> <span class="p">,</span> <span class="s">&#39;lab-machine-image1&#39;</span>
+<span class="p">)</span>
+</pre></div>
+
+
+<p>Insert information into the resource table.</p>
+<div class="codehilite"><pre><span class="n">INSERT</span> <span class="n">INTO</span> <span class="sb">`vcl`</span><span class="o">.</span><span class="sb">`resource`</span> <span class="p">(</span>
+<span class="sb">`id`</span> <span class="p">,</span>
+<span class="sb">`resourcetypeid`</span> <span class="p">,</span>
+<span class="sb">`subid`</span>
+<span class="p">)</span>
+<span class="n">VALUES</span> <span class="p">(</span>
+<span class="n">NULL</span> <span class="p">,</span> <span class="s">&#39;13&#39;</span><span class="p">,</span> <span class="s">&#39;8&#39;</span>
+<span class="p">)</span>
+</pre></div>
+
+
+<p><em>7.</em> Set up the image to computer group mappings and grant access.</p>
+<p>These next steps will be done using the VCL web interface</p>
+<ol>
+<li>Create a new Image group. Manage groups, add a new image resrouce group.</li>
+<li>Create a new Computer group.&nbsp; Manage groups, add a new computer
+resrouce group.</li>
+<li>Add new image (inserted above) to the image group just created in step 1.</li>
+<li>Add machines that have vclclientd to the computer group created in step
+2.</li>
+<li>Assign new computer group to be controlled by management node. Select
+Management Nodes, Edit Management Node Mapping</li>
+<li>Grant access to the new lab image and computer group in the privilege
+tree.</li>
+</ol>
+  </div>
+  
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under 
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+  
+</body>
+</html>

Added: websites/staging/vcl/trunk/content/confluence_export/libvirt-provisioning-module.html
==============================================================================
--- websites/staging/vcl/trunk/content/confluence_export/libvirt-provisioning-module.html (added)
+++ websites/staging/vcl/trunk/content/confluence_export/libvirt-provisioning-module.html Tue Jan  8 16:38:15 2013
@@ -0,0 +1,922 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/vcl.css" rel="stylesheet" type="text/css">
+  <link href="/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache VCL - Libvirt Provisioning Module</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="sitetitle">
+    <table width="100%" border="0" cellspacing="0" cellpadding="5">
+      <tr>
+         <td><a href="/index.html"><img src="/img/vcl-logo.png" height="100" align="left" alt="Apache VCL logo"></a></td>
+         <td><a href="http://www.apache.org"><img src="/img/asf-logo.png" align="right" alt="Apache Software Foundation logo"></a></td>
+      </tr>
+    </table>
+  </div>
+
+  <div id="navigation"> 
+  <ul>
+<li>Information<ul>
+<li><a href="/info/about.html">What is VCL?</a></li>
+<li><a href="/info/features.html">Features</a></li>
+<li><a href="/info/architecture.html">Architecture</a></li>
+<li><a href="/info/use-cases.html">Use Cases</a></li>
+<li><a href="/downloads/download.cgi">Download</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></li>
+<li><a href="/info/faq.html">FAQ</a></li>
+</ul>
+</li>
+<li><a href="/docs/index.html">Documentation</a><ul>
+<li><a href="/docs/using-vcl.html">Using VCL</a></li>
+<li><a href="/docs/image-creation.html">Image Creation</a></li>
+<li><a href="/docs/administration.html">Administration</a></li>
+<li><a href="/docs/installation.html">Installation</a></li>
+<li><a href="/docs/deployment-planning.html">Deployment Planning</a></li>
+</ul>
+</li>
+<li><a href="/comm/index.html">Community</a><ul>
+<li><a href="/comm/index.html#getInvolved">Getting Involved</a></li>
+<li><a href="/comm/index.html#mail-list">Mailing Lists</a></li>
+<li><a href="/comm/index.html#how-do-i-join-the-project">How can I Join</a></li>
+<li><a href="/comm/wiki.html">Wiki</a></li>
+<li><a href="/dev/index.html">Development</a><ul>
+<li><a href="/dev/jira.html">Issue Tracking</a></li>
+<li><a href="/dev/code-documentation.html">Code Documentation</a></li>
+<li><a href="/dev/roadmap.html">Roadmap</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="http://www.apache.org">Apache Software Foundation</a><ul>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+</ul>
+</li>
+</ul>
+  </div>
+  
+  <div id="content">
+    <h1 class="title">Libvirt Provisioning Module</h1>
+    <p><a href="http://libvirt.org/">Libvirt </a>
+is an open source toolkit which can interact with KVM, Xen, and several
+other virtualization architectures.</p>
+<p><a name="LibvirtProvisioningModule-libvirt.pm"></a></p>
+<h3 id="libvirtpm">libvirt.pm</h3>
+<ul>
+<li>libvirt.pm is the main provisioning module</li>
+<li>Computers should have their provisioningID attributes set to point to
+this module in order to utilize it</li>
+<li>Implements the required provisioning module subroutines: <em>load, capture,
+node_status, power_status, power_on, power_off, power_reset...</em></li>
+<li>Implements the functions provided by libvirt: <em>define, start, destroy...</em></li>
+<li>Does not contain code specific to any of the hypervisors supported by
+libvirt (KVM, Xen, etc)</li>
+<li>File location: <em>lib/VCL/Module/Provisioning/Libvirt.pm</em></li>
+<li>Automatically determines which hypervisor driver object to use upon
+initialization by examining the host</li>
+</ul>
+<p><a name="LibvirtProvisioningModule-HypervisorDriverModules"></a></p>
+<h3 id="hypervisor-driver-modules">Hypervisor Driver Modules</h3>
+<p>Libvirt hypervisor drivers allow it to interact with and control various
+types of hypervisors.&nbsp; The drivers are listed at <a href="http://libvirt.org/drivers.html.&amp;nbsp">http://libvirt.org/drivers.html.&amp;nbsp</a>
+; A hypervisor driver module must be written in order for VCL to support
+any of the hypervisors supported by libvirt.&nbsp; These driver modules
+only contain code specific to the driver in order to perform functions not
+handled by libvirt.pm.</p>
+<ul>
+<li>Hypervisor driver directory: <em>lib/VCL/Module/Provisioning/libvirt/</em></li>
+<li>Example: lib/VCL/Module/Provisioning/libvirt/KVM.pm
+<strong> Contains code which only applies to KVM
+</strong> Calls qemu-img to perform image file operations</li>
+</ul>
+<p>!Libvirt UML Diagram.gif!</p>
+<p><a name="LibvirtProvisioningModule-*VirtualMachineDisks*"></a></p>
+<h4 id="virtual-machine-disks"><em>Virtual Machine Disks</em></h4>
+<p>A master disk image is stored in the location specified by the datastore
+path in the VM host profile.&nbsp; A copy on write virtual disk image is
+created for each virtual machine when it is loaded.&nbsp; The master disk
+image is used as a read-only backing file for the copy on write disk
+images.&nbsp; Each VM writes to its own copy on write disk image.&nbsp;
+Using copy on write virtual disks allows VMs to be loaded without having to
+create a complete copy of the master disk image.
+!Copy on Write.gif|width=367,height=448!</p>
+<p>{anchor:libvirt.pm}</p>
+<p><a name="LibvirtProvisioningModule-{color:#0000ff}libvirt.pm{color}"></a></p>
+<h1 id="color0000fflibvirtpmcolor">{color:#0000ff}libvirt.pm{color}</h1>
+<p>{html}&lt;?xml version="1.0" ?&gt;
+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>VCL::Provisioning::libvirt - VCL provisioning module to support the
+libvirt toolkit</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:root@localhost" />
+</head></p>
+<p><body style="background-color: white"></p>
+<p><a name="__index__"></a></p>
+
+<!-- INDEX BEGIN -->
+
+<ul>
+
+    <li><a href="#name">NAME</a></li>
+    <li><a href="#synopsis">SYNOPSIS</a></li>
+    <li><a href="#description">DESCRIPTION</a></li>
+    <li><a href="#object_methods">OBJECT METHODS</a></li>
+    <ul>
+
+        <li><a href="#initialize">initialize</a></li>
+        <li><a href="#load">load</a></li>
+        <li><a href="#capture">capture</a></li>
+        <li><a href="#node_status">node_status</a></li>
+        <li><a href="#does_image_exist">does_image_exist</a></li>
+        <li><a href="#get_image_size">get_image_size</a></li>
+        <li><a
+href="#get_image_repository_search_paths">get_image_repository_search_paths</a></li>
+        <li><a href="#power_status">power_status</a></li>
+        <li><a href="#power_on">power_on</a></li>
+        <li><a href="#power_off">power_off</a></li>
+        <li><a href="#power_reset">power_reset</a></li>
+        <li><a
+href="#post_maintenance_action">post_maintenance_action</a></li>
+    </ul>
+
+<div class="codehilite"><pre><span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#private_methods&quot;</span><span class="nt">&gt;</span>PRIVATE METHODS<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
+<span class="nt">&lt;ul&gt;</span>
+
+    <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#driver&quot;</span><span class="nt">&gt;</span>driver<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
+    <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#get_driver_name&quot;</span><span class="nt">&gt;</span>get_driver_name<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
+    <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#get_domain_name&quot;</span><span class="nt">&gt;</span>get_domain_name<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
+    <span class="nt">&lt;li&gt;&lt;a</span>
+</pre></div>
+
+
+<p>href="#get_domain_file_base_name"&gt;get_domain_file_base_name</a></li>
+        <li><a
+href="#get_domain_xml_directory_path">get_domain_xml_directory_path</a></li>
+        <li><a
+href="#get_domain_xml_file_path">get_domain_xml_file_path</a></li>
+        <li><a
+href="#get_master_image_directory_path">get_master_image_directory_path</a></li>
+        <li><a
+href="#get_master_image_file_path">get_master_image_file_path</a></li>
+        <li><a
+href="#get_copy_on_write_file_path">get_copy_on_write_file_path</a></li>
+        <li><a
+href="#delete_existing_domains">delete_existing_domains</a></li>
+        <li><a href="#delete_domain">delete_domain</a></li>
+        <li><a
+href="#generate_domain_xml">generate_domain_xml</a></li>
+        <li><a href="#get_domain_info">get_domain_info</a></li>
+        <li><a href="#get_domain_xml">get_domain_xml</a></li>
+        <li><a href="#domain_exists">domain_exists</a></li>
+        <li><a href="#get_snapshot_info">get_snapshot_info</a></li>
+        <li><a href="#create_snapshot">create_snapshot</a></li>
+        <li><a href="#delete_snapshot">delete_snapshot</a></li>
+        <li><a
+href="#get_image_size_bytes">get_image_size_bytes</a></li>
+        <li><a
+href="#find_repository_image_file_paths">find_repository_image_file_paths</a></li>
+    </ul></p>
+<div class="codehilite"><pre><span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#see_also&quot;</span><span class="nt">&gt;</span>SEE ALSO<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
+</pre></div>
+
+
+<p></ul>
+<!-- INDEX END --></p>
+<p><hr />
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>VCL::Provisioning::libvirt - VCL provisioning module to support the
+libvirt toolkit</p>
+<p>
+</p>
+<hr />
+<h1><a name="synopsis">SYNOPSIS</a></h1>
+<pre>
+ use VCL::Module::Provisioning::libvirt;
+ my $provisioner =
+(VCL::Module::Provisioning::libvirt)-&gt;new({data_structure =&gt;
+$self-&gt;data});</pre>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<pre>
+ Provides support allowing VCL to provisioning resources supported by the
+ libvirt toolkit.
+ <a href="http://libvirt.org">http://libvirt.org</a></pre>
+<p>
+</p>
+<hr />
+<h1><a name="object_methods">OBJECT METHODS</a></h1>
+<p>
+</p>
+<h2><a name="initialize">initialize</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : boolean
+ Description : Enumerates the libvirt driver modules directory:
+           lib/VCL/Module/Provisioning/libvirt/</p>
+<div class="codehilite"><pre>       <span class="n">Attempts</span> <span class="n">to</span> <span class="n">create</span> <span class="ow">and</span> <span class="n">initialize</span> <span class="n">an</span> <span class="n">object</span> <span class="k">for</span> <span class="nb">each</span>
+</pre></div>
+
+
+<p>hypervisor
+           driver module found in this directory. The first driver
+module
+           object successfully initialized is used. This object is made
+           accessible within this module via $self-&gt;driver. This
+allows
+           libvirt support driver modules to be added without having to
+           alter the code in libvirt.pm.</pre>
+<p>
+</p>
+<h2><a name="load">load</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : boolean
+ Description : Loads the requested image on the domain:</pre>
+<ul>
+<li>
+<p>Destroy and delete any domains have already been defined for the
+computer
+assigned to this reservation.</p>
+</li>
+<li>
+<p>Construct the default libvirt XML definition for the domain.</p>
+</li>
+<li>
+<p>Call the libvirt driver module's 'extend_domain_xml' subroutine if it is
+implemented. Pass the default domain XML definition hash reference as an
+argument. The 'extend_domain_xml' subroutine may add or modify XML values.
+This
+allows the driver module to customize the XML specific to that driver.</p>
+</li>
+<li>
+<p>Call the driver module's 'pre_define' subroutine if it is implemented.
+This
+subroutine completes any necessary tasks which are specific to the driver
+being
+used prior to defining the domain.</p>
+</li>
+<li>
+<p>Create a text file on the node containing the domain XML definition.</p>
+</li>
+<li>
+<p>Define the domain on the node by calling 'virsh define &lt;XML
+file&gt;'.</p>
+</li>
+<li>
+<p>Power on the domain.</p>
+</li>
+<li>
+<p>Call the domain guest OS module's 'post_load' subroutine if
+implemented.</p>
+</li>
+</ul>
+<p>
+</p>
+<h2><a name="capture">capture</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : boolean
+ Description : Captures the image currently loaded on the computer.</pre>
+<p>
+</p>
+<h2><a name="node_status">node_status</a></h2>
+<pre>
+ Parameters  : $computer_id (optional)
+ Returns     : string
+ Description : Checks the status of the computer in order to determine if
+the
+           computer is ready to be reserved or needs to be reloaded. A
+           string is returned depending on the status of the computer:
+           'READY':
+          * Computer is ready to be reserved
+          * It is accessible
+          * It is loaded with the correct image
+          * OS module's post-load tasks have run
+           'POST_LOAD':
+          * Computer is loaded with the correct image
+          * OS module's post-load tasks have not run
+           'RELOAD':
+          * Computer is not accessible or not loaded with the
+correct
+            image</pre>
+<p>
+</p>
+<h2><a name="does_image_exist">does_image_exist</a></h2>
+<pre>
+ Parameters  : $image_name (optional)
+ Returns     : array (boolean)
+ Description : Checks if the requested image exists on the node or in the
+           repository. If the image exists, an array containing the
+image
+           file paths is returned. A boolean evaluation can be done on
+the
+           return value to simply determine if an image exists.</pre>
+<p>
+</p>
+<h2><a name="get_image_size">get_image_size</a></h2>
+<pre>
+ Parameters  : $image_name (optional)
+ Returns     : integer
+ Description : Returns the size of the image in megabytes.</pre>
+<p>
+</p>
+<h2><a
+name="get_image_repository_search_paths">get_image_repository_search_paths</a></h2>
+<pre>
+ Parameters  : $management_node_identifier (optional)
+ Returns     : array
+ Description : Returns an array containing paths on the management node
+where an
+           image may reside. The paths may contain wildcards. This is
+used
+           to attempt to locate an image on another managment node in
+order
+           to retrieve it.</pre>
+<p>
+</p>
+<h2><a name="power_status">power_status</a></h2>
+<pre>
+ Parameters  : $domain_name (optional)
+ Returns     : string
+ Description : Determines the power state of the domain. A string is
+returned
+           containing one of the following values:
+          * 'on'
+          * 'off'
+          * 'suspended'</pre>
+<p>
+</p>
+<h2><a name="power_on">power_on</a></h2>
+<pre>
+ Parameters  : $domain_name (optional)
+ Returns     : boolean
+ Description : Powers on the domain. Returns true if the domain was
+successfully
+           powered on or was already powered on.</pre>
+<p>
+</p>
+<h2><a name="power_off">power_off</a></h2>
+<pre>
+ Parameters  : $domain_name
+ Returns     : boolean
+ Description : Powers off the domain. Returns true if the domain was
+           successfully powered off or was already powered off.</pre>
+<p>
+</p>
+<h2><a name="power_reset">power_reset</a></h2>
+<pre>
+ Parameters  : $domain_name (optional)
+ Returns     : boolean
+ Description : Resets the power of the domain by powering it off and then
+back
+           on.</pre>
+<p>
+</p>
+<h2><a name="post_maintenance_action">post_maintenance_action</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : boolean
+ Description : Performs tasks to the computer after it has been put into
+           maintenance mode.</pre>
+<p>
+</p>
+<hr />
+<h1><a name="private_methods">PRIVATE METHODS</a></h1>
+<p>
+</p>
+<h2><a name="driver">driver</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : Libvirt driver object
+ Description : Returns a reference to the libvirt driver object which is
+created
+           when this libvirt.pm module is initialized.</pre>
+<p>
+</p>
+<h2><a name="get_driver_name">get_driver_name</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns the name of the libvirt driver being used to control
+the
+           node. Example: 'KVM'</pre>
+<p>
+</p>
+<h2><a name="get_domain_name">get_domain_name</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns the name of the domain. This name is passed to
+various
+           virsh commands. It is also the name displayed in
+virt-manager.
+           Example: 'vclv99-197:vmwarewin7-Windows764bit1846-v3'</pre>
+<p>
+</p>
+<h2><a name="get_domain_file_base_name">get_domain_file_base_name</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns the base name for files created for the current
+           reservation. A file extension is not included. This file
+name is
+           used for the domain's XML definition file and it's copy on
+write
+           image file. Example: 'vclv99-37_234-v23'</pre>
+<p>
+</p>
+<h2><a
+name="get_domain_xml_directory_path">get_domain_xml_directory_path</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns the directory path on the node where domain
+definition
+           XML files reside. The directory used is: '/tmp/vcl'</pre>
+<p>
+</p>
+<h2><a name="get_domain_xml_file_path">get_domain_xml_file_path</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns the domain XML definition file path on the node.
+           Example: '/tmp/vcl/vclv99-37_234-v23.xml'</pre>
+<p>
+</p>
+<h2><a
+name="get_master_image_directory_path">get_master_image_directory_path</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns the directory path on the node where the master
+image
+           files reside. Example: '/var/lib/libvirt/images'</pre>
+<p>
+</p>
+<h2><a
+name="get_master_image_file_path">get_master_image_file_path</a></h2>
+<pre>
+ Parameters  : $image_name (optional)
+ Returns     : string
+ Description : Returns the path on the node where the master image file
+resides.
+           Example:</p>
+<p>'/var/lib/libvirt/images/vmwarelinux-RHEL54Small2251-v1.qcow2'</pre>
+<p>
+</p>
+<h2><a
+name="get_copy_on_write_file_path">get_copy_on_write_file_path</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns the path on the node where the copy on write file
+for the
+           domain resides. Example:
+           '/var/lib/libvirt/images/vclv99-197_2251-v1.qcow2'</pre>
+<p>
+</p>
+<h2><a name="delete_existing_domains">delete_existing_domains</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : boolean
+ Description : Deletes existing domains which were previously created for
+the
+           computer assigned to the current reservation.</pre>
+<p>
+</p>
+<h2><a name="delete_domain">delete_domain</a></h2>
+<pre>
+ Parameters  : $domain_name
+ Returns     : boolean
+ Description : Deletes a domain from the node.</pre>
+<p>
+</p>
+<h2><a name="generate_domain_xml">generate_domain_xml</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Generates a string containing the XML definition for the
+domain.</p>
+<p></pre>
+<p>
+</p>
+<h2><a name="get_domain_info">get_domain_info</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : hash reference
+ Description : Retrieves information about all of the domains defined on
+the
+           node and constructs a hash containing the information.
+Example:
+          &quot;vclv99-197:vmwarewin7-Windows764bit1846-v3&quot;
+=&gt; {
+             &quot;id&quot; =&gt; 135,
+             &quot;state&quot; =&gt; &quot;paused&quot;
+          },
+          &quot;vclv99-37:vmwarewinxp-base234-v23&quot; =&gt; {
+             &quot;state&quot; =&gt; &quot;shut off&quot;
+          }</p>
+<p></pre>
+<p>
+</p>
+<h2><a name="get_domain_xml">get_domain_xml</a></h2>
+<pre>
+ Parameters  : $domain_name
+ Returns     : hash reference
+ Description : Retrieves the XML definition of a domain already defined on
+the
+           node. Generates a hash using XML::Simple::XMLin.</p>
+<p></pre>
+<p>
+</p>
+<h2><a name="domain_exists">domain_exists</a></h2>
+<pre>
+ Parameters  : $domain_name
+ Returns     : boolean
+ Description : Determines if the domain is defined on the node.</p>
+<p></pre>
+<p>
+</p>
+<h2><a name="get_snapshot_info">get_snapshot_info</a></h2>
+<pre>
+ Parameters  : $domain_name
+ Returns     : hash reference
+ Description : Retrieves snapshot information for the domain specified by
+the
+           argument and constructs a hash. The hash keys are the
+snapshot
+           names. Example:
+          &quot;VCL snapshot&quot; =&gt; {
+             &quot;creation_time&quot; =&gt; &quot;2011-12-07
+16:05:50 -0500&quot;,
+             &quot;state&quot; =&gt; &quot;shutoff&quot;
+          }</p>
+<p></pre>
+<p>
+</p>
+<h2><a name="create_snapshot">create_snapshot</a></h2>
+<pre>
+ Parameters  : $domain_name, $description
+ Returns     : boolean
+ Description : Creates a snapshot of the domain specified by the argument.</p>
+<p></pre>
+<p>
+</p>
+<h2><a name="delete_snapshot">delete_snapshot</a></h2>
+<pre>
+ Parameters  : $domain_name, $snapshot
+ Returns     : boolean
+ Description : Deletes a snapshot created of the domain specified by the
+           argument.</p>
+<p></pre>
+<p>
+</p>
+<h2><a name="get_image_size_bytes">get_image_size_bytes</a></h2>
+<pre>
+ Parameters  : $image_name (optional)
+ Returns     : integer
+ Description : Returns the size of the image in bytes.</p>
+<p></pre>
+<p>
+</p>
+<h2><a
+name="find_repository_image_file_paths">find_repository_image_file_paths</a></h2>
+<pre>
+ Parameters  : $image_name (optional)
+ Returns     : array
+ Description : Locates valid image files stored in the image repository.
+           Searches for all files beginning with the image name and
+then
+           checks the results to remove any files which should not be
+           included. File extensions which are excluded: vmx, txt, xml
+           If multiple vmdk files are found it is assumed that the
+image is
+           one of the split vmdk formats and the &lt;image
+name&gt;.vmdk contains
+           the descriptor information. This file is excluded because it
+           causes qemu-img to fail.</p>
+<p></pre>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p><a href="http://cwiki.apache.org/VCL/">http://cwiki.apache.org/VCL/</a></p>
+</p>
+
+<p></body></p>
+<p></html>{html}</p>
+<p><a name="LibvirtProvisioningModule-"></a></p>
+<h2></h2>
+<p>{anchor:KVM.pm}</p>
+<p><a name="LibvirtProvisioningModule-{color:#0000ff}KVM.pm{color}"></a></p>
+<h1 id="color0000ffkvmpmcolor">{color:#0000ff}KVM.pm{color}</h1>
+<p>{html}
+&lt;?xml version="1.0" ?&gt;
+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>KVM.pm</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:root@localhost" />
+</head></p>
+<p><body style="background-color: white"></p>
+<p><a name="__index__"></a></p>
+
+<!-- INDEX BEGIN -->
+
+<ul>
+
+    <li><a href="#name">NAME</a></li>
+    <li><a href="#description">DESCRIPTION</a></li>
+    <li><a href="#object_methods">OBJECT METHODS</a></li>
+    <ul>
+
+        <li><a href="#initialize">initialize</a></li>
+        <li><a href="#get_domain_type">get_domain_type</a></li>
+        <li><a
+href="#get_disk_driver_name">get_disk_driver_name</a></li>
+        <li><a href="#get_disk_format">get_disk_format</a></li>
+        <li><a
+href="#get_disk_file_extension">get_disk_file_extension</a></li>
+        <li><a href="#pre_define">pre_define</a></li>
+    </ul>
+
+<div class="codehilite"><pre><span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#private_methods&quot;</span><span class="nt">&gt;</span>PRIVATE METHODS<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
+<span class="nt">&lt;ul&gt;</span>
+
+    <span class="nt">&lt;li&gt;&lt;a</span>
+</pre></div>
+
+
+<p>href="#get_virtual_disk_file_info"&gt;get_virtual_disk_file_info</a></li>
+        <li><a
+href="#get_virtual_disk_size_bytes">get_virtual_disk_size_bytes</a></li>
+        <li><a href="#copy_virtual_disk">copy_virtual_disk</a></li>
+        <li><a
+href="#create_copy_on_write_image">create_copy_on_write_image</a></li>
+        <li><a
+href="#update_windows_image">update_windows_image</a></li>
+    </ul></p>
+<div class="codehilite"><pre><span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;#see_also&quot;</span><span class="nt">&gt;</span>SEE ALSO<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
+</pre></div>
+
+
+<p></ul>
+<!-- INDEX END --></p>
+<p><hr />
+<p>
+</p>
+<h1><a name="name">NAME</a></h1>
+<p>VCL::Provisioning::libvirt::KVM - Libvirt hypervisor driver module to
+allow
+support for the KVM hypervisor</p>
+<p>
+</p>
+<hr />
+<h1><a name="description">DESCRIPTION</a></h1>
+<pre>
+ This is a driver module to allow the main libvirt.pm provisioning module
+to
+ support KVM hosts. It performs the KVM-specific tasks not handled by
+libvirt
+ itself.</pre>
+<p>
+</p>
+<hr />
+<h1><a name="object_methods">OBJECT METHODS</a></h1>
+<p>
+</p>
+<h2><a name="initialize">initialize</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : boolean
+ Description : Checks if the node has KVM installed by checking if
+/usr/bin/qemu
+           exists. Returns true if the file exists, false
+otherwise.</pre>
+<p>
+</p>
+<h2><a name="get_domain_type">get_domain_type</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns 'kvm'. This is specified in the domain XML
+definition:
+          &lt;domain type='kvm'&gt;</pre>
+<pre></p>
+<p>=cut</pre>
+<p><table cellspacing="0" cellpadding="0"><tr><td>sub get_domain_type {
+<tr><td><td>my $self = shift;
+<tr><td><td>unless (ref($self) &amp;&amp;
+$self-&gt;<code>isa('VCL::Module'))</code> {
+<tr><td><td>notify($ERRORS{'CRITICAL'}, 0, ``subroutine was called as a
+function, it must be called as a class method'');
+<tr><td><td>return;
+<tr><td><td>}
+</table></p>
+<pre></p>
+<div class="codehilite"><pre><span class="k">return</span> <span class="s">&#39;kvm&#39;</span><span class="p">;</span>
+</pre></div>
+
+
+<p>}</pre>
+<p>#/////////////////////////////////////////////////////////////////////////////</p>
+<p>
+</p>
+<h2><a name="get_disk_driver_name">get_disk_driver_name</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns 'qemu'. The disk driver name is specified in the
+domain
+           XML definition:
+          &lt;domain ...&gt;
+             &lt;devices&gt;
+            &lt;disk ...&gt;
+               &lt;driver name='qemu' ...&gt;</pre>
+<p>
+</p>
+<h2><a name="get_disk_format">get_disk_format</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns 'qcow2'. The disk format is specified in the domain
+XML
+           definition:
+          &lt;domain ...&gt;
+             &lt;devices&gt;
+            &lt;disk ...&gt;
+               &lt;driver type='qcow2' ...&gt;</pre>
+<p>
+</p>
+<h2><a name="get_disk_file_extension">get_disk_file_extension</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : string
+ Description : Returns 'qcow2'. This is used by libvirt.pm as the file
+extension
+           of the virtual disk file paths.</pre>
+<p>
+</p>
+<h2><a name="pre_define">pre_define</a></h2>
+<pre>
+ Parameters  : none
+ Returns     : boolean
+ Description : Performs the KVM-specific steps prior to defining a domain:
+           * Checks if the master image file exists on the node, If it
+does
+         not exist, attempts to copy image from repository to the
+node
+           * Creates a copy on write image which will be used by the
+domain
+         being loaded</pre>
+<p>
+</p>
+<hr />
+<h1><a name="private_methods">PRIVATE METHODS</a></h1>
+<p>
+</p>
+<h2><a
+name="get_virtual_disk_file_info">get_virtual_disk_file_info</a></h2>
+<pre>
+ Parameters  : $virtual_disk_file_path
+ Returns     : hash reference
+ Description : Calls 'qemu-img info' to retrieve the virtual disk
+information.
+           Builds a hash based on the output. Example:
+          &quot;backing_file&quot; =&gt;
+&quot;/var/lib/libvirt/images/vmwarewinxp-base234-v23.qcow2 (actual path:
+/var/lib/libvirt/images/vmwarewinxp-base234-v23.qcow2)&quot;,
+          &quot;backing_file_actual_path&quot; =&gt;
+&quot;/var/lib/libvirt/images/vmwarewinxp-base234-v23.qcow2&quot;,
+          &quot;cluster_size&quot; =&gt; 65536,
+          &quot;disk_size&quot; =&gt; &quot;423M&quot;,
+          &quot;disk_size_bytes&quot; =&gt; 443547648,
+          &quot;file_format&quot; =&gt; &quot;qcow2&quot;,
+          &quot;image&quot; =&gt;
+&quot;/var/lib/libvirt/images/vclv99-37_234-v23.qcow2&quot;,
+          &quot;snapshot&quot; =&gt; {
+            1 =&gt; {
+              &quot;date&quot; =&gt; &quot;2011-12-07
+14:43:12&quot;,
+              &quot;tag&quot; =&gt; &quot;snap1&quot;,
+              &quot;vm_clock&quot; =&gt; &quot;00:00:00.000&quot;,
+              &quot;vm_size&quot; =&gt; 0
+            }
+          },
+          &quot;virtual_size&quot; =&gt; &quot;20G (21474836480
+bytes)&quot;,
+          &quot;virtual_size_bytes&quot; =&gt;
+&quot;21474836480&quot;</pre>
+<p>
+</p>
+<h2><a
+name="get_virtual_disk_size_bytes">get_virtual_disk_size_bytes</a></h2>
+<pre>
+ Parameters  : $image_name (optional)
+ Returns     : integer
+ Description : Returns the size of the virtual disk in bytes.</pre>
+<p>
+</p>
+<h2><a name="copy_virtual_disk">copy_virtual_disk</a></h2>
+<pre>
+ Parameters  : $source_file_paths, $destination_file_path, $disk_format
+(optional)
+ Returns     : boolean
+ Description : Calls qemu-img to copy a virtual disk image. The destination
+disk
+           format can be specified as an argument. If omitted, qcow2 is
+           used.</pre>
+<p>
+</p>
+<h2><a
+name="create_copy_on_write_image">create_copy_on_write_image</a></h2>
+<pre>
+ Parameters  : $master_image_file_path, $copy_on_write_file_path
+ Returns     : boolean
+ Description : Calls qemu-img to create a copy on write virtual disk image
+based
+           on the master image. The resulting image is written to by
+the VM
+           when it makes changes to its hard disk. Multiple VMs may
+utilize
+           the master image file. Each writes to its own copy on write
+image
+           file. The master image file is not altered.</pre>
+<p>
+</p>
+<h2><a name="update_windows_image">update_windows_image</a></h2>
+<pre>
+ Parameters  : $virtual_disk_file_path
+ Returns     : boolean
+ Description : Runs virt-win-reg to update the registry of the image
+specified
+           by the $virtual_disk_file_path argument. The virt-win-reg
+utility
+           is provided by libguestfs-tools. This subroutine returns
+true if
+           virt-win-reg isn't installed.</p>
+<div class="codehilite"><pre>       <span class="n">Adds</span> <span class="n">registry</span> <span class="nb">keys</span> <span class="n">to</span> <span class="n">disable</span> <span class="n">VMware</span> <span class="n">services</span><span class="o">.</span> <span class="n">If</span> <span class="n">the</span> <span class="n">image</span>
+</pre></div>
+
+
+<p>is
+           Windows 5.x, registry keys are added to enable the builtin
+IDE
+           drivers. This allows Windows images converted from VMware
+using a
+           SCSI virtual disk to be loaded on KVM.</pre>
+<p>
+</p>
+<hr />
+<h1><a name="see_also">SEE ALSO</a></h1>
+<p><a href="http://cwiki.apache.org/VCL/">http://cwiki.apache.org/VCL/</a></p>
+</p>
+
+<p></body></p>
+<p></html>
+{html}</p>
+  </div>
+  
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under 
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+  
+</body>
+</html>

Added: websites/staging/vcl/trunk/content/confluence_export/making-a-reservation.html
==============================================================================
--- websites/staging/vcl/trunk/content/confluence_export/making-a-reservation.html (added)
+++ websites/staging/vcl/trunk/content/confluence_export/making-a-reservation.html Tue Jan  8 16:38:15 2013
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/vcl.css" rel="stylesheet" type="text/css">
+  <link href="/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache VCL - Making a Reservation</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="sitetitle">
+    <table width="100%" border="0" cellspacing="0" cellpadding="5">
+      <tr>
+         <td><a href="/index.html"><img src="/img/vcl-logo.png" height="100" align="left" alt="Apache VCL logo"></a></td>
+         <td><a href="http://www.apache.org"><img src="/img/asf-logo.png" align="right" alt="Apache Software Foundation logo"></a></td>
+      </tr>
+    </table>
+  </div>
+
+  <div id="navigation"> 
+  <ul>
+<li>Information<ul>
+<li><a href="/info/about.html">What is VCL?</a></li>
+<li><a href="/info/features.html">Features</a></li>
+<li><a href="/info/architecture.html">Architecture</a></li>
+<li><a href="/info/use-cases.html">Use Cases</a></li>
+<li><a href="/downloads/download.cgi">Download</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></li>
+<li><a href="/info/faq.html">FAQ</a></li>
+</ul>
+</li>
+<li><a href="/docs/index.html">Documentation</a><ul>
+<li><a href="/docs/using-vcl.html">Using VCL</a></li>
+<li><a href="/docs/image-creation.html">Image Creation</a></li>
+<li><a href="/docs/administration.html">Administration</a></li>
+<li><a href="/docs/installation.html">Installation</a></li>
+<li><a href="/docs/deployment-planning.html">Deployment Planning</a></li>
+</ul>
+</li>
+<li><a href="/comm/index.html">Community</a><ul>
+<li><a href="/comm/index.html#getInvolved">Getting Involved</a></li>
+<li><a href="/comm/index.html#mail-list">Mailing Lists</a></li>
+<li><a href="/comm/index.html#how-do-i-join-the-project">How can I Join</a></li>
+<li><a href="/comm/wiki.html">Wiki</a></li>
+<li><a href="/dev/index.html">Development</a><ul>
+<li><a href="/dev/jira.html">Issue Tracking</a></li>
+<li><a href="/dev/code-documentation.html">Code Documentation</a></li>
+<li><a href="/dev/roadmap.html">Roadmap</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="http://www.apache.org">Apache Software Foundation</a><ul>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+</ul>
+</li>
+</ul>
+  </div>
+  
+  <div id="content">
+    <h1 class="title">Making a Reservation</h1>
+    <p>!newreservation.png!</p>
+<p>To make a VCL reservation:
+1. Select <em>New Reservation</em> from the left navigation menu
+1. Select the environment you would like to use from the drop-down box
+1. If you would like to use the environment immediately, select <em>Now</em>.
+Otherwise, select <em>Later</em> and select a time in the future to schedule use
+of the environment.
+1. Select the duration you would like to use the environment, or, if you
+have access to and need the reservation for a really long time, enter an
+end date/time in the <em>Until</em> box.
+1. * The maximum time you can select for duration varies by access level.
+1. * For most users (again, it depends on your access level), you can extend
+the length of your reservation after you have made it by selecting <em>Edit</em>
+on the <em>Current Reservations</em> page.
+1. If the combination you have selected in the above elements is currently
+available, the button will display <em>Create Reservation</em>.  Click it to
+create your reservation. If it is not currently available, the button will
+display <em>View Time Table</em> which will present you with a table of reserved
+and available time slots.  Click one of the green areas to select a
+different time to use the environment.</p>
+  </div>
+  
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under 
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+  
+</body>
+</html>

Added: websites/staging/vcl/trunk/content/confluence_export/managegroups.py---remotely-managing-user-groups.html
==============================================================================
--- websites/staging/vcl/trunk/content/confluence_export/managegroups.py---remotely-managing-user-groups.html (added)
+++ websites/staging/vcl/trunk/content/confluence_export/managegroups.py---remotely-managing-user-groups.html Tue Jan  8 16:38:15 2013
@@ -0,0 +1,327 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/vcl.css" rel="stylesheet" type="text/css">
+  <link href="/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache VCL - managegroups.py - Remotely managing user groups</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="sitetitle">
+    <table width="100%" border="0" cellspacing="0" cellpadding="5">
+      <tr>
+         <td><a href="/index.html"><img src="/img/vcl-logo.png" height="100" align="left" alt="Apache VCL logo"></a></td>
+         <td><a href="http://www.apache.org"><img src="/img/asf-logo.png" align="right" alt="Apache Software Foundation logo"></a></td>
+      </tr>
+    </table>
+  </div>
+
+  <div id="navigation"> 
+  <ul>
+<li>Information<ul>
+<li><a href="/info/about.html">What is VCL?</a></li>
+<li><a href="/info/features.html">Features</a></li>
+<li><a href="/info/architecture.html">Architecture</a></li>
+<li><a href="/info/use-cases.html">Use Cases</a></li>
+<li><a href="/downloads/download.cgi">Download</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></li>
+<li><a href="/info/faq.html">FAQ</a></li>
+</ul>
+</li>
+<li><a href="/docs/index.html">Documentation</a><ul>
+<li><a href="/docs/using-vcl.html">Using VCL</a></li>
+<li><a href="/docs/image-creation.html">Image Creation</a></li>
+<li><a href="/docs/administration.html">Administration</a></li>
+<li><a href="/docs/installation.html">Installation</a></li>
+<li><a href="/docs/deployment-planning.html">Deployment Planning</a></li>
+</ul>
+</li>
+<li><a href="/comm/index.html">Community</a><ul>
+<li><a href="/comm/index.html#getInvolved">Getting Involved</a></li>
+<li><a href="/comm/index.html#mail-list">Mailing Lists</a></li>
+<li><a href="/comm/index.html#how-do-i-join-the-project">How can I Join</a></li>
+<li><a href="/comm/wiki.html">Wiki</a></li>
+<li><a href="/dev/index.html">Development</a><ul>
+<li><a href="/dev/jira.html">Issue Tracking</a></li>
+<li><a href="/dev/code-documentation.html">Code Documentation</a></li>
+<li><a href="/dev/roadmap.html">Roadmap</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="http://www.apache.org">Apache Software Foundation</a><ul>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+</ul>
+</li>
+</ul>
+  </div>
+  
+  <div id="content">
+    <h1 class="title">managegroups.py - Remotely managing user groups</h1>
+    <p>managegroups.py is a script for remotely managing VCL user groups. It uses
+VCL's XML RPC API to provide an easy command line driven way of doing group
+management.</p>
+<p>{color:#ff0000}{<em>}NOTE: This script does not work with python 2.7. It
+relies on the xmlrpclib module which changed from 2.6 to 2.7 in a way that
+broke the script. You need to use python 2.6 for it to work.</em>{color}</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-Downloadinformation"></a></p>
+<h2 id="download-information">Download information</h2>
+<p>managegroups.py is not included in any official releases. You can download
+it from our subversion repository.</p>
+<p><a href="https://svn.apache.org/repos/asf/vcl/sandbox/useful_scripts/managegroups.py">Download managegroups.py</a></p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-AvailableCommands"></a></p>
+<h2 id="available-commands">Available Commands</h2>
+<p>Running managegroups.py with no arguments provides help on how to use it.
+It is used by specifying one of the following commands along with
+parameters specific to each command.</p>
+<ul>
+<li><a href="#addusergroup.html">#addUserGroup</a>
+ - creates a new user group</li>
+<li><a href="#getusergroupattributes.html">#getUserGroupAttributes</a>
+ - gets information about a user group</li>
+<li><a href="#deleteusergroup.html">#deleteUserGroup</a>
+ - deletes a user group</li>
+<li><a href="#editusergroup.html">#editUserGroup</a>
+ - modifies attributes of a user group</li>
+<li><a href="#getusergroupmembers.html">#getUserGroupMembers</a>
+ - gets members of a user group</li>
+<li><a href="#adduserstogroup.html">#addUsersToGroup</a>
+ - adds users to a group</li>
+<li><a href="#removeusersfromgroup.html">#removeUsersFromGroup</a>
+ - removes users from a group</li>
+<li><a href="#emptygroupmembership.html">#emptyGroupMembership</a>
+ - removes all users currently in a group</li>
+</ul>
+<p><a name="managegroups.py-Remotelymanagingusergroups-ReturnStatus"></a></p>
+<h2 id="return-status">Return Status</h2>
+<p>These are the possible values of the return status:
+<em> 0 - successful execution
+</em> 1 - missing authentication information
+<em> 2 - problem with command line parameters
+</em> 3 - for commands that pass in a filename, problems encountered reading
+the file
+<em> 4 - no users specified to add to or remove from a group
+</em> 5 - error encountered while performing XML RPC API call</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-ReturnOutput"></a></p>
+<h2 id="return-output">Return Output</h2>
+<p>The output of managegroups.py will always start with one of:
+<em> SUCCESS: - indicates successful run of the command
+</em> ERROR: - indicates a problem running the command
+* WARNING: - indicates a no errors, but possibly unexpected results (i.e.
+specifying a file when adding users to a group, but the file is empty)
+There is one exception. If you specify a parameter, but omit the argument
+for it, the option parser used in the script will generate an error.
+However, in those cases, the return status of the command will always be 2.</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-Authentication"></a></p>
+<h2 id="authentication">Authentication</h2>
+<p>The script needs to know what userid/password to use and what URL to
+access. These can either be defined as variables within the script (look at
+the very top of the file) or specified as parameters on the command line,
+before specifying which of managegroups's commands to use.</p>
+<p>There are two ways to specify authentication information because some
+people may prefer to have the password saved in the file, but not in a
+command line history, while others may prefer to have the password saved in
+command line history, but not in the file. Any of the authentication
+options specified on the command line will override any defined in the
+file.</p>
+<p>The options for specifying authentication on the command line are
+<em> -u username - log in to VCL site with this user, must be in
+username@affiliation form
+</em> -p "vclpass" - password used when logging in to VCL site, use quotes if
+it contains spaces
+* -r vclurl - XMLRPC URL of VCL site (it will end with
+index.php?mode=xmlrpccall - i.e. <a href="https://vcl.ncsu.edu/scheduling/index.php?mode=xmlrpccall">https://vcl.ncsu.edu/scheduling/index.php?mode=xmlrpccall</a>
+)</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:addUserGroup}addUserGroup"></a></p>
+<h2 id="anchoraddusergroupaddusergroup">{anchor:addUserGroup}addUserGroup</h2>
+<p>Use this command to create a new user group.</p>
+<p>parameters:
+<em> -n name - name of new user group
+</em> -a affiliation - affiliation of new user group
+<em> -o owner - user that will be the owner of the group in
+username@affiliation form
+</em> -m ManagingGroup - name of user group that can manage membership of the
+new group
+<em> -i InitialMaxTime - (minutes) max initial time users in this group can
+select for length of reservations
+</em> -t TotalMaxTime - (minutes) total length users in the group can have for
+a reservation (including all extensions)
+* -x MaxExtendTime - (minutes) max length of time users can request as an
+extension to a reservation at a time</p>
+<p>on success, returns:
+SUCCESS: User group sucessfully created</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:getUserGroupAttributes}getUserGroupAttributes"></a></p>
+<h2 id="anchorgetusergroupattributesgetusergroupattributes">{anchor:getUserGroupAttributes}getUserGroupAttributes</h2>
+<p>Use this command to get existing information about a user group's
+attributes (it does not include the current membership of the group).
+parameters:
+<em> -n name - name of an existing user group
+</em> -a affiliation - affiliation of user group</p>
+<p>on success, returns:
+SUCCESS: Attributes retreived
+followed by:
+owner: <user group owner>
+managingGroup: <name of managing user group>
+initialMaxTime: <max allowed initial reservation time>
+totalMaxTime: <total allowed reservation time>
+maxExtendTime: <make time allowed per extension></p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:deleteUserGroup}deleteUserGroup"></a></p>
+<h2 id="anchordeleteusergroupdeleteusergroup">{anchor:deleteUserGroup}deleteUserGroup</h2>
+<p>Use this command to delete an existing user group.
+parameters:
+<em> -n name - name of an existing user group
+</em> -a affiliation - affiliation of user group</p>
+<p>on success, returns:
+SUCCESS: User group sucessfully deleted</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:editUserGroup}editUserGroup"></a></p>
+<h2 id="anchoreditusergroupeditusergroup">{anchor:editUserGroup}editUserGroup</h2>
+<p>Use this command to modify attributes of an existing user group (it is not
+used for editing the membership of the group). You can specify any
+combination of the parameters labeled as optional.
+parameters:
+<em> -n name - name of an existing user group
+</em> -a affiliation - affiliation of user group
+<em> -N NewName - (optional) new name for the user group
+</em> -A NewAffiliation - (optional) new affiliation for the user group
+<em> -O NewOwner - (optional) new owner for the user group in
+username@affiliation form
+</em> -M NewManagingGroup - (optional) new user group that can manage
+membership of the user group in group@affiliation form
+<em> -I NewInitialMaxTime - (optional) new max initial time users in the
+group can select for length of reservations
+</em> -T NewTotalMaxTime - (optional) new total length users in the group can
+have for a reservation (including all extensions)
+* -X NewMaxExtendTime - (optional) new max length of time users can
+request as an extension to a reservation at a time</p>
+<p>on success, returns:
+SUCCESS: User group sucessfully updated</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:getUserGroupMembers}getUserGroupMembers"></a></p>
+<h2 id="anchorgetusergroupmembersgetusergroupmembers">{anchor:getUserGroupMembers}getUserGroupMembers</h2>
+<p>Use this command to get the current members of a group. Note that it is
+possible for a group to have no members.
+parameters:
+<em> -n name - name of an existing user group
+</em> -a affiliation - affiliation of user group</p>
+<p>on success, returns:
+SUCCESS: Membership retrieved
+followed by one user per line in username@affiliation form</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:addUsersToGroup}addUsersToGroup"></a></p>
+<h2 id="anchoradduserstogroupadduserstogroup">{anchor:addUsersToGroup}addUsersToGroup</h2>
+<p>Use this command to add users to an existing user group. <em>Note</em>: The users
+will either need to already exist in VCL or be part of an affiliation that
+is backed by LDAP so that the users can be verified.
+parameters:
+<em> -n name - name of an existing user group
+</em> -a affiliation - affiliation of user group</p>
+<p>Additionally, at least one of these must be specified:
+<em> -l UserList - comma delimited list of users to add (no spaces) in
+username@affiliation form
+</em> -f filename - name of file containing users to add (one user per line)
+in username@affiliation form</p>
+<p>on success, returns:
+SUCCESS: Users sucessfully added to group</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:removeUsersFromGroup}removeUsersFromGroup"></a></p>
+<h2 id="anchorremoveusersfromgroupremoveusersfromgroup">{anchor:removeUsersFromGroup}removeUsersFromGroup</h2>
+<p>Use this command to remove users from an existing user group.
+parameters:
+<em> -n name - name of an existing user group
+</em> -a affiliation - affiliation of user group</p>
+<p>Additionally, at least one of these must be specified:
+<em> -l UserList - comma delimited list of users to add (no spaces) in
+username@affiliation form
+</em> -f filename - name of file containing users to add (one user per line)
+in username@affiliation form</p>
+<p>on success, returns:
+SUCCESS: Users sucessfully removed from group</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-{anchor:emptyGroupMembership}emptyGroupMembership"></a></p>
+<h2 id="anchoremptygroupmembershipemptygroupmembership">{anchor:emptyGroupMembership}emptyGroupMembership</h2>
+<p>Use this command to empty the membership of an existing user group.
+parameters:
+<em> -n name - name of an existing user group
+</em> -a affiliation - affiliation of user group</p>
+<p>on success, returns:
+SUCCESS: Users sucessfully removed from group</p>
+<p><a name="managegroups.py-Remotelymanagingusergroups-Examples"></a></p>
+<h2 id="examples">Examples</h2>
+<p>The last example includes the authentication information on the command
+line. For the other examples, the authentication would have been specified
+inline in the script. Authentication information was only included in one
+example to make the others more readable.</p>
+<p>Create a new user group with name FallUsers, affiliation Local, admin as
+the owner, and adminUsers@Local as the managing group:</p>
+<div class="codehilite"><pre><span class="n">managegroups</span><span class="o">.</span><span class="n">py</span> <span class="n">addUserGroup</span> <span class="o">-</span><span class="n">n</span> <span class="n">FallUsers</span> <span class="o">-</span><span class="n">a</span> <span class="n">Local</span> <span class="o">-</span><span class="n">o</span> <span class="n">admin</span><span class="nv">@Local</span> <span class="o">-</span><span class="n">m</span>
+</pre></div>
+
+
+<p>adminUsers@Local -i 240 -t 360 -x 30</p>
+<p>Change the name of an existing user group named FallUsers, affiliation
+Local to be SpringUsers:</p>
+<div class="codehilite"><pre><span class="n">managegroups</span><span class="o">.</span><span class="n">py</span> <span class="n">editUserGroup</span> <span class="o">-</span><span class="n">n</span> <span class="n">FallUsers</span> <span class="o">-</span><span class="n">a</span> <span class="n">Local</span> <span class="o">-</span><span class="n">N</span> <span class="n">SpringUsers</span>
+</pre></div>
+
+
+<p>Add two users specified on the command line to a group:</p>
+<div class="codehilite"><pre><span class="n">managegroups</span><span class="o">.</span><span class="n">py</span> <span class="n">addUsersToGroup</span> <span class="o">-</span><span class="n">n</span> <span class="n">FallUsers</span> <span class="o">-</span><span class="n">a</span> <span class="n">Local</span> <span class="o">-</span><span class="n">l</span>
+</pre></div>
+
+
+<p>student1@Local,student2@Local</p>
+<p>Add all users in a specified file to a group:</p>
+<div class="codehilite"><pre><span class="n">managegroups</span><span class="o">.</span><span class="n">py</span> <span class="n">addUsersToGroup</span> <span class="o">-</span><span class="n">n</span> <span class="n">FallUsers</span> <span class="o">-</span><span class="n">a</span> <span class="n">Local</span> <span class="o">-</span><span class="n">f</span> <span class="n">newusers</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+
+
+<p>The file would contain something like the following:</p>
+<div class="codehilite"><pre><span class="n">userid1</span><span class="nv">@Local</span>
+<span class="n">userid2</span><span class="nv">@Local</span>
+<span class="n">userid3</span><span class="nv">@Local</span>
+</pre></div>
+
+
+<p>Remove all members of a group:</p>
+<div class="codehilite"><pre><span class="n">managegroups</span><span class="o">.</span><span class="n">py</span> <span class="n">emptyGroupMembership</span> <span class="o">-</span><span class="n">n</span> <span class="n">CS101</span> <span class="o">-</span><span class="n">a</span> <span class="n">Local</span>
+</pre></div>
+
+
+<p>Delete a user group:</p>
+<div class="codehilite"><pre><span class="n">managegroups</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">u</span> <span class="n">admin</span><span class="nv">@Local</span> <span class="o">-</span><span class="n">p</span> <span class="n">passwordhere</span> <span class="o">-</span><span class="n">r</span>
+</pre></div>
+
+
+<p>'https://your.vcl.site/index.php?mode=xmlrpccall' deleteUserGroup -n CS101
+-a Local</p>
+  </div>
+  
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under 
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+  
+</body>
+</html>

Added: websites/staging/vcl/trunk/content/confluence_export/management-node-installation.html
==============================================================================
--- websites/staging/vcl/trunk/content/confluence_export/management-node-installation.html (added)
+++ websites/staging/vcl/trunk/content/confluence_export/management-node-installation.html Tue Jan  8 16:38:15 2013
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/vcl.css" rel="stylesheet" type="text/css">
+  <link href="/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache VCL - Management Node Installation</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="sitetitle">
+    <table width="100%" border="0" cellspacing="0" cellpadding="5">
+      <tr>
+         <td><a href="/index.html"><img src="/img/vcl-logo.png" height="100" align="left" alt="Apache VCL logo"></a></td>
+         <td><a href="http://www.apache.org"><img src="/img/asf-logo.png" align="right" alt="Apache Software Foundation logo"></a></td>
+      </tr>
+    </table>
+  </div>
+
+  <div id="navigation"> 
+  <ul>
+<li>Information<ul>
+<li><a href="/info/about.html">What is VCL?</a></li>
+<li><a href="/info/features.html">Features</a></li>
+<li><a href="/info/architecture.html">Architecture</a></li>
+<li><a href="/info/use-cases.html">Use Cases</a></li>
+<li><a href="/downloads/download.cgi">Download</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></li>
+<li><a href="/info/faq.html">FAQ</a></li>
+</ul>
+</li>
+<li><a href="/docs/index.html">Documentation</a><ul>
+<li><a href="/docs/using-vcl.html">Using VCL</a></li>
+<li><a href="/docs/image-creation.html">Image Creation</a></li>
+<li><a href="/docs/administration.html">Administration</a></li>
+<li><a href="/docs/installation.html">Installation</a></li>
+<li><a href="/docs/deployment-planning.html">Deployment Planning</a></li>
+</ul>
+</li>
+<li><a href="/comm/index.html">Community</a><ul>
+<li><a href="/comm/index.html#getInvolved">Getting Involved</a></li>
+<li><a href="/comm/index.html#mail-list">Mailing Lists</a></li>
+<li><a href="/comm/index.html#how-do-i-join-the-project">How can I Join</a></li>
+<li><a href="/comm/wiki.html">Wiki</a></li>
+<li><a href="/dev/index.html">Development</a><ul>
+<li><a href="/dev/jira.html">Issue Tracking</a></li>
+<li><a href="/dev/code-documentation.html">Code Documentation</a></li>
+<li><a href="/dev/roadmap.html">Roadmap</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="http://www.apache.org">Apache Software Foundation</a><ul>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+</ul>
+</li>
+</ul>
+  </div>
+  
+  <div id="content">
+    <h1 class="title">Management Node Installation</h1>
+    
+  </div>
+  
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under 
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+  
+</body>
+</html>

Added: websites/staging/vcl/trunk/content/confluence_export/missing_from_export.html
==============================================================================
--- websites/staging/vcl/trunk/content/confluence_export/missing_from_export.html (added)
+++ websites/staging/vcl/trunk/content/confluence_export/missing_from_export.html Tue Jan  8 16:38:15 2013
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/css/vcl.css" rel="stylesheet" type="text/css">
+  <link href="/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache VCL - </title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="sitetitle">
+    <table width="100%" border="0" cellspacing="0" cellpadding="5">
+      <tr>
+         <td><a href="/index.html"><img src="/img/vcl-logo.png" height="100" align="left" alt="Apache VCL logo"></a></td>
+         <td><a href="http://www.apache.org"><img src="/img/asf-logo.png" align="right" alt="Apache Software Foundation logo"></a></td>
+      </tr>
+    </table>
+  </div>
+
+  <div id="navigation"> 
+  <ul>
+<li>Information<ul>
+<li><a href="/info/about.html">What is VCL?</a></li>
+<li><a href="/info/features.html">Features</a></li>
+<li><a href="/info/architecture.html">Architecture</a></li>
+<li><a href="/info/use-cases.html">Use Cases</a></li>
+<li><a href="/downloads/download.cgi">Download</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0.html">License</a></li>
+<li><a href="/info/faq.html">FAQ</a></li>
+</ul>
+</li>
+<li><a href="/docs/index.html">Documentation</a><ul>
+<li><a href="/docs/using-vcl.html">Using VCL</a></li>
+<li><a href="/docs/image-creation.html">Image Creation</a></li>
+<li><a href="/docs/administration.html">Administration</a></li>
+<li><a href="/docs/installation.html">Installation</a></li>
+<li><a href="/docs/deployment-planning.html">Deployment Planning</a></li>
+</ul>
+</li>
+<li><a href="/comm/index.html">Community</a><ul>
+<li><a href="/comm/index.html#getInvolved">Getting Involved</a></li>
+<li><a href="/comm/index.html#mail-list">Mailing Lists</a></li>
+<li><a href="/comm/index.html#how-do-i-join-the-project">How can I Join</a></li>
+<li><a href="/comm/wiki.html">Wiki</a></li>
+<li><a href="/dev/index.html">Development</a><ul>
+<li><a href="/dev/jira.html">Issue Tracking</a></li>
+<li><a href="/dev/code-documentation.html">Code Documentation</a></li>
+<li><a href="/dev/roadmap.html">Roadmap</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="http://www.apache.org">Apache Software Foundation</a><ul>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+</ul>
+</li>
+</ul>
+  </div>
+  
+  <div id="content">
+    <h1 class="title"></h1>
+    <p>The following pages were not properly exported and need to be manually copied from Confluence:</p>
+<p>2.2-phpmyadmin-installation-&amp;-configuration.mdtext
+adding-support-for-partimage-and-partimage-ng-to-xcat-2.x-(unofficial).mdtext
+administrator\'s-faq.mdtext
+current-&amp;-future-development-topics.mdtext
+how-to\'s.mdtext
+install-&amp;-configure-cygwin-sshd.mdtext
+meeting-&amp;-conference-call-notes.mdtext
+phpmyadmin-installation-&amp;-configuration.mdtext
+place-holder-for-vcl-2.4-(unreleased).mdtext
+resource-grouping-&amp;-mapping.mdtext
+upgrade-from-previous-version-(2.1-to-2.2.1).mdtext
+upgrade-from-previous-version-(2.1-to-2.3).mdtext
+upgrade-from-previous-version-(2.2.1-to-2.3).mdtext
+upgrade-from-previous-version-(2.2-to-2.2.1).mdtext
+upgrade-from-previous-version-(2.2-to-2.3).mdtext
+vcl-2.2.1-phpmyadmin-installation-&amp;-configuration.mdtext
+vcl-2.3-phpmyadmin-installation-&amp;-configuration.mdtext
+vmware-configuration-(2.2.1-and-below).mdtext
+database.mdtext
+apache-vcl-community.mdtext
+code-documentation.mdtext
+design-considerations.mdtext
+development-environment-tips.mdtext
+development.mdtext</p>
+  </div>
+  
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under 
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+  
+</body>
+</html>