Skip to content

Pool Object

A Pool defines membership rules and lifecycle transitions for a group of Machine objects. Pools provide a structured way to manage machine allocation, ensuring that machines move through well-defined states with appropriate configuration applied at each transition. Pools are static configuration objects that can be shared through content packs and version sets; actual membership is determined dynamically from each machine's Pool and PoolStatus fields.

Machines in a pool progress through a defined set of states: Joining, HoldJoin, Free, Building, HoldBuild, InUse, Destroying, HoldDestroy, Leaving, and HoldLeave. The "Hold" states provide pause points where operator intervention or external approval can gate transitions. A machine entering the pool starts in Joining, becomes Free when ready for allocation, moves to InUse when allocated to a consumer, and transitions through Leaving when released back.

Each state transition can trigger a set of PoolTransitionActions that automatically configure the machine:

  • EnterActions -- applied when a machine joins the pool
  • AllocateActions -- applied when a free machine is allocated
  • ReleaseActions -- applied when an in-use machine is released
  • ExitActions -- applied when a machine leaves the pool

Each PoolTransitionActions structure can set a Workflow to run, add or remove Profile references, and add or remove parameters. This allows pools to drive machines through provisioning workflows on entry and decommissioning workflows on exit without manual intervention.

Pools support hierarchical organization through the ParentPool field. When a machine exits a child pool, it returns to the parent pool rather than becoming unmanaged. The AutoFill configuration enables dynamic pool scaling: when the number of free machines drops below MinFree, the system can automatically acquire machines from an AcquirePool or create new ones using CreateParameters, and return excess machines when free count exceeds MaxFree.

Pools work with Resource Broker objects that can dynamically create and destroy machines (for example, provisioning cloud VMs or spinning up containers) to satisfy pool demand.

Fields

Field Definition
AllocateActions AllocateActions defines a set of configuration for machines allocating in the pool.
AllocateActions/AddParameters AddParameters defines a list of parameters to add to the machine
AllocateActions/AddProfiles AddProfiles defines a list of profiles to add to the machine
AllocateActions/RemoveParameters RemoveParameters defines a list of parameters to remove from the machine
AllocateActions/RemoveProfiles RemoveProfiles defines a list of profiles to remove from the machine
AllocateActions/Workflow Workflow defines the new workflow the machine should run
AutoFill AutoFill defines configuration to handle Pool scaling.
AutoFill/AcquirePool AcquirePool is the pool to draw machines from
AutoFill/CreateParameters CreateParameters are the parameters to apply to a create machine
AutoFill/MaxFree MaxFree is the maximum number of machines in the pool
AutoFill/MinFree MinFree is the minimum number of machines in the pool
AutoFill/ReturnPool ReturnPool is the pool to return machines to
AutoFill/UseAutoFill UseAutoFill turns on or off the auto fill feature - NOT IMPLEMENTED
Description Description is a string for providing a simple description
Documentation Documentation is a string for providing additional in depth information.
EnterActions EnterActions defines a set of configuration for machines entering the pool.
EnterActions/AddParameters AddParameters defines a list of parameters to add to the machine
EnterActions/AddProfiles AddProfiles defines a list of profiles to add to the machine
EnterActions/RemoveParameters RemoveParameters defines a list of parameters to remove from the machine
EnterActions/RemoveProfiles RemoveProfiles defines a list of profiles to remove from the machine
EnterActions/Workflow Workflow defines the new workflow the machine should run
ExitActions ExitActions defines a set of configuration for machines exiting the pool.
ExitActions/AddParameters AddParameters defines a list of parameters to add to the machine
ExitActions/AddProfiles AddProfiles defines a list of profiles to add to the machine
ExitActions/RemoveParameters RemoveParameters defines a list of parameters to remove from the machine
ExitActions/RemoveProfiles RemoveProfiles defines a list of profiles to remove from the machine
ExitActions/Workflow Workflow defines the new workflow the machine should run
Id Id is the name of the pool
Meta Meta contains the meta data of the object.

The type of this field is a key / value map/dictionary.
The key type is string.
The value type is also string.

The general content of the field is undefined and can be an arbritary store.
There are some common known keys:

color - The color the UX uses when displaying
icon - The icon the UX uses when displaying
* title - The UX uses this for additional display information. Often the source of the object.

Specific Object types use additional meta data fields. These are described at:
https://docs.rackn.io/stable/redirect/?ref=rs_object_metadata
ParentPool ParentPool contains the pool that machines should Enter from and Exit to.
ReleaseActions ReleaseActions defines a set of configuration for machines releasing in the pool.
ReleaseActions/AddParameters AddParameters defines a list of parameters to add to the machine
ReleaseActions/AddProfiles AddProfiles defines a list of profiles to add to the machine
ReleaseActions/RemoveParameters RemoveParameters defines a list of parameters to remove from the machine
ReleaseActions/RemoveProfiles RemoveProfiles defines a list of profiles to remove from the machine
ReleaseActions/Workflow Workflow defines the new workflow the machine should run