-
Notifications
You must be signed in to change notification settings - Fork 203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cleanup Part 1 - First refactors #990
Commits on Oct 17, 2024
-
Without this, the interface and the code to reboot is a bit more complex than it should be. We do not need setters and getters, as we are just instanciating a single instance of a rebooter interface. We create it based on user input, then pass the object around. This should cleanup the code. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for f348647 - Browse repository at this point
Copy the full SHA f348647View commit details -
Extract privileged command wrapper into util
Without this, it makes the code a bit harder to read. This fixes it by extracting the method. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 3bfdd76 - Browse repository at this point
Copy the full SHA 3bfdd76View commit details -
This will be useful to refactor the checkers loop. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 574065f - Browse repository at this point
Copy the full SHA 574065fView commit details -
This will make it easier to manipulate main in the future. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for eeedf20 - Browse repository at this point
Copy the full SHA eeedf20View commit details -
Move command line validations in pre function
Without this, validations are all over the place. This moves some validations directly into the function, to make the code simpler to read. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 00d8a52 - Browse repository at this point
Copy the full SHA 00d8a52View commit details -
Without this, the variable name is hard to follow. This fixes it by cleaning up the var name. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 36e6c8b - Browse repository at this point
Copy the full SHA 36e6c8bView commit details
Commits on Oct 19, 2024
-
Without this, the checkers are only shell calls: test -f sentinelFile, or sentinelCommand. This changes the behaviour of existing code to test file for sentinelFile checker, and to keep the sentinel command as a command. However, to avoid having validation in the root loop, it moves to use a constructor to cleanup the code. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for f43ed14 - Browse repository at this point
Copy the full SHA f43ed14View commit details -
Remove nodeID from rebooter interface
Without this patch, the rebooter interface has data which is not related to the rebooter interface. This should get removed to make it easier to maintain. The loss comes from the logging, which mentioned the node. In order to not have a regression compared to [1], this ensures that at least the node to be rebooted appears in the main. [1]: kubereboot#134 Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 3895a2f - Browse repository at this point
Copy the full SHA 3895a2fView commit details -
Revert to use a constructor again
Without this, we have no validation of the data in command/signal reboot. This was not a problem in the first refactor, as the constructor was a dummy one, without validation. However, as we refactoed, we now have code in the root method that is validation for the reboot command. This can now be encompassed in the constructor. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 42c4b8b - Browse repository at this point
Copy the full SHA 42c4b8bView commit details -
Without this, the main loop is in need of 3 functions to simply parse flags and env variables (excluding input validation). This is a bit more complex than it should, especially since we only need to parse command line flags and env vars. This fixes it by simply using pflags (which we were already using) instead of pflags + viper + cobra (for which we do not have any benefit), and removing all the methods outside the mapping of env var with cli flag. The main code is now far simpler: It handles the reading, parsing, and returning in case of error. As we do not bubble up errors from rebootasRequired yet, this is good enough at this moment. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for a8132a2 - Browse repository at this point
Copy the full SHA a8132a2View commit details -
Raise the error levels for wrong flag
If the notification url configuration is known to be not working, this should be raised as an error, not a warning. Without this, it would be easy to miss a misconfiguration. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for aae5bb6 - Browse repository at this point
Copy the full SHA aae5bb6View commit details -
Implementation details of lock should not leak into the calling methods. Without this path, calls are a bit more complex and error handling is harder to find. This is a problem for long term maintenance, as it is tougher to refactor the locks without impacting the main. Decoupling the two (main usage of the lock, and the lock themselves) will allow us to introduce other kinds of locks easily. I solve this by inlining into the daemonsetlock package: - including all the methods for managing locks from the main.go functions. Those were mostly doing error handling where code became no-op by introducing multiple daemonsetlock types - adding the lock release delay part of lock info I also did not like the pattern include in Test method, which added a reference to nodeMeta: It was not very clear that Test was storing the current metadata of the node, or was returning the current state. (Metadata here only means unschedulable). The problem I saw was that the metadata was silently mutated from a lock Test method, which was very not obvious. Instead, I picked to explicitly return the lock data instead. I also made it explicit that the Acquire lock method is passing the node metadata as structured information, rather than an interface{}. This is a bit more fragile at runtime, but I prefer having very explicit errors if the locks are incorrect, rather than having to deal with unvalidated data. For the lock release delay, it was part of the rebootasrequired loop, where I believe it makes more sense to be part of the Release method itself, for readability. Yet, it hides the delay into the implementation detail, but it keeps the reboot as required goroutine more readable. Instead of passing the argument rebootDelay as parameter of the rebootasrequired method, this refactor took creation of the lock object in the main loop, close to all the variables, and then pass the lock object to the rebootasrequired. This makes the call for rebootasrequired more clear, and lock is now encompassing everything needed to acquire, release, or get info about the lock. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 104a745 - Browse repository at this point
Copy the full SHA 104a745View commit details -
Without this, a bit of the validation is done in main, while the rest is done in each constructor. This fixes it by create a new global constructor in checkers/reboot to solve all the cases and bubble up the errors. I prefered keeping the old constructors, and calling them, this way someone wanting to have a fork of the code could still create directly the good checker/rebooter, without the arbitrary decisions taken by the generic constructor. However, kured is not a library, and was never intended to be usable in forks, so we might want to reconsider is part 2 of the refactor. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for d8b9e31 - Browse repository at this point
Copy the full SHA d8b9e31View commit details -
This will remove double pointers, and be explicit about the type we are using. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 231888e - Browse repository at this point
Copy the full SHA 231888eView commit details -
Remove deprecated PollWithContext
Replaced with PollUntilContextTimeout. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 67df0e9 - Browse repository at this point
Copy the full SHA 67df0e9View commit details -
Without this, impossible to bubble up errors to main Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 626db87 - Browse repository at this point
Copy the full SHA 626db87View commit details -
Make all the internal validations ... internal
The main is doing flag validation through pflags, then did further validation by involving the constructors. With the recent refactor on the commit "Refactor constructors" in this branch, we moved away from that pattern. However, it means we reintroduced a log dependency into our external API, and the external API now had extra validations regardless of the type. This is unnecessary, so I moved away from that pattern, and moved back all the validation into a central place, internal, which is only doing what kured would desire, without exposing it to users. The users could still theoretically use the proper constructors for each type, as they would validate just fine. The only thing they would lose is the kured internal decision of validation/precedence. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 73f00ce - Browse repository at this point
Copy the full SHA 73f00ceView commit details -
Make the internal blockers implementation internal
This at the same time, removes the alert public package. Alert was only used inside prometheus blocker, so it allows to simplify the code. Signed-off-by: Jean-Philippe Evrard <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for f559a95 - Browse repository at this point
Copy the full SHA f559a95View commit details