After you undeploy a vApp and power it off, you can use an HTTP DELETE request to delete the vApp object.

A deployed vApp has a link that you can use with a POST request to undeploy the vApp and take a power action such as powering it off or suspending it. A powered-off vApp has a link that you can use with a DELETE request to remove the vApp.

Prerequisites

This operation requires the rights included in the predefined vApp Author role or an equivalent set of rights.

Procedure

  1. Retrieve the XML representation of the vApp.
    Make a GET request to the URL in the href attribute of the VApp element that was returned when you created the vApp from the template. See Get Information About a vApp.
  2. Undeploy the vApp, and specify that it should also be powered off.
    Make a POST request to the vApp action/undeploy link, which has the following form:
    <Link
       rel="undeploy"
       href="https://vcloud.example.com/api/vApp/vapp-7/action/undeploy"/>
    In the request body, specify that the undeployment include powering off the vApp. See Undeploy, Power Off, and Delete a vApp.
  3. Retrieve the XML representation of the vApp again.
    After it is powered off and undeployed, the vApp includes a rel="remove" link of the following form:
    <Link
       rel="remove"
       href="https://vcloud.example.com/api/vApp/vapp-7"/>
  4. Remove the vApp.
    Make a DELETE request to the vApp's rel="remove" link, as shown in the request portion of Undeploy, Power Off, and Delete a vApp.

Results

The server starts a task to manage the events that lead up to the removal of the vApp, and returns a Task element that you can use to track the progress of the task.

Example: Undeploy, Power Off, and Delete a vApp

You can use the undeploy request body, an UndeployVAppParams element, to specify an UndeployPowerAction element. This example specifies an UndeployPowerAction of powerOff. Even though powerOff is the default UndeployPowerAction, It appears here for completeness.

Request:
POST https://vcloud.example.com/api/vApp/vapp-7/action/undeploy
Content-Type: application/vnd.vmware.vcloud.undeployVAppParams+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<UndeployVAppParams
   xmlns="http://www.vmware.com/vcloud/v1.5">
   <UndeployPowerAction>powerOff</UndeployPowerAction>
</UndeployVAppParams>
Response:
202 Accepted
...
<Task 
   xmlns="http://www.vmware.com/vcloud/v1.5" 
   ...
   operation="Undeploying Virtual Application Linux FTP server (7)" 
   ... >
</Task>

After the vApp is undeployed and powered off, its representation includes a link where rel="remove". Make a DELETE request to this link to remove the vApp.

Request:
DELETE https://vcloud.example.com/api/vApp/vapp-7
Response:
202 Accepted
...
<Task 
   ...
   operation="Deleting Virtual Application Linux FTP server (7)" 
   ... >
</Task>
Note: You can force deletion of a vApp that is powered on, deployed, or both by appending a force=true query string to the vApp href and using that URL with a DELETE request, as shown here:
DELETE https://vcloud.example.com/api/vApp/vapp-7?force=true