Creating and Modifying Quota Plans

Page last updated: August 19, 2015

This page assumes you are using cf CLI v6.

Quota plans are named sets of memory, service, and instance usage quotas. For example, one quota plan might allow up to 10 services, 10 routes, and 2 GB of RAM, while another might offer 100 services, 100 routes, and 10 GB of RAM. Quota plans have user-friendly names, but are referenced in Cloud Foundry internal systems by unique GUIDs.

Quota plans are not directly associated with user accounts. Instead, every organization has a list of available quota plans, and the account admin assigns a specific quota plan from the list to the organization. Everyone in the organization shares the quotas described by the plan. There is no limit to the number of defined quota plans an account can have, but only one plan can be assigned at a time.

Quota Plan Attributes

Name Description Valid Values Example Value
nameThe name you use to identify the planA sequence of letters, digits, and underscore characters. Quota plan names within an account must be unique.silver_quota
memory_limitMaximum memory usage allowedAn integer and a unit of measurement like M, MB, G, or GB2048M
non_basic_services_allowedDetermines whether users can provision instances of non-free service plans. Does not control plan visibility. When false, non-free service plans may be visible in the marketplace but instances can not be provisioned.true or falsetrue
total_routesMaximum routes allowedAn integer500
total_servicesMaximum services allowedAn integer25
trial_db_allowedLegacy Field. Value can be ignored.true or falsetrue

Default Quota Plan

Cloud Foundry installs with one default quota plan with the following limits:

  • Memory Limit: 10240 MB

  • Total Routes: 1000

  • Total Services: 100

  • Non-basic Services Allowed: True

  • Trial DB Allowed: True

Creating a New Quota Plan

You can create a new quota plan in one of two ways:

  • Directly modify the CF deployment manifest before deploying.
  • Use cf create-quota after deploying.

Modifying the Manifest

  1. In a terminal window, run bosh edit deployment to open the deployment manifest YAML file in your default text editor.
  2. Search for “quota_definitions”.
  3. Add a new quota definition with limits that you specify. Use the default quota definition as a formatting template.

    The following example shows the quota_definitions portion of the cf.yml manifest after adding the “silver_quota” plan:

    quota_definitions:
      default:
        memory_limit: 10240M
        non_basic_services_allowed: true
        total_routes: 1000
        total_services: 100
        trial_db_allowed: true
      silver_quota:
        memory_limit: 2048M
        non_basic_services_allowed: true
        total_routes: 500
        total_services: 25
        trial_db_allowed: true
    
  4. Save and close the deployment manifest.

Using cf create-quota

In a terminal window, run the following command. Replace the placeholder attributes with the values for this quota plan:

$ cf create-quota  QUOTA [-m MEMORY] [-r ROUTES] [-s SERVICE_INSTANCES] [--allow-paid-service-plans]

Example:

$ cf create-quota small -m 2048M -r 10 -s 10 --allow-paid-service-plans

Modifying a Quota Plan

You can modify an existing quota plan in one of two ways:

  • Directly modify the CF deployment manifest before deploying.
  • Use cf update-quota after deploying.

Modifying the Manifest

  1. In a terminal window, run bosh edit deployment to open the deployment manifest YAML file in your default text editor.
  2. Search for “quota_definitions”.
  3. Modify the value of the attribute.
  4. Save and close the deployment manifest.

Using cf update-quota

  1. Run cf quotas to find the names of all quota definitions available to your organization. Note the name of the quota plan to be modified.

    $ cf quotas
    Getting quotas as [email protected]...
    OK
    
    name           total memory limit   instance memory limit   routes       service instances   paid service plans
    free           0                    0                       1000     0                   disallowed
    paid           10G                  0                       1000     -1                  allowed
    small          2G                   0                         10     10                  allowed
    trial          2G                   0                       1000     10                  disallowed
    
  2. Run cf update-quota with the name of the quota. Use the appropriate flags to specify the attributes.

cf update-quota QUOTA [-m MEMORY] [-n NEW_NAME] [-r ROUTES] [-s SERVICE_INSTANCES] [--allow-paid-service-plans | --disallow-paid-service-plans]

Example:

$ cf update-quota small -m 4096M -n medium -r 20 -s 20 --allow-paid-service-plans

Note: To create or modify quotas for individual spaces rather than across an entire organization, you can use the space-quota command. It is almost identical to the quota command. For example: to create a quota for a space, use create-space-quota. To modify that quota, use the update-quota command. The org manager sets and manages the space quotas.