Managed Object - ResourcePool

Property of
ClusterInitialPlacementAction, ComputeResource, OvfResourceMap, ResourcePool, ResourcePoolEventArgument, StoragePlacementSpec, VAppCloneSpecResourceMap, VirtualMachine, VirtualMachineImportSpec, VirtualMachineRelocateSpec
Parameter to
AddHost_Task, CheckCompatibility_Task, CheckMigrate_Task, CloneVApp_Task, CreateImportSpec, CreateVM_Task, MarkAsVirtualMachine, MigrateVM_Task, MoveHostInto_Task, RecommendHostsForVm, RegisterVM_Task, ValidateMigration
Returned by
CreateResourcePool
Extended by
VirtualApp
Extends
ManagedEntity
See also
ComputeResource, Folder, HostSystem, HttpNfcLease, ImportSpec, ManagedEntity, ResourceConfigOption, ResourceConfigSpec, ResourcePoolRuntimeInfo, ResourcePoolSummary, VAppConfigSpec, VirtualApp, VirtualMachine, VirtualMachineConfigSpec


Managed Object Description

Represents a set of physical resources: a single host, a subset of a host's resources, or resources spanning multiple hosts. Resource pools can be subdivided by creating child resource pools. In order to run, a virtual machine must be associated as a child of a resource pool.

In a parent/child hierarchy of resource pools and virtual machines, the single resource pool that has no parent pool is known as the root resource pool.

Configuration

A resource pool is configured with a set of CPU (in MHz) and memory (in MB) resources. These resources are specified in absolute terms with a resource reservation and a resource limit, along with a shares setting. The shares are used during resource contention, to ensure graceful degradation.

For the root resource pool, the values of the reservation and the limit are set by the system and are not configurable. The reservation and limit are set to the same value, indicating the total amount of resources the system has available to run virtual machines. This is computed as the aggregated CPU and memory resources provided by the set of current available hosts in the parent compute resource minus the overhead of the virtualization layer.

Since the resource pool configuration is absolute (in MHz or MB), the configuration can become invalid when resources are removed. This can happen if a host is removed from the cluster, if a host becomes unavailable, or if a host is placed in maintenance mode. When this happens, the system flags misconfigured resource pools and displays the reservations and limits that are in effect. Further, in a DRS enabled cluster, the tree can be misconfigured if the user bypasses VirtualCenter and powers on VMs directly on the host.

A General Discussion of Resource pool states and admission control There are three states that the resource pool tree can be in: undercommited (green), overcommited (yellow), and inconsistent (red). Depending on the state, different resource pool configuration policies are enforced. The states are described in more detail below:

Destroying a ResourcePool

When a ResourcePool is destroyed, all the virtual machines are reassigned to its parent pool. The root resource pool cannot be destroyed, and invoking destroy on it will throw an InvalidType fault.

Any vApps in the ResourcePool will be moved to the ResourcePool's parent before the pool is destroyed.

The Resource.DeletePool privilege must be held on the pool as well as the parent of the resource pool. Also, the Resource.AssignVMToPool privilege must be held on the resource pool's parent pool and any virtual machines that are reassigned.

Properties

Name Type Description
childConfiguration*ResourceConfigSpec[]

The resource configuration of all direct children (VirtualMachine and ResourcePool) of this resource group.
configResourceConfigSpec

Configuration of this resource pool.
owner PManagedObjectReference
to a ComputeResource

The ComputeResource to which this set of one or more nested resource pools belong.
resourcePool* PManagedObjectReference[]
to a ResourcePool[]

The set of child resource pools.
runtimeResourcePoolRuntimeInfo

Runtime information about a resource pool. The ResourcePoolResourceUsage information within ResourcePoolRuntimeInfo can be transiently stale. Use RefreshRuntime method to update the information. In releases after vSphere API 5.0, vSphere Servers might not generate property collector update notifications for this property. To obtain the latest value of the property, you can use PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx. If you use the PropertyCollector.WaitForUpdatesEx method, specify an empty string for the version parameter. Any other version value will not produce any property values as no updates are generated.
summaryResourcePoolSummary

Basic information about a resource pool. In releases after vSphere API 5.0, vSphere Servers might not generate property collector update notifications for this property. To obtain the latest value of the property, you can use PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx. If you use the PropertyCollector.WaitForUpdatesEx method, specify an empty string for the version parameter. Any other version value will not produce any property values as no updates are generated.
vm* PManagedObjectReference[]
to a VirtualMachine[]

The set of virtual machines associated with this resource pool.
Properties inherited from ManagedEntity
alarmActionsEnabled, configIssue, configStatus, customValue, declaredAlarmState, disabledMethod, effectiveRole, name, overallStatus, parent, permission, recentTask, tag, triggeredAlarmState
Properties inherited from ExtensibleManagedObject
availableField, value
*May not be presentP Required privilege: System.View

Methods

Methods defined in this Managed Object
CreateChildVM_Task, CreateResourcePool, CreateVApp, DestroyChildren, ImportVApp, MoveIntoResourcePool, QueryResourceConfigOption, RefreshRuntime, RegisterChildVM_Task, UpdateChildResourceConfiguration, UpdateConfig
Methods inherited from ManagedEntity
Destroy_Task, Reload, Rename_Task
Methods inherited from ExtensibleManagedObject
setCustomValue

CreateChildVM_Task

Creates a new virtual machine in a vApp container.

This method supports creating a virtual machine directly in a vApp. A virtual machine in a vApp is not associated with a VM folder and therefore cannot be created using the method on a Folder.

This method can only be called directly on a vApp or on a resource pool that is a child of a vApp.

The privilege VirtualMachine.Inventory.Create is required on this entity. Further, if this is a resource pool, the privilege Resource.AssignVMToPool is required. If this is a vApp, the privilege VApp.AssignVM is required.

Depending on the properties of the virtual machine bring created, additional privileges may be required. See CreateVM_Task for a description of these privileges.

Required Privileges
VirtualMachine.Inventory.Create
Since
vSphere API 4.0

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
configVirtualMachineConfigSpec

The configuration of the virtual machine hardware.
host*ManagedObjectReference
to a HostSystem

The target host on which the virtual machine will run. This must specify a host that is a member of the ComputeResource indirectly specified by the pool. For a stand-alone host or a cluster with DRS, host can be omitted, and the system selects a default.
*Need not be set

Return Value

Type Description
ManagedObjectReference
to a Task
This method returns a Task object with which to monitor the operation. The info.result property in the Task contains the newly created VirtualMachine upon success.

Faults

Type Description
FileAlreadyExistsThrown if the requested cfgPath for the virtual machine's configuration file already exists.
FileFaultThrown if there is a problem creating the virtual machine on disk. Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
InsufficientResourcesFaultThrown if this operation would violate a resource usage policy.
InvalidDatastoreThrown if the operation cannot be performed on the target datastores.
InvalidNameThrown if the name is not a valid entity name.
NotSupportedThrown if this resource pool is not a vApp or is a child of a vApp.
OutOfBoundsThrown if Host.capability.maxSupportedVMs is exceeded.
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.
VmConfigFaultThrown if the configSpec has incorrect values. Typically, a more specific subclass is thrown.
VmWwnConflictThrown if the WWN of the virtual machine has been used by other virtual machines.

Events

Type
None



CreateResourcePool

Creates a new resource pool.

In the ResourceConfigSpec, all values in ResourceAllocationInfo must be supplied; they are not optional.

Any % (percent) character used in this name parameter must be escaped, unless it is used to start an escape sequence. Clients may also escape any other characters in this name parameter.

Required Privileges
Resource.CreatePool

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
namexsd:string


specResourceConfigSpec



Return Value

Type Description
ManagedObjectReference
to a ResourcePool

Faults

Type Description
DuplicateNameThrown if this pool already contains an object with the given name.
InsufficientResourcesFaultThrown if the operation would violate a resource usage policy. Typically, a more specific subclass, such as InsufficientCpuResourcesFault will be thrown.
InvalidArgumentThrown if the pool specification is invalid.
InvalidNameThrown if the name is not a valid entity name.
NotSupportedThrown if the ComputeResource does not support nested resource pools.
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.

Events

Type
None

Show WSDL type definition



CreateVApp

Creates a new vApp container.

Any % (percent) character used in this name parameter must be escaped, unless it is used to start an escape sequence. Clients may also escape any other characters in this name parameter.

Required Privileges
VApp.Create
Since
vSphere API 4.0

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
namexsd:string

The name of the vApp container in the inventory
resSpecResourceConfigSpec

The resource configuration for the vApp container (same as for a regular resource pool).
configSpecVAppConfigSpec

The specification of the vApp specific meta-data.
vmFolder*ManagedObjectReference
to a Folder

The parent folder for the vApp. This must be null if this is a child vApp.
*Need not be set

Return Value

Type Description
ManagedObjectReference
to a VirtualApp
The created vApp object.

Faults

Type Description
DuplicateNameThrown if this pool already contains an object with the given name.
InsufficientResourcesFaultThrown if the operation would violate a resource usage policy. Typically, a more specific subclass, such as InsufficientCpuResourcesFault will be thrown.
InvalidArgumentThrown if the pool specification is invalid.
InvalidNameThrown if the name is not a valid entity name.
InvalidStateThrown if the resource pool does not support the operation in its current state. This will typically be a subclass such as NoActiveHostInCluster.
NotSupportedThrown if the ComputeResource does not support nested resource pools.
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.
VmConfigFaultor a more specific subclass, if errors are found in the supplied in VApp configuration.

Events

Type
None

Show WSDL type definition



DestroyChildren

Removes all child resource pools recursively. All virtual machines and vApps associated with the child resource pools get associated with this resource pool.

Note that resource pools contained in child vApps are not affected.

The privilege checks performed are the following.

Required Privileges
Dynamic - See discussion above

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.

Return Value

Type Description
None

Faults

Type Description
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.

Events

Type
None

Show WSDL type definition



ImportVApp

Creates a new entity in this resource pool. The import process consists of two steps:
  1. Create the VMs and/or vApps that make up the entity.
  2. Upload virtual disk contents.
In step 1, the client must wait for the server to create all inventory objects. It does that by monitoring the state property on the HttpNfcLease object returned from this call. When the server is done creating objects, the lease will change to the ready state, and step 2 begins. If an error occurs while the server is creating inventory objects, the lease will change to the error state, and the import process is aborted.

In step 2, the client uploads disk contents using the URLs provided in the info property of the lease. The client must call HttpNfcLeaseProgress on the lease periodically to keep the lease alive and report progress to the server. Failure to do so will cause the lease to time out, and the import process will be aborted.

When the client is done uploading disks, it completes the lease by calling HttpNfcLeaseComplete. The client can also abort the import process by calling HttpNfcLeaseAbort.

If the import process fails, is aborted, or times out, all created inventory objects are removed, including all virtual disks.

This operation only works if the folder's childType includes VirtualMachine.

Depending on the properties of the virtual machine bring imported, additional privileges may be required. See CreateVM_Task for a description of these privileges.

Required Privileges
VApp.Import
Since
vSphere API 4.0

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
specImportSpec

An ImportSpec describing what to import.
folder* PManagedObjectReference
to a Folder

The folder to which the entity will be attached.
host*ManagedObjectReference
to a HostSystem

The target host on which the entity will run. This must specify a host that is a member of the ComputeResource indirectly specified by the pool. For a stand-alone host or a cluster with DRS, host can be omitted, and the system selects a default.
*Need not be set P Required privilege: VApp.Import

Return Value

Type Description
ManagedObjectReference
to a HttpNfcLease
A HttpNfcLease object which is used to drive the import session.

Faults

Type Description
DuplicateNameThrown if another virtual machine in the same folder already has the specified target name.
FileAlreadyExistsThrown if the requested cfgPath for the virtual machine's configuration file already exists.
FileFaultThrown if there is a problem creating the virtual machine on disk. Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
InsufficientResourcesFaultThrown if this operation would violate a resource usage policy.
InvalidDatastoreThrown if the operation cannot be performed on the target datastores.
InvalidNameThrown if the name is not a valid entity name.
NotSupportedThrown if the virtual machine is being created within a folder whose childType property is not set to "VirtualMachine", a vApp is being imported into a resource pool that does not support nested resource pools, or a virtual machine is being imported into a resource pool and no folder is given.
OutOfBoundsThrown if Host.capability.maxSupportedVMs is exceeded.
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.
VmConfigFaultThrown if a VM configSpec has incorrect values. Typically, a more specific subclass is thrown.
VmWwnConflictThrown if the WWN of the virtual machine has been used by other virtual machines.

Events

Type
None

Show WSDL type definition



MoveIntoResourcePool

Moves a set of resource pools, vApps or virtual machines into this pool. The pools, vApps and virtual machines must be part of the cluster or standalone host that contains this pool.

For each entity being moved, the move is subject to the following privilege checks:

This operation is typically used by clients when they implement a drag-and-drop interface to move a set of objects into a folder.

This operation is only transactional with respect to each individual entity. The set of entities is moved sequentially, as specified in the list, and committed one at a time. If a failure is detected, then the method terminates with an exception.

The root resource pool cannot be moved.

Required Privileges
Dynamic - See discussion above

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
listManagedObjectReference[]
to a ManagedEntity[]

A list of ResourcePool and VirtualMachine objects.

Return Value

Type Description
None

Faults

Type Description
DuplicateNameThrown if this pool already contains an object with the given name.
InsufficientResourcesFaultThrown if the move would violate the resource usage policy. Typically, a more specific subclass, such as InsufficientMemoryResourcesFault.
InvalidArgumentThrown if an ancestor of this pool is in the list.
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.

Events

Type
None

Show WSDL type definition



QueryResourceConfigOption

Get a value range and default values for ResourceConfigSpec.
Required Privileges
Resource.EditPool
Since
vSphere API 4.1

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.

Return Value

Type Description
ResourceConfigOptionResourceConfigOption object.

Faults

Type Description
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.

Events

Type
None

Show WSDL type definition



RefreshRuntime

Refreshes the resource usage data that is available in ResourcePoolRuntimeInfo. The latest runtime resource usage of this resource pool may not be available immediately after operations that alter resource usage, such as powering on a virtual machine. Invoke this method when resource usage may have recently changed, and the most up-to-date value in the ResourcePoolRuntimeInfo is needed.
Required Privileges
System.View
Since
vSphere API 4.1

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.

Return Value

Type Description
None

Faults

Type Description
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.

Events

Type
None

Show WSDL type definition



RegisterChildVM_Task

Adds an existing virtual machine to this resource pool or vApp.

This operation only works for vApps or resource pools that are children of vApps. To register a VM in a folder, see RegisterVM_Task.

Any % (percent) character used in this name parameter must be escaped, unless it is used to start an escape sequence. Clients may also escape any other characters in this name parameter. In addition to the VirtualMachine.Inventory.Register privilege, it requires System.Read privilege on the datastore that the existing virtual machine resides on.

Required Privileges
VirtualMachine.Inventory.Register
Since
vSphere API 4.0

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
pathxsd:string

A datastore path to the virtual machine. If the path ends with ".vmtx", indicating that it refers to a VM template, an InvalidArgument fault is thrown.
name*xsd:string

The name to be assigned to the virtual machine. If this parameter is not set, the displayName configuration parameter of the virtual machine is used. An entity name must be a non-empty string of less than 80 characters. The slash (/), backslash (\) and percent (%) will be escaped using the URL syntax. For example, %2F.
host*ManagedObjectReference
to a HostSystem

The target host on which the virtual machine will run. This parameter must specify a host that is a member of the ComputeResource to which this resource pool belongs. For a stand-alone host or a cluster with DRS, the parameter can be omitted, and the system selects a default.
*Need not be set

Return Value

Type Description
ManagedObjectReference
to a Task
This method returns a Task object with which to monitor the operation. The info.result property in the Task contains the newly registered VirtualMachine upon success.

Faults

Type Description
AlreadyExistsThrown if the virtual machine is already registered.
FileFaultThrown if there is an error accessing the files on disk.
InsufficientResourcesFaultThrown if this operation would violate a resource usage policy.
InvalidArgumentThrown if any of the arguments are invalid and a more specific fault type does not apply.
InvalidDatastoreThrown if the operation cannot be performed on the target datastores.
InvalidNameThrown if the entity name is invalid.
NotFoundThrown if the configuration file is not found on the system.
NotSupportedThrown if the operation is not supported. For example, if the operation is invoked on a resource pool that is unrelated to a vApp.
OutOfBoundsThrown if the maximum number of VMs has been exceeded.
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.
VmConfigFaultThrown if the format / configuration of the virtual machine is invalid. Typically, a more specific fault is thrown such as InvalidFormat if the configuration file cannot be read, or InvalidDiskFormat if the disks cannot be read.

Events

Type
None



UpdateChildResourceConfiguration

Changes resource configuration of a set of children of this resource pool. The method allows bulk modifications of the set of the direct children (virtual machines and resource pools).

Bulk modifications are not transactional. Each modification is made individually. If a failure is encountered while applying the changes, then the processing stops, meaning at least one and as many as all of the changes are not applied.

A set can include a subset of the resources. Children that are not mentioned in the list are not changed.

For each ResourceConfigSpec, the following privilege checks apply:

Required Privileges
Dynamic - See discussion above

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
specResourceConfigSpec[]



Return Value

Type Description
None

Faults

Type Description
InsufficientResourcesFaultThrown if the operation would violate a resource usage policy. Typically, a more specific subclass, such as InsufficientMemoryResourcesFault will be thrown.
InvalidArgumentThrown if a managed entity that is not a child of this group is included.
InvalidState
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.

Events

Type
None

Show WSDL type definition



UpdateConfig

Updates the configuration of the resource pool.

Any % (percent) character used in this name parameter must be escaped, unless it is used to start an escape sequence. Clients may also escape any other characters in this name parameter.

The privilege checks for this operation are as follows:

Required Privileges
Dynamic - See discussion above

Parameters

NameTypeDescription
_thisManagedObjectReference A reference to the ResourcePool used to make the method call.
name*xsd:string

If set, then the new name of the resource pool.
config*ResourceConfigSpec

If set, then the new resource allocation for this resource pool.
*Need not be set

Return Value

Type Description
None

Faults

Type Description
ConcurrentAccessThrown if the changeVersion does not match the server's changeVersion for the configuration.
DuplicateNameThrown if the name is changed to an already existing name.
InsufficientResourcesFaultThrown if the pool specification cannot be supported by the parent resource pool or vApp.
InvalidArgumentThrown if the parameters are out of range, or if the reservationLimit field is set.
InvalidNameThrown if the name is not a valid entity name.
RuntimeFaultThrown if any type of runtime fault is thrown that is not covered by the other faults; for example, a communication error.

Events

Type
None

Show WSDL type definition