ProtectVms
This method adds virtual machines to a
protection group.
With array-based replication, the protection group is determined by datastore
location of the virtual machines. With host-based replication (vSphere replication),
you can use the AssociateVms method to place virtual machines into a protection
group. With vVol replication, the protection group is determined by replication
groups of the virtual machines. To protect a Virtual Machine, its folder, resource
pool, and network must be mapped from the protected site to the recovery site. To
get a list of currently configured mappings, see ListInventoryMappings.
If a few or all the VMs in the list are already protected, then the operation
succeeds.
Synopsis
ProtectionTask protectVms(ProtectionGroup.VmProtectionSpec[] vms)
vms[]
is a list of virtual machines to protect. If some of the
virtual machines from the list or all of them are already protected, the operation
succeeds. VmProtectionSpec
is a spec describing how a virtual machine to be
protected. It has the following properties:
Field | Description |
---|---|
@optional VirtualMachine
vm | The virtual machine to be protected |
VmRecoverySpec recoverySpec | Information relevant at the recovery site to which the VM will be
protected. Allows configuration of protection per VM instead of
using global inventory mappings. |
VmRecoverySpec
is a spec describing virtual machine recovery
locations. It has the following properties:
Field | Description |
---|---|
@optional PlaceholderVmLocation
placeholderVmLocation | Location in which to create the placeholder
VM. |
@optional RecoveryLocationSettings
recoveryLocationSettings | Recovery location settings. |
PlaceholderVmLocation
is a data object. It contains information about where
a placeholder VM should be created. It has the following fields:
Field | Description |
---|---|
folder | Folder in which the placeholder VM should be
created. If unset, the inventory mapper will be queried for a
suitable location. |
hostSystem | Host in which the placeholder VM should be
created. If unset, SRM will attempt to pick one based on the
resource pool mapping (this works only if the resource pool
unambiguously designates a single host, or if it designates a
DRS cluster). |
resourcePool | Resource pool in which the placeholder VM
should be created. If unset, the inventory mapper will be
queried for a suitable location. |
placeholderDatastore | Datastore in which the placeholder VM should
be created. If unset, the placeholder datastore manager will be
queried for a suitable location. |
RecoveryLocationSettings
is a spec that provides user-editable settings
regarding where to find virtual machine components at recovery time. It has the
following properties:
Field | Description |
---|---|
@optional DeviceInfo[]
protectedDevices | Information about devices for which the user
has supplied recovery-time information. |
@optional DeviceInfo[]
excludedDevices | Information about devices for which the user
does not want to be present in the recovered VM. If
autoExcludeMediaDevices advance settings is enabled, the list
includes the media devices that are auto-excluded by
SRM. |
@optional String
changeVersion | Change version control. When reconfiguring an
existing settings this value must be set and must match the most
recent value. This means that first
#getRecoveryLocationSettings should be
called. Then its result should be updated and passed to
#reconfigureRecoveryLocationSettings . For
newly protected VMs, leave it unset. |
DeviceInfo
is a data
object with the following properties:
Field | Description |
---|---|
key | Device key |
NetworkDeviceInfo
extends DeviceInfo and has the following properties:
Field | Description |
---|---|
vim.Network network | Reference to a recovery network managed object
to which to attach the NIC device. |
FileDeviceInfo
extends
DeviceInfo and has the following properties:
Field | Description |
---|---|
@optional vim.Datastore
datastore | Reference to the datastore the directory is
located on. If the directory is not located on a datastore, this
is omitted. |
path | Directory path. |
fileName | Name of the file under the directory. |
NetworkDeviceInfo
and
FileDeviceInfo
should be used to construct
RecoveryLocationSettings
.ProtectionTask
is the task object to monitor the status of requested
virtual machines. For more information, see Protection Task.If a task fails, its error field may contain one of the following:
- drextapi.fault.ConnectionDownFault- if the remote SRM could not be reached.
- drextapi.fault.CannotProtectFTSecondaryVm- if the VM is a fault tolerance secondary VM.
- drextapi.fault.DeviceBackingConflict- if the caller specified a device locator, or explicitly excluded, a device which the provider would like to protect.
- drextapi.fault.DevicesNotResolved- if any of the VM's devices were neither protected by the provider, nor was a backing locator provided by the caller, nor was the device explicitly excluded.
- drextapi.fault.InsufficientLicensesFault- If there were not enough licenses available to protect the VMs.
- drextapi.InvalidState- if the group we are trying to protect into is not in the 'ProtectedVm.State#active active' state.
- drextapi.fault.ProductionVmDeleted- if the VM to be protected did not exist on VC.
- drextapi.fault.ReplicationProviderFault- if the replication provider rejected the operation.
- drextapi.fault.VmAlreadyProtectedEx- if the VM was already protected in another group.
- vim.fault.ConcurrentAccess- if the group was modified during the operation.
Faults
- InvalidArgument - If the list of virtual machines is empty or null.
- RuntimeFault
For information about the faults that
Site Recovery Manager
throws, see Faults in Site Recovery Manager API. Example for
ProtectVms
ManagedObjectReference taskRef = srmPortType.protectVms( ManagedObjectReference _this, List < SrmProtectionGroupVmProtectionSpec > vms); Where ManagedObjectReference _this = _protectionGroupRef; where _protectionGroupRef can be taken from: SrmServiceInstanceContent content = _srmPortType.retrieveContent(_svcRef); ManagedObjectReference _protectionRef = content.getProtection(); List < ManagedObjectReference > groups = srmPortType.listProtectionGroups(_protectionRef); _protectionGroupRef = groups.get(0);