VCL 2.3 was release on July 20th, 2012

Table of Contents

Please make sure to download VCL from a mirror server. The following link will automatically select one for you that should be close to you. After downloading it make sure you verify it with MD5 or SHA1 sums AND the GPG signature (sums and signature files should be downloaded directly from Apache, not from mirrors).

Download ASF VCL 2.3
GPG Signature
MD5 Sum
SHA1 Sum

  1. Verify the MD5 sum (output should be "apache-VCL-2.3.tar.bz2: OK"):

    md5sum -c apache-VCL-2.3.tar.bz2.md5

  2. Verify the SHA1 sum (output should be "apache-VCL-2.3.tar.bz2: OK"):

    sha1sum -c apache-VCL-2.3.tar.bz2.sha1

  3. Verify the GPG signature (you'll need to have GnuPG installed):
    1. download and import the VCL KEYS file (if you've imported the KEYS file for previously releases, you do not need to import it again):

      gpg --import KEYS

    2. download the GPG Signature to the same location as the release file
    3. from the directory containing both the release file and the GPG signature, run

      gpg --verify apache-VCL-2.3.tar.bz2.asc

  4. For new installs, visit the on-line installation guide.
  5. For upgrades, visit the on-line guide for your installed version (you can find your version number after the Apache license header in vcl/index.php in the web code - i.e. "ASF VCL 2.2.1"):

Release Notes

I. Intro and Description

VCL, Virtual Computing Lab. The VCL can be many things, first and foremost it is an open-source system used to dynamically provision and broker remote access to a dedicated compute environment for an end-user. The provisioned computers are typically housed in a data center and may be physical blade servers, traditional rack mounted servers, or virtual machines. VCL can also broker access to standalone machines such as a lab computers on a university campus.

One of the primary goals of VCL is to deliver a dedicated compute environment to a user for a limited time through a web interface. This compute environment can range from something as simple as a virtual machine running productivity software to a machine room blade running high end software (i.e. a CAD, GIS, statistical package or an Enterprise level application) to a cluster of interconnected physical (bare metal) compute nodes.

Also using the scheduling API it can be used to automate the provisioning of servers in a server farm or HPC cluster.

The release supports provisioning compute nodes using

  • xCAT 1.3 and 2.x
  • VMware Server 1.x and 2.x
  • VMware ESX 3.5
  • VMware ESXi 4.x and 5.x
  • VMware vCenter
  • KVM
  • Virtual Box

II. VCL Roadmap

VCL 2.3 (this release)

  • Service deployments
  • Allow for additional connect methods for environments (port, other protocols, etc)
  • Added framework support for libvirt
  • Added support for KVM
  • Added support for OS X under ESX
  • Added support for VMware VCenter
  • Added multilingualization to frontend

VCL 2.4

  • Improve additional connect methods
  • NAT support
  • Remove requirement for 2 NICs
  • Support for Spice remote display protocol
  • Scripted installation
  • Support for ESX OS for end users
  • Initial support for EC2 API and OpenStack

VCL 2.5

  • Power management
  • Improve cluster reservations
  • Service deployment configuration management
  • Initial support for Libcloud

VCL 2.6

  • develop tools for managing both system and user storage

With each release, we'll be working toward making VCL easier to install. As part of our move to development at the Apache Software Foundation, it is an obvious goal to create a community of users and more developers around VCL. Bringing in more developers should become easier as VCL becomes easier to install.

III. Getting Involved in the ASF VCL Community

There are five ways to become involved in the ASF VCL community.

  • Submit bug reports and feature requests to our JIRA bug tracking system. See section IV below for more information on doing this.
  • Create documentation on our Confluence site. Create an account at and just start adding content. (Note to current community: We should create a page explaining the layout so new people will know where to add content better.)
  • Submit patches through the vcl-dev mailing list and via the JIRA bug tracking system. Once you have become familiar with VCL, you can begin assisting with the development of it by picking a JIRA issue to fix or by adding a feature needed at your site. Then, contribute a patch of your changes through the JIRA tracking system and send a message to the vcl-dev list explaining what you have done.
  • Become an official committer to the project. Once you have shown that you have a good grasp of the project by submitting patches, you can further join the development work by submitting a contributor license agreement (CLA) to ASF and having a committer account created to directly contribute code to the project.
  • If you are interested in contributing something to the project, please discuss it on the vcl-dev list BEFORE starting work on it. This allows the community to be involved in decisions and allows current developers to provide some guidance.

IV. How to Submit Bugs and Feature Requests

If you find a bug, please submit a bug report to our JIRA bug tracking system at (you will need to set up an account there if you haven't already done so - it's free to anyone). Also, we would appreciate it if you mentioned that you filed a bug on the vcl-dev list to make sure we don't miss it.

If you would like to requrest a new feature, you can also submit that in the same way through JIRA (just select "New Feature" or "Improvement" as the Issue Type). Again, it would be helpful if you mentioned that you filed a feature request on the vcl-dev list.

After you have created a JIRA issue, you have the option to vote on it to help us know how to prioritize issues. You can also "watch" the issue to see when activity related to it is submitted.

Change Log

Release Notes - VCL - Version 2.3


  • [VCL-319] - API LDAP authentication problem with servers where DN must be looked up
  • [VCL-339] - Add the KVM support for VCL
  • [VCL-419] - allow private IP address to be set and modified for computers


  • [VCL-114] - catch-22 with new installs for creating a vmprofile
  • [VCL-154] - run_scp_command() is not catching some errors
  • [VCL-192] - - does_image_exist routine
  • [VCL-225] - no user groups to select from when adding a new user group
  • [VCL-230] - duplicate entries created in userpriv table
  • [VCL-297] - Windows code is using the private IP address from the database rather than the hosts file
  • [VCL-328] - shibboleth sp logout URL not using SSL
  • [VCL-342] - problem selecting image revision id when making a cluster reservation with identical subimages
  • [VCL-344] - local admin account make sure has full access
  • [VCL-345] - check for whitespace in add computers IP address field
  • [VCL-348] - Setting privileges in web gui – Slightly broken
  • [VCL-387] - xcat 1.3 getmac regex not account for A-F
  • [VCL-396] - vmprofiles displayed as 'Array' when changing a computer to vmhostinuse on computer utilities
  • [VCL-400] - virtual hosts page shows all unassigned vms instead of checking which ones the user can access
  • [VCL-420] - Linux code not setting static IP address correctly
  • [VCL-422] - Windows image capture may hang when cleanmgr.exe is executed or the utility may not be installed
  • [VCL-427] - for block allocations, setting the managing user group to none means no one can edit it if a normal user created it
  • [VCL-429] - Windows code does not always detect the correct public network interface
  • [VCL-433] - new revisions can be captured of kickstart images
  • [VCL-447] - Notice: Uninitialized string offset: 0 in .../vcl/.ht-inc/utils.php on line 3206
  • [VCL-452] - get_file_size does not handle thinly-provisioned files correctly
  • [VCL-456] - groupwasnone variable is not properly initialized
  • [VCL-458] - $virtual undefined in utils.php line 3678
  • [VCL-464] - SSH password authentication not enabled for Linux images
  • [VCL-466] - Support for Cygwin 1.7
  • [VCL-467] - Members of a group from one affiliation have access to groups with the same name from other affiliations
  • [VCL-468] - health_check update
  • [VCL-469] - may fail to return public IP address if the same interface also has a non-public IP address bound
  • [VCL-470] - The vSphere module does not implement the get_total_space subroutine
  • [VCL-471] - Problem copying vmware files from a datastore to a management node using the vSphere API
  • [VCL-472] - fails if boot image mounts storage from a host other than the management node
  • [VCL-473] - query in findManagementNode in utils.php doesn't have conditional to join tables
  • [VCL-474] - recent versions of mysql don't accept double quotes to signify strings in where clauses
  • [VCL-475] - addShibUser in shibauth.php returns an array when it should be returning a user id
  • [VCL-476] - manage block allocation page may show incorrect next start time
  • [VCL-478] - Windows 6.x Sysprep code results in incorrect root password
  • [VCL-480] - XMLRPCproccessBlockTime can throw an error about VMhostCheck table already existing
  • [VCL-482] - scheduler does not order VMs properly when no VMs are preloaded with the selected image
  • [VCL-483] - RPC::XML fails with latest version of libwww-perl
  • [VCL-484] - Requests in the inuse and image states may be changed to failed
  • [VCL-486] - Measures against cross site scripting on the Login form
  • [VCL-487] - Problem in screen transition after successful login authentication
  • [VCL-488] - Injected user's UID is hardcoded
  • [VCL-492] - edit computer info for VM in maintenance state
  • [VCL-494] - Typo in testsetup.php
  • [VCL-500] - tomaintenance requests may start too early or fail if scheduled in the future
  • [VCL-501] - does not set the default gateway in the ifcfg file for statically assigned addresses
  • [VCL-507] - Deleted VMs appear in the list of unassigned VMs
  • [VCL-508] - Modifying reservations to overlap past max causes hang
  • [VCL-509] - error when adding computer with no groups selected
  • [VCL-510] - insert correct architecture in image table when adding new entry
  • [VCL-511] - Errors in vcl.sql connectmethodmap
  • [VCL-512] - does not determine correct block size for some versions of Linux
  • [VCL-519] - New-line control bug in an Edit Image page
  • [VCL-522] - Error in vcl.sql line 1694
  • [VCL-523] - Windows code does not set scheduled task credentials when changing user passwords
  • [VCL-524] - Windows get_network_configuration may return an empty hash
  • [VCL-529] - invalid IP addresses are marked as valid in the is_public_ip_address
  • [VCL-530] - Database field for computer.RAM is limited to 65535
  • [VCL-533] - error when trying to download dhcp data when private IP address was not entered
  • [VCL-534] - $cluster not reset in for loop in viewRequests
  • [VCL-536] - xCAT partimage and image_architecture x86_64
  • [VCL-540] - manageMapping not added to update-vcl.sql and vcl.sql files
  • [VCL-541] - Remove "return 0" from all subroutines which normally return an array or hash
  • [VCL-546] - does not determine the correct public interface name
  • [VCL-547] - removing site maintenance entry from .ht-inc/maintenance directory doesn't fully remove site from maintenance
  • [VCL-548] - server reservations not owned by a user count toward that user's overlapping reservation count
  • [VCL-549] - AJAX error when creating a new schedule
  • [VCL-556] - edit schedule groups code not doing permissions correctly
  • [VCL-558] - vcld_cron_check uses incorrect name of VCL Daemon
  • [VCL-563] - DHCP is not enabled during image capture
  • [VCL-567] - image profile page does not reflect owner change after changing the owner
  • [VCL-569] - Incorrect public IP address being used if value in database does not match computer's actual IP address
  • [VCL-573] - Reservations which alter default imagemeta values may affect other reservations
  • [VCL-574] - reinstall option not happening when detecting inuse state
  • [VCL-588] - Windows may retrieve network configuration before all network interfaces are initialized
  • [VCL-589] - Windows 7 and 2008 Sysprep not working


  • [VCL-82] - Add additional information to notify() messages
  • [VCL-92] - modify predictive loading algorithm level 1 to have 2 computers loaded with an image
  • [VCL-141] - allow users to delete images that are set as currentimage
  • [VCL-168] - Windows Media Player shortcut gets added to desktop for all users
  • [VCL-219] - Improve VMware disk cleanup - add checks for reservations
  • [VCL-234] - give error when block reservations requests more resources than concurrent use of image
  • [VCL-236] - make Groups first tab on Manage Computers page
  • [VCL-249] - denote which management node fields are required
  • [VCL-276] - log Block reservation data
  • [VCL-311] - add more fields to edit computer page
  • [VCL-313] - need a way to set computers as vmhosts without a bare metal provisioning engine
  • [VCL-321] - user lookup tool doesn't show user group affiliation
  • [VCL-354] - View Computers Table - State Coloring
  • [VCL-358] - Improve VMware Windows image loading speed
  • [VCL-360] - Allow users to delete images preloaded on computers which aren't being used
  • [VCL-376] - mark imagerevisions deleted when user deletes image.
  • [VCL-379] - alert user if reservation has timed out when they click Connect or Get RDP File
  • [VCL-381] - Move firewall_compare_update to OS modules
  • [VCL-383] - make future reservations that would be part of a block allocation included in the block allocation
  • [VCL-384] - Remove MAC addresses from ifcfg-eth* files for Linux images during capture
  • [VCL-385] - Hide noimage from showing in the list of images in Edit Image Profiles
  • [VCL-390] - Prevent auto-generated or invalid public IP address from being displayed to user
  • [VCL-391] - Windows Server 2003 shutdown and reboot fails
  • [VCL-393] - Handle Windows computers going to sleep
  • [VCL-398] - make block allocations tie up concurrent usage of image
  • [VCL-402] - Login screensaver not needed for VMs
  • [VCL-404] - Prevent and/or remove color code escape characters from SSH output
  • [VCL-407] - Add makesshgkh check in
  • [VCL-408] - Imaging reservations that fail very early on may not be put into the maintenance state
  • [VCL-410] - Update and improve script for VCL 2.3
  • [VCL-413] - Management node OS object
  • [VCL-418] - simplify adding LDAP authentication
  • [VCL-421] - Update Windows code to work with Cygwin 1.7
  • [VCL-423] - Suppress unnecessary warning messages from vcld.log
  • [VCL-432] - auto capture for imaging and long-term reservations
  • [VCL-435] - Add support for ESXi 4.1 scripted installs
  • [VCL-438] - allow new users to be added to VCL when shibboleth authentication is used without LDAP
  • [VCL-441] - getPossibleRecentFailures in isAvailable can end up removing only available machine
  • [VCL-444] - time delay the display of the Get RDP File button to allow vcld to grant access
  • [VCL-446] - End of reservation notices
  • [VCL-450] - Backend VMware improvements for 2.3 release
  • [VCL-453] - iptables
  • [VCL-455] - put alt text with a image generated by textimage.php
  • [VCL-460] - Send critical notification if KMS or MAK activation fails
  • [VCL-461] - Color depth is limited when connecting to Windows images via RDP
  • [VCL-462] - Remove Windows service pack installation files during image capture
  • [VCL-479] - remove dependency on mcrypt
  • [VCL-489] - allow dhcp and hosts info to be downloaded about computers any time instead of just when adding
  • [VCL-490] - restrict fields when adding computers
  • [VCL-491] - adding multiple computers - confusing error messages when incorrect count entered
  • [VCL-495] - Allow change of vmprofile for an active vmhost
  • [VCL-496] - does not implement a set_computer_private_ip_address subroutine
  • [VCL-497] - dedup eppn
  • [VCL-498] - simplify group time inputs
  • [VCL-499] - support for controlling VMware vCenter infrastructure through the vSphere SDK
  • [VCL-502] - allow aspects of automatic user groups to be managed through UI
  • [VCL-504] - Multiple critical messages are generated if inuse process fails to initialize
  • [VCL-505] - Dojo is slow to load, especially on pages with many ancillary class files
  • [VCL-506] - Retrieve accurate computer hardware specs and update the computer table
  • [VCL-513] - allow block allocation control per affiliation
  • [VCL-514] - decrease the number of queries done by the frontend
  • [VCL-515] - suggest available time when selection not available instead of showing time table
  • [VCL-517] - Linux udev net-persistent rule
  • [VCL-520] - Improving display control, on an detailed information of an image
  • [VCL-521] - An OS image named in japanese 2byte characters doesn't run
  • [VCL-528] - customizing image capture flow using vcl_exclude_list
  • [VCL-543] - OSX under ESXi 4.1
  • [VCL-544] - Linux systemd services
  • [VCL-553] - Make wait_for_reboot arguments consistent with other wait_* subroutines
  • [VCL-554] - Add check to image capture to determine if user shutdown computer
  • [VCL-557] - xCAT2 reset node to boot state on DESTROY
  • [VCL-565] - Convert code which directly accesses $ENV{management_node_info}
  • [VCL-575] - Improvements to
  • [VCL-578] - Improve how inuse reservations which aren't responding to SSH are handled

New Feature

  • [VCL-30] - additional user access methods for connecting to reserved compute node
  • [VCL-323] - ESX provisioning modules - based on snapshots
  • [VCL-367] - make Connect and Get RDP File buttons check for reservation being timed out
  • [VCL-399] - add a dashboard where admins can see current state of VCL system
  • [VCL-417] - Provisioning module for VirtualBox
  • [VCL-463] - add ability to deploy images as servers
  • [VCL-477] - add caching of statistics data
  • [VCL-485] - Multilingualization of Web UI
  • [VCL-527] - Allow users to reinstall newer revisions
  • [VCL-545] - Libvirt Provisioning Module
  • [VCL-550] - Add post_reserve functionality to Windows code


  • [VCL-443] - update XMLRPC example to use API v2
  • [VCL-576] - Finalizing for 2.3 release
  • No labels