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 |