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. 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.

Prerequisites

  • 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 #GUID-B81DB44D-51CB-4878-8DBD-FDF6AE3DA031.
  • 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 for network services, Register an NSX Manager Instance.

Procedure

  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.
    1. Include a VimServer element that references the vCenter Server instance to supply a resource pool and storage profiles to this Provider VDC.
    2. 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 a, 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 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.
    3. 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 a.
    4. 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.
    5. If you registered an NSX 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 VDC.

Results

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 a and attaches it to the new Provider VDC.

Example: Create a Provider VDC Backed by NSX Data Center for vSphere or NSX

These examples create Provider VDCs specifying a resource pool extracted from the response portion of Retrieve a List of Resource Pools from a vCenter Server and a storage profile extracted from 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
    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>