vcl-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jftho...@apache.org
Subject svn commit: r1430372 [6/11] - /vcl/site/trunk/content/confluence_export/
Date Tue, 08 Jan 2013 16:37:56 GMT
Added: vcl/site/trunk/content/confluence_export/how-do-i-grant-a-user-access-to-an-image?.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/how-do-i-grant-a-user-access-to-an-image%3F.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/how-do-i-grant-a-user-access-to-an-image?.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/how-do-i-grant-a-user-access-to-an-image?.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,44 @@
+Title: How do I grant a user access to an image?
+How Do I grant a user access to an Image?
+The 1st step would to make sure that you have an image that you want to
+access.
+I would 1st go into the Mage Group and add a Resource Group Called Math.
+This would be a Image Type and the Name would be Math, the owning User
+group will be my AdminTeam@mycampus. A group has now been created called
+Math. 
+Then in your Manage Images Under Edit Image grouping.  I prefer the Check
+box Grid
+To the Left in the Image table these are the Images that you have created
+you can either create a new Image Group or check off an image to a group.
+You can also add all of your images to the same group. For example, I
+created a group called Math. I am going to group my Mathmatica 7 and Maple
+13 images in this Math Group. (I have already created both of these images)
+Both are Math software and I will check them in the same group. You then
+scroll down and hit Submit Changes.
+Now will go to the Privilege Tree
+I have our Privilege Tree by Department
+I have my Tree Setup by Campus. I will check on my campus then Math
+Department
+Once I am here I can then manually add to either Users (One person at a
+time) Or I can add to the User Group. We have used people soft to import
+users for our Classes. For example Math_2301 has 30 users. I am going to
+group the User Group Math_2301 and give them access to ImageCheckout. I
+will only click on Image checkout. I just want to give them that access
+only.
+Move down to the Resources in the Privileges Tree
+I’m going to now give it access to my VMware Vmguest Pool. I have called
+our pool my campus VMguest, I am going to check on Available. This will now
+make the selected Vmguest available to check out an image of my choice. The
+VMguest should be in the group type computer.
+I am now going to add a group type Image. This will give an image that is
+available to this pool. I will then add my group name Math with the group
+type Image. I will then check on available.
+
+Once this is done. I have made my Math Image under the Math Group available
+for my Math_2301 class.
+
+Let’s say there is a student who isn’t listed in the class or a TA that
+also needs access to this image.
+Go to the User in the Privileges at the Selected Node, you can manually add
+a user, don’t forget it needs to be there NET ID or ID @ their correct
+affliction.  For example AD3421@Mycampus

Added: vcl/site/trunk/content/confluence_export/how-to-increase-the-size-of-a-virtual-machine-hard-drive-under-vmware-esxi.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/how-to-increase-the-size-of-a-virtual-machine-hard-drive-under-vmware-esxi.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/how-to-increase-the-size-of-a-virtual-machine-hard-drive-under-vmware-esxi.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/how-to-increase-the-size-of-a-virtual-machine-hard-drive-under-vmware-esxi.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,146 @@
+Title: How to Increase the Size of a Virtual Machine Hard Drive under VMware ESXi
+{excerpt}This page describes how to increase the size of a VM's hard drive.
+This is useful if additional space is needed to install large
+applications.{excerpt}
+
+<a name="HowtoIncreasetheSizeofaVirtualMachineHardDriveunderVMwareESXi-CreateaFullCopyoftheVirtualDisk"></a>
+### Create a Full Copy of the Virtual Disk
+
+* Determine the VMware host the VM is on
+* Shutdown the VM
+* Log in to the VM host via SSH
+* Navigate to the VM's working directory _(under the VM Working Directory
+Path configured in the VM profile)_
+
+{tip:icon=false}cd /vmfs/volumes/vmpath/vclv99-77_1846-v14{tip}
+
+You should see several files in the directory:
+
+    /vmfs/volumes/19873c05-fcd3d912/vclv99-77_1846-v14 # ls -l
+    -rw-rw----    1 root	 root		    8684 Aug 13 16:34 nvram
+    -rw-------    1 root	 root	      4294967296 Aug 13 16:32
+vclv99-77_1846-v14-6197888b.vswp
+    -rw-rw----    1 root	 root		   18926 Aug 13 16:32
+vclv99-77_1846-v14-Snapshot1.vmsn
+    -rw-rw----    1 root	 root		     498 Aug 13 16:32
+vclv99-77_1846-v14.vmsd
+    --wxrw--wx    1 root	 root		    3464 Aug 13 16:37
+vclv99-77_1846-v14.vmx
+    --w-rw--w-    1 root	 root		     273 Aug 13 16:32
+vclv99-77_1846-v14.vmxf
+    -rw-r--r--    1 root	 root		  137538 Aug 13 16:43 vmware.log
+    -rw-rw----    1 root	 root	       268505088 Aug 13 19:50
+vmwarewin7-Windows764bit1846-v14-000001-delta.vmdk
+    -rw-rw----    1 root	 root		     432 Aug 13 16:32
+vmwarewin7-Windows764bit1846-v14-000001.vmdk
+
+
+The VM is configured to run in linked clone mode because a snapshot was
+created before the VM was powered on for the first time.  The .vmdk files
+in this directory only contain changes made to the master image.  The
+master image can be determined by lookin in the vmsn file:
+
+    
+    A full copy of the master image and delta files needs to be created in
+order to be able to resize the virtual disk.  Run the following command
+from the VM's working directory on the VM host:
+    {tip:icon=false}vmkfstools \-i vmwarewin7-Windows764bit1846-v14-000001.vmdk
+copy.vmdk \-d thin{tip}
+    
+
+/vmfs/volumes/19873c05-fcd3d912/vclv99-77_1846-v14 # vmkfstools -i
+vmwarewin7-Windows764bit1846-v14-000001.vmdk copy.vmdk -d thin
+Destination disk format: VMFS thin-provisioned
+Cloning disk 'vmwarewin7-Windows764bit1846-v14-000001.vmdk'...
+Clone: 100% done.
+
+    
+    h3. Resize the Virtual Disk
+    
+    Run the following command to resize the virtual disk.  The \-X argument
+should specify the total size you want the virtual disk to be, not the
+amount of space to add to it:
+    {tip:icon=false}vmkfstools \-X 50G copy.vmdk{tip}
+    
+    h3. Download Gparted Live CD
+    
+    Download the [GParted Live CD ISO image|http://gparted.sourceforge.net/download.php]
+ to one of the datastores mounted on the VM host.&nbsp; The .iso file must
+reside on one of the datastores in order to be able to mount it on a VM.
+    
+    h3. Replace the VM's Hard Drive with the Full Copy
+    
+    After the copy has been created, reconfigure the VM to use the copy of the
+disk instead of the original linked clone.
+    * Open vSphere Client
+    * Right-click on the VM and select *Edit Settings...*
+    * Select *Hard disk 1*
+    * Click *Remove*
+    * Click *Add...*
+    * Select *Use an existing virtual disk*
+    * Navigate to the VM's working directory and select the .vmdk corresponding
+to the full copy of the virtual disk you created earlier _(copy.vmdk)_
+    
+    h3. Add a CD Drive to the VM Pointing to the GParted Live CD ISO File
+    
+    * Click *Add...*
+    * Select *CD/DVD Drive*
+    * *Use ISO image*
+    * Navigate to the Gparted ISO image you downloaded earlier
+    * Make sure _Connect at power on_ is selected
+    
+    !vm-reconfigure.jpg!
+    
+    h3. Increase the Power On Boot Delay
+    
+    It can be difficult to catch the initial boot screen when the VM is powered
+on in order to press Escape to display the boot menu.&nbsp; Add a delay:
+    * Click on the *Options* tab
+    * Select *Boot Options*
+    * Set the *Power On Boot Delay* to a few seconds _(4000 = 4 seconds)_
+    
+    !vm-boot-delay.jpg|border=1!
+    
+    h3. Use GParted to Reconfigure the Partitions
+    
+    Simply increasing the size of the virtual disk does not cause the amount of
+usable space within the VM to increase.&nbsp; The partitions within the
+virtual disk need to be reconfigured to use all of the available
+space.&nbsp; This cannot be done from the OS of the image stored on the
+virtual disk.&nbsp; You must boot the VM using a live CD containing a
+partition reconfiguration utility.&nbsp; The GParted Live CD is free and
+easy to use.
+    
+    * With the VM powered off, select the *Console* tab
+    * Power on the VM
+    * Quickly click inside the *Console* pane
+    * Press *Esc* to display the Boot Menu
+    * Select *CD-ROM Drive*
+    
+    The GParted menu should appear.
+    
+    * Select *GParted Live (Default settings)*
+    * Accept the defaults
+    
+    
+    
+    Increase the size of the main partition to use all of the space
+    * Select the main partition _(should be the largest)_
+    * Open the *Partition* menu _(use the mouse of press Alt-p if mouse
+operations are difficult)_
+    * Select *Resize/Move*
+    * Set *New Size (MiB)* to the _Maximum size_ listed above in the box
+    * Click *Resize/Move*
+    * Open the *Edit* menu
+    * Click *Apply All Operations*
+    * Click *Apply*
+    You should eventually see a message stating _All operations successfully
+completed_
+    * Click *Close*
+    * Reboot the VM to its hard drive
+    _If a message appears saying the hard drive needs to be checked for
+consistency allow the procedure to complete._
+    * Once the VM is rebooted, log in to the image and verify the size of the
+hard drive has been increased
+    
+    The saved VCL image will contain the larger hard drive.

Added: vcl/site/trunk/content/confluence_export/image-capture-sequence.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/image-capture-sequence.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/image-capture-sequence.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/image-capture-sequence.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,34 @@
+Title: Image Capture Sequence
+<a name="ImageCaptureSequence-ModularizationExample"></a>
+## Modularization Example
+
+The following diagram&nbsp;shows how the image capture sequence
+differs&nbsp;if different provisioning modules are used \--&nbsp;xCAT and
+VMWare.&nbsp;
+
+Take note of the following:
+* The calls made by image.pm to the&nbsp;xCAT and VMWare capture()
+subroutines&nbsp;are *identical*.&nbsp; The image.pm state module does not
+care which provisioning engine is being used.&nbsp; All it knows is that a
+provisioning engine object has been created before image.pm::process() was
+called,&nbsp;the object can be accessed via $self->provisioner, and the
+name of the subroutine to call is capture().
+* The&nbsp;calls made by xCAT and VMWare's capture() subroutine&nbsp;to the
+Windows.pm pre_capture() subroutine are *identical*.&nbsp; All a
+provisioning engine module needs to know is that an OS object has been
+created,&nbsp;the object can be accessed via $self->os, and the name of the
+subroutine to call is pre_capture().
+* Provisioning engine modules do not not need to know any of the operating
+system details.&nbsp;&nbsp;They assume the OS module's pre_capture()
+subroutine will perform all the steps necessary for the particular OS to be
+captured and that the computer will be shut down (or left in the state
+specified by the end_state argument) when pre_capture() returns.
+* The OS module's pre_capture() subroutine&nbsp;does not&nbsp;care which
+provisioning engine is being used.&nbsp; The steps it performs are
+identical.
+* A very similar example could be made using the same provisioning engine
+module and different OS modules.
+
+----
+{gliffy:name=Image Capture Sequence - xCAT|space=VCL|page=Image Capture
+Sequence|align=left|size=L|version=13}

Added: vcl/site/trunk/content/confluence_export/image-creation-problems.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/image-creation-problems.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/image-creation-problems.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/image-creation-problems.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,3 @@
+Title: Image Creation Problems
+{excerpt}This page and its child pages discribe known problems that can
+occur which may cause image creation to fail.{excerpt}

Added: vcl/site/trunk/content/confluence_export/image-load-flow.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/image-load-flow.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/image-load-flow.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/image-load-flow.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,27 @@
+Title: Image Load Flow
+* vcld daemon is running
+** polls database every 12 seconds to check if the management node has any
+reservations which need to be processed
+* vcld finds a reservation that needs to be processed
+* vcld gathers all of the information for the reservation from the database
+by calling utils.pm::get_request_info() and then a DataStructure object is
+created
+* vcld&nbsp;creates a new state object
+** a new state object is created based on the request.stateid column for
+the reservation
+** the main state modules are new.pm, image.pm, reserved.pm, reclaim.pm
+* the constructor for all of the state modules&nbsp;is Module.pm::new()
+* this constructor automatically calls an initialize() subroutine if
+initialize() has been implemented for the class being constructed
+* State.pm contains an initialize() subroutine, and all of the state
+modules (new.pm, image.pm...) inherit from State.pm so the initialize()
+subroutine in State.pm is automatically called when vcld creates the state
+object
+* State.pm::initialize() creates an OS object based on the OS of
+the&nbsp;image assigned to the reservation
+* State.pm::initialize() creates a provisioning engin&nbsp;object based on
+the provisioning engine&nbsp;of the computer assigned to the reservation
+* vcld forks a new process for the newly created state object&nbsp;
+* the new process calls&nbsp;the state module's process() subroutine
+* process() performs all of the tasks needed to process the reservation,
+returns true if successful, false if failed

Added: vcl/site/trunk/content/confluence_export/index.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/index.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/index.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/index.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,6 @@
+Title: Index
+{include:Apache VCL} &nbsp;
+&nbsp;
+&nbsp;
+
+

Added: vcl/site/trunk/content/confluence_export/install-windows-for-a-base-image.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/install-windows-for-a-base-image.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/install-windows-for-a-base-image.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/install-windows-for-a-base-image.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,424 @@
+Title: Install Windows for a Base Image
+{excerpt}This page describes how to mount the Windows installation media
+and install Windows for a base image.{excerpt}
+
+<a name="InstallWindowsforaBaseImage-MounttheInstallationMedia"></a>
+## Mount the Installation Media
+
+The Windows installation media needs to be mounted as a drive on the
+computer. The method to do this varies widely based on the provisioning
+engine being used and resources available. The following lists some ways to
+mount the installation media:
+
+h4. VMware - Configure the VM to mount the&nbsp;ISO image&nbsp;as a CD-ROM
+drive
+
+_Note: these instructions assume a VM has already been created_
+
+1. Copy the Windows installation ISO file to the VMware host server
+1. Add a CD-ROM drive which mounts the Windows installation ISO image by
+editing the virtual machine settings:
+1. # Connection: *Use ISO image*:
+1. # Browse to path of Windows installation ISO image
+1. # Save the VM configuration
+
+<a name="InstallWindowsforaBaseImage-xCATusingIBMAdvancedManagementModule"></a>
+#### xCAT using IBM Advanced Management Module
+
+1. Copy the Windows installation ISO file to the management node
+1. Determine the IP address or hostname of the IBM Advanced Management
+Module (AMM) for the BladeCenter chassis which contains the blade you are
+installing
+1. Open a web browser and enter the AMM's address
+1. Log in to the AMM
+1. Select Inactive session timeout value: *no timeout*
+1. Click *Start New Session*
+1. Click *Remote Control*
+1. Click *Start Remote Control*
+1. Set the *Media Tray* and *KVM* dropdown menus to the blade you are
+installing
+1. Click *Select Image* and click the arrow button to the right of it
+1. Navigate to the Windows installation ISO file which was saved to the
+management node and click *Open*
+1. Click *Mount All*
+
+
+<a name="InstallWindowsforaBaseImage-BoottotheWindowsInstallationCDorDVD"></a>
+## Boot to the Windows Installation CD or DVD
+
+1. Power on the computer
+1. Press the key to display the boot menu as soon as the computer's POST
+screen is displayed (usually *F12* for bare metal blades or *ESC* for
+VMware)
+1. Boot from the CD-ROM drive
+1. Press a key to boot from the CD (this may be displayed at bottom of
+screen as soon as the computer begins to boot)
+
+<a name="InstallWindowsforaBaseImage-InstallWindows"></a>
+## Install Windows
+
+The Windows installation sequence varies by version. The&nbsp;next 2
+sections describe&nbsp;the recommended answers for Windows XP and Windows
+7.
+
+<a name="InstallWindowsforaBaseImage-WindowsXPInstallation"></a>
+### Windows XP Installation
+
+1. Press *Enter* to setup up Windows XP now
+1. Press *F8* to agree to the license agreement
+1. Configure the Windows partition
+1. # Press *Enter* to set up Windows XP on the selected item (should be
+called "Unpartitioned space")
+1. # Format the partition using the *NTFS file system (Quick)*
+1. Region and Language Options - click *Next*
+1. Name: *VCL*
+1. Organization: *Apache.org*
+1. Enter your *Windows XP product key*
+1. Computer name: _(doesn't matter)_
+1. Administrator password: _(doesn't matter, but it's&nbsp;recommended that
+password should match the_ *{_}WINDOWS_ROOT_PASSWORD{_}* _setting in_
+*_/etc/vcl/vcld.conf{_}{*}_)_
+1. Select the timezone
+1. Networking settings: *Typical*
+1. Member of a domain: *No, leave default workgroup settings*
+1. Automatic updates: *Not right now*
+1. Connect to Internet: *Skip*
+1. Register: *no*
+1. User name:&nbsp;*root*
+{color:#888888}{_}Windows XP setup should finish and the root account
+created during installation should automatically log on{_}{color}
+1. Once the desktop appears, set root's password&nbsp;via the Windows GUI or
+by executing the following command from a command prompt:
+*net user root* *_<password>_*
+
+<a name="InstallWindowsforaBaseImage-Windows7Installation"></a>
+### Windows 7 Installation
+
+1. Enter the regional information:
+1. * Language to install: *English*
+1. * Time and currency format: *English (United States)*
+1. * Keyboard or input method: *US*
+1. Click *Next*
+1. Click *Install now*
+{color:#888888}{_}Setup is starting..._{color}
+1. Click the checkbox next to "I accept the license terms"
+1. Click *Next*
+1. Click *Custom (advanced)*
+1. On the "Where do you want to install Windows?" page, delete all existing
+partitions and create a new partition using all of the available space:
+1. # Click *Drive options (advanced)*
+1. # Click *Delete*, then click *OK* to confirm
+1. # Click *New*
+1. # Click Apply (the size should be set to the maximum amount available
+{color:#888888}{_}To ensure that all Windows features work correctly,
+Windows might create additional partitions for system files._{color}
+1. # Click *OK*
+1. Click *Next*
+{color:#888888}{_}Installing Windows..._{color}
+{color:#888888}{_}Windows restarts{_}{color}
+{color:#888888}{_}Starting Windows{_}{color}
+{color:#888888}{_}Setup is updating registry settings{_}{color}
+1. A screen titled "Set Up Windows" appears:
+1. * Type a user name: *root*
+1. * Type a computer name: it's best to name the computer after the OS
+(_Example: win7sp1-ent)_
+1. Enter a password, password hint,&nbsp;and click *Next*
+1. Help protect your computer and improve Windows automatically: *Ask me
+later*
+1. Select a time zone, set the correct time,&nbsp;and click *Next*
+{color:#888888}{_}Windows is finalizing your settings{_}{color}
+{color:#888888}{_}Preparing your desktop{_}{color}
+{color:#888888}{_}Desktop appears{_}{color}
+1. If asked to set a network location, choose *Work network*
+_The root account logs in..._
+
+<a name="InstallWindowsforaBaseImage-WindowsServer2008"></a>
+### Windows Server 2008
+
+1. Select the language and click *Next*
+1. Click *Install Now*
+1. Select the version of Windows you want to install from the list and click
+*Next.* (_Windows Server 2008 R2 Datacenter (Full Installation)_ was
+selected when creating these instructions.)
+1. Click the checkbox next to *I accept the license terms* and click *Next*
+1. Click *Custom (advanced)*
+1. Configure the disk partitions and click *Next.&nbsp;* Unless you have
+reason not to, it's best to delete all existing partitions and then select
+Unallocated Space. This causes the disk to be repartitioned using all of
+the available space.
+_Windows is installed..._
+1. Click *OK*&nbsp;and set a password for the Administrator account, click
+*OK*
+_The Administrator account logs in..._
+
+The root user account is not created during the installation of Windows
+Server 2008. It must be created after Windows is installed. Do this using
+the GUI or run the following commands in a command window:
+1. Click *Start* > *Administrative Tools* > *Server Manager*
+1. Open *Configuration* > *Local Users and Groups* > *Users*
+1. Open the&nbsp;*Action* menu > *New User*
+1. # User name: *root*
+1. # Enter a password twice
+1. # User must change password at next logon: *no*
+1. # Password never expires: *yes*
+1. # Click *Create*
+1. # Click *Close*
+1. Double-click the *root* user
+1. Select the *Member Of* tab
+1. Click *Add*
+1. # Enter the object names to select: *Administrators*
+1. Click *OK* twice
+
+The *Disk Cleanup* utility (cleanmgr.exe) is not available on Windows
+Server 2008 unless the the *Desktop Experience* feature is installed. VCL
+runs cleanmgr.exe before an image is captured to reduce the amount of space
+the image consumes. Image captures will not fail if cleanmgr.exe is not
+installed but it is recommended to install the *Desktop Experience* feature
+so that it is available:
+1. Open the *Control Panel*
+1. Click *Turn Windows features on or off*
+1. Click *Features*
+1. Click *Add Features*
+1. Click the checkbox next to *Desktop Experience*
+1. Click *Add Required Features*
+1. Click *Next*
+1. Click *Install*
+_The features are installed..._
+1. Click *Close*
+1. Click *No* to not reboot the computer
+1. Restart the computer after the installation is complete
+
+<a name="InstallWindowsforaBaseImage-OptionalWindowsConfigurationTasks"></a>
+## Optional Windows Configuration Tasks
+
+<a name="InstallWindowsforaBaseImage-EnableRemoteDesktop"></a>
+#### Enable Remote Desktop
+
+The remaining configuration tasks will be easier if you are able to connect
+to the Windows computer via RDP rather than using the VMware or BladeCenter
+Management Module console. This step is optional. The VCL image capture
+process will configure RDP on the Windows computer during image capture and
+load processes.
+
+<a name="InstallWindowsforaBaseImage-WindowsXP&&nbsp;WindowsServer2003:"></a>
+###### Windows XP &&nbsp;Windows Server 2003:
+
+1. Open *Control Panel* > *System* > *Remote* tab
+1. Click the checkbox next to *Allow users to connect remotely to this
+computer*
+1. Click *OK*
+
+<a name="InstallWindowsforaBaseImage-WindowsVista,Windows7,&WindowsServer2008:"></a>
+###### Windows Vista, Windows 7, & Windows Server 2008:
+
+1. Open *Control Panel* > *System and Security* > System
+1. Click *Remote settings*
+1. Select *Allow connections from computers running any version of Remote
+Desktop (less secure)*
+1. Click *OK*
+
+Use an RDP client to connect to the Windows computer using either its
+public or private IP address as appropriate. If the public address is not
+available for some reason, you can attempt to connect to the private IP
+address by installing rdesktop&nbsp;on the management node:
+
+{tip}yum install rdesktop \-y{tip}
+
+{tip}rdesktop \-g 1024x768 _<IP address>_ &{tip}
+
+<a name="InstallWindowsforaBaseImage-DisableInternetExplorerEnhancedSecurityConfiguration"></a>
+#### Disable Internet Explorer Enhanced Security Configuration
+
+<a name="InstallWindowsforaBaseImage-_(WindowsServer2003andWindowsServer2008&nbsp;only)_"></a>
+###### _(Windows Server 2003 and Windows Server 2008&nbsp;only)_
+
+Internet Explorer Enhanced Security Configuration (IE ESC) prevents you
+from being able to access websites unless you add them to the Trusted sites
+zone.
+1. Open *Administrative Tools* > *Server Manager*
+1. Click *Configure IE ESC* (on the right side&nbsp;under Security
+Information)
+1. Select *Off* for Administrators and Users
+1. Click *OK*
+
+<a name="InstallWindowsforaBaseImage-SettheComputerName&nbsp;"></a>
+#### Set the Computer Name&nbsp;
+
+The computer may have been assigned a random computer name. This name will
+be saved in the captured image. If Sysprep is disabled, this computer name
+will also be assigned to other computers loaded with the image. It's
+helpful to name the computer something descriptive of the image so that you
+can tell what the image is when you connect to it via SSH.
+1. Open the *Control Panel*
+1. Click *System and Security* > *Set the name of this computer*
+1. Click *Change settings*
+1. Click *Change*
+1. # Enter a Computer name and Workgroup
+1. # Click *OK* 3 times
+1. Click Close
+1. Click Restart Later
+
+<a name="InstallWindowsforaBaseImage-DisableUserAccountControl"></a>
+#### Disable User Account Control
+
+<a name="InstallWindowsforaBaseImage-(WindowsVista,Windows7,&WindowsServer2008only)"></a>
+###### (Windows Vista, Windows 7, & Windows Server 2008 only)
+
+User Account Control (UAC) is the mechanism that causes may of the pop-up
+windows to appear when you attempt to run programs on Windows 7 and Windows
+Server 2008. VCL will disable it when the image is captured but you can
+disable it while configuring the base image to make things a little easier.
+1. Open the *Control Panel*
+1. Click *System and Security* > *Change User Account Control settings*
+_(Under Action Center)_
+1. Move the slider to the bottom:&nbsp;*Never notify*
+1. Click *OK*
+1. Reboot the computer
+
+<a name="InstallWindowsforaBaseImage-ConfigureWindowsBootOptions"></a>
+#### Configure Windows Boot Options
+
+It can be helpful to configure the Windows boot options as follows in order
+to be able to troubleshoot boot problems.
+1. Run *msconfig.exe*
+1. Select the *Boot* tab
+1. Click the checkboxes next to:
+1. # *No GUI boot* \- Does not display the Windows Welcome screen when
+starting
+1. # *Boot log* \- Stores all information from the startup process in the
+file %SystemRoot%Ntbtlog.txt
+1. # *OS boot information* \- Shows driver names as drivers are being loaded
+during the startup process
+1. # *Make all boot settings permanent*
+1. Click *OK*
+1. Click *Yes*
+1. Restart the computer
+
+<a name="InstallWindowsforaBaseImage-VerifyNetworkConnectivity"></a>
+## Verify Network Connectivity
+
+The computer must be able to connect to the public and private networks.
+1. If DHCP is not being used, configure the IP addresses manually
+1. Verify that the computer has IP addresses for both the public and private
+network adapters:
+1. # Open a command prompt:
+{tip}cmd.exe{tip}
+1. # Check the network configuration:
+{tip}ipconfig /all{tip}
+1. Verify Internet access by opening Internet Explorer and browsing to a
+public website
+
+Some Windows versions (especially Windows Vista) have trouble properly
+routing outward network traffic if there are multiple network interfaces.
+If you can not get to the Internet, set the *private* network interface to
+*ignore default routes* which causes all outward traffic not destined for
+the private network to be sent through the public interface:
+
+1. Open a command prompt (this must be done as Administrator under Windows
+6.x):
+*Start* > *All Programs* > *Accessories* > right-click *Command prompt* >
+*Run as Administrator*
+1. Determine the name of the private interface from the *ipconfig* output
+_(should be either "Local Area Connection" or "Local Area Connection 2")_
+1. Execute the command using the private interface name from step 2:
+{tip}netsh.exe interface ip set interface "_Local Area Connection_"
+ignoredefaultroutes=enabled{tip}
+1. * The command should display *Ok.*
+1. Attempt to access the Internet again
+
+<a name="InstallWindowsforaBaseImage-InstallWindowsUpdates"></a>
+## Install Windows Updates
+
+1. Open *Internet Explorer*
+1. Run *Windows Update*
+1. * Install all recommended updates, reboot if necessary
+1. Run *Windows Update* again to check for additional updates
+
+<a name="InstallWindowsforaBaseImage-InstallDrivers"></a>
+## Install Drivers
+
+Open up the Device Manager: *Control Panel* > *System* > *Hardware* tab >
+*Device Manager*
+
+If any devices are unknown or missing drivers, you will need to locate and
+download the appropriate driver and install it.
+
+Save a copy of the drivers you had to install in the appropriate *Drivers*
+directory on the management node:
+{panel}/usr/local/vcl/tools/Windows.../Drivers{panel}
+There are multiple *Windows...* directories under /usr/local/vcl/tools. The
+names create a&nbsp;hierarchy so that files which can be used by multiple
+versions of Windows only need to be stored in a single location on the
+management node.&nbsp; There are 3 levels that make up the hierarchy:
+
+1. The directory named *Windows* should contain files that work on all
+versions of Windows:
+{panel}/usr/local/vcl/tools/Windows/Drivers{panel}
+1. The directories named *Windows_Version_x* should contain files that only
+work on a particular major version of Windows.
+{info}The Windows version number can be obtained by executing ver from a
+command prompt{info}
+1. * *Windows_Version_5* should contain files that work on versions of
+Windows numbered 5.x (Windows XP and Windows Server 2003).
+{panel}/usr/local/vcl/tools/Windows_Version_5/Drivers{panel}
+1. * *Windows_Version_6* should contain files that work on versions of
+Windows numbered 6.x (Windows Vista, Windows Server 2008, and Windows 7).
+{panel}/usr/local/vcl/tools/Windows_Version_5/Drivers{panel}
+1. The directories named after a specific version (Windows_XP,
+Windows_Server_2008, etc.) should contain files that only work on that
+version.&nbsp; For example, if a driver only works under XP save it under:
+{panel}/usr/local/vcl/tools/Windows_XP/Drivers{panel}
+
+During the image capture process, the Windows\* directories that pertain to
+the OS being captured are copied to *C:\cygwin\home\root\VCL* on the
+Windows computer.&nbsp;&nbsp;Each Windows\* directory is overlayed into the
+same&nbsp;*VCL* directory. &nbsp;They are copied in the order listed above,
+from most general to most specific. For example, if a Windows Server 2008
+image is being captured the directories copied are:
+1. {panel}/usr/local/vcl/tools/Windows{panel}
+1. {panel}/usr/local/vcl/tools/Windows_Version_6{panel}
+1. {panel}/usr/local/vcl/tools/Windows_Server_2008{panel}
+
+The directory organization under each Drivers directory does not
+matter.&nbsp;&nbsp;However, it's&nbsp;recommended that they be
+organized&nbsp;by device type:
+* {panel}/usr/local/vcl/tools/Windows.../Drivers/Chipset{panel}
+* {panel}/usr/local/vcl/tools/Windows.../Drivers/Network{panel}
+* {panel}/usr/local/vcl/tools/Windows.../Drivers/Storage{panel}
+* {panel}/usr/local/vcl/tools/Windows.../Drivers/Video{panel}
+
+For example, after testing several drivers you determine the following:
+* An Intel chipset driver works for all versions of Windows. Save it in:
+{panel}/usr/local/vcl/tools/Windows/Drivers/Chipset/Intel-5000{panel}
+* A Broadcom NetXtreme network driver only works for Windows XP and Windows
+Server 2003. Save it in:
+{panel}/usr/local/vcl/tools/Windows_Version_5/Drivers/Network/Broadcom-NetXtreme{panel}
+* An ATI video driver only works for Windows. Save it in:
+{panel}/usr/local/vcl/tools/Windows_XP/Drivers/Video/ATI-ES1000{panel}
+
+When a Windows XP image is captured, the drivers will be copied to:
+* {panel}C:\cygwin\home\root\VCL\Drivers\Chipset\Intel-5000{panel}
+* {panel}C:\cygwin\home\root\VCL\Drivers\Network\Broadcom-NetXtreme{panel}
+* {panel}C:\cygwin\home\root\VCL\Drivers\Video\ATI-ES1000{panel}
+
+The VCL image capture process then configures the Windows computer to
+locate and install the drivers copied to the computer when the image is
+loaded.
+
+<a name="InstallWindowsforaBaseImage-InstallHotfixKB942589"></a>
+## Install Hotfix KB942589
+
+  
+  
+
+{color:#000000}The&nbsp;hotfix available from the
+following&nbsp;page&nbsp;must be installed i{color}f you are
+installing&nbsp;the 64-bit version of Windows XP or Windows&nbsp;Server
+2003:
+[http://support.microsoft.com/kb/942589](http://support.microsoft.com/kb/942589)
+
+
+You will need to click on the *View and request hotfix downloads* link,
+enter your email address, and a download link will be sent to you.
+----
+Next Step: [VCL:Install & Configure Cygwin SSHD](vcl:install-&-configure-cygwin-sshd.html)

Added: vcl/site/trunk/content/confluence_export/issue-tracking.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/issue-tracking.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/issue-tracking.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/issue-tracking.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,6 @@
+Title: Issue Tracking
+This page will be used to document the Apache VCL community's procedures
+for reporting and tracking development issues, including:
+* bugs
+* new features
+* roadmaps

Added: vcl/site/trunk/content/confluence_export/kvm-configuration.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/kvm-configuration.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/kvm-configuration.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/kvm-configuration.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,127 @@
+Title: KVM Configuration
+<a name="KVMConfiguration-InstallPackages"></a>
+#### Install Packages
+
+The following commands will install the Linux packages required for VCL to
+manage a KVM host:
+
+{panel}yum install libvirt virt-manager dejavu-lgc-sans-fonts bridge-utils
+libguestfs-tools \-y
+/sbin/chkconfig libvirtd on
+
+echo "Starting the libvirtd service..."
+/sbin/chkconfig libvirtd on
+/sbin/service libvirtd start{panel}
+The virt-manager package is optional.&nbsp; It is a graphical utility which
+is used to manage KVM and other hypervisors controlled via libvirt.&nbsp;
+The dejavu-lgc-sans-fonts package is usually necessary in order for
+virt-manager to render fonts correctly.
+
+
+<a name="KVMConfiguration-ConfigureNetworking"></a>
+#### Configure Networking
+
+The following commands will configure networking to allow KVM guests to
+communicate.&nbsp; It configures a bridge named br0 on eth0, and br1 on
+eth1.&nbsp; When configured this way, the network names in the VM host
+profile should be set to br0 and br1.
+{panel}echo "Stopping the NetworkManager service..."
+chkconfig NetworkManager off 2>/dev/null
+service NetworkManager stop 2>/dev/null
+yum erase NetworkManager \-y
+
+
+cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
+DEVICE=eth0
+ONBOOT=yes
+BRIDGE=br0
+NM_CONTROLLED=no
+EOF
+echo "Configured ifcfg-eth0:"
+cat /etc/sysconfig/network-scripts/ifcfg-eth0
+
+cat > /etc/sysconfig/network-scripts/ifcfg-br0 <<EOF
+DEVICE=br0
+TYPE=Bridge
+BOOTPROTO=dhcp
+ONBOOT=yes
+DELAY=0
+NM_CONTROLLED=no
+EOF
+echo "Configured ifcfg-br0:"
+cat /etc/sysconfig/network-scripts/ifcfg-br0
+
+cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<EOF
+DEVICE=eth1
+ONBOOT=yes
+BRIDGE=br1
+NM_CONTROLLED=no
+EOF
+echo "Configured ifcfg-eth1:"
+cat /etc/sysconfig/network-scripts/ifcfg-eth1
+  
+  
+
+cat > /etc/sysconfig/network-scripts/ifcfg-br1 <<EOF
+DEVICE=br1
+TYPE=Bridge
+BOOTPROTO=dhcp
+ONBOOT=yes
+DELAY=0
+NM_CONTROLLED=no
+EOF
+echo "Configured ifcfg-br1:"
+cat /etc/sysconfig/network-scripts/ifcfg-br1
+
+echo "Configuring eth0 bridge..."
+ifdown br0 2>/dev/null
+brctl delbr br0 2>/dev/null
+brctl addbr br0
+brctl addif br0 eth0
+
+echo "Configuring eth1 bridge..."
+ifdown br1 2>/dev/null
+brctl delbr br1 2>/dev/null
+brctl addbr br1
+brctl addif br1 eth1
+
+/sbin/chkconfig network on
+/sbin/service network restart{panel}
+
+<a name="KVMConfiguration-AddaNetworkStoragePool"></a>
+#### Add a Network Storage Pool
+
+The following commands will add an NFS storage pool named images to the KVM
+host.&nbsp; The */images* directory is exported via NFS from host
+*10.10.10.1*.&nbsp; This directory is mounted as */mnt/kvm1* on the KVM
+host.&nbsp; An entry is added to /etc/fstab to ensure the directory is
+mounted if the KVM host is rebooted.
+
+{panel}echo "Adding the images pool..."
+virsh pool-destroy images 2>/dev/null
+virsh pool-undefine images 2>/dev/null
+umount /images 2>/dev/null
+mkdir /images&nbsp; 2>/dev/null
+chmod \-R 0755 /images
+echo '10.10.10.1:/mnt/kvm1 /images nfs
+vers=3,rsize=32768,wsize=32768,intr,rw,soft,bg 0 0' >> /etc/fstab
+mount \-a
+
+virsh pool-define-as \--name images \--type dir \--target /images
+virsh pool-autostart \--pool images
+virsh pool-start images{panel}
+
+<a name="KVMConfiguration-AddaLocalStoragePool"></a>
+#### Add a Local Storage Pool
+
+The following commands will define a storage pool named *local-vms*
+pointing to the */vms* directory on the local disk:
+
+{panel}echo "Adding the local-vms pool..."
+virsh pool-destroy local-vms 2>/dev/null
+virsh pool-undefine local-vms 2>/dev/null
+mkdir /vms 2>/dev/null
+chmod \-R 755 /vms
+virsh pool-define-as \--name local-vms \--type dir \--target /vms
+virsh pool-autostart \--pool local-vms
+virsh pool-start local-vms{panel}

Added: vcl/site/trunk/content/confluence_export/lab.pm-provisioning-module.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/lab.pm-provisioning-module.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/lab.pm-provisioning-module.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/lab.pm-provisioning-module.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,195 @@
+Title: Lab.pm provisioning module
+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.
+
+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
+
+For distribution to a large set of machines, an rpm or package could be
+created to distribute vclclientd and related files.
+
+<a name="Lab.pmprovisioningmodule-Howitworks."></a>
+# How it works.
+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. 
+
+
+<a name="Lab.pmprovisioningmodule-"></a>
+# 
+
+
+<a name="Lab.pmprovisioningmodule-Howtosetup:"></a>
+# How to setup:
+
+All commands are run as root.
+
+
+*1.* Create the non-root vclstaff account on target machine
+
+     on linux: useradd -d /home/vclstaff -m vclstaff
+
+*2.* Generate ssh identity keys for vclstaff account. Do not enter a
+passphrase for the key, just hit enter when prompted.
+
+    su - vclstaff
+    ssh-keygen -t rsa
+    Generating public/private rsa key pair.
+    Enter file in which to save the key (/home/vclstaff/.ssh/id_rsa):
+    Created directory '/home/vclstaff/.ssh'.
+    Enter passphrase (empty for no passphrase):
+    Enter same passphrase again:
+    Your identification has been saved in /home/vclstaff/.ssh/id_rsa.
+    Your public key has been saved in /home/vclstaff/.ssh/id_rsa.pub.
+    The key fingerprint is:
+
+
+At this point we have created a private key /home/vclstaff/.ssh/id_rsa and
+the public key /home/vclstaff/.ssh/id_rsa.pub.
+
+Copy the public key to /home/vclstaff/.ssh/authorized_keys file
+
+    cat /home/vclstaff/.ssh/id_rsa.pub > /home/vclstaff/.ssh/authorized_keys
+
+
+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.
+
+
+    Edit /etc/vcld.conf
+    Set the variables IDENTITY_linux_lab and IDENTITY_solaris_lab to use this
+new key.
+    It should look like:
+    IDENTITY_solaris_lab=/etc/vcl/lab.key
+    IDENTITY_linux_lab=/etc/vcl/lab.key
+
+
+Test out the newly created key from the vcl management node:
+ssh \-i /etc/vcl/lab.key vclstaff@target_lab_machine
+
+*3.* Set ssh server on target machine to listen on port 24. Edit
+/etc/ssh/sshd_config on target lab machine(s).
+
+    echo "Port 24" >> /etc/ssh/sshd_config
+
+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.
+
+    Restart sshd: /etc/init.d/sshd restart
+
+retest to make sure sshd is accessible on port 24
+
+    ssh -p24 -i /etc/vcl/lab.key vclstaff@target_lab_machine
+
+*4.* Copy vclclientd and vclclientd init script to target_lab_machine, from
+managenment node:
+
+    scp -P24 /usr/local/vcl/bin/vclclientd
+vclstaff@target_lab_machine:/home/vclstaff
+
+
+    scp -P24 /usr/local/vcl/bin/S99vclclient.linux
+target_lab_machine:/etc/init.d/S99vclclient.linux
+    
+    add this start up script to the appropriate run time levels
+
+Start vclclientd :
+/etc/init.d/S99vclclient.linux start{*}5.* Add computers to the VCL
+database as one normally would.
+
+Make sure to select the Lab provisioning module it is labeled as "Computing
+Lab"
+
+*6.* Insert an image into the image table for this lab machine:
+
+    INSERT INTO `vcl`.`image`
+    (`id` ,
+    `name` ,
+    `prettyname` ,
+    `ownerid` ,
+    `platformid` ,
+    `OSid` ,
+    `imagemetaid` ,
+    `minram` ,
+    `minprocnumber` ,
+    `minprocspeed` ,
+    `minnetwork` ,
+    `maxconcurrent` ,
+    `reloadtime` ,
+    `deleted` ,
+    `test` ,
+    `lastupdate` ,
+    `forcheckout` ,
+    `maxinitialtime` ,
+    `project` ,
+    `size` ,
+    `architecture` ,
+    `description` ,
+    `usage` ,
+    `basedoffrevisionid`)
+    VALUES
+    ('8' , 'lab-machine-image1', 'Lab Machine image', '1', '1', '15', NULL,
+    '512', '1', '1024', '100', NULL , '5', '0', '0', NOW(), '1', '0', 'vcl',
+'1500',
+    'x86', NULL , NULL , '0'
+    );
+
+Insert information into the imagerevision table. Note 'Lab Machine image'
+can be what ever you want.
+
+
+    INSERT INTO `vcl`.`imagerevision` (
+    `id` ,
+    `imageid` ,
+    `revision` ,
+    `userid` ,
+    `datecreated` ,
+    `deleted` ,
+    `datedeleted` ,
+    `production` ,
+    `comments` ,
+    `imagename`
+    )
+    VALUES (
+    NULL , '8', '1', '1', NOW(), '0', NULL , '1', NULL , 'lab-machine-image1'
+    )
+
+Insert information into the resource table.
+
+
+    INSERT INTO `vcl`.`resource` (
+    `id` ,
+    `resourcetypeid` ,
+    `subid`
+    )
+    VALUES (
+    NULL , '13', '8'
+    )
+
+
+*7.* Set up the image to computer group mappings and grant access.
+
+These next steps will be done using the VCL web interface
+
+1. Create a new Image group. Manage groups, add a new image resrouce group.
+1. Create a new Computer group.&nbsp; Manage groups, add a new computer
+resrouce group.
+1. Add new image (inserted above) to the image group just created in step 1.
+1. Add machines that have vclclientd to the computer group created in step
+2.
+1. Assign new computer group to be controlled by management node. Select
+Management Nodes, Edit Management Node Mapping
+1. Grant access to the new lab image and computer group in the privilege
+tree.

Added: vcl/site/trunk/content/confluence_export/libvirt-provisioning-module.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/libvirt-provisioning-module.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/libvirt-provisioning-module.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/libvirt-provisioning-module.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,844 @@
+Title: Libvirt Provisioning Module
+[Libvirt ](http://libvirt.org/)
+is an open source toolkit which can interact with KVM, Xen, and several
+other virtualization architectures.
+
+
+<a name="LibvirtProvisioningModule-libvirt.pm"></a>
+### libvirt.pm
+
+* libvirt.pm is the main provisioning module
+* Computers should have their provisioningID attributes set to point to
+this module in order to utilize it
+* Implements the required provisioning module subroutines: *load, capture,
+node_status, power_status, power_on, power_off, power_reset...*
+* Implements the functions provided by libvirt: *define, start, destroy...*
+* Does not contain code specific to any of the hypervisors supported by
+libvirt (KVM, Xen, etc)
+* File location: *lib/VCL/Module/Provisioning/Libvirt.pm*
+* Automatically determines which hypervisor driver object to use upon
+initialization by examining the host
+
+<a name="LibvirtProvisioningModule-HypervisorDriverModules"></a>
+### Hypervisor Driver Modules
+
+Libvirt hypervisor drivers allow it to interact with and control various
+types of hypervisors.&nbsp; The drivers are listed at [http://libvirt.org/drivers.html.&nbsp](http://libvirt.org/drivers.html.&nbsp)
+; 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.
+
+
+* Hypervisor driver directory: *lib/VCL/Module/Provisioning/libvirt/*
+* Example: lib/VCL/Module/Provisioning/libvirt/KVM.pm
+** Contains code which only applies to KVM
+** Calls qemu-img to perform image file operations
+
+!Libvirt UML Diagram.gif!
+
+
+<a name="LibvirtProvisioningModule-*VirtualMachineDisks*"></a>
+#### *Virtual Machine Disks*
+
+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!
+  
+  
+{anchor:libvirt.pm}
+
+<a name="LibvirtProvisioningModule-{color:#0000ff}libvirt.pm{color}"></a>
+# {color:#0000ff}libvirt.pm{color}
+{html}<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<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>
+
+<body style="background-color: white">
+
+<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>
+
+	<li><a href="#private_methods">PRIVATE METHODS</a></li>
+	<ul>
+
+		<li><a href="#driver">driver</a></li>
+		<li><a href="#get_driver_name">get_driver_name</a></li>
+		<li><a href="#get_domain_name">get_domain_name</a></li>
+		<li><a
+href="#get_domain_file_base_name">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>
+
+	<li><a href="#see_also">SEE ALSO</a></li>
+</ul>
+<!-- INDEX END -->
+
+<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/
+
+	       Attempts to create and initialize an object for each
+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:
+	      
+'/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.
+
+</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;
+		  }
+
+</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.
+
+</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.
+
+</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;
+		  }
+
+</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.
+
+</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.
+
+</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.
+
+</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.
+
+</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>
+
+</body>
+
+</html>{html}
+
+<a name="LibvirtProvisioningModule-"></a>
+## 
+{anchor:KVM.pm}
+
+<a name="LibvirtProvisioningModule-{color:#0000ff}KVM.pm{color}"></a>
+# {color:#0000ff}KVM.pm{color}
+
+{html}
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<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>
+
+<body style="background-color: white">
+
+<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>
+
+	<li><a href="#private_methods">PRIVATE METHODS</a></li>
+	<ul>
+
+		<li><a
+href="#get_virtual_disk_file_info">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>
+
+	<li><a href="#see_also">SEE ALSO</a></li>
+</ul>
+<!-- INDEX END -->
+
+<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>
+
+=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>
+
+	return 'kvm';
+}</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.
+
+	       Adds registry keys to disable VMware services. If the image
+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>
+
+</body>
+
+</html>
+{html}

Added: vcl/site/trunk/content/confluence_export/making-a-reservation.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/making-a-reservation.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/making-a-reservation.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/making-a-reservation.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,22 @@
+Title: Making a Reservation
+!newreservation.png!
+
+To make a VCL reservation:
+1. Select *New Reservation* 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 *Now*.
+Otherwise, select *Later* 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 *Until* 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 *Edit*
+on the *Current Reservations* page.
+1. If the combination you have selected in the above elements is currently
+available, the button will display *Create Reservation*.  Click it to
+create your reservation. If it is not currently available, the button will
+display *View Time Table* 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.

Added: vcl/site/trunk/content/confluence_export/managegroups.py---remotely-managing-user-groups.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/managegroups.py---remotely-managing-user-groups.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/managegroups.py---remotely-managing-user-groups.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/managegroups.py---remotely-managing-user-groups.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,271 @@
+Title: managegroups.py - Remotely managing user groups
+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.
+
+{color:#ff0000}{*}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.*{color}
+
+
+<a name="managegroups.py-Remotelymanagingusergroups-Downloadinformation"></a>
+## Download information
+
+managegroups.py is not included in any official releases. You can download
+it from our subversion repository.
+
+[Download managegroups.py](https://svn.apache.org/repos/asf/vcl/sandbox/useful_scripts/managegroups.py)
+
+<a name="managegroups.py-Remotelymanagingusergroups-AvailableCommands"></a>
+## Available Commands
+
+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.
+
+* [#addUserGroup](#addusergroup.html)
+ \- creates a new user group
+* [#getUserGroupAttributes](#getusergroupattributes.html)
+ \- gets information about a user group
+* [#deleteUserGroup](#deleteusergroup.html)
+ \- deletes a user group
+* [#editUserGroup](#editusergroup.html)
+ \- modifies attributes of a user group
+* [#getUserGroupMembers](#getusergroupmembers.html)
+ \- gets members of a user group
+* [#addUsersToGroup](#adduserstogroup.html)
+ \- adds users to a group
+* [#removeUsersFromGroup](#removeusersfromgroup.html)
+ \- removes users from a group
+* [#emptyGroupMembership](#emptygroupmembership.html)
+ \- removes all users currently in a group
+
+<a name="managegroups.py-Remotelymanagingusergroups-ReturnStatus"></a>
+## Return Status
+
+These are the possible values of the return status:
+* 0 - successful execution
+* 1 - missing authentication information
+* 2 - problem with command line parameters
+* 3 - for commands that pass in a filename, problems encountered reading
+the file
+* 4 - no users specified to add to or remove from a group
+* 5 - error encountered while performing XML RPC API call
+
+<a name="managegroups.py-Remotelymanagingusergroups-ReturnOutput"></a>
+## Return Output
+
+The output of managegroups.py will always start with one of:
+* SUCCESS: - indicates successful run of the command
+* 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.
+
+<a name="managegroups.py-Remotelymanagingusergroups-Authentication"></a>
+## Authentication
+
+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.
+
+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.
+
+The options for specifying authentication on the command line are
+* \-u username - log in to VCL site with this user, must be in
+username@affiliation form
+* \-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. [https://vcl.ncsu.edu/scheduling/index.php?mode=xmlrpccall](https://vcl.ncsu.edu/scheduling/index.php?mode=xmlrpccall)
+)
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:addUserGroup}addUserGroup"></a>
+## {anchor:addUserGroup}addUserGroup
+
+Use this command to create a new user group.
+
+parameters:
+* \-n name - name of new user group
+* \-a affiliation - affiliation of new user group
+* \-o owner - user that will be the owner of the group in
+username@affiliation form
+* \-m ManagingGroup - name of user group that can manage membership of the
+new group
+* \-i InitialMaxTime - (minutes) max initial time users in this group can
+select for length of reservations
+* \-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
+
+on success, returns:
+SUCCESS: User group sucessfully created
+
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:getUserGroupAttributes}getUserGroupAttributes"></a>
+## {anchor:getUserGroupAttributes}getUserGroupAttributes
+
+Use this command to get existing information about a user group's
+attributes (it does not include the current membership of the group).
+parameters:
+* \-n name - name of an existing user group
+* \-a affiliation - affiliation of user group
+
+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>
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:deleteUserGroup}deleteUserGroup"></a>
+## {anchor:deleteUserGroup}deleteUserGroup
+
+Use this command to delete an existing user group.
+parameters:
+* \-n name - name of an existing user group
+* \-a affiliation - affiliation of user group
+
+on success, returns:
+SUCCESS: User group sucessfully deleted
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:editUserGroup}editUserGroup"></a>
+## {anchor:editUserGroup}editUserGroup
+
+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:
+* \-n name - name of an existing user group
+* \-a affiliation - affiliation of user group
+* \-N NewName - (optional) new name for the user group
+* \-A NewAffiliation - (optional) new affiliation for the user group
+* \-O NewOwner - (optional) new owner for the user group in
+username@affiliation form
+* \-M NewManagingGroup - (optional) new user group that can manage
+membership of the user group in group@affiliation form
+* \-I NewInitialMaxTime - (optional) new max initial time users in the
+group can select for length of reservations
+* \-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
+
+on success, returns:
+SUCCESS: User group sucessfully updated
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:getUserGroupMembers}getUserGroupMembers"></a>
+## {anchor:getUserGroupMembers}getUserGroupMembers
+
+Use this command to get the current members of a group. Note that it is
+possible for a group to have no members.
+parameters:
+* \-n name - name of an existing user group
+* \-a affiliation - affiliation of user group
+
+on success, returns:
+SUCCESS: Membership retrieved
+followed by one user per line in username@affiliation form
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:addUsersToGroup}addUsersToGroup"></a>
+## {anchor:addUsersToGroup}addUsersToGroup
+
+Use this command to add users to an existing user group. *Note*: 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:
+* \-n name - name of an existing user group
+* \-a affiliation - affiliation of user group
+
+Additionally, at least one of these must be specified:
+* \-l UserList - comma delimited list of users to add (no spaces) in
+username@affiliation form
+* \-f filename - name of file containing users to add (one user per line)
+in username@affiliation form
+
+on success, returns:
+SUCCESS: Users sucessfully added to group
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:removeUsersFromGroup}removeUsersFromGroup"></a>
+## {anchor:removeUsersFromGroup}removeUsersFromGroup
+
+Use this command to remove users from an existing user group.
+parameters:
+* \-n name - name of an existing user group
+* \-a affiliation - affiliation of user group
+
+Additionally, at least one of these must be specified:
+* \-l UserList - comma delimited list of users to add (no spaces) in
+username@affiliation form
+* \-f filename - name of file containing users to add (one user per line)
+in username@affiliation form
+
+on success, returns:
+SUCCESS: Users sucessfully removed from group
+
+<a name="managegroups.py-Remotelymanagingusergroups-{anchor:emptyGroupMembership}emptyGroupMembership"></a>
+## {anchor:emptyGroupMembership}emptyGroupMembership
+
+Use this command to empty the membership of an existing user group.
+parameters:
+* \-n name - name of an existing user group
+* \-a affiliation - affiliation of user group
+
+on success, returns:
+SUCCESS: Users sucessfully removed from group
+
+<a name="managegroups.py-Remotelymanagingusergroups-Examples"></a>
+## Examples
+
+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.
+
+Create a new user group with name FallUsers, affiliation Local, admin as
+the owner, and adminUsers@Local as the managing group:
+
+    managegroups.py addUserGroup -n FallUsers -a Local -o admin@Local -m
+adminUsers@Local -i 240 -t 360 -x 30
+
+Change the name of an existing user group named FallUsers, affiliation
+Local to be SpringUsers:
+
+    managegroups.py editUserGroup -n FallUsers -a Local -N SpringUsers
+
+Add two users specified on the command line to a group:
+
+    managegroups.py addUsersToGroup -n FallUsers -a Local -l
+student1@Local,student2@Local
+
+Add all users in a specified file to a group:
+
+    managegroups.py addUsersToGroup -n FallUsers -a Local -f newusers.txt
+
+The file would contain something like the following:
+
+    userid1@Local
+    userid2@Local
+    userid3@Local
+
+Remove all members of a group:
+
+    managegroups.py emptyGroupMembership -n CS101 -a Local
+
+Delete a user group:
+
+    managegroups.py -u admin@Local -p passwordhere -r
+'https://your.vcl.site/index.php?mode=xmlrpccall' deleteUserGroup -n CS101
+-a Local
+



Mime
View raw message