A Provider VDC is a collection of compute, memory, and storage resources from one vCenter Server instance. For network resources, a Provider VDC can use NSX Data Center for vSphere or NSX-T Data Center. 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 instance 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.

This operation is restricted to system administrators.

Decide which vCenter Server instance to supply a resource pool and storage profiles to this Provider VDC. See Finding Available vCenter Resources.

If you want the Provider VDC to use NSX Data Center for vSphere for network services, attach the vCenter Server instance together with the associated NSX Manager instance to your cloud. See Attach a vCenter Server Instance.

If you want the Provider VDC to use NSX Data Center for vSphere with a custom VXLAN-backed network pool instead of the default VXLAN-backed network pool, Create a VXLAN-Backed Network Pool.

If you want the Provider VDC to use NSX-T Data Center for network services, Register an NSX-T Manager Instance.

1

Retrieve the XML representation of the extension objects and operations.

Use a request similar to:

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

In the response, 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 instance 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 that you created in Step 3a, and the MoRef and VimObjectType values of the resource pool as they appear in the ResourcePool element from the resource pool list. See the request portion of Example: VDC.

Note

You must specify exactly one resource pool when you create the Provider VDC, which is the primary resource pool. After creating the Provider VDC, you can add more resource pools.

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.

d

If you created a VXLAN-backed network pool that you want this Provider VDC to use instead of the default VXLAN-backed network pool, include a VxlanNetworkPool element that references the pool. See Create a VXLAN-Backed Network Pool.

e

If you registered an NSX-T Manager instance that you want to this Provider VDC to use, include an NsxTManagerReference element.

4

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

See the request portion of Example: 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 instance. You cannot include this resource pool in any other Provider VDC.

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.

If you did not include a include a VxlanNetworkPool element in the request body, the system creates a VxlanPoolType network pool on the vCenter server referenced by the VimServer element you created in Step 3a and attaches it to the new Provider VDC.

These examples create Provider VDCs 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 instance that provides the resources (the resource pool whose MoRef is resgroup-195 and a storage profile named Gold) is referenced in the VimServerRef and VimServer elements.

The responses include 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 a HighestSupportedHardwareVersion value set to the latest virtual hardware version supported by the primary resource pool, and a list of HostReferences identifying the ESX hosts in that resource pool.

Create a Provider VDC backed by NSX Data Center for vSphere

Because the request does not include a VxlanNetworkPool element, the system creates the provider VDC with the default VXLAN network pool.

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>

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: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>
   <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.example.com"
         href="https://vcloud.example.com/api/admin/extension/host/83" />
      <vmext:HostReference
         type="application/vnd.vmware.admin.host+xml"
         name="ESX02.example.com"
         href="https://vcloud.example.com/api/admin/extension/host/261" />
   </vmext:HostReferences>
   <vmext:HighestSupportedHardwareVersion>vmx-07</vmext:HighestSupportedHardwareVersion>
</vmext:VMWProviderVdc>

Create a Provider VDC backed by NSX-T Data Center

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"?>
<ns2:VMWProviderVdcParams
   xmlns="http://www.vmware.com/vcloud/v1.5"
   xmlns:ns2="http://www.vmware.com/vcloud/extension/v1.5"
   name="nsxTPvdc1">
   <ns2:ResourcePoolRefs>
      <ns2:VimObjectRef>
      <ns2:VimServerRef
         href="https://vcloud.example.com/api/admin/extension/vimServer/9"/>
         <ns2:MoRef>resgroup-195</ns2:MoRef>
         <ns2:VimObjectType>RESOURCE_POOL</ns2:VimObjectType>
      </ns2:VimObjectRef>
   </ns2:ResourcePoolRefs>
<ns2:VimServer
   href="https://vcloud.example.com/api/admin/extension/vimServer/9"
   id="urn:vcloud:vimserver:9"
   name="vc1"
   type="application/vnd.vmware.admin.vmwvirtualcenter+xml"/>
<ns2:NsxTManagerReference
   href="https://vcloud.example.com/api/admin/extension/nsxtManagers/24"
   id="urn:vcloud:nsxtmanager:24"
   name="nsxManager1"
   type="application/vnd.vmware.admin.nsxTmanager+xml"/>
<ns2:HighestSupportedHardwareVersion>vmx-7</ns2:HighestSupportedHardwareVersion>
<ns2:IsEnabled>true</ns2:IsEnabled>
<ns2:StorageProfile>*</ns2:StorageProfile>
</ns2:VMWProviderVdcParams>

Response:

201 Created
Content-Type: application/vnd.vmware.admin.vmwprovidervdc+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<vmext:VMWProviderVdc
   xmlns="http://www.vmware.com/vcloud/v1.5"
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
   xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"
   xmlns:common="http://schemas.dmtf.org/wbem/wscim/1/common"
   xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"
   xmlns:vmw="http://www.vmware.com/schema/ovf"
   xmlns:ovfenv="http://schemas.dmtf.org/ovf/environment/1"
   xmlns:ns9="http://www.vmware.com/vcloud/versions"
   status="0"
   name="nsxTPvdc1"
   id="urn:vcloud:providervdc:36"
   href="https://vcloud.example.com/api/admin/extension/providervdc/36"
   type="application/vnd.vmware.admin.vmwprovidervdc+xml">
   <Link
      rel="up"
      href="https://vcloud.example.com/api/admin/extension/providerVdcReferences"
      type="application/vnd.vmware.admin.vmwProviderVdcReferences+xml"/>
   <Link
      rel="edit"
href="https://vcloud.example.com/api/admin/extension/providervdc/36/storageProfiles"
type="application/vnd.vmware.admin.updateProviderVdcStorageProfiles+xml"/>
   <Link
      rel="alternate"
      href="https://vcloud.example.com/api/admin/providervdc/36"
      type="application/vnd.vmware.admin.providervdc+xml"/>
   <Link
      rel="update:resourcePools"
      href="https://vcloud.example.com/api/admin/extension/providervdc/36/action/updateResourcePools"
      type="application/vnd.vmware.admin.resourcePoolSetUpdateParams+xml"/>
   <Link
      rel="down"
      href="https://vcloud.example.com/api/admin/extension/providervdc/36/resourcePools"
      type="application/vnd.vmware.admin.vmwProviderVdcResourcePoolSet+xml"/>
   <Link
      rel="down"
      href="https://vcloud.example.com/api/admin/extension/providervdc/36/availableStorageProfiles"
      type="application/vnd.vmware.admin.vmwStorageProfiles+xml"/>
   <Link
      rel="down"
      href="https://vcloud.example.com/api/admin/extension/providervdc/36/discoverResourcePools"
      type="application/vnd.vmware.admin.vmwDiscoveredResourcePools+xml"/>
   <Link
      rel="down"
      href="https://vcloud.example.com/api/admin/providervdc/36/vdcReferences"
      type="application/vnd.vmware.admin.vdcReferences+xml"/>
   <Link
      rel="down"
      href="https://vcloud.example.com/api/admin/providervdc/36/metadata"
      type="application/vnd.vmware.vcloud.metadata+xml"/>
    Link
      rel="down"
      href="https://vcloud.example.com/api/admin/providervdc/36/extension"
      type="application/vnd.vmware.admin.extensibility.selectors+xml"/>
   <Link
      rel="add"
      href="https://vcloud.example.com/cloudapi/providervdc/urn:vcloud:providervdc:36/computePolicies"
      type="application/json"/>
   <Link
      rel="down"
      href="https://vcloud.example.com/cloudapi/providervdc/urn:vcloud:providervdc:36/computePolicies"
      type="application/json"/>
   <Tasks>
      <Task
      ...
      operation="Creating Provider Virtual Datacenter nsxTPvdc1(36)"
      ...
      </Task>
   </Tasks>
   <ComputeCapacity>
      <Cpu>
         <Units>MHz</Units>
         <Total>0</Total>
      </Cpu>
      <Memory>
         <Units>MB</Units>
         <Total>0</Total>
      </Memory>
   </ComputeCapacity>
   <AvailableNetworks/>
   <StorageProfiles/>
   <IsEnabled>true</IsEnabled>
   <NetworkPoolReferences/>
   <vmext:DataStoreRefs/>
   <vmext:ResourcePoolRefs/>
   <vmext:VimServer
      href="https://vcloud.example.com/api/admin/extension/vimServer/9"
      id="9"
      name="vc1"
      type="application/vnd.vmware.admin.vmwvirtualcenter+xml"/>
   <vmext:NsxTManagerReference
      href="https://vcloud.example.com/api/admin/extension/nsxtManagers/24"
      id="24"
      name="nsxManager1"
      type="application/vnd.vmware.admin.nsxTmanager+xml"/>
   <vmext:HostReferences/>
   <vmext:HighestSupportedHardwareVersion>vmx-07</vmext:HighestSupportedHardwareVersion>
</vmext:VMWProviderVdc>