schematic ID wasn't generated for empty extensions list, while we should also consider overlay which was detected for Talos < 1.7.x.
schematic change could be received a bit later than TalosUpgradeController starts the upgrade. That could lead to one unsuccessfull attempt to upgrade as the wrong schematic id was used.
Now schematic ID is generated when either extensions list is not empty, or overlay is not empty and if the node was joined to Omni running Talos < 1.7 and current Talos version is >= 1.7.
Sync issues are handled by adding TalosVersion to the SchematicConfiguration: this way it is possible to make TalosUpgradeController wait until schematic configuration is synced to the Talos version it's going to upgrade to.
Couple of things were missing:
TalosUpgradeController
starts the upgrade. That could lead to one unsuccessfull attempt to upgrade as the wrong schematic id was used.Now schematic ID is generated when either extensions list is not empty, or overlay is not empty and if the node was joined to Omni running Talos < 1.7 and current Talos version is >= 1.7. Sync issues are handled by adding TalosVersion to the SchematicConfiguration: this way it is possible to make
TalosUpgradeController
wait until schematic configuration is synced to the Talos version it's going to upgrade to.