vcl-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jftho...@apache.org
Subject svn commit: r1430372 [7/11] - /vcl/site/trunk/content/confluence_export/
Date Tue, 08 Jan 2013 16:37:56 GMT
Added: vcl/site/trunk/content/confluence_export/management-node-installation.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/management-node-installation.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/management-node-installation.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/management-node-installation.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,728 @@
+Title: Management Node Installation
+{excerpt}This page describes how to install and configure the backend VCL
+management node components including the required Perl modules, VCL daemon
+(vcld), and Windows utility dependencies.{excerpt}
+
+<a name="ManagementNodeInstallation-Assumptions"></a>
+## Assumptions
+
+The following instructions assume the VCL [database has been installed and configured](database-configuration.html)
+ and that the managment node information has been added to the database as
+described on the [web code installation page|Web Code Installation]
+.  This also assumes that the perl-DBD-MySQL-3.x and the mysql client
+(mysql-5.x) packages are installed, for database communications.
+
+<a name="ManagementNodeInstallation-DownloadtheBackendManagementNodeVCLCode"></a>
+## Download the Backend Management Node VCL Code
+
+Install the Subversion client if it is not already installed:
+
+
+
+
+
+
+<a name="ManagementNodeInstallation-InstallRequiredPackages"></a>
+## Install Required Packages
+
+The following packages to be installed on the OS before installing the
+required Perl modules.&nbsp;  These packages must be installed if they were
+not installed as part of your base Linux install.&nbsp;  It is easiest to
+use the package management utility for your OS \--\- yum, rpm, or other.
+
+* expat
+* expat-devel
+* gcc
+* krb5-libs
+* krb5-devel
+* libxml2
+* libxml2-devel
+* nmap
+* openssl
+* openssl-devel
+* perl-DBD-MySQL
+* xmlsec1-openssl
+
+To install these packages using yum:
+
+
+
+<a name="ManagementNodeInstallation-InstallRequiredPerlModules"></a>
+## Install Required Perl Modules
+
+The VCL Perl code running on the management node requires additional Perl
+modules in order to run.  These Perl modules are available from [CPAN - The Comprehensive Perl Archive Network](http://cpan.org/)
+.  A search engine for CPAN modules is available at [search.cpan.org|http://search.cpan.org/]
+.
+
+*{_}Note:_* _Licensing information for each required Perl module is
+included below.&nbsp; The content of the "License:" lines was copied from
+the CPAN page for each module.&nbsp; The content of the other line was
+copied from the copyright section in the module's source code or from the
+module's readme file._
+* [Class-Data-Inheritable](http://search.cpan.org/dist/Class-Data-Inheritable/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright (c) 2000-2005, Damian Conway and Michael G Schwern. All Rights
+ Reserved.
+  
+  
+This module is free software. It may be used, redistributed and/or modified
+ under the same terms as Perl itself.
+* [Compress-Raw-Zlib](http://search.cpan.org/dist/Compress-Raw-Zlib/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+  
+  
+This program is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+* [Crypt-SSLeay](http://search.cpan.org/dist/Crypt-SSLeay/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright (c) 2006-2007 David Landgren.
+Copyright (c) 1999-2003 Joshua Chamas.
+Copyright (c) 1998 Gisle Aas.
+This program is free software; you can redistribute it and/or modify it
+under
+the same terms as Perl itself.
+* [DBI](http://search.cpan.org/dist/DBI/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** The DBI module is Copyright (c) 1994-2009 Tim Bunce. Ireland. All rights
+ reserved.
+  
+  
+You may distribute under the terms of either the GNU General Public License
+or the Artistic License, as specified in the Perl 5.10.0 README file.
+* [Devel-StackTrace](http://search.cpan.org/dist/Devel-StackTrace/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright (c) 2000-2006 David Rolsky. All rights reserved. This program
+is free software; you can redistribute it and/or modify it under the same
+terms as Perl itself.
+  
+  
+* [Exception-Class](http://search.cpan.org/dist/Exception-Class/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright (c) 2000-2009 David Rolsky. All rights reserved. This program
+is  free software; you can redistribute it and/or modify it under the same
+terms as  Perl itself.
+  
+  
+* [HTML-Parser](http://search.cpan.org/dist/HTML-Parser/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright 1996-2008 Gisle Aas. All rights reserved.
+Copyright 1999-2000 Michael A. Chase.  All rights reserved.
+This library is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+* [IO-Compress](http://search.cpan.org/dist/IO-Compress/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+  
+  
+This program is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+* [libwww-perl](http://search.cpan.org/dist/libwww-perl/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright 1995-2004 Gisle Aas.
+  
+  
+This library is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+* [MailTools](http://search.cpan.org/dist/MailTools/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyrights 1995-2000 Graham Barr <gbarr@pobox.com> and 2001-2007 Mark 
+Overmeer <perl@overmeer.net>.
+  
+  
+This program is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+* [Object-InsideOut](http://search.cpan.org/dist/Object-InsideOut/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright 2005 - 2009 Jerry D. Hedden. All rights reserved.
+  
+  
+This program is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+* [RPC-XML](http://search.cpan.org/dist/RPC-XML/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** This file and the code within are copyright (c) 2009 by Randy J. Ray.
+  
+  
+Copying and distribution are permitted under the terms of the Artistic  License 2.0 ([http://www.opensource.org/licenses/artistic-license-2.0.php](http://www.opensource.org/licenses/artistic-license-2.0.php)
+)  or the GNU LGPL 2.1
+([http://www.opensource.org/licenses/lgpl-2.1.php|http://www.opensource.org/licenses/lgpl-2.1.php]).
+* [XML-Parser](http://search.cpan.org/dist/XML-Parser/)
+** License: Unknown
+** _Note: The license type is shown as "Unknown" on the_ _[CPAN page](http://search.cpan.org/dist/XML-Parser/)
+_ _for this module and the_ _[POD
+documentation|http://search.cpan.org/dist/XML-Parser/Parser.pm]_ _conained
+within the source code does not contain a copyright section.&nbsp; The_
+_[README|http://cpansearch.perl.org/src/MSERGEANT/XML-Parser-2.36/README]_
+\_file for this module does, however, contain a heading with the following
+information:_Copyright (c) 1998-2000 Larry Wall and Clark Cooper. All
+rights reserved.
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+* [YAML](http://search.cpan.org/dist/YAML/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright (c) 2005, 2006, 2008. Ingy döt Net.
+  
+  
+Copyright (c) 2001, 2002, 2005. Brian Ingerson.
+  
+  
+Some parts copyright (c) 2009 Adam Kennedy
+  
+  
+This program is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+
+The following Perl modules are only required if VCL is configured to send
+instant messages via Jabber.&nbsp; Jabber support can be enabled or
+disabled by configuring the "jabber=" line in the vcld.conf file.&nbsp; The
+following modules do not need to be installed if Jabber support is
+disabled.
+
+* [Net-Jabber](http://search.cpan.org/dist/Net-Jabber/)
+** License: Unknown
+** _Note: The license type is shown as "Unknown" on the_ _[CPAN page](http://search.cpan.org/dist/Net-Jabber/)
+_ _for this module.&nbsp; However, the_
+_[http://search.cpan.org/dist/XML-Parser/Parser.pm]__[POD
+documentation|http://search.cpan.org/~reatmon/Net-Jabber-2.0/lib/Net/Jabber.pm]_
+\_conained within the source code contains a copyright section with the
+following text:_This module is free software, you can redistribute it
+and/or modify it under	the same terms as Perl itself.
+* [Net-XMPP](http://search.cpan.org/dist/Net-XMPP/)
+** License: [LGPL](http://www.opensource.org/licenses/lgpl-license.php)
+** This module is free software, you can redistribute it and/or modify it
+under  the LGPL.
+* [Module-Build](http://search.cpan.org/dist/Module-Build/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright (c) 2001-2006 Ken Williams. All rights reserved.
+  
+  
+This library is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+* [XML-Stream](http://search.cpan.org/dist/XML-Stream/)
+** License: Unknown
+** _Note: The license type is shown as "Unknown" on the_ _[CPAN page](http://search.cpan.org/dist/XML-Stream/)
+_ _for this module.&nbsp; However, the_ _[POD
+documentation|http://search.cpan.org/dist/XML-Stream/lib/XML/Stream.pm#COPYRIGHT]_
+\_conained within the source code contains a copyright section with the
+following text:_This module is free software; you can redistribute it
+and/or modify it under	the same terms as Perl itself.
+* [Authen-SASL](http://search.cpan.org/dist/Authen-SASL/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** Copyright (c) 1998-2005 Graham Barr. All rights reserved. This program
+is  free software; you can redistribute it and/or modify it under the same
+terms as  Perl itself.
+* [Digest::SHA1](http://search.cpan.org/dist/Digest-SHA1/)
+** License: Perl ([Artistic](http://dev.perl.org/licenses/artistic.html)
+ and [GPL|http://www.opensource.org/licenses/gpl-license.php]
+)
+** This library is free software; you can redistribute it and/or modify it
+under  the same terms as Perl itself.
+Copyright 1999-2004 Gisle Aas.
+Copyright 1997 Uwe Hollerbach.
+
+
+
+
+<a name="ManagementNodeInstallation-Runinstall_perl_libs.plScript"></a>
+#### Run install_perl_libs.pl Script
+
+A script is provided in the managementnode/bin directory called
+*install_perl_libs.pl* which will attempt to download and install the
+required perl libraries.&nbsp; Run the script:
+
+
+
+Run the script a 2nd time to check if all of the modules the script is
+configured to install were successfully installed. Output similar to the
+following should be displayed for each module:
+
+    URL: http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.609.tar.gz
+    Module filename: DBI-1.609.tar.gz
+    Module name: DBI-1.609
+    Module package: DBI
+    Checking if DBI is installed
+    Module is already installed: DBI
+    ==============================================================================
+
+
+<a name="ManagementNodeInstallation-HowtoTestifRequiredPerlModulesareInstalled"></a>
+#### How to Test if Required Perl Modules are Installed
+
+Run the following command to execute the utils.pm file:
+
+    perl /usr/local/vcl/lib/VCL/utils.pm
+
+Executing utils.pm does not actually do anything but this will tell you if
+VCL will be able to run.&nbsp; If any Perl modules are missing you will see
+ "Can't locate" lines:
+
+
+
+    pre-execution: config file being used: /etc/vcl/vcld.conf
+    Uncaught exception from user code:
+            VCLD : /etc/vcl/vcld.conf does not exist, exiting --  No such file
+or directory
+    BEGIN failed--compilation aborted at /usr/local/vcl/lib/VCL/utils.pm line
+616.
+     at /usr/local/vcl/lib/VCL/utils.pm line 616
+
+
+<a name="ManagementNodeInstallation-WhattodoifaModuleisMissing"></a>
+#### What to do if a Module is Missing
+
+1. Determine the name of the missing module by looking at the "Can't locate"
+line
+1. Search for the missing module on search.cpan.org and install it manually
+
+
+<a name="ManagementNodeInstallation-HowtoInstallaPerl&nbsp;ModuleManually"></a>
+#### How to Install a Perl&nbsp;Module Manually
+
+1. Change directories to /tmp:
+*cd /tmp*&nbsp;
+1. Download the module's source package using wget:
+*wget* *[http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.827.tar.gz](http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.827.tar.gz)
+*
+1. Unpack the source package using tar:
+*tar xzf libwww-perl-5.827.tar.gz*
+1. The previous command should have created a libwww-perl-5.827 directory,
+change to this directory:
+*cd libwww-perl-5.827*
+1. Create a makefile with the following command:
+*perl Makefile.PL*
+1. Compile the module:
+*make*
+1. Test the module:
+*make test*
+1. Install the module:
+*make install*
+The last line you should see should be:
+
+
+
+<a name="ManagementNodeInstallation-HowtoInstallaPerlModuleUsingCPAN"></a>
+#### How to Install a Perl Module Using CPAN
+
+1. Enter the CPAN shell:
+*perl \-MCPAN \-e shell*
+1. You will need to configure CPAN if it's the first time it is being run.
+Enter *No* at the first prompt to auto-configure the CPAN module.
+1. Search for a module using the "m" command:
+*m /Zlib/*
+You should find the module you were looking for on a line like this:
+
+
+1. Install the module:
+*install Compress::Zlib*
+1. Answer *yes* if asked to install any prerequisite modules
+The last line you should see should be:
+
+
+
+<a name="ManagementNodeInstallation-DownloadRequiredUtilities&Drivers"></a>
+## Download Required Utilities & Drivers
+
+
+
+<a name="ManagementNodeInstallation-WindowsXPandServer2003DeploymentTools(Sysprep)"></a>
+#### Windows XP and Server 2003 Deployment Tools (Sysprep)
+
+
+The Windows XP and Server 2003 Deployment Tools are available for free from
+Microsoft and are required in order for the capture of Windows XP and
+Server 2003 VCL images to work.&nbsp; The Sysprep utility is included in
+the Deployment Tools.&nbsp; You do not need to download Sysprep for Windows
+Vista or Server 2008 because it is included in the operating system.
+
+
+
+Links to the downloads are below.&nbsp; You should be able to use the XP
+SP2 or SP3 version assuming the image you are capturing contains Windows XP
+Service Pack 3.&nbsp; We have seen problems with drivers not being
+installed correctly using the SP3 version of the deployment tools so the
+SP2 version is recommended.
+
+
+Download: [Windows XP Service Pack 2 Deployment Tools](http://www.microsoft.com/downloads/details.aspx?familyid=3E90DC91-AC56-4665-949B-BEDA3080E0F6&displaylang=en)
+Download: [Windows XP Service Pack 3 Deployment Tools](http://www.microsoft.com/downloads/details.aspx?FamilyID=673a1019-8e3e-4be0-ac31-70dd21b5afa7&displaylang=en)
+Download: [System Preparation tool for Windows Server 2003 Service Pack 2 Deployment](http://www.microsoft.com/downloads/details.aspx?familyid=93F20BB1-97AA-4356-8B43-9584B7E72556&displaylang=en)
+
+The Sysprep files need to be extracted from the file you download which is
+in Microsoft's .cab format.&nbsp; It is easiest to extract the files on a
+Windows computer.&nbsp; Windows Explorer is able to open the .cab file and
+then the files contained within can be copied elsewhere.&nbsp; There are
+also some Linux utilities which claim to be able to extract .cab files.
+
+Copy the extracted Windows XP Sysprep files to the following directory on
+the management node after they have been extracted:
+{panel}
+/usr/local/vcl/tools/Windows_XP/Utilities/Sysprep
+{panel}Copy the extracted Windows Server 2003 Sysprep files to the
+following directory on the management node after they have been extracted:
+{panel}
+/usr/local/vcl/tools/Windows_Server_2003/Utilities/Sysprep
+{panel}The Sysprep directories should already exist on the management node
+because they exist the Subversion repository.&nbsp; There should already be
+a sysprep.inf file in each Sysprep directory.&nbsp; This is the base
+Sysprep template file for VCL included in the Subversion repository.
+
+The Sysprep directories should contain the following files at a minimum:
+{panel}
+\-rw-rw-r-\- 1 root root 25600 Aug 18 17:32 setupcl.exe
+\-rw-rw-r-\- 1 root root 88576 Aug 18 17:32 sysprep.exe
+\-rw-rw-r-\- 1 root root&nbsp; 2574 Aug 18 17:32 sysprep.inf
+{panel}
+
+<a name="ManagementNodeInstallation-Configuresysprep.inf"></a>
+#### Configure sysprep.inf
+
+Your organizations's Windows XP product key needs to be entered into the
+Windows XP sysprep.inf file.&nbsp; Find the *ProductKey* line and replace
+*WIN_XP_PRO_KEY* with *your organization's Windows XP product key* in  the
+following file:
+{panel}
+/usr/local/vcl/tools/Windows_XP/Utilities/Sysprep/sysprep.inf
+{panel}Your organizations's Windows Server 2003 product key needs to be
+entered into the Windows Server 2003 sysprep.inf file.&nbsp; Find the
+*ProductKey* line and replace *WIN_2003_ENT_KEY* with *your organization's
+Windows Server 2003 product key* in  the following file:
+{panel}
+/usr/local/vcl/tools/Windows_Server_2003/Utilities/Sysprep/sysprep.inf
+{panel}
+
+<a name="ManagementNodeInstallation-DownloadDrivers"></a>
+#### Download Drivers
+
+Drivers which aren't included with Windows must be downloaded and saved to
+the management node. The drivers required will vary greatly depending on
+the hardware. The only way to know what additional drivers you need is to
+install Windows on a computer and check for missing drivers.
+
+The drivers must be copied to the appropriate directory on the management
+node. The VCL image capture process copies the driver directories to the
+computer before an image is captured. Drivers from multiple directories
+will be copied based on the version of Windows being captured. There are
+driver directories under *tools* for each version of Windows (Windows XP,
+Windows Vista) and for each version group of Windows (version 5, 6). This
+allows drivers which are common to multiple versions of Windows to be
+shared in the management node tools directory structure.
+
+For example, if a chipset driver works for all versions of Windows, it can
+be saved in:
+*tools/Windows/Drivers/Chipset*
+
+If Windows XP and Windows Server 2003 both use the same network driver, it
+can be saved in:
+*tools/Windows_Version_5/Drivers/Network*
+
+If a storage driver only works for Windows XP, it should be saved in:
+*tools/Windows_XP/Drivers/Storage*
+
+
+During the image capture process, each Windows version directory is copied
+to the computer under C:\Cygwin\home\root\VCL. The order in which the
+Windows version directories are copied goes from most general to most
+specific.&nbsp; In the example above, the order would be:
+1. *tools/Windows/Drivers/Chipset*
+1. *tools/Windows_Version_5/Drivers/Network*
+1. *tools/Windows_XP/Drivers/Storage*
+
+The resulting directory structure on the Windows computer will be:
+* *C:\Cygwin\home\root\VCL\Drivers*
+** *\Chipset* \- driver works for all versions of windows
+** *\Network* \- driver works for Windows XP and Server 2003
+** *\Storage* \- driver only works for Windows XP
+
+The following list shows which driver files should be saved in the driver
+directories:
+
+* *tools/Windows/Drivers* \- drivers common to all versions of Windows
+** *tools/Windows_Version_5/Drivers* \- drivers used by Windows XP and
+Server 2003
+*** *tools/Windows_Version_XP/Drivers* \- drivers only used by Windows XP
+*** *tools/Windows_Version_Server_2003/Drivers* \- drivers only used by
+Windows Server 2003
+** *tools/Windows_Version_6/Drivers* \- drivers used by Windows Vista and
+Server 2008
+*** *tools/Windows_Vista/Drivers* \- drivers only used by Windows Vista
+*** *tools/Windows_Server_2008/Drivers* \- drivers only used by Windows
+Server 2008
+
+The directory structure under each Drivers directory does not matter. It is
+helpful to organize each directory by driver class, and each directory
+should be organized using the same theme.&nbsp; For example:
+* *tools/Windows_Version_XP/Drivers*
+** *Chipset*
+** *Network*
+** *Storage*
+** *Video*
+
+<a name="ManagementNodeInstallation-Add3rdPartyMassStorageDriverIDstosysprep.inf"></a>
+#### Add 3rd Party Mass Storage Driver IDs to sysprep.inf
+
+This step is complicated.&nbsp; 3rd party mass storage hardware IDs and
+driver .inf file paths must be added to the SysprepMassStorage section in
+sysprep.inf for Windows XP and Windows Server 2003 in order for the saved
+image to boot properly on different hardware.
+1. Identify the mass storage drivers required for your hardware which aren't
+native to Windows
+1. Download drivers for your hardware
+1. Each driver will have 1 or more .inf files. Examine the .inf files. Find
+all lines in this format containing a PnP device ID:
+*%DevDescD1% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F041028*
+The PnP device ID in the example above is:
+*PCI\VEN_1000&DEV_0054&SUBSYS_1F041028*
+1. Each PnP device ID should be added to the sysprep.inf file under the \[SysprepMassStorage\](sysprepmassstorage\.html)
+ section using the following format:
+ID = "C:\Sysprep\Drivers\<driver directory>\<.inf file path>"
+
+Example: LSI SAS drivers commonly need to be downloaded and the hardware
+IDs need to be added to the sysprep.inf files in order for computers with
+LSI SAS controllers to boot.
+1. Download the LSI SAS driver from [ibm.com](http://www-947.ibm.com/systems/support/supportsite.wss/docdisplay?lndocid=MIGR-5073138&brandind=5000020)
+: ibm_dd_mptsas_1.30.02.00_windows_32-64.exe
+1. Extract the ZIP file (it's a self-extracting zip; you can unzip it with
+whatever unzip tool you prefer)
+1. Copy the files from the 32 bit XP directory (image/xp-32) to the
+appropriate directory on the management node:
+*tools/Windows/Drivers/Storage/LSI-SAS*
+1. Locate the .inf file included with the driver is:
+*tools/Windows/Drivers/Storage/LSI-SAS/*{*}symmpi.inf*
+1. Locate the PnP ID lines in the .inf file:
+{PANEL}
+\[LSI\](lsi\.html)
+%DevDesc2% = SYMMPI_Inst, PCI\VEN_1000&DEV_0622
+%DevDesc3% = SYMMPI_Inst, PCI\VEN_1000&DEV_0624
+%DevDesc4% = SYMMPI_Inst, PCI\VEN_1000&DEV_0626
+%DevDesc5% = SYMMPI_Inst, PCI\VEN_1000&DEV_0628
+%DevDesc6% = SYMMPI_Inst, PCI\VEN_1000&DEV_0030
+%DevDesc7% = SYMMPI_Inst, PCI\VEN_1000&DEV_0032
+%DevDesc8% = SYMMPI_Inst, PCI\VEN_1000&DEV_0050
+%DevDesc9% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054
+%DevDesc10% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058
+%DevDesc11% = SYMMPI_Inst, PCI\VEN_1000&DEV_0056
+%DevDesc12% = SYMMPI_Inst, PCI\VEN_1000&DEV_0640
+%DevDesc13% = SYMMPI_Inst, PCI\VEN_1000&DEV_0646
+%DevDesc14% = SYMMPI_Inst, PCI\VEN_1000&DEV_0062
+\[DELL\](dell\.html)
+%DevDescD1% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F041028
+%DevDescD2% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F051028
+%DevDescD3% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F061028
+%DevDescD4% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F071028
+%DevDescD5% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F081028
+%DevDescD6% = SYMMPI_Inst, PCI\VEN_1000&DEV_0054&SUBSYS_1F091028
+%DevDescD7% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058&SUBSYS_1F0E1028
+%DevDescD8% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058&SUBSYS_1F0F1028
+%DevDescD9% = SYMMPI_Inst, PCI\VEN_1000&DEV_0058&SUBSYS_1F101028
+{PANEL}
+1. Based on the contents of the .inf file, the following is added to the Windows XP and Windows Server 2003 sysprep.inf files under \[SysprepMassStorage\](sysprepmassstorage\.html)
+:
+{PANEL}
+PCI\VEN_1000&DEV_0622 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0624 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0626 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0628 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0030 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0032 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0050 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0054 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0058 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0056 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0640 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0646 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0062 = "C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0054&SUBSYS_1F041028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0054&SUBSYS_1F051028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0054&SUBSYS_1F061028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0054&SUBSYS_1F071028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0054&SUBSYS_1F081028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0054&SUBSYS_1F091028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0058&SUBSYS_1F0E1028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0058&SUBSYS_1F0F1028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+PCI\VEN_1000&DEV_0058&SUBSYS_1F101028 =
+"C:\Sysprep\Drivers\Storage\LSI-SAS\symmpi.inf"
+{PANEL}If you have hardware using an LSI SAS controller (IBM HS21 blades),
+the section above can be copied and pasted into your sysprep.inf files:
+{panel}
+/usr/local/vcl/tools/Windows_XP/Utilities/Sysprep/sysprep.inf
+{panel}
+{panel}
+/usr/local/vcl/tools/Windows_Server_2003/Utilities/Sysprep/sysprep.inf
+{panel}
+
+<a name="ManagementNodeInstallation-WSName-WorkstationNameChangingUtility"></a>
+#### WSName - Workstation Name Changing Utility
+
+{color:#ff0000}{*}NOTICE:*{color}&nbsp;The WSName.exe utility&nbsp;is no
+longer	available.&nbsp;&nbsp;The set_computer_name.vbs script which calls
+WSName.exe&nbsp;will be  rewritten for the 2.2 release of VCL. In the
+meantime, this script is being left  intact in case you have a previously
+released version of WSName.exe or are able  to obtain it from another
+source.
+
+The wsname.exe utility is used by VCL to name Windows computers.&nbsp; It
+does a	reverse DNS lookup so that the computer name is set to the name
+registered for	its public IP address.&nbsp; The utility is called by
+set_computer_name.vbs when a  Windows image is loaded.&nbsp; The utility is
+not vital for the load process to work.  &nbsp;However, the computer will
+receive a random name if the script is missing or  fails to run.
+
+If you do have a previously released version of WSName.exe or are able to 
+locate it from another souce, save WSName.exe in the following location on
+the  management node:
+{panel}
+/usr/local/vcl/tools/Windows/Utilities/WSName/wsname.exe
+{panel}
+
+<a name="ManagementNodeInstallation-NewSID-WindowsSIDChangingUtility"></a>
+#### NewSID - Windows SID Changing Utility
+
+NewSID.exe is used to change the SID of a Windows computer if Sysprep is
+not used.&nbsp; Download the NewSID.exe utility:
+
+Download: [NewSID.exe](http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx)
+
+Save the NewSID.exe utility in the following location on the management
+node:
+{panel}
+/usr/local/vcl/tools/Windows/Utilities/NewSID/newsid.exe
+{panel}
+
+<a name="ManagementNodeInstallation-SPDrvScn-WindowsDriverScanningUtility"></a>
+#### SPDrvScn - Windows Driver Scanning Utility
+
+SPDrvScn.exe is used before an image is captured to enter the paths of
+drivers to the Windows registry so that they are loaded when Sysprep
+attempts to install devices.&nbsp; Download the SPDrvScn.exe utility:
+
+Download: [SPDrvScn.exe](http://vernalex.com/tools/spdrvscn/)
+
+Save the SPDrvScn.exe utility in the following location on the management
+node:
+{panel}
+/usr/local/vcl/tools/Windows/Utilities/SPDrvScn/spdrvscn.exe
+{panel}
+
+<a name="ManagementNodeInstallation-ConfiguretheSSHClient"></a>
+## Configure the SSH Client
+
+To insure that the management node can SSH into your virtual machines
+without problems, you will need to edit the SSH client config for the root
+user:
+
+
+
+
+Add the following lines to the top of the configuration file.
+
+
+    Host <vmhost> <vmhost ip>
+       UserKnownHostsFile /dev/null
+       StrictHostKeyChecking no
+
+
+Where:
+
+* <vmhost> - Is a wildcard reference to the hostnames for your virtual
+machines. 
+** For example, if your VM hostnames look like: vmhost1, vmhost2,
+vmhost3.... then replace <vmhost> with "vmhost*"
+
+* <vmhost ip> - Is a wildcard IP reference to the IPs used by your virtual
+machines. 
+** For example, if your VMs all have IP addresses starting with 10.0.0,
+then replace <vmhost ip> with "10.0.0.*"
+
+This will insure that new VM hosts will not hang on the known hosts prompts
+when the management node attempts to connect to them for the first time.
+
+<a name="ManagementNodeInstallation-Configurevcld.conf"></a>
+## Configure vcld.conf
+
+1. Create the /etc/vcl directory:
+*mkdir /etc/vcl*&nbsp;
+1. Copy the generic vcld.conf file to /etc/vcl:
+*cp /usr/local/vcl/etc/vcl/vcld.conf /etc/vcl*
+1. Edit the /etc/vcl/vcld.conf file:
+*vi /etc/vcl/vcld.conf*
+The following lines must be configured in order to start the VCL daemon
+(vcld) and allow it to check in to the database:
+1. * FQDN - the fully qualified name of the management node, this should
+match the name that was configured for the management node in the database
+1. * server - the IP address or FQDN of the database server
+1. * LockerWrtUser - database user account with write privileges
+1. * wrtPass - database user password
+1. Save the vcld.conf file
+
+<a name="ManagementNodeInstallation-InstalltheVCLDaemon(vcld)&nbsp;Service"></a>
+## Install the VCL Daemon (vcld)&nbsp;Service
+
+1. Copy the vcld service script to /etc/init.d and name it vcld:
+*cp /usr/local/vcl/bin/S99vcld.linux /etc/init.d/vcld*
+1. Add the vcld service using chkconfig:
+*/sbin/chkconfig \--add vcld*
+1. Configure the vcld service to automatically run at runtime levels 3-5:
+*/sbin/chkconfig \--level 345 vcld on*
+
+<a name="ManagementNodeInstallation-StartandCheck&nbsp;thevcldService"></a>
+## Start and Check&nbsp;the vcld Service
+
+1. Start the vcld service:
+*/sbin/service vcld start*
+You should see output similar to the following:
+
+    pre-execution: config file being used: /etc/vcl/vcld.conf
+    FQDN is not listed
+    pre-execution: process name is set to: vcld
+    pre-execution: verbose mode is set to: 1
+    pre-execution: testing mode is set to: 0
+    pre-execution: log file being used: /var/log/vcld.log
+    pre-execution: PID file being used: /var/run/vcld.pid
+    Created process 23696 renamed to vcld ...
+                                                               [  OK  ]
+
+*/etc/init.d/vcld start*
+1. Check the vcld service by monitoring the vcld.log file:
+*tail \-f /var/log/vcld.log*
+You should see the following being added to the log file every few seconds
+if the management node is checking in with the database:
+
+

Added: vcl/site/trunk/content/confluence_export/missing_from_export.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/missing_from_export.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/missing_from_export.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/missing_from_export.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,26 @@
+The following pages were not properly exported and need to be manually copied from Confluence:
+
+2.2-phpmyadmin-installation-&-configuration.mdtext
+adding-support-for-partimage-and-partimage-ng-to-xcat-2.x-(unofficial).mdtext
+administrator\'s-faq.mdtext
+current-&-future-development-topics.mdtext
+how-to\'s.mdtext
+install-&-configure-cygwin-sshd.mdtext
+meeting-&-conference-call-notes.mdtext
+phpmyadmin-installation-&-configuration.mdtext
+place-holder-for-vcl-2.4-(unreleased).mdtext
+resource-grouping-&-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-&-configuration.mdtext
+vcl-2.3-phpmyadmin-installation-&-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

Added: vcl/site/trunk/content/confluence_export/modularized-architecture.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/modularized-architecture.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/modularized-architecture.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/modularized-architecture.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,269 @@
+Title: Modularized Architecture
+<a name="ModularizedArchitecture-Background"></a>
+# Background
+
+The VCL backend code was significantly reworked in version 2.0
+to&nbsp;utilize a&nbsp;"modularized" framework.&nbsp; This framework allows
+certain parts of the code to be separated from the core code through the
+implementation of modules.
+
+VCL interacts with external technologies including:
+* provisioning engines
+* operating systems
+* monitoring utilities
+
+The technology being used may vary based on the VCL deployment, management
+node, image, computer, and so on.&nbsp; Modules make configuring VCL to use
+a certain technology easy while simplifying the core code.
+
+The advantages of implementing modules are not limited to external
+technologies.&nbsp;&nbsp;Modules may be implemented for functions
+applicable only to VCL, but may vary based on the environment.&nbsp; For
+example, research is being conducted to compare different algorithms
+which&nbsp;are used to select the image that is loaded on a computer after
+a reservation is complete.&nbsp; A module is created for each algorithm,
+and configuring a management node to use a certain algorithm is as simple
+as changing one value in the database.
+
+<a name="ModularizedArchitecture-ObjectOrientationandInheritance"></a>
+## Object Orientation and Inheritance
+
+Object orientation and inheritance are used in the VCL modular framework,
+allowing modules to access functionality from&nbsp;the classes which they
+inherit from.&nbsp; This relieves module developers from having
+to&nbsp;worry about many&nbsp;underlying details and reduces code
+duplication.
+
+The following diagram shows how inheritance is organized:
+!inheritance.jpg|align=center!
+*Figure: VCL module inheritance organization*
+&nbsp;&nbsp;A few notes about the diagram:
+* The yellow modules represent the core VCL modules
+* The blue and green modules represent auxiliary modules
+* Core&nbsp;modules that should not need to be changed regardless of the
+auxiliary modules being used
+* The core modules provide many functions to the auxiliary modules
+including:
+** default constructors
+** data access
+** module initialization
+** access to&nbsp;other auxiliary modules where appropriate
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}abstract and concrete classes - abstract are not
+instantiated{_}{color}
+* {color:#6600ff}{_}classes can be empty, contain no subs, but act as a
+placeholder in case it's decided later on that a sub would be
+useful{_}{color}{color:#6600ff}&nbsp;{color}
+
+<a name="ModularizedArchitecture-Advantages"></a>
+## Advantages
+
+* Modules make it easier for developers to implement new technologies to be
+used with VCL&nbsp;easily
+* Core VCL code does not need to be altered in order to support additional
+technologies or functionality
+* Increased flexibility for different configurations
+* Consistent methods to access data stored in the database
+* Code maintainability is increased because each module focuses on a
+distinct task and the core code does not need to check for numerous
+different conditions based on the technology being used
+
+{color:#6600ff}{_}Explain:&nbsp;_{color}
+* {color:#6600ff}{_}more about benefits of inheritance{_}{color}
+* {color:#6600ff}{_}give OS example and include diagram{_}{color}
+** {color:#6600ff}{_}Windows - Desktop - XP - Vista{_}{color}
+** {color:#6600ff}{_}implement subs as high up as possible so child classes
+inherit them{_}{color}
+** {color:#6600ff}{_}child classes can override an inherited sub if it
+doesn't fit its needs{_}{color}
+** {color:#6600ff}{_}use example of firewalls in Windows.&nbsp; Windows.pm
+implements a firewall sub which works for everything but Vista.&nbsp;
+Vista.pm can implement a sub with the same name and it will override the
+one in Windows.pm, yet Vista.pm still enjoys everthing else Windows.pm
+offers._{color}
+
+<a name="ModularizedArchitecture-CoreModules"></a>
+# Core Modules
+
+&nbsp;&nbsp;{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}only core modules should ever change the request
+state/laststate/computer state{_}{color}
+* {color:#6600ff}{_}only core modules should change anything in the request
+and rsvp tables{_}{color}
+* {color:#6600ff}{_}provide state flow{_}{color}
+* {color:#6600ff}{_}provide data access{_}{color}
+* {color:#6600ff}{_}provide utility functions&nbsp;_{color}
+* {color:#6600ff}{_}database and data structure are abstracted from
+auxiliary modules{_}{color}
+* {color:#6600ff}{_}ongoing - should not contain code specific to something
+that can be modularized such as "if windows... else linux..."_{color}
+
+<a name="ModularizedArchitecture-vcld(VCL::vcld)"></a>
+### vcld (VCL::vcld)
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}main exe{_}{color}
+* {color:#6600ff}{_}loops every 12 seconds by default{_}{color}
+* {color:#6600ff}{_}doesn't inherit{_}{color}
+* {color:#6600ff}{_}creates DataStructure object{_}{color}
+* {color:#6600ff}{_}forks{_}{color}
+* {color:#6600ff}{_}sets some $ENV variables{_}{color}
+* {color:#6600ff}{_}reaps dead processes{_}{color}
+
+<a name="ModularizedArchitecture-DataStructure.pm(VCL::DataStructure)"></a>
+### DataStructure.pm (VCL::DataStructure)
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}abstracts database and data structure{_}{color}
+* {color:#6600ff}{_}aux modules shouldn't know about the DB or data
+structure{_}{color}
+* {color:#6600ff}{_}should be able to change db or data structure and still
+have aux modules work{_}{color}
+* {color:#6600ff}{_}uses "Inside Out" technique to accessing modules can't
+get to the underlying data{_}{color}
+* {color:#6600ff}{_}data is encapsulated, can only be accessed using
+accessor functions{_}{color}
+** {color:#6600ff}{_}encapsulation is good, explain what it is{_}{color}
+* {color:#6600ff}{_}usage: $self->data->get_image_name()_{color}
+* {color:#6600ff}{_}need to list methods somewhere (not here), there are
+tons of them{_}{color}
+* {color:#6600ff}{_}gets created by vcld when it finds a
+reservation{_}{color}
+* {color:#6600ff}{_}passed to&nbsp;module constructor{_}{color}
+* {color:#6600ff}{_}Module.pm sets up access via data()_{color}
+* {color:#6600ff}{_}Result: any class that inherits from VCL::Module gets
+access{_}{color}
+
+<a name="ModularizedArchitecture-utils.pm(VCL::utils)"></a>
+### utils.pm (VCL::utils)
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}contains several utility subs{_}{color}
+* {color:#6600ff}{_}doesn't inherit from Module.pm (might be a good idea to
+look into this)_{color}
+* {color:#6600ff}{_}contains some legacy stuff - some subs will be removed
+and moved to OS or provisioing modules{_}{color}
+* {color:#6600ff}{_}should probably make a page describing utility subs
+such as notify, run_ssh_command..._{color}
+** {color:#6600ff}{_}This should really get sucked out of POD comments in
+the actual code{_}{color}
+* {color:#6600ff}{_}have to 'use VCL::utils' in order to use it{_}{color}
+
+<a name="ModularizedArchitecture-Module.pm(VCL::Module)"></a>
+### Module.pm (VCL::Module)
+
+* Provides a constructor for all derived objects to use
+** Objects which inherit from VCL::Module do not need to implement their
+own new() subroutines
+** Objects which inherit from VCL::Module do not need to deal with
+"blessing" themselves
+* Provides access to the database data for the reservation via the data()
+subroutine implemented by Module.pm
+** Any module derived from VCL::Module can call $self->data->\[get_something\](get_something\.html)
+ or $self->data->\[set_something\]
+
+<a name="ModularizedArchitecture-State.pm(VCL::Module::State)"></a>
+### State.pm (VCL::Module::State)
+
+* Supports the core VCL state modules such as new.pm, image.pm, reclaim.pm,
+and others
+* Provides an initialize() subroutine which performs common tasks whenever
+a state object is created
+** initialize() creates the provisioning and OS objects
+* Provides an os() subroutine which allows the state objects to interact with the resource's operating system by calling $self->os->\[subroutine\](subroutine\.html)
+* Provides a provisioner() subroutine which allows the state objects to interact with the provisioning engine that has been configured for the resource&nbsp;by calling $self->provisioner->\[subroutine\](subroutine\.html)
+* Provides other subroutines such as reservation_failed() which
+performs&nbsp;a consistent set of&nbsp;tasks when a reservation fails
+
+<a name="ModularizedArchitecture-Provisioning.pm(VCL::Module::Provisioning)"></a>
+### Provisioning.pm (VCL::Module::Provisioning)
+
+* Provisioning engine modules should inherit from VCL::Module::Provisioning
+* Modules which are a subclass of VCL::Module::Provisioning
+also&nbsp;receive the&nbsp;functionality provided by VCL::Module through
+inheritance
+* VCL::Module::Provisioning provides provisioning modules with access to
+the OS object created for the reservation
+
+<a name="ModularizedArchitecture-OS.pm(VCL::Module::OS)"></a>
+### OS.pm (VCL::Module::OS)
+
+* OS&nbsp;modules should inherit from VCL::Module::OS
+* Modules which are a subclass of VCL::Module::OS also&nbsp;receive
+the&nbsp;functionality provided by VCL::Module through inheritance
+* VCL::Module::OS provides OS modules with access to the&nbsp;provisioning
+object created for the reservation
+** This is useful if the OS needs to perform a task such as power cycling
+the computer if a reboot fails
+
+<a name="ModularizedArchitecture-ImplementationDetails"></a>
+# Implementation Details
+
+
+<a name="ModularizedArchitecture-WorkingwithInheritance"></a>
+### Working with Inheritance
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}code to set up inheritance{_}{color}
+* {color:#6600ff}{_}using $self->_{color}
+* {color:#6600ff}{_}when to use $self-> (object method) and when to call a
+sub directly (class method)_{color}
+* {color:#6600ff}how to check if sub was called as an object method or
+not{color}
+
+<a name="ModularizedArchitecture-IncludingNon-InheritedModules"></a>
+### Including Non-Inherited Modules
+
+&nbsp;{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}use{_}{color} {color:#6600ff}_[file::bin](file::bin.html)
+_{color} {color:#6600ff}{_}to include the lib directory{_}{color}
+* {color:#6600ff}{_}use warnings, strict, diagnostics are a good
+practice{_}{color}
+* {color:#6600ff}{_}use 'VCL::utils' is the only VCL module you should need
+to include, all else should be handled by inheritance/objects{_}{color}
+
+<a name="ModularizedArchitecture-ModuleInitialization"></a>
+### Module Initialization
+
+{color:#6600ff}{_}Explain how modules can implement initialize() subs which
+are automatically called{_}{color}
+
+<a name="ModularizedArchitecture-DatabaseConfigurationforModules"></a>
+### Database Configuration for Modules
+
+{color:#6600ff}{_}Explain module table, computer.moduleid,
+managementnode.predictivemoduleid{_}{color}
+
+<a name="ModularizedArchitecture-Cross-ModuleAccess"></a>
+### Cross-Module Access
+
+{color:#6600ff}{_}Explain why some modules shouldn't have access to others,
+which is why Module.pm doesn't make os() and provisioner()
+available{_}{color}
+
+<a name="ModularizedArchitecture-Required&OptionalModuleSubroutines"></a>
+### Required & Optional Module Subroutines
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}Perl's can() function{_}{color}
+* {color:#6600ff}{_}core modules use can() to check if module
+implements&nbsp;a subroutine{_}{color}
+* {color:#6600ff}{_}some subs should be required such as OS::load(), most
+should not{_}{color}
+* {color:#6600ff}{_}if you can think of an exception why a sub wouldn't be
+needed it shouldn't be required{_}{color}
+
+<a name="ModularizedArchitecture-PackageOrganization"></a>
+### Package Organization
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}how directories under lib/VCL should be
+organized{_}{color}
+* {color:#6600ff}{_}the 'package' line in the modules should match the
+location of the file{_}{color}
+** {color:#6600ff}{_}Example: "package VCL::Module::OS::Windows" resides in
+"lib/VCL/Module/OS/Windows.pm"_{color}
+* {color:#6600ff}{_}some core modules don't follow this - the state modules
+reside directly under lib/VCL, should eventually reside under
+lib/VCL/Module/State{_}{color}

Added: vcl/site/trunk/content/confluence_export/network-layout.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/network-layout.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/network-layout.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/network-layout.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,43 @@
+Title: Network Layout
+{excerpt}This page describes the basic network layout required in order for
+VCL to function. It also describes the recommended network layout if a
+blade chassis management module is used.{excerpt}
+
+<a name="NetworkLayout-AtthesimplestformVCLusestwonetworks"></a>
+# At the simplest form VCL uses two networks
+
+1. Private - applies to provisioning modules where node is reloaded, esx,
+vmware, etc.
+1. * loading and boot strapping images
+1. * managing reservations, adding/deleting accounts, controlling the OS on
+the node
+1. * opens access ports on node for user requests on public network interface
+1. * image creation
+1. * DHCP serves fixed-addresses over this network to the eth0 adapter of the
+node
+1. * DHCP is run on the management node - prerequisite
+1. Public
+1. * user accessible
+1. * VCL can either use dhcp(preferred) or statically assign addresses to the
+node on the public network
+
+The diagram below shows the simple layout:
+{gliffy:name=Simple network layout|space=VCL|page=Network
+Layout|align=left|size=M}
+
+<a name="NetworkLayout-BladeCenternetworklayout"></a>
+# Blade Center network layout
+
+The network using blade center is more involved by adding a 2nd private
+network.
+1. Private 1 - applies to provisioning modules, xCAT, vmware, etc.
+1. Private 2
+1. * allows management node to interact with blade center management module
+1. * provides scaling method for adding multiple blade center's
+1. Public - user access
+
+The diagram below shows the suggested network layout when using blade
+center.
+
+{gliffy:name=Blade Center network layout|space=VCL|page=Network
+Layout|align=left|size=M}

Added: vcl/site/trunk/content/confluence_export/network-requirements.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/network-requirements.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/network-requirements.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/network-requirements.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,23 @@
+Title: Network requirements
+For the current Apache VCL release (version 2.2.1), the system requires a
+minimum of two parallel networks, i.e.:
+(1) A private network, providing interconnectivity between the VCL
+management node and the deployed target server(s) (the latter with the
+requested software being provided to the end user, running either real or
+virtual images). This private network allows the management node to manage
+the pool of server resources, and to load and tear down the images (OS plus
+applications/middleware) on the target server(s) that will be handed to an
+end user.
+(2) A public network, providing outside users access to the main VCL GUI
+via the internet, to request hardware/software resources, and to then
+connect them directly to the allocated server(s).
+
+This is enabled by installing two Ethernet NICs per target server, with a
+minimum bandwidth of 1 Gbs each. 
+For additional details, see
+https://cwiki.apache.org/confluence/display/VCL/Network+Layout
+
+Note from above that under some possible operational modes, only one NIC is
+required (e.g., when accessing the IBM Smart Cloud). Under other
+circumstances (e.g., controlling blades) more than two NICs may be
+recommended. 

Added: vcl/site/trunk/content/confluence_export/operating-system-module-inheritance.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/operating-system-module-inheritance.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/operating-system-module-inheritance.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/operating-system-module-inheritance.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,29 @@
+Title: Operating System Module Inheritance
+{gliffy:name=OS Modularization Transition|space=VCL|page=Operating System
+Module Inheritance|align=center|size=L}
+{gliffy:name=OS Module Inheritance|space=VCL|page=Operating System Module
+Inheritance|align=center|size=L}
+* Each row in the image table is configured with an OSid
+(image.OSid),&nbsp;this points to the id column in the OS table (OS.id)
+* Each&nbsp;row in the OS table is configured with a moduleid
+(OS.moduleid), this points to the id column in the module table (module.id)
+* The module table contains a column named perlpackage
+(module.perlpackage), this tells the backend VCL code which Perl module to
+load and use
+* The module.perlpackage value, the package statement in the Perl module
+file, and the directory structure of the Perl modules must all align
+** module.perlpackage = VCL::Module::OS::Windows_mod::Version_5::XP_mod
+** lib/VCL/Module/OS/Windows_mod/Version_5/XP_mod.pm:
+
+    package VCL::Module::OS::Windows_mod::Version_5::XP_mod;
+
+* Inheritance reduces redundant code
+* Subroutines should reside as high up in the hierarchy as possible
+** This allows all objects which&nbsp;are instantiated as a&nbsp;child
+class to use the subroutine
+* Child classes can implement subroutines with the same name as one
+implemented by a parent class
+** The child subroutine in the child class overrides the subroutine in the
+parent class
+{gliffy:name=Inheritance Example|space=VCL|page=Operating System Module
+Inheritance|align=center|size=L}

Added: vcl/site/trunk/content/confluence_export/operating-system-module-interface-specification.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/operating-system-module-interface-specification.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/operating-system-module-interface-specification.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/operating-system-module-interface-specification.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,346 @@
+Title: Operating System Module Interface Specification
+<a name="OperatingSystemModuleInterfaceSpecification-Background"></a>
+# Background
+
+* OS module objects are created by State.pm::initialize() when a new state
+object is created.
+* OS module objects are available&nbsp;within state and
+provisioning&nbsp;modules
+* OS module objects are not available within other types of modules for
+safety.&nbsp;&nbsp; For example,&nbsp;a monitoring or other utility module
+should not be able&nbsp;to call the OS module's shutdown subroutine.
+
+<a name="OperatingSystemModuleInterfaceSpecification-OSModuleSubroutines"></a>
+# OS Module Subroutines
+
+It is highly recommended that all OS modules implement the following
+subroutines.&nbsp; There may be many additional subroutines implemented
+within an OS module.&nbsp; These will not be called by any of the core VCL
+modules nor any of the provisioning engine modules.
+* [#pre_capture](#pre_capture.html)
+* [#post_load](#post_load.html)
+* [#sanitize](#sanitize.html)
+* [#reboot](#reboot.html)
+* [#shutdown](#shutdown.html)
+* [#get_current_image_name](#get_current_image_name.html)
+* [#reserve](#reserve.html)
+* [#grant_access](#grant_access.html)
+
+&nbsp;&nbsp;
+
+----
+<a name="OperatingSystemModuleInterfaceSpecification-pre_capture{anchor:pre_capture}"></a>
+## pre_capture {anchor:pre_capture}
+
+* Description
+** Configures the&nbsp;OS so that it can be captured by a provisioning
+module.
+** Configures the OS so that it will successfully boot after the captured
+image is reloaded on another resource.
+** Adds and configures drivers so that the image will load on other
+resources.
+** Removes&nbsp;files which should not be saved in the image.
+** Examples of tasks performed by the pre_capture subroutine:
+*** Log off users which were created for the imaging reservation and delete
+the accounts
+*** Set root and administrator passwords to standard, known values&nbsp;
+*** Disable and delete page or swap files
+*** Delete temp files
+*** Copy scripts and utilities to the computer which are required after the
+computer boots up but before it has network connectivity
+*** Copy drivers to the computer
+*** Run a generalization or sealing utility such as Sysprep.exe
+* Expected Beginning State
+** Resource is up and accessible
+** Administrator has configured the resource
+** Administrator&nbsp;may or may not have logged out
+* Expected Ending State
+** (Default) Resource is shut down and turned off
+** Image captured of resource can be loaded and booted on other hardware
+** Loaded image will successfully boot up, establish network connectivity,
+and be accessible by the OS module's post_load() subroutine
+* Called By
+** Provisioning module's capture() subroutine
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->pre_capture())&nbsp;
+** Optional Argument:
+*** Name: end_state
+*** Type: hash reference
+*** Description:
+**** Instructs pre_capture() to leave the resource in a particular state
+after the subroutine's tasks are complet instead of shutting down the
+resource.
+*** Possible Values:
+**** on - Leave the resource on.&nbsp; Do not shut it down or reboot it.
+**** off (Default) - Shut the resource down.
+**** reboot - Initiate a reboot and return.
+* Return Values
+** 1
+*** All pre_capture tasks completed successfully.
+*** Resource was either shut down or left in the state specified by the
+end_state argument.
+*** Provisioning module can proceed to capture the image.
+** 0
+*** Resource OS could not be completely prepared to be captured.
+*** Provisioning module should not proceed to capture the image.
+
+<a name="OperatingSystemModuleInterfaceSpecification-post_load{anchor:post_load}"></a>
+## post_load {anchor:post_load}
+
+* Description
+** Performs tasks to configure the OS&nbsp;after an image was loaded.
+** Does not configure the resource for a particular reservation.
+** Examples of tasks performed by the post_load subroutine:
+*** Make sure OS licensing has been activated
+*** Configure&nbsp;services
+*** Rename the computer or resource
+*** Randomize passwords
+*** Configure the firewall
+* Expected Beginning State
+** Resource has been powered on&nbsp;
+** Resource may or may not be accessible
+** It's expected that the resource will become accessible automatically
+after it boots and performs any initialization tasks which were
+preconfigured by the pre_capture subroutine.
+* Expected Ending&nbsp;State
+** Resource has been loaded with an image and the OS was configured so that
+it is ready to be reserved.
+* Called By
+** Provisioning module's load() subroutine
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->post_load())&nbsp;
+** No arguments
+* Return Values
+** 1
+*** All OS post-load tasks were completed successfully
+** 0
+*** All OS post-load tasks could not be completed but the resource became
+accessible
+** Undefined
+*** Resource never became accessible
+
+<a name="OperatingSystemModuleInterfaceSpecification-sanitize{anchor:sanitize}"></a>
+## sanitize {anchor:sanitize}
+
+* Description
+** Reverts the changes made when preparing a resource for a particular
+reservation.
+** A resource needs to be sanitized if it was successfully reserved for a
+reservation but not used.
+** The goal of the sanitize subroutine should be to&nbsp;clean up and
+reconfigure&nbsp;a resource so that it can be provisioned for another
+reservation without having to be reloaded.
+** An attempt is made to sanitize the resource by reclaim.pm if it
+determines that the resource was never used for a reservation.&nbsp; This
+will occur if a reservation is made, enters the reserved state, but never
+enters the inuse state.
+** Examples of tasks performed by the sanitize subroutine:
+*** Delete user accounts which were created for a reservation
+*** Revoke access to the resource which was granted for a reservation
+* Expected Beginning State
+* Expected Ending State&nbsp;
+* Called By
+** reclaim.pm::process()
+** May be called by the same OS module's pre_capture() subroutine to
+sanitize the resource after it was reserved and used by the image creator.
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->sanitize())
+** No arguments will be passed to sanitize()
+* Return Values
+** 1
+*** Sanitization was completely successful
+*** Resource is ready to be provisioned and reserved for another
+reservation
+*** Resource does not need&nbsp;to be reloaded
+** 0
+*** Sanitization could not be completed
+*** Resource needs to be reloaded
+
+<a name="OperatingSystemModuleInterfaceSpecification-reboot{anchor:reboot}"></a>
+## reboot {anchor:reboot}
+
+* Description
+** Performs a complete graceful reboot of the OS.
+** May forcibly log off users if necessary.
+** Waits for the reboot to complete.
+** Returns after the reboot is complete.
+* Expected Beginning State
+** Computer is up and accessible.
+** Users may be logged on to the computer.
+* Expected Ending&nbsp;State
+** Computer has been rebooted.
+** Computer is accessible.
+* Called By
+** May be called by any module which has access to the OS object
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->reboot())
+** Argument:
+*** Name: timeout
+*** Description:
+**** Instructs reboot() to wait a maximum number of minutes for the reboot
+to complete
+**** If timeout has been reached and computer has not finished rebooting, 0
+should be returned
+*** Required: No
+*** Default Value: 5 minutes
+*** Data Type: integer
+*** Possible Values:
+**** Any positive integer
+* Return Values
+** 1
+*** Reboot completed successfully
+*** Computer is accessible
+** 0
+*** Reboot was initiated but computer never came back online
+*** Timeout was reached
+** Undefined
+*** Reboot could not be initiated
+
+<a name="OperatingSystemModuleInterfaceSpecification-shutdown{anchor:shutdown}"></a>
+## shutdown {anchor:shutdown}
+
+* Description
+** Performs a graceful shutdown of the OS.
+** May forcibly log off users if necessary.
+** Waits for the shutdown to complete.
+** Returns after the shutdown is complete and the computer is off.
+* Expected Beginning State
+** Computer is up and accessible.
+** Users may be logged on to the computer.
+* Expected Ending State
+** Computer is off.
+* Called By
+** May be called by any module which has access to the OS object
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->reboot())
+** Argument:
+*** Name: timeout
+*** Description:
+**** Instructs shutdown() to wait a maximum number of minutes for the
+shutdown to complete
+**** If timeout has been reached and computer has not finished shutting
+down, 0 should be returned
+*** Required: No
+*** Default Value: 5 minutes
+*** Data Type: integer
+*** Possible Values:
+**** Any positive integer
+* Return Values
+** 1
+*** Shudown completed successfully
+** 0
+*** Shutdown was initiated but computer never shut down
+*** Timeout was reached
+** Undefined
+*** Shutdown could not be initiated
+
+<a name="OperatingSystemModuleInterfaceSpecification-get_current_image_name{anchor:get_current_image_name}"></a>
+## get_current_image_name {anchor:get_current_image_name}
+
+* Description
+** Returns the name of the current image that is loaded on the
+resource(currentimage.txt file).
+** The name corresponds to the image.name column in the database.
+** Returning a name implies that the resource is accessible.
+** The OS.pm will probably handle this subroutine.
+* Expected Beginning State
+** Resource is accessible.
+* Expected Ending&nbsp;State
+** The resource state should be identical to before get_current_image_name
+was called.
+* Called By
+** Provisioning module's node_status() subroutine.
+** Used to determine if the OS and provisioning engine agree on the current
+image loaded on a resource.
+** Can be used to determine if a resource is accessible.&nbsp; A valid
+string will be returned if the resource is accessible.
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->get_current_image_name())
+** No arguments
+* Return Values
+** String
+*** String contains a VCL image name
+** 0
+*** Computer is accessible but failed&nbsp;to determine the current loaded
+image
+** Undefined
+*** Computer is not accessible
+
+<a name="OperatingSystemModuleInterfaceSpecification-reserve&nbsp;{anchor:reserve}"></a>
+## reserve&nbsp;{anchor:reserve}
+
+* Description
+** reserve() gets called by new.pm after a machine has been reloaded if the
+state is "new" (new.pm also handles the "reload" state and others)
+** It should perform the steps necessary to take a reloaded machine and
+prepare it for a particular reservation
+** Anything reservation-specific that doesn't require knowing the user's IP
+should be done in reserve()
+** After reserve() has run, the state can be changed to reserved and the
+"Connect" button can be presented to the user
+** reserve() would normally add&nbsp;the reservation user and any users set
+in imagemeta usergroup to the computer, set their passwords, and add them
+to the appropriate groups
+** reserve()&nbsp;does not configure the firewall or do anything networking
+related because at the time it's called, the state has not been changed to
+reserved and the user has not been shown the "Connect" button.&nbsp;
+Hence,&nbsp;the user's IP is not known.
+** reserve() is called by new.pm before the "Connect" button is shown to
+the user because adding several user accounts may take a long time.&nbsp;
+If adding users was done after the state was changed to reserved, a user
+could attempt to connect before all of the users accounts were added.
+* Expected Beginning State
+** Request state is pending/new&nbsp;
+** Computer has been reloaded
+* Expected Ending&nbsp;State
+** Computer has been configured for a particular reservation
+** User accounts have been added and configured
+** Request state can be changed to reserved and the "Connect" button can be
+presented to the user
+* Called By
+** new.pm
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->reserve())
+** No arguments
+* Return Values
+** True (1)&nbsp;
+*** Computer has successfully been configured for a particular reservation
+** False (0 or undefined)&nbsp;
+*** Computer could not be configured for a particular reservation
+
+<a name="OperatingSystemModuleInterfaceSpecification-grant_access&nbsp;{anchor:grant_access}"></a>
+## grant_access&nbsp;{anchor:grant_access}
+
+* Description
+** grant_access()&nbsp;gets called by reserved.pm after the user has
+clicked the&nbsp;"Connect" button
+** The user's IP address is known when grant_access() is called
+** grant_access() should perform all the steps necessary to open up the
+machine so the user(s) added by reserve() can connect
+** grant_access() may&nbsp;enables RDP or public SSH traffic depending on
+the OS
+* Expected Beginning State
+** User has just clicked the "Connect" button&nbsp;
+** Request state is pending/reserved
+* Expected Ending&nbsp;State
+** Computer has been configured to allow the user to connect
+* Called By
+** reserved.pm
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of an OS object
+($os->get_current_image_name())
+** No arguments
+* Return Values
+** True (1)&nbsp;
+*** Computer was successfully configured to allow access for the
+reservation users
+** False (0 or undefined)
+*** Computer could not be configured to allow access for the reservation
+users

Added: vcl/site/trunk/content/confluence_export/patch-to-remove-mcrypt-dependency.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/patch-to-remove-mcrypt-dependency.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/patch-to-remove-mcrypt-dependency.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/patch-to-remove-mcrypt-dependency.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,33 @@
+Title: Patch to remove mcrypt dependency
+This page explains how to use a php package called [phpseclib](http://phpseclib.sourceforge.net/)
+ to remove the requirement of mcrypt. phpseclib will use mcrypt functions
+if it is installed but will use native php to implement the encryption if
+it is not installed.
+
+Here are the steps to remove the dependency:
+* Download [phpseclib](http://sourceforge.net/projects/phpseclib/files/phpseclib0.2.2.zip/download)
+ to /tmp (version 0.2.2 was used for testing)
+{tip}
+cd /tmp
+wget
+{nolink:http://downloads.sourceforge.net/project/phpseclib/phpseclib0.2.2.zip}
+{tip}
+* Create a directory named phpseclib in your .ht-inc directory
+{tip}
+mkdir /var/www/html/vcl/.ht-inc/phpseclib
+{tip}
+* unzip phpseclib in the phpseclib directory
+{tip}
+cd /var/www/html/vcl/.ht-inc/phpseclib
+unzip /tmp/phpseclib0.2.2.zip
+{tip}
+* Download [no_mcrypt.patch](http://people.apache.org/~jfthomps/no_mcrypt.patch)
+ to your .ht-inc directory
+{tip}
+cd /var/www/html/vcl/.ht-inc
+wget {nolink:http://people.apache.org/~jfthomps/no_mcrypt.patch}
+{tip}
+* Apply the patch
+{tip}
+patch < no_mcrypt.patch
+{tip}

Added: vcl/site/trunk/content/confluence_export/pre-release-test-procedures.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/pre-release-test-procedures.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/pre-release-test-procedures.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/pre-release-test-procedures.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,47 @@
+Title: Pre-release test procedures
+Recommended test cases for release candidates.
+
+<a name="Pre-releasetestprocedures-Webfrontend"></a>
+### Web frontend
+
+* Block Allocations
+** For each of these, test for weekly, monthly, and list
+** Create new block allocations; try adding multiple times per test
+** Edit block allocations
+** Delete block allocations
+** Request new block allocations; try both specifying a user group and
+selecting "(group not listed)"; try with and without comments; try with
+users with and without an email address in the user table
+** Accept requested block allocations; try accepting from users with and
+without an email address in the user table
+** Reject requested block allocations; try rejecting from users with and
+without an email address in the user table
+** Create an entry where you are in the user group that is active during
+the current time to check viewing the block status
+
+<a name="Pre-releasetestprocedures-WebfrontendXMLRPCAPI"></a>
+### Web frontend XML RPC API
+
+(placeholder)
+
+<a name="Pre-releasetestprocedures-Backend-Managementnode"></a>
+### Backend - Management node
+
+General range of tests for the back-end processing. The tests would more
+detailed depending on the provisioning module and OS module.
+
+* Reservation flow:
+** start - proper loading through provisioning module
+** monitor - during inuse state, based on check user connection flag
+** end - warning of upcoming end time, reclaim / reload node if applicable
+* End User Notifications: start, end time near, end. Image creation. (User
+pref dependent)
+* Sysadmin Notifications: Warnings and Criticals
+* Image Creation: pre-capture process(write currentimage.txt, setup OS with
+boot scripts), proper flow from start - complete. Dependent on provisioning
+and OS modules.
+* Cluster reservations: Flow - parent /child dependency. Parent process
+waits on children node to load, etc Children load/processes depend on
+parent process to handle request state change and notify end-user
+* Block allocations (previously called Block Reservations): Correct
+processing, notifications/warnings, etc

Added: vcl/site/trunk/content/confluence_export/provisioning-engine-module-interface-specification.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/provisioning-engine-module-interface-specification.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/provisioning-engine-module-interface-specification.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/provisioning-engine-module-interface-specification.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,231 @@
+Title: Provisioning Engine Module Interface Specification
+<a name="ProvisioningEngineModuleInterfaceSpecification-Background"></a>
+# Background
+
+* Provisioning module objects are created by State.pm::initialize() when a
+new state object is created.
+* Provisioning module objects are available&nbsp;within state modules and
+OS modules
+* Provisioning module objects are not available within other types of
+modules for safety.
+
+{color:#6600ff}{_}Explain:_{color}
+* {color:#6600ff}{_}define what we mean by "provisioning system"_{color}
+* {color:#6600ff}{_}give examples of provisioning systems{_}{color}
+* {color:#6600ff}{_}could be bare metal, virtual, differentiated,
+undifferentiated, a service, a special piece of hardware, eventually VCL
+could provision various types of resources{_}{color}
+* {color:#6600ff}{_}relationships among mgt nodes, computers, provisioning
+systems (such as computer is assigned 1 prov system at a time)_{color}
+* {color:#6600ff}{_}computer.provisioningid{_}{color}
+* {color:#6600ff}{_}provisioning table{_}{color}
+* {color:#6600ff}{_}future: management node to provisioning
+mapping{_}{color}
+* {color:#6600ff}{_}provisioning module implementation is responsible for
+knowing which OS interactions are necessary{_}{color}
+** {color:#6600ff}{_}image.pm calls provisioner->capture, new.pm calls
+provisioner->load, it calls OS subs as necessary{_}{color}
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-ProvisioningModuleSubroutines"></a>
+# Provisioning Module Subroutines
+
+It is highly recommended that all&nbsp;provisioning modules implement the
+following subroutines.&nbsp; There may be many additional subroutines
+implemented within a provisioning module.&nbsp; These will not be called by
+any of the core VCL modules.
+* [#node_status](#node_status.html)
+* [#capture](#capture.html)
+* [#load](#load.html)
+* [#power_off](#power_off.html)
+* [#power_on](#power_on.html)
+* [#power_reset](#power_reset.html)
+* [#get_current_image](#get_current_image.html)
+* [#get_image_size](#get_image_size.html)
+
+----
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-node_status{anchor:node_status}"></a>
+## node_status {anchor:node_status}
+* Description
+** A provisioning module's node_status routine checks the current status of
+the node. Through the module this routine is aware of how to figure out if
+a node is available and loaded with the correct image or needs to be
+reloaded.
+** It returns a hash reference with various information, the most important
+being the "status"
+
+    ie for the xcat module:
+    hashref: reference to hash with keys/values
+    \{status\} => <"READY","RELOAD">
+    \{ping\} => <0,1>
+    \{ssh\} => <0,1>
+    \{rpower\} => <0,1>
+    \{nodeset\} => <"boot", "install", "image", ...>
+    \{nodetype\} => <image name>
+    \{currentimage\} => <image name>
+
+** The status key/value tells the vcl system the node is ready or needs to
+be reloaded.
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-capture{anchor:capture}"></a>
+## capture {anchor:capture}
+
+* Description
+** A provisioning module's capture() subroutine saves the current state of
+the resource.&nbsp;&nbsp;
+** For the provisioning of computers, this means saving an image of the
+contents of the hard drive.&nbsp; Although current VCL implementations
+focus on provisioning computers, the capture() subroutine does not
+necessarily need to save an image of a hard drive.&nbsp; A provisioning
+module may be developed to save the configuration of a network service or
+some other type of resource.
+** The capture() subroutine is responsible for calling the OS module's
+pre_capture&nbsp;subroutine.&nbsp; This is not called by the image.pm state
+module because there may be cases where an OS isn't applicable.
+** The capture() subroutine is responsible for waiting for the entire
+capture process to complete.
+* Expected Beginning State
+** An administrator has configured the resource and initiated the capture
+using the VCL website.
+** The resource is on and accessible.
+** The information contained in the data object describes the image which
+does not yet exist and will be captured.
+* Expected Ending State
+** The entire capture process is complete or else an error occurred.
+** The capture() subroutine has waited for an image to be captured.
+* Called By
+** image.pm::process()
+* Arguments & Calling Environment
+** Should only be called as an object method&nbsp;of a image.pm state
+object ($self->capture())&nbsp;
+** No Arguments
+* Return Values
+** 1
+*** Resource was successfully captured.
+*** image.pm may proceed to update the database tables making the image
+available to be provisioned.
+** 0
+*** Resource was not successfully captured.
+*** An administrator needs to investigate the problem.
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-load{anchor:load}"></a>
+## load {anchor:load}
+
+* Description
+** A provisioning module's load() subroutine is responsible for
+provisioning the node.
+** This means starting a virtual machine, loading a image to disk, or
+nothing in the case of the standalone lab machine.
+* Expected Beginning State
+** ...
+* Expected Ending State
+** ...
+* Called By
+** ...
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of a
+provisioning&nbsp;object ($provisioner->pre_capture())&nbsp;
+** No Arguments
+* Return Values
+** 1
+*** ...
+** 0
+*** ...
+** Undefined
+*** ...
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-power_off{anchor:power_off}"></a>
+## power_off {anchor:power_off}
+
+* Description
+** A provisioning module's power_off() subroutine is responsible for
+powering off or down a node.
+* Expected Beginning State
+** ...
+* Expected Ending State
+** ...
+* Called By
+** ...
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of a
+provisioning&nbsp;object ($provisioner->pre_capture())&nbsp;
+** No Arguments
+* Return Values
+** 1
+*** ...
+** 0
+*** ...
+** Undefined
+*** ...
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-power_on{anchor:power_on}"></a>
+## power_on {anchor:power_on}
+
+* Description
+** A provisioning module's power_on() subroutine is responsible for
+powering on a node.
+* Expected Beginning State
+** ...
+* Expected Ending State
+** ...
+* Called By
+** ...
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of a
+provisioning&nbsp;object ($provisioner->pre_capture())&nbsp;
+** No Arguments
+* Return Values
+** 1
+*** ...
+** 0
+*** ...
+** Undefined
+*** ...
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-get_current_image{anchor:get_current_image}"></a>
+## get_current_image {anchor:get_current_image}
+
+* Description
+** A provisioning module's get_current_image() subroutine is responsible
+for trying to figure out what image is loaded on the node. By reading
+currentimage.txt located on the node's in root's user directory. This
+routine can be copied from another module.
+* Expected Beginning State
+** The node is expected to be online and accessible.
+* Called By
+** node_status()
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of a
+provisioning&nbsp;object ($provisioner->pre_capture())&nbsp;
+** No Arguments
+* Return Values
+** 1
+*** ...
+** 0
+*** ...
+** Undefined
+*** ...
+
+<a name="ProvisioningEngineModuleInterfaceSpecification-get_image_size&nbsp;{anchor:get_image_size}"></a>
+## get_image_size&nbsp;{anchor:get_image_size}
+
+* Description
+** A provisioning module's get_image_size() subroutine is responsible for
+collected the disk usage of the image within the image library.  
+* Expected Beginning State
+** N/A
+* Expected Ending State
+** ...
+* Called By
+** ...
+* Arguments & Calling Environment
+** Must only be called as an object method&nbsp;of a
+provisioning&nbsp;object ($provisioner->pre_capture())&nbsp;
+** No Arguments
+* Return Values
+** 1
+*** ...
+** 0
+*** ...
+** Undefined
+*** ...

Added: vcl/site/trunk/content/confluence_export/save-the-image.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/save-the-image.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/save-the-image.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/save-the-image.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,43 @@
+Title: Save the Image
+When you're finished configuring the remote computer and are ready to save
+the image:
+1. Log off of the remote VCL computer
+1. From your own machine, return to the *Current Reservations* page on the
+VCL website
+1. Select *Create Image*
+1. Here you may have two options, select one of them and click *Submit*
+** Creating New Image - this creates a completely new image
+** Update Existing Image - if you are the owner of the image, you can
+select this option to simply create a new revision of the image. The rest
+of these steps do not apply if you use this option. [More information about updating an existing image](updating-an-existing-image.html)
+1. Enter a name for the new image. Keep it simple. It is a good idea to name
+it based off of the main applications installed or how the image will be
+used (i.e. if it is for a specific class, you could use the course number
+as the name). The image name is displayed when a user makes a reservation
+and can be changed later if needed.
+1. Fill in an image description - you can explain more about the image here.
+This information is displayed on the *New Reservations* page under the
+drop-down box for selecting the image.
+1. Optionally, fill in Usage Notes. If you would like to give users of the
+image some instructions about how to use the image, enter them here. This
+is displayed on the *Connect!* page so that users will see it right before
+they connect to the image.
+1. Optionally, fill in Revision Comments. This is just a place where you can
+enter notes for yourself. You can enter anything here, but these are some
+suggestions:
+** list of applications installed
+** any special steps you had to take to get an application to install
+** if there is licensed software installed, when the license expires
+** whether or not you installed system or software updates
+1. You can usually leave the [Advanced Options](advanced-image-options.html)
+ alone
+1. Click *Confirm Image*
+1. Double check what was entered, then click *Add Image*
+1. You will then be presented with an Installer Agreement. If you agree to
+it, click *I agree* to start the imaging process
+
+
+The imaging process takes roughly 20-25 minutes to complete. Afterward, you
+should receive an email saying your image is ready for testing
+(occasionally, if there is a lot of software installed in the image or if
+the system is extremely busy, this can take as long as 90 minutes).

Added: vcl/site/trunk/content/confluence_export/security-features.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/security-features.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/security-features.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/security-features.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,24 @@
+Title: Security Features
+Baseline VCL security for the end-user environments:
+* The VCL environments are not generally shared. One user to one machine.
+* After an environment is used - the machine is reloaded(sanitized) with
+the same or another golden environment. All residual data is destroyed or
+overwritten during the reload process.
+* Images can be setup to allow the user to have either administrative
+access or unprivileged access by using the image profile meta-data. This is
+on a per image basis.
+* When users hit the 'Connect' button on the vcl web portal. Their incoming
+IP address is captured and used as the scope for the windows OS firewall.
+The linux OS makes use ssh configuration settings.
+* Default access methods: Windows is Remote Desktop Connection, Linux is
+ssh (secure shell).
+* Unless VCL environments are tied into enterprise identity management
+service. The VCL environments are configured with a one-time use password
+for the session and only for that active session. For each additional
+reservation a new session password is generated. NOTE: This only applies to
+the VCL environments and not with the VCL web portal.
+
+Additional security measures depend on how the images are created, such as
+windows group policies, SELinux settings for Linux based environments, VPN,
+and network level firewalls within the infrastructure where the VCL
+machines resides. 

Added: vcl/site/trunk/content/confluence_export/states.mdtext
URL: http://svn.apache.org/viewvc/vcl/site/trunk/content/confluence_export/states.mdtext?rev=1430372&view=auto
==============================================================================
--- vcl/site/trunk/content/confluence_export/states.mdtext (added)
+++ vcl/site/trunk/content/confluence_export/states.mdtext Tue Jan  8 16:37:53 2013
@@ -0,0 +1,79 @@
+Title: States
+<a name="States-RequestStates"></a>
+## Request States
+
+<table>
+<tr><th> Request State </th><th> Processed by Module </th><th> Description </th></tr>
+<tr><td> new </td><td> new.pm </td><td> * Normal reservation initiated by user
+</tr>
+* Computer is reloaded if image specified for reservation is not preloaded
+* User account is added to computer |
+<tr><td> reload </td><td> new.pm </td><td> * Reservation only reloads computer
+</tr>
+* Computer is reloaded if image specified for reservation is not preloaded
+|
+<tr><td> tomaintenance </td><td> new.pm </td><td> * Simply changes the computer state to
+maintenance
+</tr>
+* Initiated from Manage Computers page when computer state is changed to
+maintenance |
+<tr><td> tovmhostinuse </td><td> new.pm </td><td> * Computer is reloaded with image specified in
+the VM profile. If using xCAT or some other physical provisioning engine. 
+</tr>
+* Computer state is set to vmhostinuse after it has been reloaded |
+<tr><td> reserved </td><td> reserved.pm </td><td> * User account is added to computer
+</tr>
+* Computer state is set to reserved
+* Computer is polled for user connection for approximately 15 minutes |
+<tr><td> inuse </td><td> inuse.pm </td><td> * Request enters inuse state after&nbsp;user
+connection has been detected
+</tr>
+* Periodically polls computer for user connection
+* If user connection isn't detected for approximately 15 minutes, request
+state is changed to timeout
+* Notifies user when reservation end time is approaching |
+<tr><td> timeout </td><td> reclaim.pm </td><td> * Occurs if user never connects to computer or if
+inuse state detected that the user was disconnected for approximately 15
+minutes
+</tr>
+* Computer is reloaded if the user ever connected
+* Computer is sanitized if the user did not connect (user account removed
+from computer) |
+<tr><td> deleted </td><td> reclaim.pm </td><td> * Occurs when a user clicks the End button
+</tr>
+* Computer is reloaded if the user ever connected
+* Computer is sanitized if the user did not connect (user account removed
+from computer) |
+<tr><td> image </td><td> image.pm </td><td> * Occurs when a user makes an imaging reservation and
+clicks Create Image
+</tr>
+* Image is captured |
+<tr><td> makeproduction </td><td> makeproduction.pm </td><td> * Occurs when a user is the owner of
+an image and changes the production revision
+</tr>
+* At the current time, simply changes the production revision in the
+database (could potentially reload computers which have been loaded with
+the previous production revision in the future) |
+<tr><td> complete </td><td> vcld </td><td> * Occurs after another state is done but before a
+reservation is actually deleted from the database
+</tr>
+* Allows reservations to remain in the database until the end time is
+reached under certain conditions
+* If a reservation times out, it remains in the database until the end time
+is reached so that it is displayed on the user's Current Reservations page
+in order to notify that it timed out
+* Reservation is deleted from the database by vcld when its end time is
+reached |
+<tr><td> failed </td><td> None </td><td> * Occurs when a problem occurs with a reservation which
+wasn't in the image state </td></tr>
+<tr><td> maintenance </td><td> None </td><td> * Occurs when a problem occurs with a reservation
+which is in the image state capturing an image 
+</tr>
+* Used to place computers into a maintenance state, the system will not
+assign any resources in the maintenance state.
+* Also applies to management nodes. When a management node is in the
+maintenance state, the web schedule system will not assign any resources
+soley under that management node to end-user requests.|
+<tr><td>pending </td><td> none </td><td> * Used as a transition or processing state. Set when a
+management node starts working on the request.
+</tr>



Mime
View raw message