1. A computer implemented method for managing demand of a pool of virtual machines, comprising: determining a trended demand for a pool of virtual machines using virtual machine usage data; adjusting a threshold number of available virtual machines in the pool based on the trended demand; determining a demand for a number of virtual machines in the pool in a current time, wherein, if the pool is a dedicated pool, the demand is determined based on resource usage per virtual machine, and, if the pool is a floating pool, demand is determined based on times one or more virtual machines are unassigned to users; identifying that the demand for the number of virtual machines in the pool in the current time is outside the threshold number of available virtual machines; sending a request for an additional virtual machine to a user to manage demand of the pool; and provisioning the additional virtual machine.