ASF VCL 2.5.1

Dependency changes:

VCL Management Node:
* updated supported versions of CentOS and Red Hat

Release Notes - VCL - Version 2.5.1
            
** Bug
    * [VCL-1079] - Virtual Hosts page references Computer Utilities
    * [VCL-1080] - Wrong port can be delivered in RDP file
    * [VCL-1081] - UID conflict for admin user
    * [VCL-1082] - monitor_vcld.pl throws incorrect lastcheckin time exception after Daylight Savings Time Roles Back
    * [VCL-1083] - Data in shares mounted under Linux home directories may be deleted
    * [VCL-1093] - vSphere_SDK.pm:vm_unregister - failed to unregister VM:
    * [VCL-1100] - block allocation usage graph does not work correctly for allocations with a single time slot
    * [VCL-1103] - change vcldsemaphore.pid from smallint to mediumint
    * [VCL-1105] - Shibboleth authentication broken due to bug in getCryptKeyID
    * [VCL-1111] - statgraphcache table not correctly being used
    * [VCL-1113] - image capture for Windows system configured as domain controller fails
    * [VCL-1116] - use database hostnames for ad joined computers
    * [VCL-1117] - vcld fails to set fixed IP address for Linux server reservations if management node not set to static
    * [VCL-1119] - wrong day submitted for future reservations made in the evening
    * [VCL-1120] - image conversion from vmdk to qcow2 always done twice
        
** New Feature
    * [VCL-1112] - SSL Offload
        
** Improvement
    * [VCL-1041] - Customer facing email notifications are ugly
    * [VCL-1084] - set cache mode for libvirt VMs
    * [VCL-1085] - Configuring VCL Website to use custom port
    * [VCL-1089] - Change ping module to use Net::Ping::External
    * [VCL-1092] - Change installation script to install these RPM Perl Modules
    * [VCL-1094] - add .\ to windows user login to prevent automatic use of Microsoft accounts
    * [VCL-1095] - Move unjoining of Windows VMs from Active Directory to earlier in the deprovision process
    * [VCL-1096] - Add ability to automatically mount NFS shares under Windows
    * [VCL-1101] - Change chmod mode from string to octal number value
    * [VCL-1104] - set cpu topology for libvirt VMs
    * [VCL-1106] - make PHP code compatible with PHP 7
    * [VCL-1109] - date duplicated on statistic graph labels for day after daylight saving time rolls back
    * [VCL-1110] - expose maxinitial time for images in web UI
    * [VCL-1114] - miscellaneous small web updates
            
** Task
    * [VCL-1097] - add hidden files to empty directories to force them to be included in Git repo

================================================================================

ASF VCL 2.5

Dependency changes:

VCL web server PHP modules:
* removed php-gd

VCL Management Node:
* updated supported versions of CentOS and Red Hat

Added required Perl modules:
* Crypt::CBC
* Crypt::Rijndael

Release Notes - VCL - Version 2.5

** New Feature
    * [VCL-253] - Allow users to specify RDP port
    * [VCL-277] - Add support for images to join Active Directory domains
    * [VCL-867] - Active Directory Authentication for Windows VM's
    * [VCL-889] - Add vcl_post_load script support for Windows images
    * [VCL-893] - Add support for Windows 10 images
    * [VCL-915] - Add ability to automatically mount NFS share when user logs in
    * [VCL-919] - Allow customization of notification messages sent to users
    * [VCL-971] - Add support for Ubuntu's ufw firewall
    * [VCL-972] - Add support for firewalld
    * [VCL-1000] - Run custom scripts at various stages on the management node
    * [VCL-1010] - Support for Windows 10 and Windows Server 2016 images

** Improvement
    * [VCL-796] - Prohibit tomainteance reservations from being created at end of indefinite server reservations
    * [VCL-807] - indicate timezone on schedules / reservations
    * [VCL-808] - vcld allows user values that contain HTML which is not cleaned on web interface
    * [VCL-833] - Improve consistency and grammar of website
    * [VCL-843] - Remove "VM limit"
    * [VCL-851] - Prevent warning in vcld.log if vSphere SDK is not installed
    * [VCL-853] - Reservations fail if vSphere SDK is used, host contains a resource pool and resource path is not configured in VM profile
    * [VCL-860] - Linux.pm's create_user silently fails if vcl group does not exist
    * [VCL-862] - Tag loaded image when request is reserved, inuse, or modified in any way other than a normal reload
    * [VCL-865] - Remove all calls to defined(@array)
    * [VCL-879] - Add semaphore to iptables commands
    * [VCL-882] - Add Portuguese translation to web UI
    * [VCL-887] - Clean up backend code
    * [VCL-890] - Add button to reload table contents on Edit Computer Profile page
    * [VCL-894] - Add reservation history and current reservation information to Computer Profiles page
    * [VCL-896] - Improve method to set Linux hostname
    * [VCL-897] - Simplify arguments accepted by grant_root_access subroutines
    * [VCL-899] - Add request ID and management node to reservation history on User Lookup page
    * [VCL-905] - VMware code should ignore files under .snapshot directories
    * [VCL-906] - VMware code fails to delete dedicated virtual disk directory for server reservations
    * [VCL-907] - reload reservations page content soonish after Connect is clicked when reservation is in reserved state
    * [VCL-910] - Improvements to vcld -setup's VMware datastore cleanup functions
    * [VCL-911] - Ensure qcow2 images are saved in backwards compatible format
    * [VCL-920] - Increase timeout in KVM.pm's copy_virtual_disk subroutine
    * [VCL-923] - Rework monitor_vcld.pl script to allow it to work with newer init daemons
    * [VCL-930] - Update phpmyadmin.sql to use double-underscores in pma__table_info table
    * [VCL-934] - Warnings generated in vcld.log for server requests because frontend isn't inserting 'initialconnecttimeout' computerloadlog entry
    * [VCL-935] - modify layout of edit image dialog to distinguish what items are immediately changed
    * [VCL-937] - Increase max length of duration limited images from 45 days to 20 weeks
    * [VCL-938] - Add a count of computers listed in the table on the Edit Computer Profiles page
    * [VCL-946] - add image revision to manage computers page
    * [VCL-947] - for block allocation accept/reject emails change sender address from ENVELOPESENDER to HELPEMAIL
    * [VCL-948] - add admingroup and logingroup to reservation data displayed when looking up reservations on computers
    * [VCL-949] - userlookup page - add vmhost to reservation history; add list of reservations user has access to but doesn't own
    * [VCL-950] - use web notifications to alert when a reservation is ready
    * [VCL-952] - API modifications to allow interaction via "VCL go" iOS app
    * [VCL-956] - display reservation times in user's own timezone
    * [VCL-957] - Update Linux pre-capture tasks
    * [VCL-958] - Windows.pm sets currentimage.txt post_load status too early
    * [VCL-961] - VCL may clobber custom network configurations on Linux images
    * [VCL-963] - ManagementNode.pm::execute should be update to accept same hash reference argument as OS.pm::execute
    * [VCL-964] - Allow default "from" email address to be set if affiliation.helpaddress is NULL
    * [VCL-965] - util.pm::kill_child_processes is using outdated pgrep arguments
    * [VCL-966] - Ubuntu not detecting SysV-controlled services if chkconfig is not installed
    * [VCL-967] - Libvirt provisioning does not allow virtual network name to be specified in the VM host profile
    * [VCL-969] - Disable firstboot service for Linux images
    * [VCL-976] - user_password_length and user_password_spchar not in default schema
    * [VCL-977] - VMware may fail to register VM if existing invalid VM is registered
    * [VCL-979] - install script - prompt for timezine during installation
    * [VCL-980] - add KMS server configuration to Site Configuration page
    * [VCL-981] - Create a New Theme That Is More Responsive for Mobile Devices
    * [VCL-984] - Add support for vcld daemon controlled by systemd
    * [VCL-987] - Extend xCAT.pm to attempt to locate a suitable alternate Kickstart image repository directory
    * [VCL-999] - Rework UnixLab.pm
    * [VCL-1005] - allow dashes in image names
    * [VCL-1006] - Performance Improvements for 2.5
    * [VCL-1008] - Extend libvirt/KVM modules to use device settings from captured VM
    * [VCL-1009] - addition of es_CR translation
    * [VCL-1013] - Modernize parts of Windows code
    * [VCL-1021] - restrict deleting newimages and newvmimages computer groups
    * [VCL-1025] - Update naming convention for VMware VMs
    * [VCL-1026] - Improve VMware code's ability to select the proper guest OS
    * [VCL-1027] - External SSH service under systemd fails to restart if several restarts are rapidly attempted
    * [VCL-1029] - add a section for managing affiliations to Site Configuration
    * [VCL-1030] - use sitewwwaddress from Global affiliation in user email messages if specific affiliation has a NULL value
    * [VCL-1031] - Update iptables.pm to be used for all iptables configuration
    * [VCL-1032] - VIM_SSH.pm::get_config_option_info very slow when using run_ssh_command
    * [VCL-1033] - Add corrective attempts if Windows fails to respond or does not obtain a public IP address
    * [VCL-1036] - Improve vcld.log output when transferring an image from another management node
    * [VCL-1042] - add max reservation times to user lookup information
    * [VCL-1045] - Method of encrypting sensitive database entries
    * [VCL-1052] - Prevent captures from failing if VM disk mode is 'dedicated' and the repository is not configured
    * [VCL-1056] - Add checks/workarounds in iptables.pm if command fails because another process holds an xtables lock
    * [VCL-1060] - VMware.pm generates warnings and critical message when checking for multiextent support under ESXi 6.5
    * [VCL-1061] - Unnecessary warnings in vcld.log for Ubuntu 16 images when checking services
    * [VCL-1062] - stop using Administrator account for Windows imaging reservations
    * [VCL-1064] - Show reservations being captured or in maintenance on Reservations page
    * [VCL-1069] - Allow Windows to update time regardless of skew
    * [VCL-1072] - VMware may incorrectly indicate power on failed

** Task
    * [VCL-968] - Localization updates for 2.5
    * [VCL-1024] - comment out Server Profile code

** Sub-task
    * [VCL-898] - Update schema to allow NULL request.logid
    * [VCL-1065] - update_cygwin.cmd script does not work correctly if computer is joined to Active Directory

** Bug
    * [VCL-809] - Information disclosure when accessing page you don't have access to
    * [VCL-846] - Improve flow of handling nodes for deleted reservations assigned to new reservations
    * [VCL-861] - Web timetable endless loop
    * [VCL-864] - selecting the first image id from the user's set of images can give an error when the user has no access to images
    * [VCL-866] - makeproduction state isn't handled correctly if inuse process is running
    * [VCL-868] - OS.pm::wait_for_no_ping uses computer's hostname, change to use IP address
    * [VCL-870] - Synchronize foreign keys and other items between vcl.sql and update-vcl.sql
    * [VCL-871] - OS.pm::create_text_file fails if content is too long
    * [VCL-872] - Computer notes not saved when changing state from vmhostinuse to maintenance
    * [VCL-873] - Allow web UI "User Preferences" to handle multiple SSH identity keys
    * [VCL-874] - change reloading state sooner in load process
    * [VCL-875] - Management node loses SSH access if iptables multiport rule exists
    * [VCL-877] - libvirt provisioning module fails to process checkpoint state correctly
    * [VCL-878] - Delayed checkpoint attempts are not displayed on web UI Dashboard page
    * [VCL-880] - Issues with clean_iptables in Linux.pm
    * [VCL-881] - Schedules cannot be deleted from web UI
    * [VCL-883] - KVM provisioning module fails to capture Windows 8.x images
    * [VCL-884] - Windows.pm fails to set computer hostname
    * [VCL-885] - Windows.pm::sanitize_files doesn't remove password if default changed since capture
    * [VCL-886] - xCAT.pm generates "defined(@array) is deprecated" warnings
    * [VCL-888] - Web UI fails to handle translations containing single quotes
    * [VCL-892] - $authtype gets undefined when clearselection submitted to selectAuth
    * [VCL-900] - Empty error box displayed on computer page with private DHCP and invalid server IP
    * [VCL-901] - Cannot enter preferred name under user preferences if have reservation and custom RDP port set
    * [VCL-908] - Image owner string is not validated when creating a new image
    * [VCL-909] - get_random_mac_address in utils.pm may generate the same mac for VMs
    * [VCL-913] - VCL KVM Libvirt provisioning module does not check length of the image's name when create an new image
    * [VCL-914] - VCL web utils.pm may block NCCU access
    * [VCL-916] - Linux.pm get_total_space and get_available_space may generate undefined array reference warnings
    * [VCL-918] - Site Config page uses wrong variable key for nat port range
    * [VCL-921] - changing owner of an image can cause a duplicate key error on resourcegroupmembers
    * [VCL-922] - Windows.pm logoff_users may generate undefined array reference errors
    * [VCL-924] - Commands may hang on management node if it has an unavailable NFS share
    * [VCL-928] - Reference vmx file not saved during image capture if vmprofile.vmdisk = dedicated and repository is mounted on host
    * [VCL-929] - VMware.pm does not parse hardware version from .vmdk file correctly
    * [VCL-932] - delete reservation from View Time Table does not work
    * [VCL-936] - cannot update management node sysadmin or shadow email addresses
    * [VCL-939] - VMware VM may be unassigned from a host if it is still running
    * [VCL-940] - timing issue getting public IP
    * [VCL-941] - Reservation may fail and be reloaded if reboot fails
    * [VCL-943] - Deep recursion on subroutine VCL::utils::get_vmhost_info
    * [VCL-944] - typo in getUserResources prevents access to management nodes and groups
    * [VCL-951] - suggested times not displayed for parent image of clusters when making imaging reservation
    * [VCL-953] - Ubuntu.pm clobbers /etc/network/interfaces even if listed in vcl_exclude_list
    * [VCL-962] - Scheduled task password fails to get set for Windows 10
    * [VCL-970] - Linux images lose default gateway when rebooted if static public IP address is used
    * [VCL-974] - VMware VMs may fail to power on if host does not support nested VMs
    * [VCL-975] - End user notification intervals being ignored in inuse.pm
    * [VCL-982] - VIM_SSH.pm:_get_vm_virtual_disk_file_layout fails to parse output
    * [VCL-983] - Manage computers does not update "Computers in table" count after "Refresh Computer Data" is clicked
    * [VCL-985] - login page and change locale form use continuations when user is logged out
    * [VCL-988] - KVM libvirt provisioning module colon char in domain name Error starting domain: Invalid machine name
    * [VCL-989] - Adding ext_sshd service fails Ubuntu 16 images
    * [VCL-992] - ext_sshd service occasionally fails to restart under systemd
    * [VCL-993] - web code should handle user.IMtypeid being NULL
    * [VCL-995] - Unable to change server reservation name if schedule no longer available
    * [VCL-996] - Linux firewall subroutines do not sort rule numbers correctly
    * [VCL-1001] - changing a future reservation to a now reservation doesn't properly update the reserved computer
    * [VCL-1004] - Illegal division by zero VMware.pm::copy_vmdk
    * [VCL-1022] - API function XMLRPCgetRequestConnectData shows Administrator account for all imaging reservations
    * [VCL-1023] - Cluster reservations may fail to copy an image if assigned to multiple VM hosts sharing a datastore
    * [VCL-1034] - Lab.pm does not handle preload reservations correctly
    * [VCL-1035] - selecting Manage Images->Create/Update an Image doesn't work
    * [VCL-1038] - Wrong OS module used if NAT host image is noimage
    * [VCL-1043] - utils.pm::kill_child_processes generates warnings if ps line begins with a space
    * [VCL-1044] - getVariable returns wrong value if $incparams == 1 and variable has been set in $_SESSION['variables']
    * [VCL-1048] - NAT rules not always deleted when a reservation ends
    * [VCL-1050] - Adding a new user group doesn't include the affiliation of the default owner
    * [VCL-1051] - Backend is not checking for 'checkpoint' state everywhere it checks for 'image state
    * [VCL-1054] - Windows.pm user_exists may return true when user doesn't exist
    * [VCL-1055] - 'Use of uninitialized value in lc' warning may be generated from a few subroutines
    * [VCL-1057] - allManagementNodes is assigned available at the initial admin node
    * [VCL-1058] - User accounts not deleted on computer when removed from a server request admin or access group
    * [VCL-1059] - AllowUsers lines getting removed due to sequencing issue
    * [VCL-1063] - editing a future reservation to have a start time that is in the past should not be allowed
    * [VCL-1066] - Checkpoint image capture fails to set request state back to reserved
    * [VCL-1068] - Windows fails to update scheduled task password if password contains some special characters
    * [VCL-1073] - Linux.pm::reboot may fail because it doesn't detect broken SSH connection during first attempt
    * [VCL-1075] - Newlines in image description not handled properly under Manage Images
    * [VCL-1076] - Unsetting Enable Image Library for a management node does not set the image library group to NULL
    * [VCL-1077] - Adding an AD Domain to the privilege tree with available or manageMapping set causes it to be added with no way to remove it

================================================================================

ASF VCL 2.4.2

Dependency changes:

No dependency changes for any components in this release.

Release Notes - VCL - Version 2.4.2

** Improvement
    * [VCL-850] - Prevent 3D video from being enabled by default in VMware .vmx files
    * [VCL-859] - disable image creation for images with root access disabled

** Bug
    * [VCL-847] - Computer left in reserved state if user deletes cluster request
    * [VCL-849] - makeproduction state not processed correctly for cluster requests
    * [VCL-855] - JSON Perl module missing from install_perl_libs.pl
    * [VCL-856] - iptables.pm generates an error under old versions of Perl
    * [VCL-857] - admin access not granted if owner of server reservation in access user group
    * [VCL-858] - Image owner should have root access for imaging reservations

** Task
    * [VCL-845] - Remove blockRequest.admingroupid column

================================================================================

ASF VCL 2.4.1

Dependency changes:

No dependency changes for any components in this release.

Release Notes - VCL - Version 2.4.1

** Improvement
    * [VCL-842] - Warnings appear in vcld.log if managementnode.keys is not populated

** Bug
    * [VCL-841] - VMware.pm::configure_vmhost_dedicated_ssh_key may fail
    * [VCL-839] - Problems occur when "localhost" is used for a management node name
    * [VCL-836] - cluster_info file may contain incorrect IP addresses

================================================================================

ASF VCL 2.4

Dependency changes:

VCL web server PHP modules:
* removed php-sysvsem and php-process (only one of these was required, depending on platform)

VCL Database:
* MariaDB 5.0 or later now listed as a supported option

VCL Management Node:
* CentOS/RedHat Enterprise Linux 5.x no longer listed as supported

Required packages moved to required Perl modules:
* perl-Archive-Tar
* perl-CPAN
* perl-DBD-MySQL
* perl-DBI
* perl-Digest-SHA1
* perl-IO-String
* perl-MailTools
* perl-Net-Netmask
* perl-Net-SSH-Expect
* perl-RPC-XML
* perl-Text-CSV_XS
* perl-XML-Simple
* perl-YAML

Added required Perl modules:
* Frontier::Client
* LWP::Protocol::https
* JSON
* Mo:builder
* Time::HiRes
* perl-Crypt-OpenSSL-RSA

Removed required Perl modules:
* Crypt-SSLeay
* Devel-StackTrace
* Exception-Class
* HTML-Parser
* IO-Compress
* libwww-perl
* XML-Parser

Changes to Conditional Requirements

* dropped support for xCAT 1.3 for bare metal provisioning
* vSphere SDK - no longer needed for ESX/ESXi; still needed for vCenter
* additional modules for Jabber no longer listed (assumed to be pulled in as dependencies)

Release Notes - VCL - Version 2.4

** New Feature
    * [VCL-5] - multiple web servers
    * [VCL-170] - option to power off blades after reservation - new reload module
    * [VCL-174] - NAT Support
    * [VCL-178] - enable checkuser flag for per reservation instead of image only
    * [VCL-562] - Automatically disable user accounts known to be insecure stored in Windows images
    * [VCL-564] - Run custom scripts during various reservation stages
    * [VCL-580] - Add support for Fedora 16
    * [VCL-590] - Openstack Module
    * [VCL-593] - Documentation Links on VCL Home Page
    * [VCL-617] - new XML-RPC methods
    * [VCL-722] - OpenNebula module
    * [VCL-770] - Windows 8.x and Server 2012 Support
    * [VCL-771] - VMware ESXi 5.5 support
    * [VCL-783] - Add support for 64-bit cygwin
    * [VCL-810] - 2.4 install script

** Improvement
    * [VCL-16] - Enhance cluster reservation process
    * [VCL-50] - Moving machines from  Maintenance to VMhost INuse
    * [VCL-133] - poor flow of pages for new reservation that&#39;s not currently available for image owner with multiple revisions
    * [VCL-179] - image creation - confirm node is on
    * [VCL-229] - add something browser specific to continuations data
    * [VCL-237] - improve wording in error message about extending a reservation to overlap with a concurrently limited image
    * [VCL-280] - only fail computers for computer related failures
    * [VCL-289] - Consolodate image retrieval subroutines for provisioning modules
    * [VCL-291] - Move OS response checking from provisioning to OS modules
    * [VCL-322] - Add code to check that the static public address is set for all new/reload reservations, even if computer is not reloaded
    * [VCL-366] - as needed add throttling to new vmware modules
    * [VCL-374] - Set password requirements before attempting to set passwords during image capture
    * [VCL-392] - Add option to rename computer separate from Sysprep
    * [VCL-409] - Improvements to vcld -setup
    * [VCL-428] - Make get_*_info() subroutines consistent and improve queries
    * [VCL-430] - reservation extension can allow an invalid time to be submited
    * [VCL-442] - Reduce time between user clicking Connect and RDP being opened
    * [VCL-503] - Add timeout to hung SSH processes
    * [VCL-531] - additions to dashboard
    * [VCL-538] - time server option per management node
    * [VCL-552] - create an easy way to view deleted computers
    * [VCL-555] - need a way to give users access to add management nodes
    * [VCL-559] - convert pages with large tables to use dojo datagrids
    * [VCL-568] - refresh current reservations page 15 minutes after a reservation becomes available
    * [VCL-570] - Ubuntu support
    * [VCL-581] - check for whitespace in image name during image creation
    * [VCL-582] - Linux.pm remove rc.local dependence
    * [VCL-584] - Extend features of Server loads
    * [VCL-585] - Migrate time source variable to variable table
    * [VCL-586] - Remove code using imagemeta.usergroupid
    * [VCL-592] - honor user preference to only show user groups matching user&#39;s affiliation on server profile pages
    * [VCL-596] - privilege tree - image list bubble/pop-up shows deleted images
    * [VCL-604] - get_currentimage info - start using imageid and imagerevisionid instead of imagename
    * [VCL-605] - change labels for advanced options for VM images
    * [VCL-608] - XMLRPC interface inaccessible to Shibboleth-authenticated users
    * [VCL-636] - Allow vCenter folder to be specified in VM profile
    * [VCL-637] - linux updating hostname
    * [VCL-638] - Add support for vSphere distributed switch
    * [VCL-640] - block allocation fixes
    * [VCL-655] - Manage groups - create a default or none user group
    * [VCL-669] - ssh identity keys for end-users
    * [VCL-678] - Reduce unnecessary output written to vcld.log
    * [VCL-682] - Consolidate xCAT provisioning modules, retire xCAT 1.x support
    * [VCL-683] - Retire utils.pm::_sshd_status
    * [VCL-684] - Remove retrieve_user_data from DataStructure.pm
    * [VCL-685] - VMware improvements for VCL 2.4
    * [VCL-687] - Problems occur if /etc/issue.net is configured in Linux images
    * [VCL-690] - There is no default selection on Manage computer
    * [VCL-695] - Change newimages membership if image owner is changed via website
    * [VCL-696] - Improve resource group deletion options and information
    * [VCL-698] - Linux.pm delete_user may fail to detect network mounted home directory and to clean sudoers
    * [VCL-702] - Rework code to use new subroutines and objects &amp; general code cleanup for VCL 2.4
    * [VCL-703] - Delete home directory when Linux user is deleted
    * [VCL-711] - Move check_image_os from State.pm to xCAT.pm
    * [VCL-713] - Add ability to turn off certain types of logging in the database
    * [VCL-714] - HTML cleanup
    * [VCL-717] - Prevent multiple failed image creation messages being sent to user
    * [VCL-726] - Child processes are not killed when a vcld state process is killed
    * [VCL-727] - xCAT commands may timeout - make multiple attempts
    * [VCL-732] - disable user_connected checks for request &gt;= 24 hr
    * [VCL-734] - set requests to pending state earlier when processing
    * [VCL-744] - image retrieval can fail in some cases to find image across different management node
    * [VCL-748] - Linux.pm get_firewall_configuration  /etc/services
    * [VCL-751] - Linux.pm reserve create_user
    * [VCL-757] - partimageng script fails if computer has additional USB drive
    * [VCL-758] - VCL timings - make various timings to be variables and edited by admin
    * [VCL-759] - check user group access to image when creating block allocations
    * [VCL-760] - user based post reservation script
    * [VCL-763] - Add missing constraints to database tables
    * [VCL-764] - Database changes for VCL 2.4
    * [VCL-766] - Add message argument to image.pm&#39;s reservation_failed subroutine
    * [VCL-767] - Allow dynamic private IP addresses, remove /etc/hosts requirement
    * [VCL-769] - VMware vim-cmd fails if services fail
    * [VCL-772] - remove node_status from provisioning sub-modules
    * [VCL-773] - Dashboard View Update
    * [VCL-774] - _get_file_info is unnecessarily slow for vSphere provisioning
    * [VCL-776] - rework resource code to have a base class for all resources and inheriting classes for each resource type
    * [VCL-778] - add graph for seeing historical usage of block allocations
    * [VCL-779] - add method to dashboard for restarting failed imaging reservations
    * [VCL-780] - combine new reservation and current reservations pages
    * [VCL-781] - Add ability for provisioning modules to retrieve minimum hardware requirements for a particular OS
    * [VCL-782] - utils.pm update_request_state generated unnecessary critical messages
    * [VCL-797] - system admin setting for randomly generated passwords
    * [VCL-799] - cluster reservations - update OS firewall to allow nodes of cluster to communicate
    * [VCL-813] - Disable Windows &quot;Select a location for the network&quot; prompt
    * [VCL-814] - Reservation ready email should be sent as close as possible to when the Connect button appears
    * [VCL-816] - Nmap is very slow due to DNS
    * [VCL-817] - pgrep command arguments have changed with RHEL/CentOS 7.x

** Task
    * [VCL-457] - VCL new provisioning module: CCMP module (Provisioning virtual machines inside IBM Cloud)
    * [VCL-606] - viewdocs interface removal

** Sub-task
    * [VCL-122] - Reload reservations setting ending state for user request when it shouldn&#39;t
    * [VCL-647] - Warning generated if vmprofile.rsakey is not defined
    * [VCL-677] - xCAT2.pm displays &quot;Use of uninitialized value in concatenation&quot; warnings
    * [VCL-686] - vSphere_SDK.pm::_get_file_info slow
    * [VCL-798] - Password complexity

** Bug
    * [VCL-22] - run_ssh_command may produce unexpected results if invalid identity key path is specified
    * [VCL-27] - SQL statement error Level_1.pm
    * [VCL-60] - image copy lock file for shared image library
    * [VCL-86] - reserved.pm does not correctly check for user connection for Linux imaging standalone reservations
    * [VCL-144] - Imaging reservations may fail and not be put into maintenance if initialize() sub in State.pm fails
    * [VCL-308] - Computer load log does not account for images that have to be transferred to another management node
    * [VCL-560] - cleartext password stored in VMProfile table
    * [VCL-594] - xCAT changes
    * [VCL-607] - &#39;default&#39; skin hard-coded in initialization function when it should use the global DEFAULTTHEME
    * [VCL-610] - minor HTML errors
    * [VCL-613] - output from init.d startup scripts are slightly amiss
    * [VCL-619] - usenls may be undefined in _() function in requests.js
    * [VCL-623] - Invalid public IP address may be presented on Connect page
    * [VCL-624] - getUserlistID should be passed a user&#39;s full login string, not just a unityid
    * [VCL-627] - image type fields on VM Host Profile page do not get updated
    * [VCL-628] - check for duplicate image name not correctly performed when specified name is the same as the base image
    * [VCL-630] - currentimage.txt name may conflict with imagerevision name, causing unnecessary reloads
    * [VCL-646] - Ubuntu.pm doesn&#39;t set userid when creating a user account
    * [VCL-664] - hard coded references to &quot;Local Account&quot;
    * [VCL-665] - nmap routine output missing variable
    * [VCL-667] - Administrator is always passed as the userid in RDP files for imaging reservations, even if it is for xRDP
    * [VCL-668] - VMware fails to copy image under ESXi 5.1
    * [VCL-672] - privilege page does not handle user groups with the same name but different affiliations correctly
    * [VCL-673] - imaging reservation for an image with subimages prompts for revisions for each subimage
    * [VCL-676] - OS.pm::remove_lines_from_file not escaping characters correctly
    * [VCL-679] - utils.pm:get_computer_info using image.name to retrieve imagerevision info
    * [VCL-681] - Failure to detect if SSH is available on VMware - timed out during banner exchange
    * [VCL-688] - Image retrieval may fail to detect image residing on another management node
    * [VCL-691] - utils.pm::get_production_imagerevision_info fails if image name argument is not the production revision
    * [VCL-692] - server request and vcl_post_reserve
    * [VCL-693] - VCL Cluster Reinstall Fails
    * [VCL-694] - problem with conditional in editOrAddComputer - $data[&#39;compid&#39;] can be used when adding a computer
    * [VCL-697] - image capture state overwritten
    * [VCL-699] - Process may die if $self-&gt;mn_os isn&#39;t defined and get_computer_private_ip_address is called
    * [VCL-700] - tovmhostinuse requests may fail if automatic VM host provisioning isn&#39;t configured
    * [VCL-701] - Fedora 18 support
    * [VCL-704] - Changes in user preferences not applied until vcld is restarted
    * [VCL-707] - Improve ability to parse vcld.log
    * [VCL-712] - Ubuntu module checks for iptables service when it should be checking for ufw
    * [VCL-719] - add/edit resource group when no user groups to be listed
    * [VCL-723] - Chrome has problems with the Virtual Hosts-&gt;VM Host Profiles page
    * [VCL-725] - utils.pm run_command does not consistently return exit status
    * [VCL-729] - utils.pm::mail will display errors if $RETURNPATH is not defined
    * [VCL-730] - cannot update image revision comments under Edit Image
    * [VCL-731] - printSelectInput should match the image name instead of the id for the $skip argument
    * [VCL-733] - editing a block allocation recreates past block time entries
    * [VCL-735] - UnixLab.pm updates
    * [VCL-736] - notify user on console
    * [VCL-737] - reboot option can set reservation to failed
    * [VCL-739] - predictive module Level 1 not using computer.nextimageid
    * [VCL-740] - Deletion of Block allocations not removing reload reservations
    * [VCL-741] - a tomaintenance reservation can be created right after another tomaintenance reservation
    * [VCL-742] - server reservations cannot be modified if they cannot be extended
    * [VCL-743] - run_ssh_command fails if SSH key permissions are incorrect
    * [VCL-745] - Windows.pm user_logged_in does not check for imaging requests
    * [VCL-746] - Windows.pm get_service_configuration may hang
    * [VCL-747] - editOrAddGroup can have $ownerid undefined for add mode
    * [VCL-752] - block allocated nodes count toward max concurrent usage of image even for users in that block allocation
    * [VCL-754] - server reservation Admin access and User access user groups
    * [VCL-755] - Add &#39;if defined&#39; checks for all get_management_node_info calls
    * [VCL-756] - Run custom vcl_post_load scripts last
    * [VCL-761] - Incorrect repository path used for images retrieved from another management node for a KVM hypervisor
    * [VCL-765] - get_computer_ids may return deleted computers
    * [VCL-768] - Linux.pm&#39;s logoff_user displays a warning if the user is not logged in
    * [VCL-775] - Request may fail due to timing issue in computer_not_being_used and get_request_by_computerid
    * [VCL-793] - Repeated vcld processes are forked for &#39;deleted&#39; processes which fail to initialize
    * [VCL-794] - Make sure computer_not_being_used in new.pm always returns an explicit value
    * [VCL-795] - Request processes are continuously created after end time is reached if request state is &#39;inuse&#39; and process initialization fails
    * [VCL-800] - Reservations insert log.ending = failed when they shouldn&#39;t
    * [VCL-811] - server requests for owned user groups show up in reservation list
    * [VCL-812] - Windows is not always activated on load
    * [VCL-815] - Problems with update_cluster in OS.pm
    * [VCL-834] - Disable timeout for disconnected users is meaningless for imaging reservations

================================================================================

ASF VCL 2.3.2

Dependency changes:

No dependency changes for any components in this release.

Release Notes - VCL - Version 2.3.2

** Bug
    * [VCL-666] - Administrator is always passed as the userid in RDP files for imaging reservations, even if it is for xRDP
    * [VCL-671] - VMware may delete VM assigned to another reservation when reclaiming disk space on the host
    * [VCL-674] - problem adding a user group to the privilege with cascade checked
    * [VCL-675] - deleting a hierarchy of 3 or more privilege nodes throws an error

================================================================================

ASF VCL 2.3.1

Dependency changes:

No dependency changes for any components in this release.

Release Notes - VCL - Version 2.3.1

** Bug
    * [VCL-451] - Cannot add deleted computers
    * [VCL-603] - reboot hard does not work for hung windows machines
    * [VCL-607] - 'default' skin hard-coded in initialization function when it should use the global DEFAULTTHEME
    * [VCL-609] - Reservations fail if cat command returns non-zero exit status when retrieving contents of /etc/hosts on management node
    * [VCL-610] - minor HTML errors 
    * [VCL-613] - output from init.d startup scripts are slightly amiss
    * [VCL-616] - update_cygwin.cmd fails to generate keys with current version of Cygwin
    * [VCL-619] - usenls may be undefined in _() function in requests.js
    * [VCL-620] - libvirt.pm does not remove VMs when unassigned from host via website
    * [VCL-621] - confirm_public_ip_address does not detect public ip address correctly for reloads
    * [VCL-622] - reservation_failed Linux.pm Windows.pm
    * [VCL-623] - Invalid public IP address may be presented on Connect page
    * [VCL-624] - getUserlistID should be passed a user's full login string, not just a unityid
    * [VCL-625] - Image retrieval may attempt to copy multiple copies of the same file, does not retrieve VMware reference vmx file.
    * [VCL-626] - Name RDP file download after server reservation name
    * [VCL-627] - image type fields on VM Host Profile page do not get updated
    * [VCL-628] - check for duplicate image name not correctly performed when specified name is the same as the base image
    * [VCL-630] - currentimage.txt name may conflict with imagerevision name, causing unnecessary reloads
    * [VCL-631] - imagerevision.datedeleted not getting set
    * [VCL-632] - vSphere_SDK.pm set_file_permissions does not work
    * [VCL-633] - Change of vmprofile.vmdisk value can cause image capture to fail due to insufficient space
    * [VCL-634] - Cluster reservations fail if node_status returns POST_LOAD
    * [VCL-641] - VCL fails to properly trim whitespace from `virsh list --all`
    * [VCL-642] - colons should not be allowed in resource group names
    * [VCL-643] - VM Limit can be decreased to below the current number of assigned VMs
    * [VCL-648] - blockRequests re-processed at end time for skipped block time entries
    * [VCL-649] - Images may fail to load if renamed in database by VMware code
    * [VCL-650] - VCL breaks with PHP 5.4
    * [VCL-651] - libvirt to vmware entry missing from provisioningOSinstalltype table
    * [VCL-652] - xCAT nodeset failure 
    * [VCL-653] - editing a federated user group sets the affiliation of the group that of the user editing the group
    * [VCL-654] - Sysprep fails for 32-bit Windows 7
    * [VCL-656] - VIM_SSH.pm times out too early when removing snapshots from a VM
    * [VCL-657] - Prevent benign warning messages from appearing in vcld.log

** Improvement
    * [VCL-608] - XMLRPC interface inaccessible to Shibboleth-authenticated users
    * [VCL-615] - make default adminUsers group have the same level of access as the default admin user
    * [VCL-629] - update ownership of existing /home/$username 
    * [VCL-639] - server loads - reinstall
    * [VCL-640] - block allocation fixes

** New Feature
    * [VCL-617] - new XML-RPC methods

================================================================================

ASF VCL 2.3

Dependency changes:

Web frontend:
-removed dependency on mcrypt
-php-process - this is an added requirement only on RHEL/CentOS 6 because php semaphore locking was separated out into this package
-php-gettext - this was added for multilingualization

database:
-none

backend vcld:
-additional required perl modules:
  -perl-Net-SSH-Expect
-the following modules have been required for at least one previous release, but were not properly listed and are listed below for completeness
  -perl-CPAN
  -perl-DBI
  -perl-DBD-MySQL
  -perl-Digest-SHA1
  -perl-MailTools
  -perl-Net-Netmask
  -perl-RPC-XML
  -perl-XML-Simple
  -perl-YAML

Release Notes - VCL - Version 2.3

** Sub-task
    * [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

** Bug
    * [VCL-114] - catch-22 with new installs for creating a vmprofile
    * [VCL-154] - run_scp_command() is not catching some errors
    * [VCL-192] - xCAT21.pm - 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] - Linux.pm 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] - Windows.pm 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] - xCAT.pm 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] - Linux.pm 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] - Linux.pm 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] - OS.pm 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

** Improvement
    * [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 gen_node_key.sh
    * [VCL-408] - Imaging reservations that fail very early on may not be put into the maintenance state
    * [VCL-410] - Update and improve install_perl_libs.pl 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] - DataStructure.pm 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 OS.pm 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 gen-node-key.sh
    * [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

** Task
    * [VCL-443] - update XMLRPC example to use API v2
    * [VCL-576] - Finalizing for 2.3 release

================================================================================

ASF VCL 2.2.2

Dependency changes:

No dependency changes for any components in this release.

Release Notes - VCL - Version 2.2.2

** Bug
    * [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-348] - Setting privileges in web gui -- Slightly broken
    * [VCL-400] - virtual hosts page shows all unassigned vms instead of checking which ones the user can access
    * [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-456] - groupwasnone variable is not properly initialized
    * [VCL-458] - $virtual undefined in utils.php line 3678
    * [VCL-467] - Members of a group from one affiliation have access to groups with the same name from other affiliations
    * [VCL-473] - query in findManagementNode in utils.php doesn't have conditional to join tables
    * [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-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-486] - Measures against cross site scripting on the Login form
    * [VCL-487] - Problem in screen transition after successful login authentication
    * [VCL-492] - edit computer info for VM in maintenance state
    * [VCL-494] - Typo in testsetup.php
    * [VCL-507] - Deleted VMs appear in the list of unassigned VMs
    * [VCL-509] - error when adding computer with no groups selected
    * [VCL-510] - insert correct architecture in image table when adding new entry
    * [VCL-533] - error when trying to download dhcp data when private IP address was not entered
    * [VCL-547] - removing site maintenance entry from .ht-inc/maintenance directory doesn't fully remove site from maintenance
    * [VCL-549] - AJAX error when creating a new schedule
    * [VCL-556] - edit schedule groups code not doing permissions correctly
    * [VCL-674] - problem adding a user group to the privilege with cascade checked
    * [VCL-675] - deleting a hierarchy of 3 or more privilege nodes throws an error

================================================================================

ASF VCL 2.2.1

Dependency changes:

No dependency changes for any components in this release.

Release Notes - VCL - Version 2.2.1

** Bug
    * [VCL-113] - inconsistances with "None" user group
    * [VCL-116] - manage groups interface doesn't correctly handle user groups with editusergroupid set to NULL
    * [VCL-152] - problem removing vm from vmhost when vm in reloading state without a reservation
    * [VCL-361] - Error is displayed on pages showing image list if last used image is deleted
    * [VCL-395] - cannot add new vmprofiles
    * [VCL-397] - Hostname not set on Linux computers if DNS is not configured remotely
    * [VCL-411] - Legacy VCL logon and logoff scripts may not be deleted during capture causing immediate user logoff
    * [VCL-412] - clicking on tomaintenance reload reservation in timetable gives an error
    * [VCL-436] - Predictive Level_1 reload module - can select wrong image for computer
    * [VCL-437] - delete image/reservation bug
    * [VCL-439] - trailing commas in statistics.js keeps graphs from showing in IE on stats page
    * [VCL-440] - dashboard last 12 hours of reservations graph not positioned correctly in IE in compatibility mode

** Improvement
    * [VCL-140] - General variable table
    * [VCL-310] - remove jpgraph dependency
    * [VCL-312] - remove View Mode and any uses of user.adminlevelid
    * [VCL-373] - Enable Windows Server 2008 RDP audio - it's disabled by default
    * [VCL-394] - Backend VMware improvements for 2.2.1 release
    * [VCL-414] - modify XMLRPCaddUserGroup to accept a paramter specifying value for custom field
    * [VCL-424] - Remove unused variables from subroutines in backend modules
    * [VCL-425] - modify scheduler to be aware of RAM allocated to VMs on each VM host
    * [VCL-426] - modify scheduler to not give user same computer if user had very recent, short reservation and other computers are available

** New Feature
    * [VCL-232] - add way to delete multiple computers
    * [VCL-401] - add manageMapping resource attribute to control resource mapping
    * [VCL-403] - make the scheduler aware of image and machine types so that virtual and bare images and computers can be mixed
    * [VCL-405] - create provisioningOSinstalltype table to map provisioning methods to OSinstalltypes
    * [VCL-406] - add some charts to see how machines are allocated to block allocations

================================================================================

ASF VCL 2.2

Dependency changes:

Web frontend:
No dependency changes

database:
- none

backend vcld:
No dependency changes

Release Notes - VCL - Version 2.2

** Bug
    * [VCL-121] - special characters in API passwords not handled correctly
    * [VCL-150] - Pages do not display correctly with IE8
    * [VCL-154] - run_scp_command() is not catching permission denied errors
    * [VCL-158] - utils.pm setstaticaddress() does not work correctly for Windows
    * [VCL-159] - xCAT.pm is not always waiting long enough for ssh to respond on load
    * [VCL-160] - Sysprep is overwriting DevicePath key after spdrvscn.exe runs
    * [VCL-165] - Fix syntax bugs cause reservation processes to die
    * [VCL-181] - VCL desktop request tool - use API to make reservations
    * [VCL-189] - cannot add a computer in maintenance state
    * [VCL-193] - IP address field not large enough for 15-characters
    * [VCL-194] - Marking new computer to be "maintenance" status causes indexing error
    * [VCL-197] - _is_user_added routine 
    * [VCL-210] - getdynamicaddress returns 127.0.01 for missing public adapter
    * [VCL-214] - Windows modules don't always disable autoadminlogon
    * [VCL-215] - reservation_failed sub in State.pm may change state of computer currently in maintenance
    * [VCL-220] - VMs in the available state which aren't assigned to a VM host may be reserved
    * [VCL-221] - Add check to make sure post_load tasks have run before reserving a computer
    * [VCL-227] - deleting user group that owns a resource group
    * [VCL-233] - all calls to simpleAddRequest need to check for all return codes
    * [VCL-241] - detailed loading summary does not compute times correctly for future reservations that are preloaded
    * [VCL-242] - currentimage.txt permissions incorrect set
    * [VCL-245] - esx.pm - always reloads 
    * [VCL-250] - authentication for XML RPC X-User doesn't properly check to see if no authtype was found
    * [VCL-258] - cluster loads - cluster_info file
    * [VCL-260] - Problems occur if root is not the owner of /home/root for Windows images
    * [VCL-261] - Windows.pm filesystem_entry_exists() subroutine may return true even if output contains "file not found"
    * [VCL-262] - Windows capture may remove "Log on as a service" right for existing accounts
    * [VCL-265] - Linux adduser cmd - remove uid parameter if uid not defined in user table 
    * [VCL-266] - New process detects another reload process being complete before it should
    * [VCL-267] - cluster loads  listing wrong parent and child addresses cluster_info file
    * [VCL-269] - Windows.pm logoff_users() does not detect disconnected users
    * [VCL-273] - Single quotes in image pretty name can cause image capture to fail
    * [VCL-299] - shib users may have incorrect full name and email address.
    * [VCL-300] - shib users always have email notices turned off
    * [VCL-303] - tomaintenance reservations inserting wrong image revision
    * [VCL-306] - Web GUI code has hard coded Eastern Time Zone information - breaks in other time zones
    * [VCL-307] - add empty post_reserve routine UnixLab.pm OS module
    * [VCL-317] - scheduler doesn't take imagerevision into account
    * [VCL-318] - API error if invalid affiliation is used
    * [VCL-325] - removing a subimage from a cluster can result in all subimages getting removed
    * [VCL-327] - set_computer_name.vbs causes Sysprep to hang if certain applications are installed
    * [VCL-329] - DataStructure.pm get_computer_private_ip_address() not handling all valid formats in /etc/hosts
    * [VCL-331] - Windows code does not handle special characters in Scheduled Task names when changing passwords
    * [VCL-332] - cannot delete block requests once the start date has passed
    * [VCL-333] - DataStructure %ENV hash not get detected in _initialize routine 
    * [VCL-334] - numeric userids are not handled correctly
    * [VCL-337] - Windows.pm delete_files_by_pattern may delete unintended files if an environment variable isn't defined
    * [VCL-338] - vmprofiles that are in use can be deleted
    * [VCL-340] - cannot change name of vmprofile
    * [VCL-346] - getdynamicaddress routine regex issue
    * [VCL-347] - cluster connect page rdp file
    * [VCL-349] - sql insert queries for image and imagerevision tables
    * [VCL-353] - vmware.pm inserting new images - if original name is not in proper format $oldname does not get set correctly.
    * [VCL-356] - vmware esx pm - vmware image directories
    * [VCL-362] - vmware.pm power command output not detected under ESX 3.5
    * [VCL-363] - Passwords for existing Linux accounts are reset when the root password is set
    * [VCL-364] - vmhostid removed when vm put in maintenance state
    * [VCL-368] - pre-capture and post load linux steps correct sed cmd line options
    * [VCL-370] - Reservation ID not defined errors occur for cluster reservations
    * [VCL-371] - Private IP address is not being found in /etc/hosts under some circumstances
    * [VCL-377] - multiple clicks on Create Reservation button gives multiple reservations
    * [VCL-378] - reservation can be extended into a block allocation for user not in block group
    * [VCL-382] - vmware.pm incorrectly handles free server with network datastores
    * [VCL-386] - older vmware.pm module not removing vmhostid from vm

** Improvement
    * [VCL-2] - migrate preferredimage to nextimage
    * [VCL-9] - Update reclaim.pm to use DataStructure methods
    * [VCL-11] - Update blockrequest.pm to use database subroutines
    * [VCL-31] - rename conf.php and secrets.php to include -default in the name
    * [VCL-32] - modify XMLRPCaddRequest to allow an end time to be specified
    * [VCL-93] - LDAP part of a login to fail silently on errors when Shibboleth authentication is used
    * [VCL-94] - Rework image capture flow
    * [VCL-98] - upgrade all of dojo-0.4.0 code to recent version of dojo
    * [VCL-125] - Add ability to control whether or not users have root/administrator access
    * [VCL-137] - Update vmware.pm to use provisioning module interface subroutine names
    * [VCL-145] - Store product keys in the database
    * [VCL-148] - Add management node to current reservations view for ADMIN_DEVELOPER
    * [VCL-149] - Prevent multiple vcld processes
    * [VCL-153] - Update interface subroutines in xCAT21.pm to match xCAT.pm
    * [VCL-155] - Decrease initial Current Reservation page refresh interval
    * [VCL-161] - remove  xmlrpcKey table from vcl.sql 
    * [VCL-162] - create structure to add throttling to provisioning modules
    * [VCL-163] - move throttle variable from vcld.conf to managment node table
    * [VCL-164] - Make installation and configuration easier
    * [VCL-200] - add edit node name option in Privilege tree
    * [VCL-204] - remove private ssh identity keys from known locations- post load / pre-capture routines
    * [VCL-206] - Alphabetize list of virtual hosts
    * [VCL-211] - image creation mode - administrator timeout
    * [VCL-223] - Remove information user should not be able to access on post_load
    * [VCL-224] - Move settings from vcld.conf to database except for database connection settings
    * [VCL-244] - Staticics page - show number of failed loads per image
    * [VCL-248] - Update provisioning modules' node_status to return READY if SSH works but ping doesn't
    * [VCL-251] - Make "Later" reservation time default to a time in the future.
    * [VCL-252] - XMLHttpTransport Error
    * [VCL-254] - block request improvements
    * [VCL-255] - xmlrpc_call routine add better error control
    * [VCL-271] - clean out unused routines
    * [VCL-272] - block request form
    * [VCL-275] - Predictive reloading level_1 module
    * [VCL-284] - vmware.pm power_reset sub does not catch error if VMware tools are not running
    * [VCL-286] - post_linux load operation - set hostname that matches public IP address
    * [VCL-288] - Add Global affiliation to schema
    * [VCL-293] - check for remote ldap server being up before connecting to it
    * [VCL-295] - Combine normal new reservation and imaging new reservation code
    * [VCL-302] - provide feedback to users about block reservation status
    * [VCL-305] - update code to work with php 5.3
    * [VCL-314] - change Documentation link to have links to ASF docs
    * [VCL-320] - random selection of computer for reservations
    * [VCL-326] - Shutdown Event Tracker causes autologin to fail
    * [VCL-335] - max allowed ram for computers needs to be increased
    * [VCL-357] - create update sql script to upgrade to the latest schema
    * [VCL-359] - Remove DHCP and static IP configuration sections from provisioning modules

** New Feature
    * [VCL-134] - Add ability to control whether or not users have root/administrator access
    * [VCL-142] - Add KMS activation server configuration per affiliation
    * [VCL-146] - add linux support for all VMWare modules
    * [VCL-180] - add power_X(off,on,reset,status)  routines to provisioning modules 
    * [VCL-182] - Linux virtual machine support
    * [VCL-195] - Add support for Windows Server 2008
    * [VCL-196] - Add support for 64-bit Windows
    * [VCL-201] - Add support for Windows Vista VMware images
    * [VCL-208] - Ability to easily put the VCL site into a maintenance state to prevent user access
    * [VCL-239] - xcat 2.X module
    * [VCL-268] - OS table - create additional OS ids
    * [VCL-278] - Add setup mechanism to vcld
    * [VCL-279] - Add post_load_custom script functionality for Linux images
    * [VCL-292] - option to save selected authentication method in cookie
    * [VCL-294] - create a login log
    * [VCL-298] - Add support for VMware Server 2.x and ESXi 4.x
    * [VCL-301] - Add support for Windows 7
    * [VCL-351] - extend vm profile to have more virtualswitches
    * [VCL-352] - Add additional pre-capture steps for Linux OS
    * [VCL-365] - change select box for environment on new reservation page to dojo filteringselect

** Task
    * [VCL-138] - remove antiquated vcldquery support
    * [VCL-139] - make users' names optional
    * [VCL-274] - check for SQL injection / XSS

================================================================================

ASF VCL 2.1

Dependency changes:

web frontend:
-no testing with PHP 4 was done. VCL may work under PHP 4, but PHP 5 was assumed during development.

database:
none

backend:
Perl modules
- Class-Data-Inheritable-0.08
- Devel-StackTrace-1.20
- Exception-Class-1.26
- Object-InsideOut-3.52
- Module-Build-0.30
- XML-Stream-1.22
- YAML-0.68
- RPC-XML-0.64
- XML-Parser-2.36
- Crypt-SSLeay-0.57
- Compress-Raw-Zlib-2.020
- IO-Compress-2.020
- libwww-perl-5.827
- HTTP-Headers


Bug/Feature issues exported from JIRA

** Sub-task
    * [VCL-67] - Allow OS, provisioning engine, and other module objects to access each other

** Bug
    * [VCL-14] - xCAT.pm's capture_monitor output always displays "attempt 1/80"
    * [VCL-26] - get_reservation_remote_ip subroutine redefined warning
    * [VCL-34] - When adding computers, missing requirement for the provisioning module 
    * [VCL-51] - user groups that have a name that is a number cause problems on the privilege page
    * [VCL-54] - disable LDAP referrals for all LDAP connections to handle firewalls
    * [VCL-55] - processBulkComputerInput in computers.php not always setting startpripaddress, endpripaddress, startmac
    * [VCL-61] - blockrequest and the reload state
    * [VCL-62] - Calls to _rpower in Windows.pm cause reservation processes to die
    * [VCL-64] - EmptyRecycleBin.exe utility causes problems during image capture
    * [VCL-69] - Unknown column 'af.shibonly' in 'field list'
    * [VCL-71] - Reservation processes being killed unexpectedly
    * [VCL-73] - new.pm::computer_not_being_used hangs occasionally
    * [VCL-74] - Reservation may fail if user's UID value is null
    * [VCL-75] - Bug in Perl 5.8.0 causes exit status to be reported incorrectly
    * [VCL-76] - form tags outside of td tags on Edit Image Profiles page
    * [VCL-79] - error in how the end time for schedule times is computed
    * [VCL-81] - Image retrieval does not verify if it was successful
    * [VCL-85] - watchInFlight error appears if image description contains special characters
    * [VCL-88] - vclreload account assumed to match the default affiliation
    * [VCL-90] - Image reservation for sub-image with "nousercheckout" flag set
    * [VCL-91] - edit reservation allows saving/updaing image for cluster reservations
    * [VCL-96] - < and > in user's passwords not handled properly
    * [VCL-101] - forimaging flag causes wrong user when imaging linux in reserved.pm
    * [VCL-103] - vclreload account has invalid curiculumid
    * [VCL-108] - apostrophe in image name causes AJAX updates to privilege page to break
    * [VCL-109] - viewing requests from timetable not using continuations
    * [VCL-111] - missing default values for vmtype table
    * [VCL-119] - Reservations insert log.ending = EOR when they shouldn't
    * [VCL-126] - get_new_dbh() doesn't return correct value if different database is specified
    * [VCL-129] - LockerWrtUser doesn't work with usernames containing underscores
    * [VCL-131] - utils getdynamicaddress routine - bad regex
    * [VCL-136] - missing perlpackage for id 6 in module table
    * [VCL-143] - need to drop allowing new reservations to take priority over reload reservations
    * [VCL-151] - apostrophe in last name can cause an error when adding user to database
    * [VCL-166] - Windows firewall subs not catching "Object already exists" in netsh.exe output
    * [VCL-167] - run_ssh_command not catching host key differs warning messages
    * [VCL-172] - xCAT21.pm - xcat database is locked at dbdimp.c error
    * [VCL-186] - Windows images losing default gateway
    * [VCL-187] - Ubuntu.pm - not  completed
    * [VCL-191] - path changes in vshpere SDK vmware perl toolkit
    * [VCL-207] - Predictive reload modules not accounting for machines in block computers table
    * [VCL-213] - Bug in retrieve_image sub in vmware.pm and xCAT.pm calls next instead of return
    * [VCL-218] - vmware.pm may delete image being captured by cleanup process
    * [VCL-226] - Windows reboot fails - processing another action error
    * [VCL-238] - Linux.pm  pre-capture routine not shuting down OS
    * [VCL-240] - utils.pm - insert_reload_request
    * [VCL-246] - READY flag check for VMware and xCAT is being thrown off by other processes running on machines
    * [VCL-247] - computer with shortname  only in database not being reloaded after being used
    * [VCL-263] - Linux.pm - add default vcl user group

** Improvement
    * [VCL-3] - clean up database
    * [VCL-6] - update healthcheck.pl to use modularized code
    * [VCL-15] - modify blockrequest module to use frontend API for scheduling
    * [VCL-20] - Configuration of sshd port for image retrieval
    * [VCL-23] - Modularize Windows OS code
    * [VCL-63] - Remove critical notification if image is configured with a user group containing 0 members
    * [VCL-65] - Remove pagefile from all drives during image capture
    * [VCL-72] - die and warning signals are not handled by the backend code
    * [VCL-84] - Prevent users from starting create image until computer is in inuse state
    * [VCL-105] - an image cannot have itself as a subimage
    * [VCL-106] - mail notifications notify routine
    * [VCL-107] - User email notifications
    * [VCL-110] - 2 second deley in vcld may cause problems with imaging
    * [VCL-112] - Provide access to image affiliation data via DataStructure.pm
    * [VCL-115] - allow user groups with the same name but different affiliations
    * [VCL-118] - Add delay to run_ssh_command() & run_scp_command() retry attempts
    * [VCL-120] - Add subroutine to set IE's runonce registry keys so user isn't presented with it
    * [VCL-124] - locally affiliated users need a way to change their password
    * [VCL-128] - Update reclaim.pm
    * [VCL-132] - vcld check_time 
    * [VCL-156] - insert current_image.txt file on kickstart based nodes
    * [VCL-157] - Add support for xCAT 2.1 partimage format
    * [VCL-173] - add power_off,power_on,power_reset,power_status routines to xCAT21 module
    * [VCL-175] - Set virtual switch 0 from database value for VMware GSX
    * [VCL-176] - Prevent vmware.pm from looping 15 times before checking ssh during load
    * [VCL-177] - Remove Windows OS post-load configuration tasks from vmware.pm
    * [VCL-183] - DataStructure.pm contains duplicate subroutines: get_computer_private_ip and get_computer_private_ip_address
    * [VCL-184] - Update database schema for 2.1 release
    * [VCL-185] - Modularize Linux OS Code
    * [VCL-188] - Document Windows tools dependencies
    * [VCL-190] - Add time configuration and synchronization commands to Windows post_load
    * [VCL-205] - allow esx provisioing module to set MAC addresses
    * [VCL-212] - Add code to set SysprepStatus registry keys for Windows 6
    * [VCL-217] - xcat modules - Throttle control
    * [VCL-228] - Windows image capture fails to delete user profiles because file is open

** New Feature
    * [VCL-1] - xCAT 2.0 module
    * [VCL-4] - add support for Shibboleth authentication
    * [VCL-7] - modify healthcheck.pl to monitor vms
    * [VCL-18] - allow dynamic change of predictive loading module
    * [VCL-19] - add configuration of v2 fields for management nodes
    * [VCL-21] - add check for existance of image libraries
    * [VCL-29] - author an ESX and ESX 3i provisioning module (using netboot)
    * [VCL-33] - add user group management to XML RPC API
    * [VCL-78] - API for backend to allocate computers for block reservations via the frontend
    * [VCL-123] - add Ubuntu Support using the new OS Module framework
    * [VCL-209] - create a page that will test for required php modules and correct configuration

** Task
    * [VCL-70] - Create a basic helloworld.pm provisioning module
    * [VCL-95] - Set Subversion properties for files in repository
    * [VCL-135] - remove all references to ncsu
    * [VCL-198] - Release tasks
    * [VCL-264] - VCL 2.1 RC2 todo items
