An InstantiateVAppTemplateParams request body can include a SourcedVmInstantiationParams element for each virtual machine in the vApp. Values you provide in this element modify a subset of virtual machine hardware configuration parameters during instantiation.

An InstantiateVAppTemplateParams request body that incorporates one or more SourcedVmInstantiationParams elements supports the following configuration changes:

Specify a storage profile for the virtual machine.

Increase the capacity of the virtual machine's SATA or SCSI disks.

Increase or decrease the size of the virtual machine's memory.

Increase or decrease the number of CPU cores per virtual socket.

Add or remove CPUs.

You can also modify any of these configuration settings after the vApp is deployed. See Configuring vApps and Virtual Machines

Verify that you are logged in to the vCloud API as an administrator, Catalog Author, or vApp Author.

Review the current configuration of the vApp and its virtual machines. Configuration parameters in the VAppTemplate such as its NetworkConfigSection and LeaseSettingsSection affect all virtual machines in the vApp. Configuration parameters for individual virtual machines are defined in Vm elements in the VAppTemplate. A virtual machine's network connections are defined in its NetworkConnectionSection, and its hardware configuration is defined in its VirtualHardwareSection. To view the configuration of a virtual machine in a vApp template, you can retrieve the template and examine the VirtualHardwareSection of that Vm, or you can download the OVF descriptor of the vApp template, as shown in Download the OVF Descriptor of a vApp or vApp Template.

1

Examine the OVF descriptor of the template to determine the values that you can include in a SourcedVmInstantiationParams element.

See Example: Modify Virtual Machine Hardware During vApp Template Instantiation for guidelines.

2

Include the SourcedVmInstantiationParams element in an InstantiateVAppTemplateParams element.

See Example: Modify Virtual Machine Hardware During vApp Template Instantiation.

3

Make a POST request to the action/instantiateVAppTemplate URL of the VDC.

Supply the InstantiateVAppTemplateParams element as the request body.

Important

This example uses the SourcedVmInstantiationParamselement, which is deprecated as of API version 5.6 and might be removed from future releases. Use the SourcedItem element, as shown in Example: Modify Virtual Machine Name, Description, and Hardware During vApp Template Instantiation, instead.

This InstantiateVAppTemplateParams request extends the one shown in Example: Instantiate a vApp Template to include a SourcedVmInstantiationParams element that makes several configuration changes in the virtual machine referenced at https://vcloud.example.com/api/vAppTemplate/vm-4.

Specifies a storage profile for the virtual machine.

Adds a virtual CPU and changes the value of CoresPerSocket to 2. If you include a CoresPerSocket element, its value must be an integer multiple of the value of the existing rasd:VirtualQuantity of CPU items, or of the value you supply in NumberOfCpus. Example: Modify the CPU Configuration of a Virtual Machine shows the original CPU configuration, and how to make this change by reconfiguring the virtual machine in a deployed vApp.

Increases the capacity of the hard disk from 1GB to 10GB by including a Disk element that specifies a Size of 10240 for the disk that has a rasd:InstanceID value of 2000. The value you supply for Size is interpreted as megabytes. You can see the original disk configuration in Example: Retrieve the Hard Disks and Controllers in a Virtual Machine . Example: Modify the Hard Disk Configuration of a Virtual Machine shows how to make the same change by reconfiguring the virtual machine in a deployed vApp. If you include a Disk element, the value of its instanceId attribute must match the value in the rasd:InstanceID element of an existing Item that defines a virtual disk (RASD resource type 17).You can increase disk capacity, but not reduce it, for disks on SATA and SCSI controllers. You cannot change the capacity of other disk types. Item elements that represent SATA disks have a vcloud:busType attribute with the value 20. Those that represent SCSI disks have a vcloud:busType attribute with the value 6.

Request:

POST https://vcloud.example.com/api/vdc/5/action/instantiateVAppTemplate
Content-Type: application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<InstantiateVAppTemplateParams
   xmlns="http://www.vmware.com/vcloud/v1.5"
   name="Linux FTP server"
   deploy="true"
   powerOn="true"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1">
   <Description>Example FTP Server</Description>
   <InstantiationParams>
      <NetworkConfigSection>
         <ovf:Info>Configuration parameters for logical networks</ovf:Info>
         <NetworkConfig
            networkName="vAppNetwork">
            <Configuration>
               <ParentNetwork
                  href="https://vcloud.example.com/api/network/54" />
               <FenceMode>bridged</FenceMode>
            </Configuration>
         </NetworkConfig>
      </NetworkConfigSection>
      <LeaseSettingsSection
         type="application/vnd.vmware.vcloud.leaseSettingsSection+xml">
         <ovf:Info>Lease Settings</ovf:Info>
         <StorageLeaseInSeconds>172800</StorageLeaseInSeconds>
         <StorageLeaseExpiration>2013-04-11T08:08:16.438-07:00</StorageLeaseExpiration>
      </LeaseSettingsSection>
   </InstantiationParams>
   <Source
      href="https://vcloud.example.com/api/vAppTemplate/vappTemplate-111" />
   <SourcedVmInstantiationParams>
      <Source
         href="https://vcloud.example.com/api/vAppTemplate/vm-4" />
      <StorageProfile
         href="https://vcloud.example.com/api/vdcStorageProfile/33">
      </StorageProfile>
      <HardwareCustomization>
         <NumberOfCpus>2</NumberOfCpus>
         <CoresPerSocket>2</CoresPerSocket>
         <Disk
            instanceId="2000">
            <Size>10240</Size>
         </Disk>
      </HardwareCustomization>
   </SourcedVmInstantiationParams>
   <AllEULAsAccepted>true</AllEULAsAccepted>
</InstantiateVAppTemplateParams>

The response is a sparsely populated VApp element, as shown in the response portion of Example: Deploying a vApp.