Quotas
A quota is a limit on how much of a resource you can use. Each tenant has a limit per resource, such as instances, vCPUs or block storage. A create that would take a tenant over a limit is refused with a quota error, and nothing is created.
This page covers:
- how tenant and organization limits work together;
- the resources that have a quota;
- default limits;
- viewing your quotas in the portal, with
fmand in Terraform; - requesting an increase.
Tenant and organization limits
Every tenant has its own limit for each resource. Your organization also has a pool per resource: an organization-level limit across all of its tenants. Each pool works in one of two ways:
- Overcommit. The organization limit caps the total usage of all tenants together. The tenants' limits may add up to more than the organization limit, so a tenant can use more while the others use less.
- Partition. The organization limit is divided between the tenants. Their limits may not add up to more than the organization limit.
A create must fit both its tenant's limit and the organization pool.
Resources
The portal groups the resources as below. The key is the resource's resourceType, which the fm CLI and the Terraform provider use.
Storage limits are in GB, as the platform reports them. Memory (ram) is counted in MB and shown in GB, where 1 GB = 1024 MB. Block storage follows the volume sizes described on the Block Volumes page.
A limit of 0 means no allowance: you cannot create that resource. It never means unlimited.
When usage is shown as —, it is unknown right now, for example because it could not be read. It does not mean zero. Your limit still applies.
Compute
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Instances | instance | count | Instances |
| vCPUs | vcpu | count | vCPUs across your instances |
| Memory | ram | MB | Memory across your instances, shown as GB |
| Web servers | webserver | count | Managed web servers |
| Web server storage | webserver_storage | GB | Storage of your managed web servers |
Custom images
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Images | image | count | Custom images you have uploaded |
| Image storage | image_storage | GB | Storage used by your custom images |
These two limits are enforced by the compute service and cannot be raised with a quota request. To raise them, contact support.
The portal and fm show these rows only when your tenant has an image allowance. Terraform always returns the image and image_storage keys, with a limit of 0 when there is no allowance.
Storage
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Block storage | volume | GB | Total size of your volumes |
| Block volumes | volume_count | count | Number of volumes |
| Snapshots | snapshot | count | Snapshots |
Network
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Networks | network | count | Networks |
| Subnets | subnet | count | Subnets |
| Public IPs | public_ip | count | Public IPs |
| Load balancers | load_balancer | count | Load balancers. Listeners and pools are not counted. |
| Application gateways | app_gateway | count | Application gateways |
| Security groups | security_group | count | Security groups you create. Groups the platform creates for managed services, Kubernetes or application gateways are not counted. |
Managed databases
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Databases | database | count | Managed databases |
| Database storage | database_storage | GB | Storage of your databases |
Managed cache
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Cache instances | cache | count | Managed cache instances |
| Cache memory | cache_memory | GB | Memory of your caches |
| Cache storage | cache_storage | GB | Storage of your caches |
Managed messaging
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Message brokers | messaging | count | Managed message brokers |
| Message broker storage | messaging_storage | GB | Storage of your message brokers |
Object storage
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Object storage | object_storage | GB | Object storage in your buckets |
| Buckets | buckets | count | Buckets |
| S3 credentials | s3_credentials | count | S3 credentials |
Container registry
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Registry storage | registry_storage | GB | One allowance across your registry and its pull-through caches together |
Kubernetes
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Kubernetes clusters | kubernetes_cluster | count | Managed Kubernetes clusters |
| Kubernetes nodes | kubernetes_node | count | Worker nodes across your clusters |
Kontor
| Resource | Key | Unit | Counts |
|---|---|---|---|
| Kontor users | kontor_user | count | Kontor users |
| Kontor mail storage | kontor_mail_storage | GB | Mail storage |
| Kontor file storage | kontor_file_storage | GB | File storage |
| Kontor domains | kontor_domain | count | Kontor domains |
Default limits
A new tenant starts with the platform's default limits. Frostmoln sets the defaults and can change them, so they are not listed here. To see the limits that apply to you, view a tenant's quotas: a new tenant shows the defaults.
If the defaults are too small for something you plan to run, such as a production Kubernetes cluster with large worker nodes, request an increase before you create it.
View your quotas
Portal. Choose Quotas in the main navigation. The page shows the limits and usage of the current tenant, and the organization's pools with a per-tenant breakdown.
fm CLI. The commands act on the active tenant:
fm tenant quota
fm tenant quota -o json
fm tenant quota --orgfm tenant quota prints a table. -o json prints {"scope":"tenant","quotas":[…]}, where each quota has resourceType, label, category, used, limit and unit; unknown usage is null. With --org, the JSON also has orgId and tenants. --org shows the organization's pools, with an ALLOCATED column for how much of each pool is allocated to tenants. It needs a signed-in user; it does not work with an API key. See fm tenant.
Terraform. The frostmoln_tenant_quotas data source reads the quotas of the provider's tenant. quotas is keyed by resource key. used is null when usage is unknown, so check for that before you calculate with it:
data "frostmoln_tenant_quotas" "this" {}
locals {
vcpu = data.frostmoln_tenant_quotas.this.quotas["vcpu"]
}
output "vcpu_left" {
# Null when usage is unknown, rather than a number that may be wrong.
value = local.vcpu.used == null ? null : local.vcpu.limit - local.vcpu.used
}Request an increase
Portal. Choose Request increase on a quota row, or go to Support → Quota requests.
fm CLI.
fm tenant quota request vcpu 64 --reason "Production Kubernetes cluster"
fm tenant quota request volume 2000 --org --reason "Data warehouse"The arguments are <resource-type> (the key) and <new-limit>. Give the new limit in the resource's own unit: MB for Memory, GB for storage, otherwise a count. Add --org to request a change to the organization pool instead of the tenant's limit.
- A tenant request is decided at once. It is approved if the new limit fits within what the organization pool allows, and denied with a reason if it does not. The portal shows the largest value that would be approved, and
fmrefuses a higher value before it sends the request. - An organization request goes to Frostmoln for review and stays pending until it is decided.
- A lower tenant limit is applied at once, even below what the tenant uses now. After that, new creates of that resource are refused.
fm tenant quota requestrefuses a lower value unless you pass--yes. - You can have only one pending request per resource at a time.
--orgneeds a signed-in user, both to view and to request. It does not work with an API key.- With an API key, a tenant request (and cancelling one) needs the
quotas:writescope;compute:writeis not enough. A workload identity cannot request quota changes. See API keys.
Custom image limits cannot be requested this way; contact support.
Related
- fm CLI Reference:
fm tenant - Terraform Reference
- Billing