Refactor Device controller and fix defer pattern across all controllers#190
Merged
Refactor Device controller and fix defer pattern across all controllers#190
Conversation
e8ea8b6 to
21ffab4
Compare
827f71c to
d969ac6
Compare
This patch removes the informers for ConfigMap resources on the Device controller as they were not used anymore.
This patch changes the predicate to filter events for Secret resource updates to trigger a reconciliation of a Device resource to only apply when the generation of the Secret is updated. This will only happen when the contained secret data is updated and thus the generation is changed. Previously this also applied to resource version updates, which meant that changing metadata on the referenced secrets would trigger a reconciliation of the Device.
This patch improves error handling in the Device controller's maintenance reconciliation by setting the Ready condition to false with a MaintenanceFailedReason when maintenance operations fail. Warning events are now emitted for reboot, factory reset, and reprovision failures, providing better observability into maintenance operation status.
This patch makes minor improvements to the Device controller: - Remove unnecessary deletion of maintenance annotation in Provisioning phase - Add explicit return after transitioning from Provisioned to Running phase - Fix comment capitalization for consistency
This patch fixes the defer function pattern used to update metadata and status after reconciliation in all controllers. Previously, the return statement after patching metadata prevented the status from being updated when both had changed. Now, both metadata and status are always patched when they differ from the original. Additionally, obj.DeepCopy() is now passed to Patch() for metadata updates to prevent the Patch() call from modifying obj and interfering with the subsequent status update.
Fixes Vulnerability GO-2026-4394
d969ac6 to
5088d6d
Compare
Merging this branch will decrease overall coverage
Coverage by fileChanged files (no unit tests)
Please note that the "Total", "Covered", and "Missed" counts above refer to code statements instead of lines of code. The value in brackets refers to the test coverage of that file in the old version of the code. Changed unit test files
|
nikatza
approved these changes
Feb 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR improves the Device controller by adding proper error handling for maintenance operations, reducing unnecessary reconciliations triggered by Secret metadata changes, and removing unused ConfigMap informers. Additionally, it fixes the defer pattern used across all "brick" controllers to ensure both metadata and status are correctly updated after reconciliation.
Please refer to the individual commit messages for detailed explanations of each change.