Description of problem:
We need to split the logic of providerIDReconciler into NodeController and ProviderIDController.
This will allow us to ignore nodes that don't have the ovirt providerID on the delete node flow:
If Node already has providerID, ignore
If Node doesn't have providerID, attempt to find it from oVirt/(Machine with oVirt spec)
If Node doesn't have providerID and isn't oVirt, error and look again later
If no providerID or providerID not prefixed with ovirt, ignore.
If ovirt providerID and this vm no longer exists on provider, remove
How to test:
Try to challenge the machine logic, scaling up and down, removing VM from ovirt and so on
1. scaled up the cluster
2. on ovirt, manually removed some worker vms (some while it's been deployed)
3. scale down and then up few times repeating the deletion in the middle
deletion and addition of nodes/vms working as expected
missing vms properly reported as failed (or stuck in provisioning/provisioned if deletion while being created - they would be the first ones to be deleted on scale down though)
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory (Moderate: OpenShift Container Platform 4.8.2 bug fix and security update), and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.