Skip to main content

Quota Management (CloudStack)

CloudStack has its own quota management system at domain, account, and project levels. CMP also has a separate quota engine — and the two systems do not share state.

Two independent quota systems
SystemScopeManaged in
CMP quotasPer customer account, project, and global defaultsGlobal Resource Quotas, Account-Level Quotas
CloudStack quotasPer domain, account, and project in CloudStackCloudStack Global Settings (max.* keys)

CMP supports multiple orchestrators (CloudStack, OpenStack, VMware, and others). Because of this, CMP does not use CloudStack's quota management APIs as its quota engine. CMP enforces limits in the CMP portal; CloudStack enforces its own limits independently at the orchestrator layer.

Why CloudStack quotas still matter

CloudStack's quota system cannot be disabled. It is always active. When a customer exceeds a CloudStack limit, provisioning fails with a CloudStack quota error returned directly to CMP — even if the customer still has available quota in CMP.

The mismatch problem

This is the most common source of customer confusion:

CMP quota: Primary Storage = 1024 GB ✅ (customer sees quota available)
CloudStack: max.account.primary.storage = 200 GB ❌ (actual enforcement limit)

Customer creates a 200 GB VM → CloudStack rejects → quota error in CMP portal
Customer expectation: "I have 1024 GB quota — why did this fail?"

The customer sees CMP quota as sufficient, but CloudStack blocked the operation first. This is difficult to explain without aligning both systems.

Recommendation — set CloudStack limits high or unlimited

Set CloudStack quota global settings to higher values than your CMP quotas, or to -1 (unlimited) where supported. CloudStack limits should never be lower than the CMP limits you assign to customers.

Rule of thumb: CloudStack limit ≥ CMP limit for every resource type you sell.

Default CloudStack quota behaviour

On most CloudStack installations:

LevelTypical default
DomainUnlimited (-1) for most resource types
ProjectLimited — for example, 20 VMs, 200 GB primary storage
AccountLimited — for example, 20 VMs, 40 vCPUs, 40960 MiB memory, 200 GB primary storage

Account-level defaults are often too low for a production CMP deployment. Domain and project limits can also block provisioning if left at factory defaults.

Configuring CloudStack quotas

Step 1 — Open Global Settings

  1. Log in to the CloudStack UI as root admin
  2. Navigate to Configuration → Global Settings
  3. Search for max
  4. Set pagination to 200 rows to see all quota-related settings

Step 2 — Update account, domain, and project limits

For each max.account.*, max.domain.*, and max.project.* setting relevant to your CMP services, set the value to -1 (unlimited) or a number greater than your highest CMP quota for that resource.

Unlimited value

In CloudStack Global Settings, -1 means unlimited for most max.* quota keys.

Step 3 — Verify after CMP quota changes

When you approve a quota increase request in CMP, also verify the customer's CloudStack account and project limits still exceed the new CMP values. CMP does not update CloudStack quotas automatically.

Account-level quota settings

These factory defaults apply to every account in CloudStack unless overridden. They are too low for CMP — change them.

Set to -1

For CMP, set each max.account.* setting below to -1 (unlimited) in CloudStack Global Settings.

The Default column is CloudStack’s factory value only — do not leave those defaults for a production CMP deployment. Leaving 20 VMs / 40 CPUs / 200 GiB storage (and similar) causes provisioning failures even when CMP quota still has capacity.

Global settingDescriptionDefault (factory)Set to (for CMP)
max.account.user.vmsMaximum user VMs per account20-1
max.account.cpusMaximum vCPU cores per account40-1
max.account.memoryMaximum memory per account (MiB)40960-1
max.account.primary.storageMaximum primary storage per account (GiB)200-1
max.account.secondary.storageMaximum secondary storage per account (GiB)400-1
max.account.volumesMaximum volumes per account20-1
max.account.snapshotsMaximum snapshots per account20-1
max.account.templatesMaximum templates per account20-1
max.account.public.ipsMaximum public IPs per account20-1
max.account.networksMaximum networks per account20-1
max.account.vpcsMaximum VPCs per account20-1
max.account.projectsMaximum projects per account10-1
max.account.backupsMaximum backups per account20-1
max.account.backup.storageMaximum backup storage per account (GiB)-1

Domain-level quota settings

Domain limits apply across all accounts within a domain. On most setups these already default to unlimited (-1). Keep them at -1, or ensure they stay above your CMP limits.

Global settingDescriptionDefaultSet to (for CMP)
max.domain.user.vmsMaximum user VMs per domain-1-1
max.domain.cpusMaximum vCPU cores per domain-1-1
max.domain.memoryMaximum memory per domain (MiB)-1-1
max.domain.primary.storageMaximum primary storage per domain (GiB)-1-1
max.domain.secondary.storageMaximum secondary storage per domain (GiB)-1-1
max.domain.volumesMaximum volumes per domain-1-1
max.domain.snapshotsMaximum snapshots per domain-1-1
max.domain.templatesMaximum templates per domain-1-1
max.domain.public.ipsMaximum public IPs per domain-1-1
max.domain.networksMaximum networks per domain-1-1
max.domain.vpcsMaximum VPCs per domain-1-1
max.domain.projectsMaximum projects per domain50-1
max.domain.backupsMaximum backups per domain40-1
max.domain.backup.storageMaximum backup storage per domain (GiB)800-1

Project-level quota settings

Project limits apply within CloudStack projects. CMP maps customers to CloudStack projects — low project defaults can block provisioning even when account and CMP quotas allow it.

Set to -1

For CMP, set each max.project.* setting below to -1 (unlimited).

The Default column is CloudStack’s factory value only — do not leave those defaults. They match the same low account-style limits (for example 20 VMs, 40 CPUs, 200 GiB primary storage).

Global settingDescriptionDefault (factory)Set to (for CMP)
max.project.user.vmsMaximum user VMs per project20-1
max.project.cpusMaximum vCPU cores per project40-1
max.project.memoryMaximum memory per project (MiB)40960-1
max.project.primary.storageMaximum primary storage per project (GiB)200-1
max.project.secondary.storageMaximum secondary storage per project (GiB)400-1
max.project.volumesMaximum volumes per project20-1
max.project.snapshotsMaximum snapshots per project20-1
max.project.templatesMaximum templates per project20-1
max.project.public.ipsMaximum public IPs per project20-1
max.project.networksMaximum networks per project20-1
max.project.vpcsMaximum VPCs per project20-1
max.project.backupsMaximum backups per project20-1
max.project.backup.storageMaximum backup storage per project (GiB)400-1

Mapping CMP quotas to CloudStack settings

When configuring CMP Global Resource Quotas or Account-Level Quotas, ensure the matching CloudStack settings are at least as high:

CMP quota resourceCloudStack account settingCloudStack project settingNotes
VM Instancesmax.account.user.vmsmax.project.user.vms
vCPUmax.account.cpusmax.project.cpus
RAM (GB)max.account.memorymax.project.memoryCloudStack uses MiB — multiply CMP GB × 1024
Primary / block storage (GB)max.account.primary.storagemax.project.primary.storageCloudStack uses GiB
Snapshotsmax.account.snapshotsmax.project.snapshots
Public IPsmax.account.public.ipsmax.project.public.ips
VPCs / Networksmax.account.vpcs, max.account.networksmax.project.vpcs, max.project.networks
Volumesmax.account.volumesmax.project.volumes
VM Backupsmax.account.backupsmax.project.backups
Templatesmax.account.templatesmax.project.templates

Other CloudStack max.* settings

These settings are not CMP quota mappings but can affect provisioning:

Global settingDescriptionDefault
max.template.iso.sizeMaximum template or ISO download size (GB)50
max.data.migration.wait.timeMax wait time (minutes) for data migration before spawning new SSVM15
max.ssvm.countAdditional SSVMs for concurrent data object migration5
max.number.managed.clustered.file.systemsMax managed SRs/datastores per cluster (XenServer/VMware)200
network.loadbalancer.haproxy.max.connHAProxy max concurrent connections (global)4096
network.ipv6.search.retry.maxMax retries searching for available IPv6 address10000

CMP quota settings

CMP quota configuration is managed separately in the CMP admin panel:

See also Orchestrator-Side Quota Sync for cross-orchestrator guidance.

Validation checklist

Before going live with customer provisioning:

  • CloudStack max.account.* settings are set to -1 or values your highest CMP account quotas
  • CloudStack max.project.* settings are set to -1 or values your highest CMP project quotas
  • CloudStack max.domain.* settings are -1 or sufficiently high (most default to unlimited)
  • CMP Global Resource Quotas are configured for your intended service catalogue
  • Process defined to update CloudStack limits when quota increase requests are approved in CMP
  • Test provisioning at/near quota limits — confirm errors reference the correct system when limits are hit