Utku Ozdemir 74dc90dd40
fix: prevent controller feedback loop for invalid schematic machines
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>
2026-03-07 21:12:15 +01:00
..
2026-01-21 15:30:49 +01:00
2026-01-21 15:30:49 +01:00
2026-01-21 15:30:49 +01:00
2026-01-21 15:30:49 +01:00
2026-01-21 15:30:49 +01:00
2026-01-21 15:30:49 +01:00
2026-01-21 15:30:49 +01:00
2026-01-21 15:30:49 +01:00