1. A method for allocating multiple resources, the method comprising: receiving, by one or more processors, a configured resource plan; constructing, by one or more processors, a hierarchical tree from the configured resource plan; identifying, by one or more processors, a set of unowned resources from the configured resource plan; sending, by one or more processors, the set of unowned resources to a share pool, wherein the share pool is configured to be accessible to one or more consumers, and wherein the share pool comprises a global pool and a local pool; determining, by one or more processors, a change in a workload demand from the one or more consumers; and responsive to determining the change in the workload demand from the one or more consumers, lending, by one or more processors, a set of unused resources to a global pool or a local pool.