A Provider vDC is a collection of compute, memory, and storage resources from one vCenter. A Provider vDC provides resources to organization vDCs.

A Provider vDC is represented as a VMWProviderVdc element in the extension view and a ProviderVdc element in the admin view. A system administrator can create a VMWProviderVdc or modify it to add or remove datastores, storage profiles, and resource pools, or change other properties such as its description. A system administrator cannot change the primary resource pool or vCenter server that was specified when the Provider vDC was created. An organization administrator can retrieve a read-only representation of a Provider vDC in a ProviderVdc element. The ProviderVdc element includes a subset of the elements and attributes that are visible in the corresponding VMWProviderVdc.

Verify that you are logged in to the vCloud API as a system administrator.

Choose a vCenter server to supply a resource pool and storage profiles to this Provider vDC. See Finding Available vCenter Resources.

1

Retrieve the XML representation of the vSphere platform extensions.

Use a request like this one.

GET https://vcloud.example.com/api/admin/extension
2

Examine the response to locate the Link element that contains the URL for adding Provider vDCs to the cloud.

This element has a rel attribute value of add and a type attribute value of application/vnd.vmware.admin.createProviderVdcParams+xml, as shown here:

<Link
   type="application/vnd.vmware.admin.createProviderVdcParams+xml"
   rel="add"
   href="https://vcloud.example.com/api/admin/extension/providervdcsparams"/>
3

Create a VMWProviderVdcParams element that specifies the properties of the Provider vDC.

a

Include a VimServer element that references the vCenter server that you have chosen to supply a resource pool and storage profiles to this Provider vDC.

b

Include a ResourcePoolRefs element that specifies one resource pool.

The ResourcePoolRef must contain the href attribute value of the VimServer element you created in Step 3a, as well as the MoRef and VimObjectType values of the resource pool as they appear in the ResourcePool and element from the resource pool list. See the request portion of Example: Create a Provider vDC.

Note

You must specify exactly one resource pool when you create the Provider vDC. You can add more resource pools after the Provider vDC is created.

c

Include at least one StorageProfile element that contains the name of a storage profile that has been defined on the vCenter server referenced in the VimServer element you created in Step 3a.

4

POST the VMWProviderVdc element you created in Step 3 to the URL described in Step 2.

See the request portion of Example: Create a Provider vDC.

The server creates and enables the Provider vDC and returns a VMWProviderVdc element that includes information derived from the contents you POSTed, along with a set of Link elements that you can use to access, remove, disable, or modify the Provider vDC.

The new Provider vDC becomes a member of the ProviderVdcReferences element of the VCloud.

The resource pool you selected is removed from the resource pool list of the vCenter server.

Each storage profile you specified becomes the basis for a ProviderVdcStorageProfile object, and can be retrieved from the Provider vDC after it has been created, or by using a providerVdcStorageProfile query.

A VxlanPoolType network pool is created on the vCenter server referenced by the VimServer element you created in Step 3a and implicitly attached to the new Provider vDC. You can create other types of network pools on that vCenter server if you want them to be available in the Provider vDC. See Create a Network Pool.

This request creates a Provider vDC specifying a resource pool extracted from the response portion of Example: Retrieve a List of Resource Pools from a vCenter Server and a storage profile extracted from Example: Retrieve a List of Storage Profiles from a vCenter Server. The vCenter server that provides the resources is referenced in the VimServerRef and VimServer elements.

Request:

POST https://vcloud.example.com/api/admin/extension/providervdcsparams
Content-Type: application/vnd.vmware.admin.createProviderVdcParams+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<vmext:VMWProviderVdcParams
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   name="PvDC-Example">
   <vcloud:Description>Example Provider vDC</vcloud:Description>
   <vmext:ResourcePoolRefs>
      <vmext:VimObjectRef>
         <vmext:VimServerRef
            href="https://vcloud.example.com/api/admin/extension/vimServer/9" />
         <vmext:MoRef>resgroup-195</vmext:MoRef>
         <vmext:VimObjectType>RESOURCE_POOL</vmext:VimObjectType>
      </vmext:VimObjectRef>
   </vmext:ResourcePoolRefs>
   <vmext:VimServer
      href="https://vcloud.example.com/api/admin/extension/vimServer/9" />
   <vmext:StorageProfile>Gold</vmext:StorageProfile>
</vmext:VMWProviderVdcParams>

The response includes a Task that tracks the creation of the Provider vDC, and a set of Link elements that you can use to operate on or modify the Provider vDC. It also includes read-only values for ComputeCapacity and SupportedHardwareVersions, and a list of HostReferences identifying the ESX hosts that provide the resources.

Response:

201 Created
Content-Type: application/vnd.vmware.admin.vmwprovidervdc+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<vmext:VMWProviderVdc
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   status="0"
   name="PvDC-Example"
   id="urn:vcloud:providervdc:35"
   type="application/vnd.vmware.admin.vmwprovidervdc+xml" ... >
   <vcloud:Link
      rel="up"
      type="application/vnd.vmware.admin.vmwProviderVdcReferences+xml"
      href="https://vcloud.example.com/api/admin/extension/providerVdcReferences" />
   <vcloud:Link
      rel="alternate"
      type="application/vnd.vmware.admin.providervdc+xml"
      href="https://vcloud.example.com/api/admin/providervdc/35" />
   <vcloud:Link
      rel="update:resourcePools"
      type="application/vnd.vmware.admin.resourcePoolSetUpdateParams+xml"
      href="https://vcloud.example.com/api/admin/extension/providervdc/35/action/updateResourcePools" />
   <vcloud:Link
      rel="down"
      type="application/vnd.vmware.admin.vmwProviderVdcResourcePool+xml"
      href="https://vcloud.example.com/api/admin/extension/providervdc/35/resourcePools" />
   <vcloud:Link
      rel="down"
      type="application/vnd.vmware.admin.vmwStorageProfiles+xml"
      href="https://vcloud.example.com/api/admin/extension/providervdc/35/availableStorageProfiles" />
   <vcloud:Link
      rel="down"
      type="application/vnd.vmware.admin.vdcReferences+xml"
      href="https://vcloud.example.com/api/admin/providervdc/35/vdcReferences" />
   <vcloud:Description>Example Provider vDC</vcloud:Description>
   <vcloud:Tasks>
      <vcloud:Task
         ...
         operation="Creating Provider Virtual Datacenter PvDC-Example(35)">
         ...
      </vcloud:Task>
   </vcloud:Tasks>
   <vcloud:ComputeCapacity>
      <vcloud:Cpu>
         <vcloud:Units>MHz</vcloud:Units>
         <vcloud:Allocation>0</vcloud:Allocation>
         <vcloud:Total>0</vcloud:Total>
         <vcloud:Used>0</vcloud:Used>
         <vcloud:Overhead>0</vcloud:Overhead>
      </vcloud:Cpu>
      <vcloud:Memory>
         <vcloud:Units>MB</vcloud:Units>
         <vcloud:Allocation>0</vcloud:Allocation>
         <vcloud:Total>0</vcloud:Total>
         <vcloud:Used>0</vcloud:Used>
         <vcloud:Overhead>0</vcloud:Overhead>
      </vcloud:Memory>
   </vcloud:ComputeCapacity>
   <AvailableNetworks>
      <Network
         type="application/vnd.vmware.admin.network+xml"
         name="VC1-VLAN48"
         href="https://vcloud.example.com/api/admin/network/297" />
   </AvailableNetworks>
   <StorageProfiles>
      <ProviderVdcStorageProfile
         type="application/vnd.vmware.admin.pvdcStorageProfile+xml"
         name="Gold"
         href="https://vcloud.example.com/api/admin/pvdcStorageProfile/101" />
   </StorageProfiles>
   <Capabilities>
      <SupportedHardwareVersions>
         <SupportedHardwareVersion>vmx-04</SupportedHardwareVersion>
         <SupportedHardwareVersion>vmx-07</SupportedHardwareVersion>
         <SupportedHardwareVersion>vmx-08</SupportedHardwareVersion>
      </SupportedHardwareVersions>
   </Capabilities>
   <IsEnabled>true</IsEnabled>
   <vcloud:NetworkPoolReferences>
      <vcloud:NetworkPoolReference
         type="application/vnd.vmware.admin.networkPool+xml"
         name="VXLAN01"
         href="https://vcloud.example.com/api/admin/extension/networkPool/69c0a96e-1151-439d-b8f6-2e2a11785c9f" />
   </vcloud:NetworkPoolReferences>
   <vmext:DataStoreRefs />
   <vmext:ResourcePoolRefs>
      <vmext:VimObjectRef>
         <vmext:VimServerRef
            type="application/vnd.vmware.admin.vmwvirtualcenter+xml"
            name="VC-A"
            href="https://vcloud.example.com/api/admin/extension/vimServer/9" />
         <vmext:MoRef>resgroup-195</vmext:MoRef>
         <vmext:VimObjectType>RESOURCE_POOL</vmext:VimObjectType>
      </vmext:VimObjectRef>
   </vmext:ResourcePoolRefs>
   <vmext:VimServer
      type="application/vnd.vmware.admin.vmwvirtualcenter+xml"
      name="ConfigWizard Configured vCenter"
      href="https://vcloud.example.com/api/admin/extension/vimServer/9" />
   <vmext:HostReferences>
      <vmext:HostReference
         type="application/vnd.vmware.admin.host+xml"
         name="ESX01.vcloud.example.com"
         href="https://vcloud.example.com/api/admin/extension/host/83" />
      <vmext:HostReference
         type="application/vnd.vmware.admin.host+xml"
         name="ESX02.vcloud.example.com"
         href="https://vcloud.example.com/api/admin/extension/host/261" />
   </vmext:HostReferences>
</vmext:VMWProviderVdc>