// Module included in the following assemblies:
//
// * machine_management/deleting-machine.adoc

:_mod-docs-content-type: CONCEPT
[id="machine-lifecycle-hook-deletion-uses_{context}"]
= Machine deletion lifecycle hook examples for Operator developers

[role="_abstract"]
Operators can use lifecycle hooks for the machine deletion phase to modify the machine deletion process.

The following examples demonstrate possible ways that an Operator can use this functionality.

[id="machine-lifecycle-hook-deletion-uses-predrain_{context}"]
== Example use cases for `preDrain` lifecycle hooks

Proactively replacing machines:: An Operator can use a `preDrain` lifecycle hook to ensure that a replacement machine is successfully created and joined to the cluster before removing the instance of a deleted machine. This can mitigate the impact of disruptions during machine replacement or of replacement instances that do not initialize promptly.

Implementing custom draining logic:: An Operator can use a `preDrain` lifecycle hook to replace the machine controller draining logic with a different draining controller. By replacing the draining logic, the Operator would have more flexibility and control over the lifecycle of the workloads on each node.
+
For example, the machine controller drain libraries do not support ordering, but a custom drain provider could provide this functionality. By using a custom drain provider, an Operator could prioritize moving mission-critical applications before draining the node to ensure that service interruptions are minimized in cases where cluster capacity is limited.


[id="machine-lifecycle-hook-deletion-uses-preterminate_{context}"]
== Example use cases for `preTerminate` lifecycle hooks

Verifying storage detachment:: An Operator can use a `preTerminate` lifecycle hook to ensure that storage that is attached to a machine is detached before the machine is removed from the infrastructure provider.

Improving log reliability:: After a node is drained, the log exporter daemon requires some time to synchronize logs to the centralized logging system.
+
A logging Operator can use a `preTerminate` lifecycle hook to add a delay between when the node drains and when the machine is removed from the infrastructure provider. This delay would provide time for the Operator to ensure that the main workloads are removed and no longer adding to the log backlog. When no new data is being added to the log backlog, the log exporter can catch up on the synchronization process, thus ensuring that all application logs are captured.