A system administrator can update the resource pool set of an existing Provider VDC to add or remove resource pools. Adding resource pools allows organization VDCs that reference the Provider VDC to consume additional resources during periods of high demand. Removing resource pools frees the underlying resources.

When you create a Provider VDC, it initially contains a single resource pool, called the primary resource pool. Adding secondary resource pools allows a Provider VDC to support resource elasticity in organization VDCs that use the AllocationPool or AllocationVApp (pay as you go) allocation model. Resource elasticity allows an organization VDC's compute resources to grow or shrink on demand.

All of a Provider VDC's resource pools must come from the same vCenter. See Retrieve a List of Resource Pools from a vCenter Server.

Prerequisites

This operation is restricted to system administrators.

Procedure

  1. Retrieve the XML representation of the Provider VDC.
    Use a request like this one:
    GET https://vcloud.example.com/api/admin/extension/providervdc/35
  2. Locate the updateResourcePools link in the VMWProviderVdc.
    Every VMWProviderVdc element includes an action link like this one to the Provider VDC's updateResourcePools action.
    <Link
         rel="update:resourcePools"
         type="application/vnd.vmware.admin.vmwProviderVdcResourcePoolSet+xml"
         href="https://vcloud.example.com/api/admin/extension/providervdc/35/action/updateResourcePools"/>
  3. Retrieve the resource pool list from the Provider VDC.
    The VMWProviderVdcResourcePoolSet contains references to the Provider VDC's existing resource pools and the vCenter server that hosts them.
  4. Update the resource pool set.
    To add resource pools:
    1. Choose another resource pool from the same vCenter server.
    2. Create an UpdateResourcePoolSetParams element that contains an AddItem element for each resource pool to add.
    To remove resource pools:
    1. Examine the resource pool list and find the pool to remove.
    2. Verify the pool is not the primary resource pool, and that no virtual machines are using it.
      If necessary, use the action/migrateVms link to migrate virtual machines to another resource pool.
    3. Create an UpdateResourcePoolSetParams element that contains a DeleteItem element for each resource pool to remove.
  5. POST the UpdateResourcePoolSetParams element to the Provider VDC's resourcePools link.
  6. (Optional) Update the value of HighestSupportedHardwareVersion in the Provider VDC.
    When you create a Provider VDC, the system sets its HighestSupportedHardwareVersion to the highest virtual hardware version supported by all hosts in the primary resource pool. When you add or remove resource pools, you might need to change this value to one that's valid for all hosts in the new resource pool set.

Example: Update Provider VDC Resource Pools

This request adds a resource pool to the Provider VDC created in Create a Provider VDC Backed by NSX Data Center for vSphere or NSX-T Data Center. The additional resource pool is hosted on the same vCenter server that hosts the existing resource pool. See Retrieve a List of Resource Pools from a vCenter Server for an example that lists the resource pools available on that server.

Request:
POST https://vcloud.example.com/api/admin/extension/providervdc/35/action/updateResourcePools
Content-Type: application/vnd.vmware.admin.resourcePoolSetUpdateParams+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<vmext:UpdateResourcePoolSetParams
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5">
   <vmext:AddItem>
      <vmext:VimServerRef
         type="application/vnd.vmware.admin.vmwvirtualcenter+xml"
         href="https://vcloud.example.com/api/admin/extension/vimServer/9" />
      <vmext:MoRef>resgroup-230</vmext:MoRef>
      <vmext:VimObjectType>RESOURCE_POOL</vmext:VimObjectType>
   </vmext:AddItem>
</vmext:UpdateResourcePoolSetParams>
Response:
202 Accepted
Content-Type: application/vnd.vmware.vcloud.task+xml
...
<Task ... >
   ...
</Task>

This request removes one of the two resource pools (a secondary resource pool) shown in Retrieve a Provider VDC Resource Pool Set. The response is a task.

Request:
POST https://vcloud.example.com/api/admin/extension/providervdc/35/action/updateResourcePools
Content-Type: application/vnd.vmware.admin.resourcePoolSetUpdateParams+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<vmext:UpdateResourcePoolSetParams
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5">
   <vmext:DeleteItem
      href="https://vcloud.example.com/api/admin/extension/resourcePool/66" />
</vmext:UpdateResourcePoolSetParams>
Response:
202 Accepted
Content-Type: application/vnd.vmware.vcloud.task+xml
...
<Task ... >
...
</Task>