Skip to content

[RFE] Tracking and Polling API #661

Description

@sadsfae

We need a tracking/polling API across QUADS server, python-quads-lib, and quads-client using the new plugin architecture design. This is a major feature-set that also pulls in changes to two other codebases as consumers.

We'd go with stage-based status tracking of assignment progress:

Stage-based progress -- no progress_pct column. Progress is derived from the ordinal position of the status value within the pipeline stages. There are 12 pipeline stages (excluding terminal states completed and failed):

Stage Status Where reported Dell/HPE Supermicro No-wipe Corresponds to
1/12 pending cli.py (on create) yes yes yes Queued, not yet started
2/12 switch_config cli.py (before move tasks) yes yes yes switch_dispatcher.configure() + switch_config_applied=True
3/12 ipmi_config standard.py:70 yes yes yes ipmi.configure_user() (always runs, outside semaphore)
4/12 hardware_prep standard.py:99 yes -- -- prepare_host_hardware() via Badfish. Dell: change_boot() + 600s iDRAC wait. Supermicro has no Badfish/iLO equivalent.
5/12 power_on standard.py:104 / ipmi.py:48-61 yes (Badfish) yes (IPMI reset) -- All vendors power on. Dell/HPE: power_on_host() via Badfish. Supermicro: ipmi.reset() (power off, wait, power on) inside pxe_persistent().
6/12 provisioning standard.py:86/117 yes yes -- prepare_host_provisioning() -- registers host in provisioner
7/12 cleanup standard.py:121 yes -- -- cleanup_virtual_media() via Badfish. Supermicro: no virtual media to clean.
8/12 reboot standard.py:124-131/90 yes yes -- Dell: reboot_for_rebuild() (sets PXE boot order via Badfish). HPE/Supermicro: ipmi.pxe_persistent() (sets PXE flag + IPMI power cycle).
9/12 post_install standard.py:150-158 yes yes yes Schedule + host record updates
10/12 foreman_rbac cli.py:1960 / foreman_heal.py yes yes yes foreman_heal() -- Foreman host RBAC synced
11/12 validation environment.py:345-411 yes yes -- post_system_test() + post_network_test(), host.validated=True
12/12 released environment.py:394-400 / cli.py yes yes yes assignment.validated=True -- environment available to tenant
-- completed (after released) yes yes yes Terminal: all steps done
-- failed standard.py:264 / cli.py / environment.py yes yes yes Terminal: move/switch/validation failure

Metadata

Metadata

Assignees

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions