Jump to: navigation, search


Revision as of 14:51, 15 April 2013 by Ppetit (talk | contribs) (Detailed Description)
  • Created: Julien Danjou
  • Contributors: Julien Danjou, Patrick Petit, François Rossigneux, Julien Carpentier


This blueprint introduces the concept of a Capacity Leasing Service for OpenStack. With that service, a user with admin privileges can reserve hardware resources that are dedicated to the sole use of a tenant. A lease is a negotiation agreement between the provider and the consumer where the former agrees to make a set of hardware resources (compute and possibly storage) available to the latter, based on a set of lease terms presented by the consumer. The lease terms include the description of the host's capacity and the availability period during which the hardware is reserved.

We are thinking of three kinds of lease terms:

  • Schedule lease: where resources must be provisioned at a specific date and time
  • Best-effort lease: where resources are provisioned as soon as possible
  • Immediate lease: where resources are provisioned immediately or not at all

Once a lease is created, nobody but the users of the tenant can use the reserved resources during the period of the lease. When a lease ends, nothing disruptive happens to the instances that have been scheduled on the reserved resources. The hardware resources simply return to the common pool and so become available to other tenants for VM scheduling. A lease is potentially a billable item for which customers can be charged a flat fee or a premium price for each VM scheduled on reserved hardware and so usage of resource leases should be accounted for through Ceilometer.

See Launchpad Blueprint: Planned resource reservation API


There are situations where the reservation of hardware resources are desired to satisfy peaks of load that are known in advance. This is especially true for small scale cloud infrastructures and in HPC use cases where the co-scheduling of a fair amount of compute instances is necessary, but also to satisfy the needs of urgent computations, avoid uncontrolled noises caused by multi-tenancy activities, comply with regulations or security policies which proscribe the co-location of multiple tenants on the same physical host. In addition to this, the expected benefits of the CLS is to foster energy efficiency (greener) behaviors through promoting nodes with the lowest MFLOPS/Watt ratio and save electricity by automatically turning machine' power on and off based on their leasing schedule. The CLS should also help operators with the management of their physical assets through a more effective capacity planing based again on the leasing schedules.

Detailed Description

The Capacity Leasing Service (CLS) behaves like the Filter Scheduler to assert the match making between the properties of the lease and the capabilities of the host. In fact, the CLS should accept all the standard filters consumed by the Filter Scheduler. A lease request should include the following properties:

  • the region
  • the availability zone
  • the host capabilities extra specs (scoped and non-scoped format should be accepted)
  • the number of CPU cores
  • the amount of free RAM
  • the amount of free disk space
  • the number of hosts
  • the type of lease (SCHEDULE, BEST-EFFORT, IMMEDIAT)
  • the staring date of the lease if of type SCHEDULE
  • the duration in days and hours of the lease
  • a timeout
  • ...

The CLS, primarily checks that the capabilities provided by the host satisfy any extra specifications associated with the properties of the lease and applies all enabled subsequent filters if any.

The CLS then checks in its database that any of eligible hosts are not already reserved for the requested the period. Then depending on the type of lease, the CLS performs different types of actions depending on whether the lease request can be fulfilled or not.

  1. If the lease is IMMEDIATE and the request can be fulfilled, the CLS creates an aggregate for the list of eligible hosts with a special metadata key filter_lease_id that contains the unique id of the lease, returns SUCCESS with the ID of the lease and marks the lease as ACTIVE state. If the lease cannot be fulfilled, the CLS returns a FAILURE status.
  2. If the lease is BEST-EFFORT and the request cannot be fulfilled immediately, the CLS starts some sort of scavenger hunt which has for objective to move away any instance that belongs to some other tenants out of the list of eligible hosts. This operation can be timely and fairly complex and so different strategies may be applied depending on heuristic factors such as the number, type and state of the instances to be migrated. The CLS should assert that there are at least enough potential candidates for the migration prior to starting the actual migration. If the CLS decides to start the migration, it returns a SUCCESS status with the ID of the lease and marks the lease as IN-PROGRESS state. If the CLS decides not to start the migration, it returns directly a FAILURE status. If the scavenger hunt succeeds to make the list of eligible hosts available for the lease before the timeout is triggered, the CLS marks the lease as ACTIVE state. Conversely, if the scavenger hunt doesn't succeed, the CLS marks the lease as TIMEDOUT.
  3. Finally, if the lease is SCHEDULE and the request can be fulfilled for the requested period according to the reservation schedule, the CLS creates an aggregate for the list of eligible hosts with a special metadata key filter_lease_id that contains the unique id of the lease, returns SUCCESS with the ID of the lease and marks the lease as INACTIVE state until the reservation effectively begins at which point in time, the CLS marks the lease as ACTIVE state. If the requested cannot be fulfilled, the CLS returns a FAILURE status

Open Issues

It is unclear how to guarantee consistency of the lease in situation of race conditions between the CLS and Nova Scheduler


A reservation, or lease, is tight to a project. It has a start and an end timestamp, during which the lease is valid. It also has a number of nodes and their flavors associated with, so it can be quantified. A lease has a set of scheduler hints set that are immutable. An API call allows a user to retrieve the list and combination of applicable hints. When a user tries to creates a lease, the list of scheduler hints is checked for validity: an operator can refuse a lease with invalid or too strict hints.

When an instance is created, it's registered as being part of the lease when the user passes the information at creation time. It's taken from the lease when it's destroyed. If an instance is created as being part of a lease, the scheduler has to launch the instance with the requirements fulfilled.




Test Plan