VDC: isolation, roles, and quotas
A VDC (virtual data center) is the unit used to divide a cluster among consumers. The cluster provides the hardware: nodes, storage pools, and physical networks. A VDC defines the boundary within which a consumer works with their virtual machines, networks, datasets, and volumes. One cluster hosts many VDCs, and objects in one VDC are not visible from another.
The boundary applies to both visibility and permissions. In the Virtual Data Centers list, users see only the VDCs for which they have grants; the others do not exist from their perspective. A role is assigned separately for each VDC, so one account can be an administrator in one VDC and an observer in another: the role is tied to the "user + VDC" pair, rather than to the account as a whole.
The same list shows capacity usage. The Running VMS, CPU (Cores) used of quota, RAM (GB) used of quota, and Storage (GB) used of quota columns display "used / allowed" pairs, so a single screen answers the question of how much a VDC has used and how much it is allowed, without inspecting individual objects. The second number is replaced by "∞" for a VDC with no limit set for that resource.
Resources enter a VDC in three different ways, which is key to understanding isolation. Virtual machines, datasets, and volumes are created within a VDC and belong to it. A network is a cluster-level object: it enters a VDC through assignment on the Networks tab of the VDC card, and one network can be assigned to several VDCs. Each VDC↔network pair has a separate address limit, shown in the Addrs limit column on the IP Data subtab, so a shared network does not mean a shared address pool. OS images follow a third model: an image has an owning VDC, and other VDCs can see the image through a visibility grant.
Permissions for the VDC itself are held by a cluster-level role. Creating, modifying,
and deleting a VDC, setting a network address limit, and viewing assigned roles are available only
to the Cluster master role. VDC-level roles, starting with vDC admin and
below, operate within a VDC. Assigning and unassigning a network is the only operation in this list with
a less restrictive rule: it can be performed by either a Cluster master or a vDC admin who
created the network.
The boundary also applies to deletion. An empty VDC is deleted immediately. A VDC containing objects cannot be deleted: vStack Center rejects the request and identifies what is blocking deletion—assigned networks, ports, virtual machines, datasets, volumes, or owned OS images. This prevents VDC deletion from silently destroying someone else's work. If VDC storage is enabled, deletion becomes a long-running operation: before the VDC record is removed, the iSCSI target, portal groups, initiator groups, CHAP credential sets, and root ZFS dataset are removed in a cascade.
What belongs to a VDC
| Object | How it enters a VDC | Behavior when the VDC is deleted |
|---|---|---|
| Virtual machines | Created within the VDC | Block deletion ("VDC has assigned VMs") |
| Networks | Assigned from the cluster on the Networks tab | Block deletion ("VDC has assigned networks") |
| Network ports | Appear when a VDC network is connected to a VM | Block deletion ("VDC has assigned ports") |
| Datasets | Created on cluster storage pools | Block deletion ("VDC has assigned datasets") |
| SDS volumes | Created in VDC storage | Block deletion ("VDC has assigned volumes") |
| Owned OS images | Uploaded to the VDC, which owns them | Block deletion; vStack Center lists the images that prevent it |
| OS images with a visibility grant | Made visible from another VDC, which owns them | Do not block deletion: grants are removed automatically |
| VDC storage | Enabled on a storage pool | Removed in a cascade before the VDC record is deleted |
Who can do what
| Operation | Location in the interface | Access |
|---|---|---|
| List available VDCs | Site → Virtual Data Centers tab | Any user; the list is limited by their grants |
| Create a VDC | Virtual Data Centers tab → Actions → Create a VDC | Cluster master |
| Change the name, description, and quotas | VDC card → Settings section | Cluster master |
| Delete a VDC | VDC card → Actions → Delete VDC | Cluster master |
| Assign a network to a VDC | VDC card → Networks tab → Primary → Assign column | Cluster master or the network creator with the vDC admin role |
| Unassign a network from a VDC | Same location | Same requirements as assignment |
| Networks assigned to a VDC | VDC card → Networks tab → Primary | Any user; the list is limited to accessible VDCs |
| Address limit for a VDC↔network pair | Networks tab → IP Data → Addrs limit column | Cluster master |
| Roles assigned in a VDC | VDC card → VDC roles section | Cluster master |
The division is straightforward: cluster-level roles control the VDC boundary, while VDC-level roles operate within it. The full list of roles and scopes is in the roles and privileges reference.
Quotas as a capacity contract
A quota is the upper limit of a resource for a VDC. There are five quotas, arranged in two groups on the VDC card: Quotas contains CPU (cores), RAM (GB), and Storage (GB); Secondary limits contains CPU frequency and Snapshots. An empty field means no limit is set for that resource; the VDC list displays such a resource as "∞".
Next to the quotas is the Oversubscription factor group, with oversubscription factors for CPU, RAM, and Storage. The factor is deliberately separate from the quota: the capacity boundary and the allowed oversubscription can be changed independently.
Usage is shown in the same place, on the card: the Running VMS counter, three CPU, Memory, and Storage indicators labeled with the current quota, and the Quotas, Oversubscription, and Limits summary rows. For a VDC without a quota, relative usage is not calculated: there is no value to divide by. The exact set of fields and types is listed in the VDC quotas and resources reference.
Lifecycle
A VDC goes through three states. Creation sets the name and, optionally, quotas; the web interface guides you through a four-step wizard. The VDC then operates and changes: the Settings section on its card lets you edit the name, description, quotas, and oversubscription factors, each field separately. You can leave a value unchanged, clear it, or set a new one. Decommissioning uses Delete VDC in the Actions menu and succeeds only after all objects have been removed from the VDC.
Step-by-step procedures for all three states are in How to create, modify, and delete a VDC.
API methods
The API operations covered on this page are vdc-list, vdc-create, vdc-set, vdc-delete,
vdc-assign-network, vdc-deassign-network, vdc-networks,
vdc-network-addr-limit, and vdc-roles. See the API
reference.