Skip to content

Resource Concept and Three-Dimensional State Model

A Resource (or ManagedResource) is any entity, service, or element that can be used by other parts of the system. Most entities in Arda have some aspect of a Resource. Resources share a common, well-defined state model that represents their availability and enables fine-grained management.

A Resource’s state has three orthogonal parts that together determine whether and how it can be used.

Indicates the resource’s intrinsic capability based on its internal conditions.

ValueMeaning
ENABLEDResource can perform all its nominal behaviors.
DEGRADEDResource can perform only a subset of its behaviors, or at a reduced standard. Includes reason and capacity details.
DISABLEDResource cannot perform any of its nominal behaviors. Includes reason details.

Transitions:

  • ENABLEDDEGRADED: partial failure.
  • ENABLEDDISABLED: full failure.
  • DEGRADEDDISABLED: further failure.
  • DISABLEDENABLED: repair.
  • DEGRADEDENABLED: repair.

Indicates whether the resource is available for use based on administrative actions, independently of its Operational State.

ValueMeaning
LOCKEDResource is not available for use.
UNLOCKEDResource is available, subject to Operational State and capacity.
SHUTTING_DOWNResource is currently in use but accepts no new requests.

Transitions:

  • LOCKEDUNLOCKED: unlock.
  • UNLOCKEDLOCKED: lock [idle] or force-lock.
  • UNLOCKEDSHUTTING_DOWN: lock [!idle] (in-use resources cannot be immediately locked).
  • SHUTTING_DOWNLOCKED: idle (last usage completes) or force-lock.
  • SHUTTING_DOWNUNLOCKED: unlock (lock request cancelled).

Indicates the current usage of the resource by other system parts.

ValueMeaning
IDLEResource is not being used.
IN_USEResource is in use with spare capacity remaining.
BUSYResource is in use with no spare capacity.

Transitions:

  • IDLEIN_USE: acquire [capacity > 0].
  • IDLEBUSY: acquire [capacity == 0].
  • IN_USEBUSY: acquire [capacity == 0].
  • IN_USEIN_USE: acquire [capacity > 0] or release [use > 0].
  • IN_USEIDLE: release [use == 0].
  • BUSYIDLE: release [use == 0].
  • BUSYIN_USE: release [use > 0].

Resources are created via provision and retired via retire. Both events transition all three state sub-machines simultaneously — they are parallel state machines that run from provisioning through retirement.

This three-dimensional model is the standard representation for any managed resource in the system. It supports:

  • Fine-grained operational control (enable/disable individual components).
  • Administrative lock-out without affecting operational status.
  • Capacity management and graceful shutdown.