mirror of
https://github.com/siderolabs/omni.git
synced 2026-05-04 22:26:13 +02:00
Machines with invalid schematics (not provisioned via image factory) had empty SchematicId in their ClusterMachineConfigStatus. Three places compared this against the desired schematic ID, each seeing a mismatch that the actual upgrade() function would correctly ignore, creating two independent feedback loops: - `BuildReconciliationContext`: compared ConfigStatus.SchematicId against installImage.SchematicId, causing unnecessary upgrade() calls to the machine. - `computePendingUpdates`: same comparison, creating/destroying MachinePendingUpdates within a single reconcile, triggering MachineSetStatusController in a loop. - `TalosUpgradeStatusController`: compared configStatus.SchematicId against desired schematic, keeping machines in machinesToUpdate and flipping TalosUpgradeStatus to UpdatingMachineSchematics. Fix by aligning the schematic comparison with what upgrade() does for invalid schematics: treat the expected schematic as "" (empty). For TalosUpgradeStatusController, drop the schematic check from the machinesToUpdate condition while keeping the version check to preserve upgrade progress tracking. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>