You can take a snapshot of all the virtual machines in a vApp. After the snapshots are taken, you can revert all virtual machines in the vApp to the most recent snapshot, or remove all snapshots.

You can take a snapshot of a vApp whether or not it is powered on. The createSnapshot operation always creates a snapshot for each virtual machine in the vApp. Snapshots are created in the order specified for virtual machines in the StartupSection of the VApp element.

vApp snapshots have the following limitations:

They do not capture the ovf:ProductSection elements in the vApp.

They do not capture NIC configurations.

They cannot be created if any virtual machine in the vApp is connected to an independent disk.

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

You must be the owner of the object that this operation affects.

1

(Optional) Retrieve information about current vApp snapshots.

When you create a snapshot, it overwrites any existing snapshots without warning. Before creating a new snapshot, you might want to verify whether there are any existing snapshots. Make a request like this one:

GET https://vcloud.example.com/api/vApp/vapp-33/snapshotSection

The response is a SnapshotSection element containing a link to each of the current snapshots for the vApp.

2

Create a CreateSnapshotParams request body.

See Example: Create a vApp Snapshot.

3

POST the CreateSnapshotParams to the action/createSnapshot link of the vApp.

In this example, the memory and quiesce options are not specified, so their values default to true. The name attribute is optional. If you omit it from the request, the system generates a name for the snapshot.

Request:

POST https://vcloud.example.com/api/vApp/vapp-33/action/createSnapshot
Content-Type: application/vnd.vmware.vcloud.createSnapshotParams+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<CreateSnapshotParams
   xmlns="http://www.vmware.com/vcloud/v1.5"
   name="snap1">
   <Description>Demo snapshot</Description>
</CreateSnapshotParams>

The response is a Task.

Response:

<?xml version="1.0" encoding="UTF-8"?>
<Task
   ...
   operationName="vappCreateSnapshot"
   ... />
   ...    
</Task>

After the snapshot is created, you can revert the vApp to the state captured in the snapshot.

POST https://vcloud.example.com/api/vApp/vapp-33/action/revertToCurrentSnapshot

You can also remove all snapshots.

POST https://vcloud.example.com/api/vApp/vapp-33/action/removeAllSnapshots

Neither of these requests has a request body. Both return a Task.